It's rediculous to assume that a faster means of information will magically provide us with new experiences. The limits aren't in bandwidth but how content providers choose to use it.
Personally, I din't expect the internet to deliver an TV-like experience, that's what TV is for... as for interactive TV, that's just complicating matters, I use my television to relax, the entire point is to be enjoying a show, not anything else.
Basically I think they are expecting too much from such a small step forward. Our computers don't provide those experiences locally with all the bandwidth available from our hard disks, so why expect this experience to come true with the relatively small bandwidth the internet provides?
However with new codecs such as Microsoft's Video/Audio 8 and 3ivx, maybe it's possible, but I wouldn't expect anything too revolutionary considering what we have to work with.
To say that the internet is at its peak is silly in itself, technology will always advance. Just because the hype made people expect too much doesn't mean this isn't possible at a later time.
Microbytes is already offering Linux as the standard OS installed on all of their PCs, but the only reason they state is to dodge the so-called "Windows Tax" and give the end user a cheaper PC. Keep in mind this store sells custom-built PCs, and the reason they state for installing Linux is that they all know everyone has a copy of Windows and the clientel are perfectly capable of installing it themselves. In other words, they don't want to re-sell it.
> Id should have provided a simple test program (rotating cube) and simple code to try different configurations.
I don't think that's id's responsibility. DirectX comes with a program to do this called DXDIAG and I'm pretty sure whatever API Linux has should come with a way to test it as well. It's not the game creator's responsability to make sure the OS runs smoothly.
> They could also have provided some additional software to help the user configure their X server;
This should be the responsability of the people who programmed X. Why would they make an interface that can't even be configured properly with their own software?
To me, X should have been distributed with these features already there. Why should software developers have to also support the OS? The OS should be supporting the software developers.
I guess you must have really high standards, but personally I thought the dubs of Neon Genesis, Macross Plus, Ranma, Dragon Ball Z, and Princess Mononoke (to name a few) were great. I have only seen one Ranma episode and one of the Macross Plus parts in Japanese, but I didn't think I was missing anything - except the picture since I was busy reading all the subtitles. If you get the English dubs, you won't be missing anything. The voices on the dubs are at least on par with any animated films we have here (though the content is usually entirely different, of course).
What was the point of the GeForce 2 Ultra then?
on
Nvidia's NV20
·
· Score: 1
The NV20 is coming out in January if I'm not mistaken? So what is the point of NVidia releasing so many versions of the GeForce? The GeForce 2 Ultra just hit stores around here and now we hear the NV20 is going to be released soon.
So far as I know, there has been the GeForce, GeForce DDR, GeForce 2 MX, GeForce 2 GTS, GeForce 2 Pro (Same as GF2GTS but faster RAM), and GeForce 2 Ultra. 6 products in 6 months. Isn't this overkill? I would have been much happier if they just released the GeForce 2 GTS for hardcore gamers, and GeForce 2 MX for the consumer market. I don't think any other manufacturer has this many variations of their chipsets, and I don't really see what makes this any good. Sure there is something for everyone, but isn't this over-saturation?
The worst of it is that we aren't warned when or if NVidia's going to spring a better version of their video cards on us, making our very expensive purchase obsolete.
You'd think this logic would apply to Microsoft but people never think of them that way either. They always call them M$, Microsloth, their product Winblows, Windoze...
Oh, I almost forgot, in the Accessibility Control Panel, you can turn on Mousekeys which lets you move the mouse cursor with the numeric keypad. There's pretty much no room for error this way.
Use the Windows Logo key or CTRL+ESC and arrows, you can navigate the start menu pretty easily this way. I've found that generally Windows is completely navigatable with the keyboard.
ALT brings up the menus while arrows navigate them, CTRL+TAB navigates tabs at the top of dialog boxes, TAB moves the cursor to different buttons, Space presses a button or widget (checkbox/radio button), ALT+Letter selects a control with an underline in its name, ALT+TAB switches applications, ALT+ESC navigates open applications in a sequential order, Logo+D toggles minimizing of every application to see the desktop, ALT+Space brings up the system menu, ALT+F4 closes an application, F3 initiates the Find command (or Logo+F), ALT+Arrow initiates the "Back" or "Forward" command in explorer windows, Backspace navigates up one folder in the tree of My Computer or Explorer, F2 usually renames something, and F4 brings down the "Drives" in a dialog box or My Computer
In Internet Explorer, F11 makes it full screen, F6 lets you type in the "Address" bar, F4 pulls down the "Address" bar, ALT+Arrows works here too, and so on.
Hope this helps. Personally, I never use the mouse except in games or when navigating web pages.
I pay $35/month to get a rock-solid DSL connection (yes dynamic IP) from sympatico.ca at 960kb/sec, and I can independantly connect every machine in my house since the modem is connected to my hub and they each get 960kb/sec as well. I can't say I've ever needed tech support so I can't say how good it is. Since cable has a limit of 6GB/month around here through Videotron, this is the best option I can get. Redundant connections for greater bandwidth is great, and it doesn't violate my contract. Sympatico's attitude seems to be "As long as you don't break anything or need our help to do anything extra, go for it." I believe the connections will be upgraded to 3mb/sec in January and soon after that 7mb/sec. For $34/month, I feel that I get way more than I expected.
Ah I had no idea, I don't use linux. C is portable though and I'm sure they could include x86 emulation. That'd be cool. Then again there's Bochs, a platform independant x86 emulator that can be found here.
I dunno if you would call it platform independant but IE is on x86, WinCE machines, PowerPC, and DEC Alpha, and you can use it in Wine on any platform;P
It might be different for Windows 2000 (I can't imagine it being that much different, though), but C|Net has posted benchmarks comparing Netscape 6, Netscape 4.7x, and IE 5.5.
The comparison on that page shows that the PS2 needs software on a PS2 memory card to play a DVD. I own a US PS2 and can verify the console plays DVDs in hardware with a "driver" built into the system's firmware/bios which can be updated by software (perhaps contained on a memory card). It can certainly be used to play DVDs right out of the box with nothing extra.
Well the SEGA Dreamcast lets you use any dialup ISP, and it's basically what you ask for, plays games and does nothing else. Not that that's bad, cos it's definitely good at playing games. Check out http://dc.ign.com to see that the Dreamcast has many quality titles. Personally I own both a PS2 and a Dreamcast. Since I can't afford any games for the PS2 yet (haha) I can't really compare the two fairly. But I must say I'm disappointed that I can't get online with my PS2 right now... there is no connectivity for it by default.
So... the only thing special about the IES is that it runs Linux? I don't think the end user cares about such things, only that it plays the games from popular development houses that want a large audience (therefore profit). Why should they market it as a special feature? Every video game system has operating software. It's nothing new... Since Linux enables free software development kits. I wonder if Indrema corp is taking any steps to prevent any old joe from marketing a big turd and pass it off as an exciting game, launching the next Atari-and-the-video-game-market-crash.
Personally I don't like its retro-70's "space-age" look. Yes this is opinion, I'm not knocking the machine just because of personal taste, but it doesn't fit in at all with my component entertainment system.
If you use it to make a self-bootable game, then you change hardware, it won't work anymore will it? You can't just write the new drivers and configure it right on the CD, you'll have to end up re-burning all your games. It's not really that practical an idea...
For some reason the code screwed up from putting it in a message as opposed to the file itself. I copied back the code and a bunch of things were missing. Oh well if you can fix it for yourself go ahead. Too bad I can't attach files in a post (or the posts show up the way I made them in plain text).
Well, maybe this would be interesting. It's by me! I hope this works for you. I used QBasic 4.5
----Textris.cfg----
CGA
0
28
1
0
9
// Line one is video mode (CGA, EGA, VGA)
// Line two is difficulty (0-5)
// Line three is Textris window width
// Line four is endless game (Y = 1, N = 0)
// Line five is background color (0-5)
// Line six is foreground color (0-15)
----End Textris.cfg----
----Textris.bas----
DECLARE SUB Ending ()
DECLARE SUB EraseBlock ()
DECLARE SUB DrawBlock ()
DECLARE SUB TitleScreen ()
DECLARE SUB DrawScrn ()
DECLARE FUNCTION CalcDelay! ()
DECLARE SUB Rest (T!)
DIM SHARED scrSavBlocks(80, 25)
DIM SHARED BlockType
DIM SHARED Difficulty
DIM SHARED Rotation
DIM SHARED BlockX
DIM SHARED BlockY
DIM SHARED MachSpeed AS SINGLE
DIM SHARED WindowWidth
DIM Nono(1, 1)
DIM scrSavBlocksSave(25, 80)
DIM SHARED Foregrnd
DIM SHARED Backgrnd
ON ERROR GOTO BetaError
MachSpeed = CalcDelay!
TitleScreen
P$ = INPUT$(1)
Endless = 0
WindowWidth = 33
LevelNumber = 1
PlayerScore = 0
OPEN "TEXTRIS.CFG" FOR INPUT AS #1
SEEK #1, 1
LINE INPUT #1, Video$
INPUT #1, Difficulty
IF Difficulty 5 THEN Difficulty = 0
INPUT #1, WindowWidth
IF WindowWidth 33 THEN WindowWidth = 28
INPUT #1, Endless
IF Endless 1 THEN Endless = 0
INPUT #1, Backgrnd
IF Backgrnd 5 THEN Backgrnd = 1
INPUT #1, Foregrnd
IF Foregrnd 15 THEN Foregrnd = 9
CLOSE #1
SCREEN 0
IF COMMAND$ = "/?" OR COMMAND$ = "?" THEN GOTO ParametersHelp
IF UCASE$(COMMAND$) >= "CONFIG" THEN GOSUB Configuration
IF UCASE$(COMMAND$) >= "CGA" THEN WIDTH 80, 25
IF UCASE$(COMMAND$) >= "EGA" THEN WIDTH 80, 43
IF UCASE$(COMMAND$) >= "VGA" THEN WIDTH 80, 50
IF UCASE$(Video$) >= "CGA" THEN WIDTH 80, 25
IF UCASE$(Video$) >= "EGA" THEN WIDTH 80, 43
IF UCASE$(Video$) >= "VGA" THEN WIDTH 80, 50
COLOR 7, 0
LOCATE 1, 1, 0
CLS
DO
KEY(0) ON
ON KEY(10) GOSUB EndTheProgram
ON KEY(11) GOSUB RotateBlock
ON KEY(12) GOSUB LeftBlock
ON KEY(13) GOSUB RightBlock
ON KEY(14) GOSUB DropBlock
TextrisKey$ = INKEY$
IF TextrisKey$ = CHR$(0) + "H" THEN GOSUB RotateBlock
IF TextrisKey$ = CHR$(0) + "P" THEN GOSUB DropBlock
IF TextrisKey$ = CHR$(0) + "K" THEN GOSUB LeftBlock
IF TextrisKey$ = CHR$(0) + "M" THEN GOSUB RightBlock
IF BlocksLeft = 22 THEN GOSUB NewBlock
IF Endless = 0 THEN Rest.1 * LevelNumber ELSE Rest.3
IF Endless = 0 THEN IF LevelNumber >= 10 THEN KEY(0) OFF: GOTO EndingOfGame
KEY(0) OFF
IF PlayerScore >= 999999999 THEN PlayerScore = 999999999
IF LevelNumber >= 100 THEN LevelNumber = 100
WHILE INKEY$ "": WEND
IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
RETURN
ELSE
EraseBlock
BlockX = BlockX + 1
IF BlockType = 1 AND BlockX >= 53 AND Rotation = 1 THEN BlockX = 53
IF BlockType = 1 AND BlockX >= 50 AND Rotation = 2 THEN BlockX = 50
IF BlockType = 2 AND BlockX >= 52 THEN BlockX = 52
IF BlockType = 2 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
IF BlockType = 2 AND BlockX >= 52 AND Rotation = 3 THEN BlockX = 52
IF BlockType = 2 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 51
IF BlockType = 3 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
IF BlockType = 3 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
IF BlockType = 3 AND BlockX >= 52 AND Rotation = 3 THEN BlockX = 52
IF BlockType = 3 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 51
IF BlockType = 4 AND BlockX >= 51 AND Rotation = 1 THEN BlockX = 51
IF BlockType = 4 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 52
IF BlockType = 4 AND BlockX >= 51 AND Rotation = 3 THEN BlockX = 51
IF BlockType = 4 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 52
IF BlockType = 5 AND BlockX >= 52 THEN BlockX = 52
IF BlockType = 6 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
IF BlockType = 6 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
IF BlockType = 7 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
IF BlockType = 7 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
DrawBlock
END IF
KEY(0) ON
RETURN
FOR Y = 3 TO 22
FOR X = 1 TO WindowWidth
LineBlock$ = LineBlock$ + CHR$(SCREEN(Y, X + 20))
NEXT X
IF INSTR(LineBlock$, " ") > 0 THEN
LineBlock$ = ""
ELSE
FOR BlinkLine = 1 TO 14
COLOR BlinkLine
LOCATE Y, 21: PRINT LineBlock$
Rest 2
NEXT BlinkLine
LineBlock$ = ""
LOCATE Y, 21: PRINT STRING$(WindowWidth, " ")
PlayerScore = PlayerScore + 10
IF PlayerScore >= 999999999 THEN PlayerScore = 999999999
IF LevelNumber >= 100 THEN LevelNumber = 100
BlocksBusted = BlocksBusted + 1
BlocksLeft = LevelUp - BlocksBusted
IF BlocksLeft = 999999999 THEN PlayerScore = 999999999
IF LevelNumber >= 100 THEN LevelNumber = 100
LOCATE 7, 4: PRINT PlayerScore
DrawBlock
'Û ± ð é ÛÛÛÛ ±± ±±± ðð éé
'Û ± ðð éé ± ± ± ðð éé
'Û ±± ð é ±±± ±
'Û
KEY(0) ON
RETURN
EndingOfGame:
Ending
EndTheProgram:
SCREEN 0
WIDTH 80, 25
COLOR 7, 0
LOCATE 1, 1, 0
CLS
PRINT
PRINT "Thank you for playing Textris"
PRINT "Your last score was "; PlayerScore; "pts"
IF PlayerScore = 0 THEN PRINT "I guess you don't like my game!"
IF PlayerScore = 1 THEN PRINT "Practice more often..."
IF PlayerScore = 50 THEN PRINT "Getting there..."
IF PlayerScore = 150 THEN PRINT "Not bad!"
IF PlayerScore = 200 THEN PRINT "Good!"
IF PlayerScore = 400 THEN PRINT "Excellent!"
IF PlayerScore = 700 THEN PRINT "I can't beleive you played this long!"
IF PlayerScore >= 1000 THEN PRINT "Supreme Textris Master!!"
PRINT
PRINT "By: Scape (C) 1995"
PRINT
PRINT
PRINT
SYSTEM
LOCATE 1, 1: PRINT "Exit Failed!!"
RETURN
GameOver:
LOCATE 2, 20: PRINT "ÚTextris" + STRING$(WindowWidth - 9, "Ä") + ""
COLOR 9, 1
FOR Y = 1 TO 20
LOCATE Y + 2, 21: PRINT STRING$(WindowWidth, "")'""
Rest 1
NEXT
X = 0
LOCATE 12, 21 + INT((WindowWidth / 2) - 4): PRINT "GAME OVER"
COLOR 15, 0
LOCATE 23, 20: PRINT "À" + STRING$(WindowWidth, "Ä") + "Ù"
P$ = ""
DO UNTIL P$ = " "
P$ = INKEY$
COLOR X, 1
X = X + 1: IF X >= 14 THEN X = 0
LOCATE 12, 21 + INT((WindowWidth / 2) - 4): PRINT "GAME OVER"
LOOP
GOTO EndTheProgram
Configuration:
SCREEN 0
WIDTH 80, 25
COLOR 7, 0
CLS
PRINT "Video Type Selection"
PRINT
LOCATE 3, 3: COLOR 15, 5: PRINT "-=CGA=-"
LOCATE 4, 1: COLOR 7, 0: PRINT "2 -=EGA=-"
LOCATE 5, 1: COLOR 7, 0: PRINT "3 -=VGA/SVGA=-"
COLOR 7, 0: LOCATE 3, 12: PRINT "(Default)": LOCATE 3, 1: PRINT "1"
Video$ = ""
DO UNTIL Video$ = "CGA" OR Video$ = "VGA" OR Video$ = "EGA"
Video$ = INPUT$(1)
IF Video$ = "2" THEN Video$ = "EGA"
IF Video$ = "3" THEN Video$ = "VGA"
IF Video$ = "1" THEN Video$ = "CGA"
LOOP
CLS
PRINT "Textris Window Width (23 - 33) Default 33"
PRINT
INPUT "", WindowWidth
IF WindowWidth > 33 THEN WindowWidth = 33
IF WindowWidth =.5
CalcDelay! = I!
END FUNCTION
DEFSNG A-Z
SUB DrawBlock
IF BlockType = 1 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "Û": LOCATE BlockY + 1, BlockX: PRINT "Û": LOCATE BlockY + 2, BlockX: PRINT "Û": LOCATE BlockY + 3, BlockX: PRINT "Û"
IF BlockType = 1 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "Û": LOCATE BlockY, BlockX + 1: PRINT "Û": LOCATE BlockY, BlockX + 2: PRINT "Û": LOCATE BlockY, BlockX + 3: PRINT "Û"
IF BlockType = 2 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
IF BlockType = 2 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT ""
IF BlockType = 2 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
IF BlockType = 2 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 2: PRINT "": LOCATE BlockY + 1, BlockX: PRINT ""
IF BlockType = 3 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "±": LOCATE BlockY + 1, BlockX + 1: PRINT "±": LOCATE BlockY + 2, BlockX + 1: PRINT "±": LOCATE BlockY + 2, BlockX: PRINT "±"
IF BlockType = 3 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "±": LOCATE BlockY + 1, BlockX: PRINT "±±±"
IF BlockType = 3 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "±±": LOCATE BlockY + 1, BlockX: PRINT "±": LOCATE BlockY + 2, BlockX: PRINT "±"
IF BlockType = 3 AND Rotation = 4 THEN LOCATE BlockY, BlockX: PRINT "±±±": LOCATE BlockY + 1, BlockX + 2: PRINT "±"
IF BlockType = 4 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX + 2: PRINT ""
IF BlockType = 4 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX: PRINT ""
IF BlockType = 4 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT ""
IF BlockType = 4 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
IF BlockType = 5 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "":
IF BlockType = 6 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "ð": LOCATE BlockY + 1, BlockX: PRINT "ðð": LOCATE BlockY + 2, BlockX + 1: PRINT "ð"
IF BlockType = 6 AND Rotation = 2 THEN LOCATE BlockY, BlockX + 1: PRINT "ðð": LOCATE BlockY + 1, BlockX: PRINT "ðð"
IF BlockType = 7 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "é": LOCATE BlockY + 1, BlockX: PRINT "éé": LOCATE BlockY + 2, BlockX: PRINT "é"
IF BlockType = 7 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "éé": LOCATE BlockY + 1, BlockX + 1: PRINT "éé"
END SUB
SUB DrawScrn
COLOR 15, 1
LOCATE 25, 1: PRINT " Textris - Text Mode Version "
VIEW PRINT 1 TO 25
LOCATE 24, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
COLOR Foregrnd, Backgrnd
FOR X = 1 TO 80
FOR Y = 1 TO 23
LOCATE Y, X: PRINT CHR$(176)
NEXT Y
NEXT X
COLOR 15, 0
LOCATE 3, 67: PRINT "ÚÄÄÄÄÄÄÄÄÄÄ"
LOCATE 4, 67: PRINT "F10 = QUIT"
LOCATE 5, 67: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÙ"
LOCATE 3, 3: PRINT "ÚStatusÄÄÄ"
LOCATE 4, 3: PRINT "Level: "
LOCATE 5, 3: PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄ"
LOCATE 6, 3: PRINT "Score: "
LOCATE 7, 3: PRINT " "
LOCATE 8, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
LOCATE 10, 3: PRINT "ÚControlsÄ"
LOCATE 11, 3: PRINT "Numpad: "
LOCATE 12, 3: PRINT " Up, Dn, "
LOCATE 13, 3: PRINT " Lt, Rt "
LOCATE 14, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
LOCATE 16, 3: PRINT "ÚLevel UpÄ"
LOCATE 17, 3: PRINT " "
LOCATE 18, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
LOCATE 2, 20: PRINT "ÚTextris" + STRING$(WindowWidth - 9, "Ä") + ""
FOR Y = 1 TO 21
LOCATE Y + 2, 20: PRINT "" + STRING$(WindowWidth, " ") + ""
NEXT
LOCATE 23, 20: PRINT "À" + STRING$(WindowWidth, "Ä") + "Ù"
TimesCrazyDone = 0
DO UNTIL TimesCrazyDone = Difficulty
DO UNTIL LEN(CrazyBar$) = WindowWidth
RANDOMIZE TIMER
CrazyBar = INT(RND * 12) + 1
IF CrazyBar = 1 THEN CrazyBar$ = CrazyBar$ + "Û"
IF CrazyBar = 2 THEN CrazyBar$ = CrazyBar$ + ""
IF CrazyBar = 3 THEN CrazyBar$ = CrazyBar$ + "±"
IF CrazyBar = 4 THEN CrazyBar$ = CrazyBar$ + ""
IF CrazyBar = 5 THEN CrazyBar$ = CrazyBar$ + "é"
IF CrazyBar = 6 THEN CrazyBar$ = CrazyBar$ + "ð"
IF CrazyBar = 7 THEN CrazyBar$ = CrazyBar$ + ""
IF CrazyBar = 8 THEN CrazyBar$ = CrazyBar$ + "Î"
IF CrazyBar = 9 THEN CrazyBar$ = CrazyBar$ + "ê"
IF CrazyBar = 10 THEN CrazyBar$ = CrazyBar$ + " "
IF CrazyBar = 11 THEN CrazyBar$ = CrazyBar$ + " "
IF CrazyBar = 12 THEN CrazyBar$ = CrazyBar$ + " "
LOOP
LOCATE 22 - CrazyBarDiff, 21: PRINT CrazyBar$
CrazyBarDiff = CrazyBarDiff + 1
TimesCrazyDone = TimesCrazyDone + 1
CrazyBar$ = ""
LOOP
END SUB
SUB Ending
SCREEN 0
WIDTH 80, 25
COLOR 7, 0
CLS
PRINT " ßÜ Ü ÛÛÛÛÜ Ü Ü Ü ÜÛ Ü Ü ±±±"
PRINT " ±±± Û Û Û Û Û Û Û ÛÛ Û Û ±±±"
PRINT "±±±± ßÛ Û Û Û Û Û Ü Û ÛÛ ÛÛ Û Û ÛÛÛ±±±±±±"
PRINT "±±± Û ßÛÛÛÛ Û Û Û Û Û Û Û Û Û Û ÛÛ±±±±±±"
PRINT " ±Û Üß ÛÜ ÜÛ Û Û Û Û Û Û ÛÛ±±±±±±"
PRINT " ±±±ÛÛ ßßß ß ß Û ÛÛ ß ÛÛÛ±±±±±±"
PRINT " ±±±±ÛÛ ±±±"
PRINT " ±±±ÛÛ ±±±"
PRINT " ±±±ÛÛ ÛÛÛÛÛÛÛÛ ±±±±"
PRINT " ±±±ÛÛ ÛÛÛÛÛÛ ±±±±"
PRINT "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±± ÛÛ"
PRINT " ±±"
PRINT " ±±±±±±"
PRINT "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±± ±±±±±±"
PRINT " ±±"
PRINT "± ±±"
PRINT "±±±± ±±±±±±±±Û"
PRINT "±±±±±±±±±±± ±±±±±±±±±Û"
PRINT " ±Û"
PRINT "ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛ"
PRINT "±Û ÛÛÛÛ"
WHILE INKEY$ "": WEND
P$ = INPUT$(1)
END SUB
COLOR 15, 1
FOR Y = 10 TO 16
FOR X = 1 TO 80
LOCATE Y, X: PRINT " "
NEXT X
NEXT Y
COLOR 4, 1: LOCATE 11, 1: PRINT " ÛßßÛßßÛ ÛßßßÛ ßÛ Ûß ÛßßÛßßÛ ßÛßßßÛ ÛßÛßÛ ÛßßßÛ"
COLOR 3, 1: LOCATE 12, 1: PRINT " Û Û Ü Û Û Û ÜÛÜÜÜÛ Û ÛÜÜÜÜ"
COLOR 9, 1: LOCATE 13, 1: PRINT " Û ÛßßßÛ Û Û Û ßÜ Û Û"
COLOR 6, 1: LOCATE 14, 1: PRINT " Û Û Û Û Û Û ßÜ Û Û"
COLOR 8, 1: LOCATE 15, 1: PRINT " Û ÛÜÜÜÛ ÜÛ ÛÜ Û ÜÛÜ ÜÛÜ ÛÜÛÜÛ ÛÜÜÜÛ"
END SUB
I really like the fact that in ICQ you can switch between AIM-style and ICQ-style messaging. Personally I like the ICQ-style because there is not such an annoying blinking effect as with in AIM. That is one big reason why I want to use ICQ mainly.
If anyone wants to petition AOL to make the blinking in AIM an option, or less annoying, please go here: http://www3.sympatico.ca/anthonyg/aimpetition.html
Or you can always get a third party shell such as BASH
Normally a administrator (regarding Windows) often uses a boot disk to get to the command prompt.
You can always make an option in your Autoexec.bat to check if you're holding down a key to bring you to the command prompt, or to use the Choice command to prompt you to continue running Windows or launch a shell. (That is, if the command still exists in WinME)
I understand this isn't easy for the average user to do, but using the command prompt is considered an advanced feature to the targeted Windows ME market.
Personally, I din't expect the internet to deliver an TV-like experience, that's what TV is for... as for interactive TV, that's just complicating matters, I use my television to relax, the entire point is to be enjoying a show, not anything else.
Basically I think they are expecting too much from such a small step forward. Our computers don't provide those experiences locally with all the bandwidth available from our hard disks, so why expect this experience to come true with the relatively small bandwidth the internet provides?
However with new codecs such as Microsoft's Video/Audio 8 and 3ivx, maybe it's possible, but I wouldn't expect anything too revolutionary considering what we have to work with.
To say that the internet is at its peak is silly in itself, technology will always advance. Just because the hype made people expect too much doesn't mean this isn't possible at a later time.
Microbytes is already offering Linux as the standard OS installed on all of their PCs, but the only reason they state is to dodge the so-called "Windows Tax" and give the end user a cheaper PC. Keep in mind this store sells custom-built PCs, and the reason they state for installing Linux is that they all know everyone has a copy of Windows and the clientel are perfectly capable of installing it themselves. In other words, they don't want to re-sell it.
Windows has binary-only drivers and it is hugely successful. I don't see your point.
I don't think that's id's responsibility. DirectX comes with a program to do this called DXDIAG and I'm pretty sure whatever API Linux has should come with a way to test it as well. It's not the game creator's responsability to make sure the OS runs smoothly.
> They could also have provided some additional software to help the user configure their X server;
This should be the responsability of the people who programmed X. Why would they make an interface that can't even be configured properly with their own software?
To me, X should have been distributed with these features already there. Why should software developers have to also support the OS? The OS should be supporting the software developers.
You can turn on closed captioning! :D
I guess you must have really high standards, but personally I thought the dubs of Neon Genesis, Macross Plus, Ranma, Dragon Ball Z, and Princess Mononoke (to name a few) were great. I have only seen one Ranma episode and one of the Macross Plus parts in Japanese, but I didn't think I was missing anything - except the picture since I was busy reading all the subtitles. If you get the English dubs, you won't be missing anything. The voices on the dubs are at least on par with any animated films we have here (though the content is usually entirely different, of course).
So far as I know, there has been the GeForce, GeForce DDR, GeForce 2 MX, GeForce 2 GTS, GeForce 2 Pro (Same as GF2GTS but faster RAM), and GeForce 2 Ultra. 6 products in 6 months. Isn't this overkill? I would have been much happier if they just released the GeForce 2 GTS for hardcore gamers, and GeForce 2 MX for the consumer market. I don't think any other manufacturer has this many variations of their chipsets, and I don't really see what makes this any good. Sure there is something for everyone, but isn't this over-saturation?
The worst of it is that we aren't warned when or if NVidia's going to spring a better version of their video cards on us, making our very expensive purchase obsolete.
You'd think this logic would apply to Microsoft but people never think of them that way either. They always call them M$, Microsloth, their product Winblows, Windoze...
Oh, I almost forgot, in the Accessibility Control Panel, you can turn on Mousekeys which lets you move the mouse cursor with the numeric keypad. There's pretty much no room for error this way.
ALT brings up the menus while arrows navigate them, CTRL+TAB navigates tabs at the top of dialog boxes, TAB moves the cursor to different buttons, Space presses a button or widget (checkbox/radio button), ALT+Letter selects a control with an underline in its name, ALT+TAB switches applications, ALT+ESC navigates open applications in a sequential order, Logo+D toggles minimizing of every application to see the desktop, ALT+Space brings up the system menu, ALT+F4 closes an application, F3 initiates the Find command (or Logo+F), ALT+Arrow initiates the "Back" or "Forward" command in explorer windows, Backspace navigates up one folder in the tree of My Computer or Explorer, F2 usually renames something, and F4 brings down the "Drives" in a dialog box or My Computer
In Internet Explorer, F11 makes it full screen, F6 lets you type in the "Address" bar, F4 pulls down the "Address" bar, ALT+Arrows works here too, and so on.
Hope this helps. Personally, I never use the mouse except in games or when navigating web pages.
I pay $35/month to get a rock-solid DSL connection (yes dynamic IP) from sympatico.ca at 960kb/sec, and I can independantly connect every machine in my house since the modem is connected to my hub and they each get 960kb/sec as well. I can't say I've ever needed tech support so I can't say how good it is. Since cable has a limit of 6GB/month around here through Videotron, this is the best option I can get. Redundant connections for greater bandwidth is great, and it doesn't violate my contract. Sympatico's attitude seems to be "As long as you don't break anything or need our help to do anything extra, go for it." I believe the connections will be upgraded to 3mb/sec in January and soon after that 7mb/sec. For $34/month, I feel that I get way more than I expected.
Ah I had no idea, I don't use linux. C is portable though and I'm sure they could include x86 emulation. That'd be cool. Then again there's Bochs, a platform independant x86 emulator that can be found here.
I dunno if you would call it platform independant but IE is on x86, WinCE machines, PowerPC, and DEC Alpha, and you can use it in Wine on any platform ;P
I was referring to speed, though, not overall score. Overall, it's just personal preference either way.
Click this link to see the benchmarks and this link for the entire page of that article.
Clearly IE is faster, by a huge margin (surprising actually).
The comparison on that page shows that the PS2 needs software on a PS2 memory card to play a DVD. I own a US PS2 and can verify the console plays DVDs in hardware with a "driver" built into the system's firmware/bios which can be updated by software (perhaps contained on a memory card). It can certainly be used to play DVDs right out of the box with nothing extra.
Well the SEGA Dreamcast lets you use any dialup ISP, and it's basically what you ask for, plays games and does nothing else. Not that that's bad, cos it's definitely good at playing games. Check out http://dc.ign.com to see that the Dreamcast has many quality titles. Personally I own both a PS2 and a Dreamcast. Since I can't afford any games for the PS2 yet (haha) I can't really compare the two fairly. But I must say I'm disappointed that I can't get online with my PS2 right now... there is no connectivity for it by default.
So... the only thing special about the IES is that it runs Linux? I don't think the end user cares about such things, only that it plays the games from popular development houses that want a large audience (therefore profit). Why should they market it as a special feature? Every video game system has operating software. It's nothing new... Since Linux enables free software development kits. I wonder if Indrema corp is taking any steps to prevent any old joe from marketing a big turd and pass it off as an exciting game, launching the next Atari-and-the-video-game-market-crash.
Personally I don't like its retro-70's "space-age" look. Yes this is opinion, I'm not knocking the machine just because of personal taste, but it doesn't fit in at all with my component entertainment system.
If you use it to make a self-bootable game, then you change hardware, it won't work anymore will it? You can't just write the new drivers and configure it right on the CD, you'll have to end up re-burning all your games. It's not really that practical an idea...
For some reason the code screwed up from putting it in a message as opposed to the file itself. I copied back the code and a bunch of things were missing. Oh well if you can fix it for yourself go ahead. Too bad I can't attach files in a post (or the posts show up the way I made them in plain text).
Well, maybe this would be interesting. It's by me! I hope this works for you. I used QBasic 4.5
.1 * LevelNumber ELSE Rest .3
.5
Ä ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
± ±±± ÛÛ"
± ±±± ±±±±±±"
."
:"
Ä ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
Ä ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
:"
."
----Textris.cfg----
CGA
0
28
1
0
9
// Line one is video mode (CGA, EGA, VGA)
// Line two is difficulty (0-5)
// Line three is Textris window width
// Line four is endless game (Y = 1, N = 0)
// Line five is background color (0-5)
// Line six is foreground color (0-15)
----End Textris.cfg----
----Textris.bas----
DECLARE SUB Ending ()
DECLARE SUB EraseBlock ()
DECLARE SUB DrawBlock ()
DECLARE SUB TitleScreen ()
DECLARE SUB DrawScrn ()
DECLARE FUNCTION CalcDelay! ()
DECLARE SUB Rest (T!)
DIM SHARED scrSavBlocks(80, 25)
DIM SHARED BlockType
DIM SHARED Difficulty
DIM SHARED Rotation
DIM SHARED BlockX
DIM SHARED BlockY
DIM SHARED MachSpeed AS SINGLE
DIM SHARED WindowWidth
DIM Nono(1, 1)
DIM scrSavBlocksSave(25, 80)
DIM SHARED Foregrnd
DIM SHARED Backgrnd
ON ERROR GOTO BetaError
MachSpeed = CalcDelay!
TitleScreen
P$ = INPUT$(1)
Endless = 0
WindowWidth = 33
LevelNumber = 1
PlayerScore = 0
OPEN "TEXTRIS.CFG" FOR INPUT AS #1
SEEK #1, 1
LINE INPUT #1, Video$
INPUT #1, Difficulty
IF Difficulty 5 THEN Difficulty = 0
INPUT #1, WindowWidth
IF WindowWidth 33 THEN WindowWidth = 28
INPUT #1, Endless
IF Endless 1 THEN Endless = 0
INPUT #1, Backgrnd
IF Backgrnd 5 THEN Backgrnd = 1
INPUT #1, Foregrnd
IF Foregrnd 15 THEN Foregrnd = 9
CLOSE #1
SCREEN 0
IF COMMAND$ = "/?" OR COMMAND$ = "?" THEN GOTO ParametersHelp
IF UCASE$(COMMAND$) >= "CONFIG" THEN GOSUB Configuration
IF UCASE$(COMMAND$) >= "CGA" THEN WIDTH 80, 25
IF UCASE$(COMMAND$) >= "EGA" THEN WIDTH 80, 43
IF UCASE$(COMMAND$) >= "VGA" THEN WIDTH 80, 50
IF UCASE$(Video$) >= "CGA" THEN WIDTH 80, 25
IF UCASE$(Video$) >= "EGA" THEN WIDTH 80, 43
IF UCASE$(Video$) >= "VGA" THEN WIDTH 80, 50
COLOR 7, 0
LOCATE 1, 1, 0
CLS
LevelUp = 10
BlocksLeft = 10
DrawScrn
GOSUB NewBlock
PlayerScore = 0
LOCATE 4, 10: PRINT LevelNumber
LOCATE 7, 4: PRINT PlayerScore
LOCATE 17, 5: COLOR 15: PRINT LevelUp - BlocksBusted
Rotation = 1
DO
KEY(0) ON
ON KEY(10) GOSUB EndTheProgram
ON KEY(11) GOSUB RotateBlock
ON KEY(12) GOSUB LeftBlock
ON KEY(13) GOSUB RightBlock
ON KEY(14) GOSUB DropBlock
TextrisKey$ = INKEY$
IF TextrisKey$ = CHR$(0) + "H" THEN GOSUB RotateBlock
IF TextrisKey$ = CHR$(0) + "P" THEN GOSUB DropBlock
IF TextrisKey$ = CHR$(0) + "K" THEN GOSUB LeftBlock
IF TextrisKey$ = CHR$(0) + "M" THEN GOSUB RightBlock
IF BlocksLeft = 22 THEN GOSUB NewBlock
IF Endless = 0 THEN Rest
IF Endless = 0 THEN IF LevelNumber >= 10 THEN KEY(0) OFF: GOTO EndingOfGame
KEY(0) OFF
IF PlayerScore >= 999999999 THEN PlayerScore = 999999999
IF LevelNumber >= 100 THEN LevelNumber = 100
WHILE INKEY$ "": WEND
IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 4, BlockX): scrSavB = 0: scrSavC = 0: scrSavD = 0
IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = SCREEN(BlockY + 1, BlockX + 3)
IF BlockType = 2 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 2 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
IF BlockType = 2 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 2 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 3 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 3 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 3 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 3 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 4 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 4 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 4 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
IF BlockType = 4 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 5 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 6 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 6 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
IF BlockType = 7 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 7 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = 0
IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
GOSUB NewBlock
ELSE
EraseBlock
BlockY = BlockY + 1
DO UNTIL CHR$(scrSav) = " "
scrSav = SCREEN(BlockY + 2, BlockX)
LOCATE BlockY - 1, BlockX: PRINT " "
LOOP
DrawBlock
END IF
KEY(0) ON
LOOP
RotateBlock:
KEY(0) OFF
IF BlockType = 1 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " ": LOCATE BlockY + 3, BlockX: PRINT " "
IF BlockType = 1 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY, BlockX + 2: PRINT " ": LOCATE BlockY, BlockX + 3: PRINT " "
IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = SCREEN(BlockY + 2, BlockX): scrSavD = SCREEN(BlockY + 3, BlockX)
IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY, BlockX + 1): scrSavC = SCREEN(BlockY, BlockX + 2): scrSavD = SCREEN(BlockY, BlockX + 3)
IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
IF BlockType = 1 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
IF BlockType = 2 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
IF BlockType = 3 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
IF BlockType = 4 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
IF BlockType = 6 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
IF BlockType = 7 AND Rotation = 1 AND BlockX "": WEND
IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = SCREEN(BlockY + 3, BlockX - 1)
IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = 0: scrSavC = 0: scrSavD = 0
IF BlockType = 2 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
IF BlockType = 2 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
IF BlockType = 2 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = SCREEN(BlockY + 2, BlockX): scrSavD = 0
IF BlockType = 2 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
IF BlockType = 3 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
IF BlockType = 3 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
IF BlockType = 3 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
IF BlockType = 3 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 4 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
IF BlockType = 4 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
IF BlockType = 4 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = 0: scrSavD = 0
IF BlockType = 4 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX): scrSavD = 0
IF BlockType = 5 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
IF BlockType = 6 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX): scrSavD = 0
IF BlockType = 6 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
IF BlockType = 7 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
IF BlockType = 7 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = 0: scrSavD = 0
IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
RETURN
ELSE
EraseBlock
BlockX = BlockX - 1
IF BlockX "": WEND
IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = SCREEN(BlockY + 3, BlockX + 1)
IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 4): scrSavB = 0: scrSavC = 0: scrSavD = 0
IF BlockType = 2 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 2 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 2 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 2 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
IF BlockType = 3 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 3 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
IF BlockType = 3 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 3 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
IF BlockType = 4 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
IF BlockType = 4 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = 0
IF BlockType = 4 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = 0: scrSavD = 0
IF BlockType = 4 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 5 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = 0: scrSavD = 0
IF BlockType = 6 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 6 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = 0: scrSavD = 0
IF BlockType = 7 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = 0
IF BlockType = 7 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
RETURN
ELSE
EraseBlock
BlockX = BlockX + 1
IF BlockType = 1 AND BlockX >= 53 AND Rotation = 1 THEN BlockX = 53
IF BlockType = 1 AND BlockX >= 50 AND Rotation = 2 THEN BlockX = 50
IF BlockType = 2 AND BlockX >= 52 THEN BlockX = 52
IF BlockType = 2 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
IF BlockType = 2 AND BlockX >= 52 AND Rotation = 3 THEN BlockX = 52
IF BlockType = 2 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 51
IF BlockType = 3 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
IF BlockType = 3 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
IF BlockType = 3 AND BlockX >= 52 AND Rotation = 3 THEN BlockX = 52
IF BlockType = 3 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 51
IF BlockType = 4 AND BlockX >= 51 AND Rotation = 1 THEN BlockX = 51
IF BlockType = 4 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 52
IF BlockType = 4 AND BlockX >= 51 AND Rotation = 3 THEN BlockX = 51
IF BlockType = 4 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 52
IF BlockType = 5 AND BlockX >= 52 THEN BlockX = 52
IF BlockType = 6 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
IF BlockType = 6 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
IF BlockType = 7 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
IF BlockType = 7 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
DrawBlock
END IF
KEY(0) ON
RETURN
DropBlock:
KEY(0) OFF
WHILE INKEY$ "": WEND
IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 4, BlockX): scrSavB = 0: scrSavC = 0: scrSavD = 0
IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = SCREEN(BlockY + 1, BlockX + 3)
IF BlockType = 2 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 2 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
IF BlockType = 2 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 2 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 3 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 3 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 3 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 3 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 4 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
IF BlockType = 4 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 4 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
IF BlockType = 4 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 5 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 6 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 6 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
IF BlockType = 7 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
IF BlockType = 7 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = 0
IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
GOSUB NewBlock
ELSE
EraseBlock
BlockY = BlockY + 1
DO UNTIL CHR$(scrSav) = " "
scrSav = SCREEN(BlockY + 2, BlockX)
LOCATE BlockY - 1, BlockX: PRINT " "
LOOP
DrawBlock
END IF
KEY(0) ON
RETURN
LevelPassed:
COLOR 15, 0
PlayerScore = PlayerScore + (LevelNumber * 10)
BlocksBusted = 0
LevelNumber = LevelNumber + 1
LOCATE 4, 10: PRINT LevelNumber
LevelUp = (LevelNumber * 10)
BlocksLeft = LevelUp
RETURN
NewBlock:
KEY(0) OFF
WHILE INKEY$ "": WEND
FOR Y = 3 TO 22
FOR X = 1 TO WindowWidth
LineBlock$ = LineBlock$ + CHR$(SCREEN(Y, X + 20))
NEXT X
IF INSTR(LineBlock$, " ") > 0 THEN
LineBlock$ = ""
ELSE
FOR BlinkLine = 1 TO 14
COLOR BlinkLine
LOCATE Y, 21: PRINT LineBlock$
Rest 2
NEXT BlinkLine
LineBlock$ = ""
LOCATE Y, 21: PRINT STRING$(WindowWidth, " ")
PlayerScore = PlayerScore + 10
IF PlayerScore >= 999999999 THEN PlayerScore = 999999999
IF LevelNumber >= 100 THEN LevelNumber = 100
BlocksBusted = BlocksBusted + 1
BlocksLeft = LevelUp - BlocksBusted
IF BlocksLeft = 999999999 THEN PlayerScore = 999999999
IF LevelNumber >= 100 THEN LevelNumber = 100
LOCATE 7, 4: PRINT PlayerScore
DrawBlock
'Û ± ð é ÛÛÛÛ ±± ±±± ðð éé
'Û ± ðð éé ± ± ± ðð éé
'Û ±± ð é ±±± ±
'Û
KEY(0) ON
RETURN
EndingOfGame:
Ending
EndTheProgram:
SCREEN 0
WIDTH 80, 25
COLOR 7, 0
LOCATE 1, 1, 0
CLS
PRINT
PRINT "Thank you for playing Textris"
PRINT "Your last score was "; PlayerScore; "pts"
IF PlayerScore = 0 THEN PRINT "I guess you don't like my game!"
IF PlayerScore = 1 THEN PRINT "Practice more often..."
IF PlayerScore = 50 THEN PRINT "Getting there..."
IF PlayerScore = 150 THEN PRINT "Not bad!"
IF PlayerScore = 200 THEN PRINT "Good!"
IF PlayerScore = 400 THEN PRINT "Excellent!"
IF PlayerScore = 700 THEN PRINT "I can't beleive you played this long!"
IF PlayerScore >= 1000 THEN PRINT "Supreme Textris Master!!"
PRINT
PRINT "By: Scape (C) 1995"
PRINT
PRINT
PRINT
SYSTEM
LOCATE 1, 1: PRINT "Exit Failed!!"
RETURN
GameOver:
LOCATE 2, 20: PRINT "ÚTextris" + STRING$(WindowWidth - 9, "Ä") + ""
COLOR 9, 1
FOR Y = 1 TO 20
LOCATE Y + 2, 21: PRINT STRING$(WindowWidth, "")'""
Rest 1
NEXT
X = 0
LOCATE 12, 21 + INT((WindowWidth / 2) - 4): PRINT "GAME OVER"
COLOR 15, 0
LOCATE 23, 20: PRINT "À" + STRING$(WindowWidth, "Ä") + "Ù"
P$ = ""
DO UNTIL P$ = " "
P$ = INKEY$
COLOR X, 1
X = X + 1: IF X >= 14 THEN X = 0
LOCATE 12, 21 + INT((WindowWidth / 2) - 4): PRINT "GAME OVER"
LOOP
GOTO EndTheProgram
Configuration:
SCREEN 0
WIDTH 80, 25
COLOR 7, 0
CLS
PRINT "Video Type Selection"
PRINT
LOCATE 3, 3: COLOR 15, 5: PRINT "-=CGA=-"
LOCATE 4, 1: COLOR 7, 0: PRINT "2 -=EGA=-"
LOCATE 5, 1: COLOR 7, 0: PRINT "3 -=VGA/SVGA=-"
COLOR 7, 0: LOCATE 3, 12: PRINT "(Default)": LOCATE 3, 1: PRINT "1"
Video$ = ""
DO UNTIL Video$ = "CGA" OR Video$ = "VGA" OR Video$ = "EGA"
Video$ = INPUT$(1)
IF Video$ = "2" THEN Video$ = "EGA"
IF Video$ = "3" THEN Video$ = "VGA"
IF Video$ = "1" THEN Video$ = "CGA"
LOOP
CLS
PRINT "Textris Window Width (23 - 33) Default 33"
PRINT
INPUT "", WindowWidth
IF WindowWidth > 33 THEN WindowWidth = 33
IF WindowWidth =
CalcDelay! = I!
END FUNCTION
DEFSNG A-Z
SUB DrawBlock
IF BlockType = 1 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "Û": LOCATE BlockY + 1, BlockX: PRINT "Û": LOCATE BlockY + 2, BlockX: PRINT "Û": LOCATE BlockY + 3, BlockX: PRINT "Û"
IF BlockType = 1 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "Û": LOCATE BlockY, BlockX + 1: PRINT "Û": LOCATE BlockY, BlockX + 2: PRINT "Û": LOCATE BlockY, BlockX + 3: PRINT "Û"
IF BlockType = 2 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
IF BlockType = 2 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT ""
IF BlockType = 2 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
IF BlockType = 2 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 2: PRINT "": LOCATE BlockY + 1, BlockX: PRINT ""
IF BlockType = 3 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "±": LOCATE BlockY + 1, BlockX + 1: PRINT "±": LOCATE BlockY + 2, BlockX + 1: PRINT "±": LOCATE BlockY + 2, BlockX: PRINT "±"
IF BlockType = 3 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "±": LOCATE BlockY + 1, BlockX: PRINT "±±±"
IF BlockType = 3 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "±±": LOCATE BlockY + 1, BlockX: PRINT "±": LOCATE BlockY + 2, BlockX: PRINT "±"
IF BlockType = 3 AND Rotation = 4 THEN LOCATE BlockY, BlockX: PRINT "±±±": LOCATE BlockY + 1, BlockX + 2: PRINT "±"
IF BlockType = 4 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX + 2: PRINT ""
IF BlockType = 4 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX: PRINT ""
IF BlockType = 4 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT ""
IF BlockType = 4 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
IF BlockType = 5 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "":
IF BlockType = 6 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "ð": LOCATE BlockY + 1, BlockX: PRINT "ðð": LOCATE BlockY + 2, BlockX + 1: PRINT "ð"
IF BlockType = 6 AND Rotation = 2 THEN LOCATE BlockY, BlockX + 1: PRINT "ðð": LOCATE BlockY + 1, BlockX: PRINT "ðð"
IF BlockType = 7 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "é": LOCATE BlockY + 1, BlockX: PRINT "éé": LOCATE BlockY + 2, BlockX: PRINT "é"
IF BlockType = 7 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "éé": LOCATE BlockY + 1, BlockX + 1: PRINT "éé"
END SUB
SUB DrawScrn
COLOR 15, 1
LOCATE 25, 1: PRINT " Textris - Text Mode Version "
VIEW PRINT 1 TO 25
LOCATE 24, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
COLOR Foregrnd, Backgrnd
FOR X = 1 TO 80
FOR Y = 1 TO 23
LOCATE Y, X: PRINT CHR$(176)
NEXT Y
NEXT X
COLOR 15, 0
LOCATE 3, 67: PRINT "ÚÄÄÄÄÄÄÄÄÄÄ"
LOCATE 4, 67: PRINT "F10 = QUIT"
LOCATE 5, 67: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÙ"
LOCATE 3, 3: PRINT "ÚStatusÄÄÄ"
LOCATE 4, 3: PRINT "Level: "
LOCATE 5, 3: PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄ"
LOCATE 6, 3: PRINT "Score: "
LOCATE 7, 3: PRINT " "
LOCATE 8, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
LOCATE 10, 3: PRINT "ÚControlsÄ"
LOCATE 11, 3: PRINT "Numpad: "
LOCATE 12, 3: PRINT " Up, Dn, "
LOCATE 13, 3: PRINT " Lt, Rt "
LOCATE 14, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
LOCATE 16, 3: PRINT "ÚLevel UpÄ"
LOCATE 17, 3: PRINT " "
LOCATE 18, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
LOCATE 2, 20: PRINT "ÚTextris" + STRING$(WindowWidth - 9, "Ä") + ""
FOR Y = 1 TO 21
LOCATE Y + 2, 20: PRINT "" + STRING$(WindowWidth, " ") + ""
NEXT
LOCATE 23, 20: PRINT "À" + STRING$(WindowWidth, "Ä") + "Ù"
TimesCrazyDone = 0
DO UNTIL TimesCrazyDone = Difficulty
DO UNTIL LEN(CrazyBar$) = WindowWidth
RANDOMIZE TIMER
CrazyBar = INT(RND * 12) + 1
IF CrazyBar = 1 THEN CrazyBar$ = CrazyBar$ + "Û"
IF CrazyBar = 2 THEN CrazyBar$ = CrazyBar$ + ""
IF CrazyBar = 3 THEN CrazyBar$ = CrazyBar$ + "±"
IF CrazyBar = 4 THEN CrazyBar$ = CrazyBar$ + ""
IF CrazyBar = 5 THEN CrazyBar$ = CrazyBar$ + "é"
IF CrazyBar = 6 THEN CrazyBar$ = CrazyBar$ + "ð"
IF CrazyBar = 7 THEN CrazyBar$ = CrazyBar$ + ""
IF CrazyBar = 8 THEN CrazyBar$ = CrazyBar$ + "Î"
IF CrazyBar = 9 THEN CrazyBar$ = CrazyBar$ + "ê"
IF CrazyBar = 10 THEN CrazyBar$ = CrazyBar$ + " "
IF CrazyBar = 11 THEN CrazyBar$ = CrazyBar$ + " "
IF CrazyBar = 12 THEN CrazyBar$ = CrazyBar$ + " "
LOOP
LOCATE 22 - CrazyBarDiff, 21: PRINT CrazyBar$
CrazyBarDiff = CrazyBarDiff + 1
TimesCrazyDone = TimesCrazyDone + 1
CrazyBar$ = ""
LOOP
END SUB
SUB Ending
SCREEN 0
WIDTH 80, 25
COLOR 7, 0
CLS
PRINT " ßÜ Ü ÛÛÛÛÜ Ü Ü Ü ÜÛ Ü Ü ±±±"
PRINT " ±±± Û Û Û Û Û Û Û ÛÛ Û Û ±±±"
PRINT "±±±± ßÛ Û Û Û Û Û Ü Û ÛÛ ÛÛ Û Û ÛÛÛ±±±±±±"
PRINT "±±± Û ßÛÛÛÛ Û Û Û Û Û Û Û Û Û Û ÛÛ±±±±±±"
PRINT " ±Û Üß ÛÜ ÜÛ Û Û Û Û Û Û ÛÛ±±±±±±"
PRINT " ±±±ÛÛ ßßß ß ß Û ÛÛ ß ÛÛÛ±±±±±±"
PRINT " ±±±±ÛÛ ±±±"
PRINT " ±±±ÛÛ ±±±"
PRINT " ±±±ÛÛ ÛÛÛÛÛÛÛÛ ±±±±"
PRINT " ±±±ÛÛ ÛÛÛÛÛÛ ±±±±"
PRINT "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
PRINT " ±±"
PRINT " ±±±±±±"
PRINT "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
PRINT " ±±"
PRINT "± ±±"
PRINT "±±±± ±±±±±±±±Û"
PRINT "±±±±±±±±±±± ±±±±±±±±±Û"
PRINT " ±Û"
PRINT "ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛ"
PRINT "±Û ÛÛÛÛ"
WHILE INKEY$ "": WEND
P$ = INPUT$(1)
END SUB
SUB EraseBlock
IF BlockType = 1 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " ": LOCATE BlockY + 3, BlockX: PRINT " "
IF BlockType = 1 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY, BlockX + 2: PRINT " ": LOCATE BlockY, BlockX + 3: PRINT " "
IF BlockType = 2 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " "
IF BlockType = 2 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " "
IF BlockType = 2 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " "
IF BlockType = 2 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 2: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " "
IF BlockType = 3 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " "
IF BlockType = 3 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " "
IF BlockType = 3 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " "
IF BlockType = 3 AND Rotation = 4 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 2: PRINT " "
IF BlockType = 4 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 2: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " "
IF BlockType = 4 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " "
IF BlockType = 4 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " "
IF BlockType = 4 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " "
IF BlockType = 5 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ":
IF BlockType = 6 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " "
IF BlockType = 6 AND Rotation = 2 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " "
IF BlockType = 7 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " "
IF BlockType = 7 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " "
END SUB
DEFINT A-Z
'Rest:
' pauses the program
SUB Rest (T!)
DO
D! = D! + 1
LOOP UNTIL D! >= MachSpeed / T!
END SUB
DEFSNG A-Z
SUB TitleScreen
COLOR 15, 0
CLS
LOCATE 4, 1: PRINT "ú ú"
LOCATE 5, 1: PRINT "ù ù"
LOCATE 6, 1: PRINT ".
LOCATE 7, 1: PRINT ":
LOCATE 8, 1: PRINT " "
LOCATE 9, 1: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
LOCATE 17, 1: PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
LOCATE 18, 1: PRINT " "
LOCATE 19, 1: PRINT ":
COLOR 8, 0: LOCATE 19, 6: PRINT "Textris was originally coded by: Anthony Gornicki for Scape (C) 1995"
COLOR 15, 0
LOCATE 20, 1: PRINT ".
LOCATE 21, 1: PRINT "ù ù"
LOCATE 22, 1: PRINT "ú ú"
COLOR 15, 1
FOR Y = 10 TO 16
FOR X = 1 TO 80
LOCATE Y, X: PRINT " "
NEXT X
NEXT Y
COLOR 4, 1: LOCATE 11, 1: PRINT " ÛßßÛßßÛ ÛßßßÛ ßÛ Ûß ÛßßÛßßÛ ßÛßßßÛ ÛßÛßÛ ÛßßßÛ"
COLOR 3, 1: LOCATE 12, 1: PRINT " Û Û Ü Û Û Û ÜÛÜÜÜÛ Û ÛÜÜÜÜ"
COLOR 9, 1: LOCATE 13, 1: PRINT " Û ÛßßßÛ Û Û Û ßÜ Û Û"
COLOR 6, 1: LOCATE 14, 1: PRINT " Û Û Û Û Û Û ßÜ Û Û"
COLOR 8, 1: LOCATE 15, 1: PRINT " Û ÛÜÜÜÛ ÜÛ ÛÜ Û ÜÛÜ ÜÛÜ ÛÜÛÜÛ ÛÜÜÜÛ"
END SUB
----End Textris.bas----
I really like the fact that in ICQ you can switch between AIM-style and ICQ-style messaging. Personally I like the ICQ-style because there is not such an annoying blinking effect as with in AIM. That is one big reason why I want to use ICQ mainly.
l
If anyone wants to petition AOL to make the blinking in AIM an option, or less annoying, please go here: http://www3.sympatico.ca/anthonyg/aimpetition.htm
10-15% is a small speed increase, replacing my CPU for a 30% speed boost would be cheaper and more effective than buying 256MB of new RAM.
I don't think that all Intel cares about is raw speed... The Pentium 4 is apparently 20% slower than the Pentium 3 at the same clock speed.
Or you can always get a third party shell such as BASH
Normally a administrator (regarding Windows) often uses a boot disk to get to the command prompt.
You can always make an option in your Autoexec.bat to check if you're holding down a key to bring you to the command prompt, or to use the Choice command to prompt you to continue running Windows or launch a shell. (That is, if the command still exists in WinME)
I understand this isn't easy for the average user to do, but using the command prompt is considered an advanced feature to the targeted Windows ME market.
I hope this helps anyone