SVGA Related
NON-SVGA
WAVE
Mouse
Other
SUBs/FUNCTIONs: SUB Set320x200 (B) SUB Set320x240 (B) SUB Set320x400 (B) SUB Set320x480 (B) SUB Set400x300 (B) SUB Set512x384 (B) SUB Set640x350 (B) SUB Set640x400 (B) SUB Set640x480 (B) SUB Set720x480 (B) SUB Set720x576 (B) SUB Set800x600 (B) SUB Set1024x768 (B) SUB Set1152x864 (B) SUB Set1280x960 (B) SUB Set1280x1024 (B) SUB Set1600x1200 (B) SUB Set1920x1080 (B) SUB Set1920x1200 (B) SUB Set1920x1440 (B) SUB Set2048x1536 (B) SUB SetScreenMode (Xres, YRes, Bits) SUB ReSetScreen FUNCTION Future.ModeList (I) FUNCTION IsVESA |
|
SUBs/FUNCTIONs:
FUNCTION Pages
SUB SetPage (P)
SUB ViewPage (P)
Printing text to the screen
You can use Future.PRINT to print text in any of the supported screen modes:
Future.PRINT x, y, "Hello World", fg, bg
The last two parameters is the foreground and background color to use. If the color is set to -1 it will be transparent (no color will be used). The first two parameters are a x, y offset in pixels, from the upper left corner, from where the text is to be printed on the screen. In 320x200 the font size will be 8x8 by default, in any other mode the size will be 8x16 in size. After setting a mode you can change the font size by calling SetFont:
SetFont Mode
|
You can also install your own font types by using Future.LoadFONT. It will load a font file previously saved by the Font Editor. When the file is loaded the font is saved in memory and it immediately overrides the SetFont function, only by calling SetFont can the fonts be reset to the default system font type.
SUBs/FUNCTIONs:
SUB Future.PRINT (x, y, text$, fg, bg)
SUB SetFont (Mode)
SUB Future.LoadFONT (Filename$)
Graphical (draw) functions
A set of basic drawing routines was added to the library for easy generation of graphics. The color format for the drawing routines depends on the color mode that is used. An 8 bit mode uses color values from 0-FF hex (0 to 255 decimal), the color that is displayed in 8 bit modes depend on how the pallete is set up. The 15, 16, and 32 bit modes do not use palletes, they use the actual value C contains when a drawing routine is called. The 15 bit modes use values 0-1Fh for the RGB values. In hex that will be 1F1F1Fh for white, blue is 00001Fh, green is 001F00h and red is 1F0000h. In 16 bit modes the red and blue shades also have a max of 1Fh, but green shades goes to 3Fh, so in 16 bit modes white would be 1F3F1Fh. In 32 bit modes the Red, Green and Blue shades go from 0 to FFh, so FFFFFFh is white.
When your using hi/true color modes it can be useful to use RGB2Color to incode the RGB color for you. RGB2Color will incode 24 bit RGB colors into the Color format the library uses. So the color will always look the same no matter what hi/true color mode you are in. Color2RGB will take a color returned by Future.POINT and convert it back into the RGB components.
|
For all drawing routines a view port can be set. A view port is defined as a box on the screen and if you draw outside the box it will not be displayed. This is also know as a 'clip box'. This clip box will affect everything that is displayed on the screen not only the functions in this section, but all sub/functions in the library. At startup the clip box is set to match the size of your current screen mode. Therefore, the clip box will be reset if a new screen mode is selected during run time.
The Future.Line funtion has a special BitScan parameter, that can be used to create lines with different patterns. A BitScan value of -1 will draw a normal line.
SUBs/FUNCTIONs:
It is also possible to save a screen page to a file. By calling Future.Snapshot the active screen page, set by Setpage, will be saved as a bmp file on disk. The Future.GET/Future.PUT functions can only accept one dimensional arrays, so to get around the problem of using two (or more) dimensional arrays you have to redefine the two routines. This is simply done by adding these two lines to the top your main module (.bas file): DECLARE SUB Future.DirectPUT ALIAS "SVGAput" (BYVAL x1%, BYVAL y1%, BYVAL offset%, BYVAL segment%)
SUB Future.PSET (X, Y, C)
SUB Future.LINE (X1, Y1, X2, Y2, C, BitScan)
SUB Future.FILLCIRCLE (X, Y, R, C)
SUB Future.CIRCLE (X, Y, R, C)
SUB Future.CLS (C)
SUB Future.FILLBOX (X1, Y1, X2, Y2, C)
SUB Future.BOX (X1, Y1, X2, Y2, C)
FUNCTION Future.POINT (X, Y)
SUB Future.HLINE (Y, X1, X2, C)
FUNCTION RGB2Color (R, G, B)
SUB Color2RGB (Color, R, G, B)
SUB SetViewPort (X, Y, X1, Y1)
Storing/drawing pictures By using Future.PUT you can easily draw a picture on the screen, you just need to define an array to hold the picture information. The array can be of any type as no type checking is done when array is passed to the routine. The first four bytes in the array will hold the width and height of the picture. Future.GET gets a picture from the screen and stores it in the array passed to the routine. A color filter is added to the PUT routine, so it is possible to filter out a color that you do not want to be drawn. To set the color being filtered out call:
SetMaskColor C
Where C is in place of the color index you want to filter out. If C is negative the filter is disabled. SetMaskColor also effects Future.ROTATE and Future.TRIFILL.
DECLARE SUB Future.DirectGET ALIAS "SVGAget" (BYVAL x1%, BYVAL y1%, BYVAL x2%, BYVAL y2%, BYVAL offset%, BYVAL segment%)
After adding the two lines to your program you can call Future.DirectGET/Future.DirectPUT to draw the sprites, but be aware that you now have to give the segment and offset of the picture data you want to draw/orr store. Use QBs VarSEG and VarPTR to get the segment and the offset of an array.
The GET routine does not check for upper and lower boundary of the array, so make sure you allocate enough memory to hold all the picture information plus four extra bytes. The SizeOf function can also be used to get the correct number of bytes needed to store a picture. The byte size returned depends, not only on the X/Y values, but also on the selected screen mode.
SUBs/FUNCTIONs:
SUB Future.GET (X, Y, X1, Y1, Array())
SUB Future.PUT (X, Y, Array())
SUB SetMaskColor (C)
SUB Future.Snapshot (filename)
FUNCTION SizeOf (X, Y)
Loading pictures
You can now load the default image-formats into your SVGA screen, with just one line of code!
SUBs/FUNCTIONs:
SUB Future.LoadGIF (Filename, XRes, YRes)
SUB Future.LoadBMP (Filename, Xpos, Ypos)
SUB Future.LoadPCX (Filename, Xpos, Ypos)
SUB Future.OpenAGif (FileName, GifHandle)
SUB Future.CloseAGif (GifHandle)
SUB Future.PutAGif (Xpos, Ypos, GifHandle) Loading a WAVE file We have even added some great functions for adding sound to your program(s)! In our tests, we have loaded a 9 MB WAVE file and it played great!. LoadWav has a parameter called SampleRate that can be used to set the speed the wave file should be played at. The speed ranges from 5000hz to 45000hz on the newer sound cards, but odler sound cards may only go in the range 4000hz to 22000hz, this is typical for SBpro/SB2/SB1 cards. If the routines do not play correctly at all, it may be that the library has not been set up proberly. Use SBSetup to setup the SoundBlaster manualy, if nothing else works.
The SBSetup routine parameters have the following configurations:
Sound Card
SBtype
IRQ
Hdma
Ldma
SB 1.xx
1
5 or 7
***
0, 1 or 3
SB 2.xx
2
5 or 7
***
0, 1 or 3
SB pro
3
5 or 7
***
0, 1 or 3
SB16
4
2, 5, 7 or 10
5, 6 or 7
0, 1 or 3
BasePort is normaly 220h(544) but can have values from 220h to 260h, it depends on the jumper setting on the sound card and card type.
SUBs/FUNCTIONs:
SUB SBSetup (BasePort, Ldma, Hdma, Irq, SBtype)
FUNCTION WavDone ()
SUB LoadWAV (Filename, SampleRate)
SUB StopAndReset ()
SUB SetSurround (OnOff)
FUNCTION Lwavedata ()
FUNCTION Rwavedata ()
FUNCTION GetMasterVolL ()
FUNCTION GetMasterVolR ()
SUB SetMasterVolL (Volume)
SUB SetMasterVolR (Volume)
FUNCTION GetWaveVolL ()
FUNCTION GetWaveVolR ()
SUB SetWaveVolL (Volume)
SUB SetWaveVolR (Volume)
Mouse support Using a mouse in a svga mode is supported, but it is a polling mouse. That means for the mouse to move on screen you have to call Future.UpdateMouse continuously. The mouse pointer size is 16x16x256pixels and can be changed to any shape by calling:
Future.Mouseshape Offset, Segment
The offset and segment should point to 256 pixels stored in memory. To set a transparent color for the mouse pointer call:
SetMouseMaskColor C
Where C is the color to filter out. If C is negative no filtering is done.
SUBs/FUNCTIONs:
SUB Future.UpdateMouse
SUB SetLocation (X, Y)
SUB SetMouseMaskColor (C)
SUB SetMouseRange (X, Y, X1, Y1)
SUB Future.Mouseshape (Offset, Segment)
SUB Future.MouseOff
SUB Future.MouseOn
FUNCTION Future.MouseY
FUNCTION Future.MouseX
FUNCTION Future.MouseB
SUB SetMouseSensitivity (H, V)
SUB Future.ResetMouseShape
Mouse support in normal QB screens
MouseInit
SUBs/FUNCTIONs:
SUB SetFrameBuffer X,Y
SUB Future.ScrollLR S
SUB Future.ScrollUD S
SUB LockPage (Page)
SUB UnLockPage (Page)
SUB SetScroll (Xpos, Ypos)
3D graphics
Three routines have been made to ease the pain of 3D programming. Future.TRIFILL will draw a filled triangle with a given color. Future.TRIGOUR will draw a gourauded triangle with three given colors. Future.TRITEXT will draw a textured triangle. The U,V parameters in Future.TRITEXT are the coordinates inside the texture map given by Array(). The first four bytes in the array should hold the X,Y dimension of the texture map, that means you can safely use an array stored by Future.GET.
Future.ROTATE/Future.ROTATEB can be used to rotate and/or to scale a picture that have been stored by Future.GET. The Angle parameter is the degrees (0 to 360) the picture should be rotated counter clockwise. A Scale parameter of zero to one will draw a pictures less the size of the original picture, if Scale is exactly 0.5 the picture length / height will be half the original size, and a Scale of 2 will double it. Future.ROTATEB was made to give a more pixel perfect result when rotating, but it cannot draw outside the dimensions of the original picture, pixels that end up outside the picture resolution are clipped.
The Future.TRITEXT function can only accept one dimensioned arrays, so to get around the problem of using two (or more) dimensioned arrays you have to redefine the routine. This is done by adding this line to the top your main module (.bas file):
DECLARE SUB Future.DirectTRITEXT ALIAS "SVGAtritext" (BYVAL X1%, BYVAL Y1%, BYVAL X2%, BYVAL Y2%, BYVAL X3%, BYVAL Y3%, BYVAL U1%, BYVAL V1%, BYVAL U2%, BYVAL V2%, BYVAL U3%, BYVAL V3%, BYVAL Offset%, BYVAL Segment%)
After adding the line to your program you can call Future.DirectTRITEXT to draw the textured triangle, but be aware that you now have to give the segment and offset of the picture data you want to draw. Use QBs VarSEG and VarPTR to get the segment and the offset of an array.
SUBs/FUNCTIONs:
SUB Future.TRIFILL (X1, Y1, X2, Y2, X3, Y3, Color)
SUB Future.TRIGOUR (X1, Y1, X2, Y2, X3, Y3, Color1, Color2, Color3)
SUB Future.TRITEXT (X1, Y1, X2, Y2, X3, Y3, U1, V1, U2, V2, U3, V3, Array())
SUB Future.ROTATE (X, Y, Angle, Scale, Array())
SUB Future.ROTATEB (X, Y, Angle, Scale, Array())
Saving/loading NON-SVGA pictures
We have got some functions so you can load some of the most used (Windows) by typing a single command. Just use one of the functions below. You can also save the current screen to a 64 KB file, and load it again...you should also save/load the palette.
SUBs/FUNCTIONs:
SUB LoadScreen (Filename)
SUB SaveScreen (Filename)
SUB LoadGIF (a)
SUB LoadPCX (a)
SUB LoadBMP (a)
A font that doesn't erase the background
Unlike the normal QB-print function, this font doesn't erase the background, it only draws the letters.
SUBs/FUNCTIONs:
SUB Font (X%, Y%, Text$, Col%)
EMS Support
It is possible to save large screen data into memory. Calling 'AllExpMem' (i.e. handle% = AllExpMem%(&h100000)'get 1 megabyte of memory) will give you access to all the memory you need. 'AllExpMem' returns the handle you need to access the memory. Future.EMSPut/Future.EMSGet works the same way the normal Future.GET/Future.PUT work, the only difference is that you use a handle instead of an array. Remember to deallocate the memory before you exit your program, calling 'DeallExpMem handle' will deallocate the memory.
There is a limit to the amount of handles that can be allocated, it depends on how the EMM driver is set up on the computer. The maximum number of handles that can be set and used is 254.
Before you use the ems routines it is a good idea to check if a ems driver is installed. You do this by checking if IsEMMInstalled returns -1, if IsEMMInstalled returns zero no ems driver is installed and you should not use the routines. If a driver is found you can safely use the routines. PageFrameAddr will return the address where the ems segment window is located (e000h or d000h on most computers). And MapLogicalPages will map the allocated expanded memory into the segment window. The segment window is divided into four 16kb chunks so a maximum of 64kb can be mapped at one time. The physicalpage and logicalpage parameter in MapLogicalPages is a number that indicate which part of the allocated memory should be mapped into the segment windows. Below is a table that shows how the mapping can be done.
Physical page (0k-64k)
Logical page (0k-64k)
Logical page (64k-128k)
Logical page (128k-192k)
Logical page (192k-256k)
0
0
4
8
12
1
1
5
9
13
2
2
6
10
14
3
3
7
11
15
DefineEMSbufferSize and SetEMSpage is part of a new system that allows you to create screen buffers stored in expanded memory. The screen buffers can be defined as any size from 1x1 to 16384x16384 and will be working just like drawing to a normal screen buffer. CopyEMSpage can be used to copy one EMS map to another.
Sample program showing the use of an ems offscreen buffer:
handle% = AllExpMem(256000)' get enough memory for a 640x400 buffer
DefineEMSbufferSize handle%, 640, 400, 0 'define the buffer and assign a page number to it
Set640x400 8'set a mode
SetEMSpage 0 'turn on the ems buffer
FOR i% = 0 to 100
Future.LINE RND*640, RND*400, RND*400, RND*640, RND*255, -1 'just draw some lines on the ems page
NEXT
SetPage 0 ' turn the ems buffer off and enable drawing to the first screen page
Future.EMSPut 0, 0, handle% 'draw the buffer on the screen
SLEEP 'wait for a key press
ResetScreen 'reset screen to text mode
END ' exit program
Future.EMSGetx is used to fill an area in ems, defined by Sx, Sy, Sx1, Sy1, with data from the screen. The location on the screen from which to start taking the data is defined by Tx,Ty. The ems map must be previously defined by DefineEMSbufferSize or Future.EMSGet. Future.EMSPutx works the same way, but Sx, Sy, Sx1, Sy1 defines the area on the screen to be filled with data from an previously defined ems map, Tx,Ty is the location in the ems map. That way you can easily use an ems map to store/draw smaller sprites.
Future.EMSROTATE/Future.EMSROTATEB can be used to rotate and/or to scale a picture that have been stored in EMS. The Angle parameter is the degrees (0 to 360) the picture should be rotated counterclockwise. A Scale parameter of zero to one will draw a pictures less the size of the original picture, if Scale is exactly 0.5 the picture length / height will be half the original size, and a Scale of 2 will double it. Future.EMSROTATEB was made to give a more pixel perfect result when rotating, but it cannot draw outside the dimensions of the original picture, pixel that end up outside the picture resolution is clipped. These two routines together with Future.EMSTRITEXT was made more as an experiment, to see how far it was possible to go with this library. These routines sort of marks the limit because using large EMS maps with Future.EMSTRITEXT is a very slow process and is probably not useful for anything.
Since only a max of 254 handles are available Future.DefineEMSArray was created to give the ability to store more picture in one EMS handle. The pictures stored must all be the same X/Y size, but there is no limit as to now many picture you can store in it, only the amount of memory available may be a limit. Use EMSArrayGet to store a picture from the screen in a indexed positon in the array. Future.EMSArrayPut will draw a picture stored in the picture array. The picture drawen depends on the selected index number.
Future.EMStoFile/FiletoEMS can be used to quicky save/load file data to/from EMS memory.
SUBs/FUNCTIONs:
FUNCTION IsEMMInstalled
FUNCTION AllExpMem (Bytes)
SUB DeallExpMem (handle)
SUB Future.EMSPut (X, Y, handle)
SUB Future.EMSGet (X, Y, X1, Y1, handle)
FUNCTION GetEMMVersion! ()
SUB MapLogicalPages (handle, physicalpage, logicalpage)
FUNCTION PageFrameAddr
FUNCTION TotalPages
FUNCTION UnallocatedPages
SUB DefineEMSbufferSize (handle, Xsize, Ysize, EMSPageNumber)
SUB SetEMSpage (EMSPage)
SUB CopyEMSpage (targetEMSPage, sourceEMSPage)
SUB Future.EMSPutx Tx, Ty, handle, Sx, Sy, Sx1, Sy1)
SUB Future.EMSGetx Tx, Ty, handle, Sx, Sy, Sx1, Sy1)
SUB Future.EMSTRITEXT (X1, Y1, X2, Y2, X3, Y3, U1, V1, U2, V2, U3, V3, handle)
SUB Future.EMSROTATE (X, Y, Angle, Scale, handle)
SUB Future.EMSROTATEB (X, Y, Angle, Scale, handle)
SUB Future.DefineEMSArray (Xsize, Ysize, handle)
SUB Future.EMSArrayGet (X, Y, handle, Index)
SUB Future.EMSArrayPut (X, Y, handle, Index)
SUB Future.EMStoFile (filename, handle, fileStartpos, EMSStartpos, BytesToMove)
SUB Future.FiletoEMS (filename, handle, fileStartpos, EMSStartpos, BytesToMove)
XMS Support
The XMS driver gives access to memory above the first megabyte. It it recommended that you use XMS to store data instead of EMS and since EMS memory is handled much slower than XMS memory, it would be preferable to do so. Before you use the XMS routines you should always call IsXMSInstalled, because the library needs to find and hook the XMS driver. If you use the routines without calling IsXMSInstalled your computer is likely to crash. IsXMSInstalled returns -1 if the driver is installed and zero if not. AllocateXMS will allocate the memory you need, and DeallocateXMS will return the memory to the free memory pool. FreeXMSmemory will give you the amount of memory available in the memory pool. MoveToXMS/MoveFromXMS does the memory transfer, either from lower memory to extended memory or from extended memory to lower memory. Segment:Offset is the position in lower memory and XMSOffset is the start position in extended memory, i.e. If you have allocated 1Mb of extended memory, XMSOffset range is 0 to 1048575 bytes.
Since only a limited number of XMS handles are available, Future.DefineXMSArray was created to give the ability to store more picture to one XMS handle. The pictures stored must all be the same X/Y size, but there is no limit as to now many picture you can store in it, only the amount of memory available may be a limit. Use XMSArrayGet to store a picture from the screen in a indexed positon in the array. Future.XMSArrayPut will draw a picture stored in the picture array. The picture drawen depends on the selected index number.
SUBs/FUNCTIONs:
FUNCTION IsXMSInstalled ()
FUNCTION AllocateXMS (Bytes)
SUB DeallocateXMS (handle)
FUNCTION FreeXMSmemory ()
SUB MoveXMS (SourceHandle, SourceOffset, DestHandle, DestOffset, Bytes)
SUB MoveToXMS (handle, Segment, Offset, Bytes, XMSOffset)
SUB MoveFromXMS (handle, Segment, Offset, Bytes, XMSOffset)
SUB Future.XMSget (X, Y, X1, Y1, XMShandle)
SUB Future.XMSput (X, Y, XMShandle)
SUB Future.DefineXMSArray (X, Y, XMShandle)
SUB Future.XMSArrayGet (X, Y, XMShandle, Index)
SUB Future.XMSArrayPut (X, Y, XMShandle, Index)
Changing Palette
Changing the palette works in both the normal QB screen modes, and in SVGA.
We have some functions to let you save the current palette, load it again, fade it out, or fade it in (after fading it out).
SUBs/FUNCTIONs:
SUB SavePal (Filename)
SUB LoadPal (Filename)
SUB Palette.FadeOut
SUB Palette.FadeIn
SUB ChangePal (Color2Change, R, G, B)
Keyboard functions
LockKeys
SUBs/FUNCTIONs:
SUB SetBlender (B)
SUB SetBMapColor (FColor, BColor, OutColor)
Timer
We have an (experimental) Timer (Timer2) function, that works faster than the normal QB-timer. Also you can set up different timer counters with different resolutions, those timers can be set up to approx. 1000Hz under windows(in a dos box). Under a non windowed dos you can go above 1000Hz. The timer routines consist of one main timer and eight sub timer counters. Use SetTIMERspeed to set the speed of the main timer counter, and SetSubTIMERspeed to set the speed of the sub counter. The sub counter speed can only be set to frequncies that are below the main timer frequency.
SUBs/FUNCTIONs:
FUNCTION Timer2&
SUB StartTIMER
SUB StopTIMER
SUB SetTIMERspeed (Frequency)
SUB ResetCounter
FUNCTION ReadCounter&
SUB StartSubTIMER (TimerNr)
SUB StopSubTIMER (TimerNr)
SUB SetSubTIMERspeed (Frequency, TimerNr)
SUB ResetSubCounter (TimerNr)
FUNCTION ReadSubCounter& (TimerNr)
Getting started
As you might have noticed, the Future.Library package doesn't come with the required .QLB file. You need to build it yourself! The advantage is that you select which parts of the library will be included in your customized QLB file, so it ends up taking less space by removing parts of the library that you don't use, and more space available for programming!
To build the library you need to open up FLBUILD.EXE. Go to Setup, and click on Program. Here you can fill in the path to QB 4.5 or QB 7.1, or both!
Required files in the QB 4.5 directory (Only required if you need to build the QB 4.5 library):
bcom45.lib
bqlb45.lib
qb.lib
lib.exe
link.exe
If you don't have all those files, reinstall QB 4.5 please.
Required files in the QB 7.1 directory (Only required if you need to build the QB 7.1 library):
brt71efr.lib
qbxqlb.lib
qbx.lib
lib.exe
link.exe
If you don't have all those files, reinstall QB 7.1 please.
By going to Setup, and clicking on Library you can select routines from the library that you want to use. When you are done selecting, go to File, and select which library version you want to create. Voila, the QLB file is now in the directory of the Future.Library!
Note: If you still don't have the QLB file, something might be wrong. Please go to Setup, click on Program and make sure "Create logfile" is selected. Try to build the library, exit the builder and email the build.log file to Smoky.
How to use Future.Library in your program
Load QB with QB /l Future or run QBFUTURE.BAT
In your program use:
REM $INCLUDE: 'FUTURE.BI'
or
'$INCLUDE: 'FUTURE.BI'
From now on, you can use the functions of the Future.Library!
Latest updates
What's new with the Future.Library:
January 19, 2001: (jargon)
- Created online version of the future library help file at http://jargon.tripod.com/go/fl/
November 14, 2000:
- Fixed bug in loading/storing BMPs
(the trailing 4 byte alignment was off, resulting in incorrect loading/storing)
- Speedup on PCX image loading time
- Added support for loading 24 bit PCX images
- Added support for loading 24 and 8 bit PCX images i hi/true-color modes
- Added support for GIF89a images
- Added support for loading GIF images in all hi/true-color modes
- Fixed bug in SetPage
(it canceled the effect SetFrameBuffer had)
- Added Animated GIF routines
- Added new Timer functions
- Replaced 50/50 blending with full blending support
- Added Blender support for Future.CIRCLE
- Added new screen modes
- New now made public SetScreenMode
July 18, 2000:
- Entire document has been reviewed and updated
- New SVGA special effects
- Speeded up loading time for BMPs
- Added MMX support
- Added a 1280x960 mode
- Added DQB type blender map
- Added blending for hi and true color modes
- Fixed bug in Future.Snapshot
(used incorect file sizes in 15/16 bit modes)
- Fixed bug in EMSarrayPut/XMSarrayPut
(did not work corectly with hi/true color modes)
- Fixed bug in mode setting routine
(better mode detection)
- Fixed Future.Mouseshape
(Colors was not shown right in 16 bit mode)
- New SizeOf
- New CopyEMSpage
- New Future.EMStoFile
- New Future.FiletoEMS
- New IsMMX
- New SetMMX
- New SetBlender
- New SetBMapColor
- New Future.Library Builder v2.00
(it now builds librarys for PDS 7.1 aswell)
April 8, 2000:
- New Future.DefineXMSArray
- New Future.XMSArrayGet
- New Future.XMSArrayPut
- New Future.DefineEMSArray
- New Future.EMSArrayGet
- New Future.EMSArrayPut
- New Future.Version
- Fixed bug in SetViewport
(it did not work properly on ems maps)
- Fixed bug with wave playing routine
- Fixed bug in screen setup routines
(It crashed computers where ems was not installed)
- Fixed bug in Future.POINT
- Added support for loading 1 bit BMPs
- Added an extra parameter in LoadWAV
- Fixed bug in Future.EMSROTATE/EMSROTATEB
(X and Y had been swapped)
- Fixed bug in Future.LOADBMP
(it did not work in 32 bit screens)
- Fixed bug in Future.EMSput
(the clip box did not work correctly on it)
- New Future.Library Builder v1.05
- Updated previous Latest updates
(it was incomplete)
March 12, 2000:
- Changed parameters in Future.MouseShape
- New Future.ResetMouseShape
- Updated Future.TRIGOUR with truecolor support
- New SetViewPort
- Fixed mouse cursor position at start up
(Future.MouseX and Future.MouseY now contain the right coordinates at startup)
- New Future.Library Builder v1.01
(Fixed minor bugs and changed the mode from 640x400 to 640x480)
February 9, 2000:
- Added an EXCELLENT Keyboard handler
- Reduced the use of string space (should now be above 40k)
- New RGB2Color/Color2RGB
- Future.TRITEXT/EMSTRITEXT will only work with power of 2 sized maps
- New Future.EMSTRITEXT
- New Future.EMSROTATE
- New Future.EMSROTATEB
- New Future.Library Builder v1.0
- added more sound options
December 27, 1999:
- Added TrueColor Modes
- Used more string memory (you may run into memory problems)
- Updated all subs and functions for truecolor (excluding Future.TRIGOUR)
- Speeded up Future.EMSput/Future.EMSputx
- New Future.XMSget/Future.XMSput
- Fixed bug in AllocateXMS
- Added MoveXMS
- Added support for loading 24 bit BMPs in 15, 16 and 32 bit modes
- Added support for loading 4 and 8 bit BMPs in all modes
- Changed the color format from 16 bit integer to a 32 bit integer
(this affects all drawing functions)
November 05, 1999:
- Added full access to XMS
- Userfonts are now stored in xms
- Reduced memory use.
- Fixed bug in Future.FONTLOAD
- Fixed bug in Future.EMSget
- New Future.EMSputx/Future.EMSgetx
- Fixed bug in scrolling routines
(scrolling only worked on the first page)
- New SetScroll
- New LockPage/UnlockPage
- New Future.RotateB
- New SBsetup
- New SetMouseSensitivity
September 27, 1999:
- Added full access to EMS
(new routines are added)
- Reduced the use of string space
- Added user defined fonts (+beta version font editor)
- New Future.ROTATE
- Fixed Future.MouseX
(it only returned even numbers)
- Fixed the screen setting routine
(a screen already set will not be cleared if set again)
- New Future.LOADFONT
- New Future.Modelist
- Fixed bugs in Future.LOADPCX and Future.LOADBMP
- Fixed bug in Future.EMSget/Future.EMSput
- Added VBE 2.0/3.0 low res modes
- Added support for loading 16 color BMPs
- Added ems screen buffers
August 8, 1999:
- Future.POINT is now working
- fixed Future.MouseOff Bug
- Speeded up Future.TRIFILL
- Speeded up Future.TRIGOUR
- New Future.TRITEXT
- Added one demo program (rotate.bas)
Supporters and Contributors:
During the process of creating the Future.Library other people besides the Future Software team have been involved, we would like to greet and thank those people for their positive input:
Beta testers and bug reporters:
jargon
Marcade
Leeor Dicker
Main beta tester the Master-Creating Team
Peter Vigren
Carlo Filingeri
Greg McAusland
Chistopher Neill
Richy2000
NetherGoth
Andre Sørensen
Torben Schramme
All bug reporters at the FS message board (thank you all)
and all those we forgot....
[end]