                           Woorlic True Color v1.0b
***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** 
1: Index

1: Index
2: Introduction
3: Usage
4: Legal
5: Tested environments
6: what is wext?/doing own vesa under wext
7: to be added soon

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** 
2: Introduction

 This is a small lib running at 320x200x32bpp, the main reason i did this
 was because so many people had problems with Vesa2 code under wext and
 secondly i wanted to start using 32bpp in my own code.
 Also this lib works fine under dos4gw , so if you want to use this lib
 and for example usmplay you could easily do party versions with wext and this
 and without any changes do final and Dev versions with dos4gw.
 Altho this lib does proper vesa2 code, has fakemodes and mode13 it is still
 below 2-3k packed(depends on the packer), so you could use it in intro
 without any probs.

 and yes the name applies to ptc a bit ;)
 and i also suggest that you use ptc for anything other than intros
 because it supports so many other cards,etc

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** 

3: Usage

 The usage of this lib is REALLY simple

 Function:
  init_tc
 Description:
  searches for video modes possible to use and then tells the user to select one
  within a specified set of time, it initializes the lib, call this only once

 Function:
  start_tc
 Description:
  Sets the Best mode based on the users selection

 Function:
  blit_tc
 Description:
  This function copies the contents of the virtual buffer onto the screen

 Function:
  kill_tc
 Description:
  shuts down the lib

 Variable:
  tcono
 Description:
  this points to a 320x200x32bpp (256000bytes big) buffer that is copied onto
  screen with blit_tc, it is NOT initialized before init_tc has been called

 the virtual screen is 320x200x32bpp as stated above, the output can however
 be many different
  vesa 320x200 in 32,24,16 or 15 bpp   (Prefered)
  fake 320x400x8bpp -> 320x200x14bpp   (if no vesa is supported don't worry)
  mode13 320x200x8bpp                  (Fastest mode, for slow computers)   

 one thing that may seem experimental to people is that i use the FPU when
 copying memory to the videocard when using 320x200x32bpp output
 many have probably heard from some bookworm that rep movsd is SOO optimised
 and/or read something like that yourself, but that is not really true.
 on my computer (a ppro 180 clocked to 233) i got a 70% speed increase when
 changed the rep movsd to the fpu copy in \src\vesa.asm, i discussed this
 matter with kalms of TBL and he said that he had gotten from -10% to +40%
 on various computers.. so with a majority of the computers going faster with
 fpu i choose to use it, i am not 100% sure why it is faster but i figure
 it has to do with ram bursts that occurs when reading big chunks.
 also, if you notice "small dots" on the screen in 320x200x32bpp it might be
 because of how the fpu works, but i still feel that the speed is more important
 (i haven't noticed these dots in my own examples but if you have run the game
 Grand Theft Auto or the demos Ya Dot Klimon and Hyperventilation you might
 notice these, i haven't gotten the use of fpu copy in these confirmed) 

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** 

4: Legal

 I(jonas lund) do NOT take ANY responsebility for all possible harm this
  lib does to you or your computer or anything.
 This lib can be used for all FREE software but if you want to do any commercial
  software based on this then PLEASE contact me.
 Altered versions of this lib cannot be redistributed without my approval.
 You are however free to use small portions code within this lib for your
  own programs/libs.

 Watcom C/C++,WatcomLink and Watcom Make is (C) by synmatec i think
 Turbo assembler,Turbo link and Borland Make is (C) by Borland international
 pmode/w is (C) by Thomas pytel and Charles Sheffold
 wext is (C) by me :)
 usmplay is (C) Freddy Vetele
 mxmplay is (C) Niklas Beisert
 wwpack is (C) Piotr Warezak
 apack is (C) Jibz

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** 
5: Tested environments

 This lib works under the following

  dos4gw  v1.8  (win/?)
  dos4gw  v1.97 (dos/win/?)
  pmode/w v1.30 (dos/win/?)
  wext    v1.03 (dos)
  dos32   v3.3  (dos/win/?)
  dos32   v3.5  (dos/win/?)

 This lib has been test packed using wext and 2 packers to see the size of it
  packer:  size of wext only:  size of wext+lib:  calculated size of lib:
   (none)       26086             30060                   3974
   apack         2696              4760                   2064
   wwpack        3082              5169                   2087

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** 
6: what is wext?/doing own vesa under wext


 what is wext?:
  Wext is a Dos extender made by me in the spring of 1998, it is not meant
  to be a SERIOUS extender for real world applications, but instead for
  demoscene intros, they are supposed to be SMALL but there was no small
  extender that was supported by module players(some small existed but
  changing a player is not too easy) so i wrote wext with support for the
  dos32 api (witch is supported by mxmplay and usmplay the 2 smallest
  players capable of playing XM modules, usmplay also handles It modules)
  now it is simple to do a 64k intro with music

  One of the problems was that most ppl's are used to the dpmi api so they
  are a bit unsure of how to do for example vesa code under wext

 doing own vesa under wext:
  ohmy.. i seem to have forgotten to document the support of the dpmi function
  800h in the wext documentation.. so everyone who wanted that can now stop
  asking :) (it has been supported since wext 1.01 i think :)
  many ppl's have also wanted dpmi func 100/101h (alloc,dealloc conv memory)
  those are supposed to be used for the vesa infoblocks, but there is no need
  for that because of the fact that wext ALWAYS has a free 8k block for the
  user to fool around in.
  ohwell.. all code needed for using vesa2 with LFB under wext is here, i also
  suspect that using the Pmode functions should work, however i am not sure of
  this. vesa 1.2 examples existed already in the wext 1.03 release

***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** 
7: to be added soon

   Support for banked modes
   Eos support, gimme the name of some decent extender and i'll look into
     adding support for it

                                       / Jonas Lund aka whizzter of woorlic
