Jarod a/k/a/ the Pretender - A Dual-platform Multimedia Library for Euphoria
Version 001006
/Mic, 2000



Updates:
~~~~~~~~
001006
 + Graphics:
  - Fixed a stupid bug in Pixel() + made it work in 24-bit modes.

  - Added Line(), Box(), and Circle(), see jtest01.ex(w).

  - Added SetFillMode(), see jtest01.ex(w).

  - Fixed a bug in Get/SetColor() (they didn't work in windowed mode).


 + Other:
  - Work has begun on a reference manual, see refman.txt. It doesn't really deserve to
    be called 'reference manual' at the moment, but it does at least go through some of
    the most important routines (like Blit()).

  - Got rid of all the machine-code sequences (jarodgen.inc & beeampee.inc) by putting
    all the machine-code in external files wich are loaded at run-time. 
    This should solve the problem with those huuuge main_.c-files sometimes generated by
    the current version of the Euphoria->C translator.
    The format in wich the machine-code routines are stored isn't exactly the most clever
    that the world has seen, so loading times are relatively high. I'll use a better format
    for future releases.

  - Removed a line from the previous version that turned off MMX-optimizations even if the
    processor supported MMX (oops..). Not that the performance will improve that much on
    MMX-processors, as I'm using MMX only for data-transfer and not for calculations. 

  - Added a couple of new example programs. Note that j2xSaI won't run under DOS (I was
    too lazy to figure out why..).
 
  - Fixed a few typos here and there.
 


000922
 + Graphics:
  - The bitmap library has been improved (24-bit to 8-bit convertion is now possible, among
    other things).
    The Windows version has seen some major speed-ups in the process.

  - Added GenerateOptimizedPalette(), AllowPaletteOptimization() and AllowDithering() for
    color reduction purposes, see bitmap.ex(w).

  - Added CharOut(), see playmod.ex(w).

  - Added Pixel() (not available in 24-bit modes), see jtest01.ex(w).

  - The STRETCHCOPY blitters have been speeded up. They still don't clip images correctly
    though (actually, STRETCHCOPY only works in 8-bit modes).

  - TRANSCOPY is now mapped to MIXCOPY in 8-bit modes.

  - Added some more (of the missing) blitters.

  - Added the HFLIP and VFLIP methods (only works with SOURCECOPY+NOCLIPCOPY, and not in
    24-bit modes). See jtest04.ex(w).


 + Sound:
  - Changed the protoytpe for InitSoundSystem(). The 'bass_flags' parameter has been moved
    one step "to the right". The 5th parameter is now a CD-init flag (0=don't init CD,
    !0=init CD).

  - Changed the name of SetVolume() to SetMasterVolume().

  - Added SetVolume(), SetPanning() and SetFrequency().

  - Added WAV loading/playback, see playwav.exw.

  - Added CD playback, see playcd.exw.


 + Input:
  - Removed InstallInput() & ReleaseInput(), Jarod will now install/release the keyboard-
    handler itself (unless ofcourse if don't call Main()).

  - Changed GetKey() to make it work anywhere in a program. The differances from the
    old version are:
     - It's is now dependant on UpdateInput().
     - It now returns *SCANCODES*, not ASCII-codes.
     - It's slower..

  - Added WaitKey().
 

 + Other:
  - You can now use windowed mode under Windows!
    Note that I said "can", not "should". Windowed mode is after all slower than fullscreen.
    Call WindowType(STANDARD) *before* Main() to set windowed mode.
    See the 'Guidelines' section for more info.

  - Ditched cpuid.e.




All the example programs will run under both DOS (ex) and Windows (exw), see for yourself.
If the colors look funny when you run jtest04 or jtest08, try setting the global
variable BPP16IS15 to 0/1.





Guidelines:
~~~~~~~~~~~
 - Do *NOT* use the VIDEO sequence with anything else than Blit(), and only as the
   *destination* bitmap. Although VIDEO[1] will hold a correct pointer to the video-
   memory under DOS, that is not the case under Windows.

 - When in windowed mode and the destination bitmap is VIDEO, Blit() will ignore whatever
   methods you pass to it (except for STRETCHCOPY wich is emulated).

 - Your application will be brought into fullscreen DirectDraw mode by default under
   Windows. You can override this by calling WindowType(STANDARD) *before* Main(). Once
   you've called Main() there's no turning back..
   Use WindowTitle(sequence title) to set the window title (will do nothing once Main()
   has been called).
 
 - Pixel() is slooow, so don't use it unless you really, really, *really* have to.

 - Always use "WaitKey()" instead of "while GetKey()=-1 do UpdateInput() end while".
   The latter method (probably) won't work when in windowed mode.




Problems ..and stuff:
~~~~~~~~~~~~~~~~~~~~~
 - There's no proper documentation available yet. Try looking at the example programs, some
   of them are pretty heavily commented.

 - Programs using Jarod will not function correctly if translated with the Euphoria -> C
   translator. Here's how to solve it:
   Remove the line "include jarod.e" in your program and add this line:
     include jarodgen.e
   and this one: (DOS)
     include jaroddos.e
   or this one: (Windows)
     include jarodwin.ew

 - GetKey() allows for slow repetition when in windowed mode (just like Euphoria's
   built-in get_key()). However, it doesn't allow repetition under DOS or when in
   Windows fullscreen mode. I will fix this, I just don't know when. 

 - JTest08 causes a page fault when run under Windows and BPP=24. I have no idea why.

 - Jarod will not check weather the video memory layout is linear or banked under DOS.
   This won't be a problem unless you've baught your video card at a museum. Just see
   to it that you've got a proper VESA driver.

 - There's no soundsystem for the DOS version. Maybe I'll use Ecstacy in a future
   release. The biggest problem is that there are no (good) module players available 
   for DOS Euphoria.

 - MIDI playback is missing (I don't know if it ever will be added).

 - Mouse- & joystick-support is missing.

 - Many blitters are missing/doesn't produce correct results.

 - TextOut() is rather slow and will be taken care of for future releases.
 


Thanks to:
~~~~~~~~~~
 - X-Calibre & Ewald Snel of Diamond Crew, Sergey Chaban + Serkan YAZICI,
   for DirectDraw/Input code/info.
 - Pete Eberlein, for asm.e & vesa20.e.
 - Jaqcues Deschenes, for doswrap.e & ports.e.
 - Todd Riggins, for doing the initial work on ewin32api.ew.
 - Jiri Babor, for his font collection.
 - Christopher Street, from whose Reduce.ex I derived the dithering routines.
 - Ian Luck, for the BASS audio library.
 - Robert Schmidt, for the VGA-tweaking data.
 - MRI of Doomsday, for his arbitrary size texturemapping method wich
   I'm using in the STRETCHCOPY blitters. 

