03-13-2004, 06:29 AM
03-13-2004, 11:34 PM
I not hate libs.
But I think if using libs QB can only be called a "code organizer" since the important things are in the libs.
QB.QLB can be used here because it is originally included in the QB4.5 package, and the first version of QB had these routines built in.
FFIX.QLB can be used because it's only a bug fix, not "extra code"
I think programming only in QB is a different art - let's do it
But I think if using libs QB can only be called a "code organizer" since the important things are in the libs.
QB.QLB can be used here because it is originally included in the QB4.5 package, and the first version of QB had these routines built in.
FFIX.QLB can be used because it's only a bug fix, not "extra code"
I think programming only in QB is a different art - let's do it
03-13-2004, 11:54 PM
Okay, but you are wrong on one statement: The first version of QB did not have those routines built in.
Qbasic 1.x is not the first version of QB. Qbasic 1.x came after QB 4.5
Read more here: http://www.download-qb.com
Anyhow, I think differently. To me, a QB game is a game which logic is made in QB. I just use a better PUT routine, for example. My game would run using the normal PUT which is built in, but slower. So esentially, the game is the same, but it runs faster.
Qbasic 1.x is not the first version of QB. Qbasic 1.x came after QB 4.5
Read more here: http://www.download-qb.com
Anyhow, I think differently. To me, a QB game is a game which logic is made in QB. I just use a better PUT routine, for example. My game would run using the normal PUT which is built in, but slower. So esentially, the game is the same, but it runs faster.
03-14-2004, 12:11 AM
If it works fine with pure QB code, and won't need GHzs, You can do it... This is like FFIX.
But if You can not do it without using external routines, You can not say that it is 100% QB...
I thought that the QB included in DOS was first, and only that was improved later... Thanks for the info. But anyway, interrupt handling is built in at a version of QB - so I think it can be used.
But if You can not do it without using external routines, You can not say that it is 100% QB...
I thought that the QB included in DOS was first, and only that was improved later... Thanks for the info. But anyway, interrupt handling is built in at a version of QB - so I think it can be used.
03-14-2004, 12:15 AM
My principal example is my game "Jill". I coded it in pure QB, using SCREEN 7. It needed a PII 300 Mhz to go at full rate (if there weren't many sprites on screen). When I changed the game to DirectQB (changing the paging routines and the GET/PUT routines) I was able to run the game at full rate in a 486 DX2 66 Mhz, and almost a full rate in a 486 SX.
03-16-2004, 11:33 PM
I think this game is okay for this challenge. P300 - not too high - but should be lower . But anyway that's good at a QB game.
Here speed counts too
I will try to create a scoring system...
Here speed counts too
I will try to create a scoring system...
03-19-2004, 07:22 PM
I try to use pure Quickbasic when it's about democoding because of the challenge. It doesn't matter for me if games are using libs, as long as they are smooth and funny to play.
I'd like to code a game in pure quickbasic, since the only thing I was doing for years is pure demofx coding and I'd like to try something diferrent now. I have no idea about good keyboard handling (instead of Inkey$, I tried to do it my own way with INP(&H60) but that wasn't working at many cases), I once used mouse (but with CALL INTERRUPT) and it's quite easier than what keyboard could be, I also don't have any idea about timers or music programming. I am wondering how easy or at least possible is to do these with pure quickbasic. I almost have an idea about Adlib music, but keyboard? It's a dream of mine now to have a working keyboard routine now, pure qb or even not!!! =)
But the gfx routines, would be a challenge to be in pure qb. I'd like to take your challenge for enough months, I am not sure about time though. It's a pitty to be working on many other things in the demoscene and not have a time to try some diferrent things I'd love to work on since ages (game, emulator, compiler coding).
Which are the best or most impressive pure quickbasic games anyways? (If there are some good enough) I don't have that much of an idea about the most famous games in the quickbasic scene. I am mostly in demos.. (But lately, enjoyed playing Monospace, Wetspot 2 and others that site suggested)
I'd like to code a game in pure quickbasic, since the only thing I was doing for years is pure demofx coding and I'd like to try something diferrent now. I have no idea about good keyboard handling (instead of Inkey$, I tried to do it my own way with INP(&H60) but that wasn't working at many cases), I once used mouse (but with CALL INTERRUPT) and it's quite easier than what keyboard could be, I also don't have any idea about timers or music programming. I am wondering how easy or at least possible is to do these with pure quickbasic. I almost have an idea about Adlib music, but keyboard? It's a dream of mine now to have a working keyboard routine now, pure qb or even not!!! =)
But the gfx routines, would be a challenge to be in pure qb. I'd like to take your challenge for enough months, I am not sure about time though. It's a pitty to be working on many other things in the demoscene and not have a time to try some diferrent things I'd love to work on since ages (game, emulator, compiler coding).
Which are the best or most impressive pure quickbasic games anyways? (If there are some good enough) I don't have that much of an idea about the most famous games in the quickbasic scene. I am mostly in demos.. (But lately, enjoyed playing Monospace, Wetspot 2 and others that site suggested)
03-19-2004, 07:52 PM
You can do FM music (ADLIB) easily in Pure QB. Check "TRAKKER" here: http://usuarios.lycos.es/qbsux/proggies.html to find out how.
About keyboard handling in pure QB... Yeah, it can be done also. Digging in ABC packets... Yeah:
Good luck!
About keyboard handling in pure QB... Yeah, it can be done also. Digging in ABC packets... Yeah:
Code:
'===========================================================================
' Subject: MULTIPLE KEYS Date: 03-08-97 (13:07)
' Author: Joe Huber, Jr. Code: QB, QBasic, PDS
' Origin: huberjjr@nicom.com Packet: KEYBOARD.ABC
'===========================================================================
DECLARE FUNCTION MULTIKEY (KEYNUM)
'MUTIKEY FUNCTION - LETS YOU TRAP SEVERAL KEYS AT ONCE (BETTER THAN INKEY$!!)
'
'USAGE:
' riable=MULTIKEY(KEYNUM)
'WHERE KEYNUM IS THE KEY YOU WANT TO TRAP
' riable = 1 IF KEY IS DEPRESSED, 0 IF IT ISN'T
'
'EMAIL ME AT: huberjjr@nicom.com
'
'HAVE FUN!!!
DIM SHARED KEYS(255), SC(255), DU(255) 'ALWAYS NEED THIS!!!
CLS
X = 10: Y = 10
XX = X: YY = Y
DO
'FOR I = 1 TO 255 '\
' TEST = MULTIKEY(I) ' |-TEST LOOP
' LOCATE 1, 1: PRINT TEST; I ' |
' WHILE INKEY$ = "": WEND ' | PRESS KEY IN QUESTION UNTIL
' IF TEST = 1 THEN END ' | LOOP ENDS. THE SECOND NUMBER IS THE
'NEXT I '/ SCAN CODE FOR MULTIKEY
RIGHT = MULTIKEY(75) ' GET SOME KEYS' STATUSES
LEFT = MULTIKEY(77)
UP = MULTIKEY(72)
DOWN = MULTIKEY(80)
SPACE = MULTIKEY(57)
ESC = MULTIKEY(1)
IF ESC = 1 THEN END 'TEMINATE WHEN ESCAPE IS PRESSED
IF TIMELOOP = 100 THEN 'THIS MOVES YOU AROUND
IF RIGHT = 1 THEN X = X - 1
IF LEFT = 1 THEN X = X + 1 'THE TIMELOOP RIABLE DELAYS
IF UP = 1 THEN Y = Y - 1 'MOVEMENT WITHOUT SLOWING DOWN
IF DOWN = 1 THEN Y = Y + 1 'INPUT (WITHOUT IT YOU WOULD GO
TIMELOOP = 0 'WAAAAYYY TOO FAST)
END IF
IF X >= 80 THEN X = 80 'KEEPS YOU FROM GOING OFF THE SCREEN AND
IF X <= 0 THEN X = 1 'MAKING AN ERROR
IF Y >= 23 THEN Y = 23
IF Y <= 0 THEN Y = 1
IF SPACE = 1 THEN 'CHANGES YOUTR SHAPE WHEN
LOCATE Y, X: PRINT CHR$(94) 'YOU HIT SPACE
ELSE
LOCATE Y, X: PRINT CHR$(127)
END IF
IF XX <> X OR YY <> Y THEN 'UPDATES YOUR POSITION
LOCATE YY, XX: PRINT " "
LOCATE Y, X: PRINT CHR$(127)
END IF
XX = X: YY = Y 'TELLS ME WHERE I WAS LAST
TIMELOOP = TIMELOOP + 1
LOOP 'LOOP (DUH...) :)
'THANX TO Eric Carr FOR FIGURING OUT HOW TO TRAP SEVERAL KEYS AT ONCE
'EVERYTHING ELSE WRITTEN BY ME,
FUNCTION MULTIKEY (KEYNUM)
STATIC FIRSTIME
IF FIRSTIME = 0 THEN
FOR E = 0 TO 127 '\
SC(E) = E: DU(E) = 1 '|
NEXT '|-ERIC CARR'S CODE--------------------\
FOR E = 128 TO 255 '| |
SC(E) = E - 128: DU(E) = 0 '| |
NEXT '/ |
FIRSTIME = -1 ' |
END IF ' |
' |
I$ = INKEY$ ' So the keyb buffer don't get full \routine/ \ |
I = INP(&H60) ' Get keyboard scan code from port 60h \lines/ |-/
OUT &H61, INP(&H61) OR &H82: OUT &H20, &H20 ' \!!!/ |
KEYS(SC(I)) = DU(I) ' This says what keys are pressed \!/ /
MULTIKEY = KEYS(KEYNUM)
END FUNCTION
Good luck!
03-20-2004, 02:53 PM
Hey!!! you came!!!! So what about "THE" site?
And how's Germany?
And how's Germany?
03-20-2004, 10:34 PM
Nice codes But let's go back to our subject...
Finally I made the scoring system:
Usual scores:
9 points for graphic
9 points for useability (Keyboard handling, mouse ect)
9 points for sound and music
9 points for story and gameplay (Is interesting?)
5 points for challenge (How hard is the game or how can it be set)
9 points for replay (Will people play it again, or delete)
100% QB scores:
25 points for complexity
25 points for speed
Complexity:
Maximum if only using what is documented in QB
-1 if using up a memory location (like A000), or a built-in fileformat (for each one)
-1 for each port group (For example palette changing takes place on 2 ports)
-10 if using the basic library, -5 for each used interrupt
Using FFIX: You can do it freely, but the scoring will take place on the FFIXless
version of the program.
For example if you have a program using the basic library (-10) for mouse handling
(-5) and using the A000 location (-1), and uses up that the first two byte of GET
stores the X and the Y size of the image (-1), you will get 8 points.
Speed:
The program's speed without any library or assembly speedup
30 points if it runs on the original 4MHz PC
25 points if runs on my 33Mhz computer
After: -5 points for each 33Mhz until 133Mhz
(66Mhz: 20, 100Mhz: 15, 133Mhz: 10)
5 points if needs 200Mhz
0 points if needs 300Mhz or more
This is not the final. You can tell it if You think this is wrong.
On this system an empty program would get 50 points. To prevent this the two part
will be divided, and scored independently. The final score will be the double of
the worse.
Using libs - again: I am upset because of it because they can put up good games, but I can't because I program in C :???:
This annoys me... Why they can do, but I can't ???
Of course I program in QB too... But if QB then pure QB
Finally I made the scoring system:
Usual scores:
9 points for graphic
9 points for useability (Keyboard handling, mouse ect)
9 points for sound and music
9 points for story and gameplay (Is interesting?)
5 points for challenge (How hard is the game or how can it be set)
9 points for replay (Will people play it again, or delete)
100% QB scores:
25 points for complexity
25 points for speed
Complexity:
Maximum if only using what is documented in QB
-1 if using up a memory location (like A000), or a built-in fileformat (for each one)
-1 for each port group (For example palette changing takes place on 2 ports)
-10 if using the basic library, -5 for each used interrupt
Using FFIX: You can do it freely, but the scoring will take place on the FFIXless
version of the program.
For example if you have a program using the basic library (-10) for mouse handling
(-5) and using the A000 location (-1), and uses up that the first two byte of GET
stores the X and the Y size of the image (-1), you will get 8 points.
Speed:
The program's speed without any library or assembly speedup
30 points if it runs on the original 4MHz PC
25 points if runs on my 33Mhz computer
After: -5 points for each 33Mhz until 133Mhz
(66Mhz: 20, 100Mhz: 15, 133Mhz: 10)
5 points if needs 200Mhz
0 points if needs 300Mhz or more
This is not the final. You can tell it if You think this is wrong.
On this system an empty program would get 50 points. To prevent this the two part
will be divided, and scored independently. The final score will be the double of
the worse.
Using libs - again: I am upset because of it because they can put up good games, but I can't because I program in C :???:
This annoys me... Why they can do, but I can't ???
Of course I program in QB too... But if QB then pure QB