Anything contained in this readme.doc file supercedes anything in the lowsrc.doc file. CHANGES ======= Version 1.02 - First general release Version 1.03 - Fixed bug in UltraSetVolume() Version 1.04 - FIxed bug in UltraMaxAlloc() Version 1.05 - Linear volume functions are now linear. - Source files split up so objs are separate. This will make your code smaller. - Microsoft libraries provided. - Changed some prototypes from int to unsigned char. My lint checker liked ints better. The values were 8 bit so I set the prototyes appropriately. - Added support for 2 Adlib-type timers. - Included interrupt callback functions. These were done before but inadvertantly left out of the libraries. Version 1.06 - Added functions to return state of DMA channel(s) UltraDramDmaBusy,UltraSampleDmaBusy - Fixed potential problem with UltraPeekData and UltraPokeData - Fixed bug in UltraVoiceStopped and UltraVolumeStopped - Added an support functions for sending/recieving data thru midi port. Version 1.07 - Fixed bug in restoring the interrupt vectors when closing out the card. A benign problem for the most part. Deadly if irq 7 was used. Version 1.08 - Changed the upload & download functions to accept a far pointer to the buffer of data to send/receive. - Added some of the recording functions. More complete documentation to follow. - Fixed a bug in the download. Problem downloading if buffer ended on a 256K page boundary. The memory allocation structures would be blitzed. - IRQ and DMA channel's can now be NOT programmed for the board. If any of the parameters are set to 0, the corresponding latch on the board will be setup such that it will not be used. This will allow the application NOT to use up a PC resource. This can be handy if resources are tight. Version 1.09 - Documentation change. UltraPokeData takes 3 arguments. Prototype was correct, documentation was wrong. - Cleaned up documentation, added couple prototypes. - Added cdecl's for those who might need it. Version 1.10 - Added functions to allocate/deallocate voices. These could have been done by the application, but is useful to add here. - Fixed documentation on UltraMemFree(). Had arguments flipped. - Changed some of the source code to make recompiling for Watcom C. - Added support for 3D sound implementation Version 2.00 - General documentation cleanup. Spelling, grammer etc.. - Added a lot of hardware specific documentation (Theory of operation, register level defs etc) - Fixed bug in volume ramping. Problems when the ramp values are the same. Version 2.01 - Fixed bug in UltraAngPosition() - Changed init procedure to set locations 0&1 to 0. All voices point there & will cause problems if their volumes are raised. (clipping when they are summed in). Version 2.02 - Some of the 3D functions had their names spelled with a capital D. They were changed to a small d to be consistant with the documentation. Some compilers would generate an error since the case didn't match. - UltraMidiEnableRecv and UltraMidiEnableXmit were flipped. They turned each other's IRQs on instead of their own. - UltraMidiDisableRecv and UltraMidiDisableXmit were flipped. They turned each other's IRQs off instead of their own. - Fixed documentation on UltraStartVoice. When playing a sample in reverse, the BEGIN location should be the largest, the start of the loop should be next and the end loop address should be the smallest. - Fixed bug in UltraStartVoice(). A sampled attack was not done properly. Playing a sample backwards was also incorrect. - Fixed documenation Appendix C. Bit 6 is the direction bit. 0 means increasing addresses. 1 means decreasing. It is not normally necessary to set this bit. UltraStartVoice will set it if the start address is greater than the end address. - Cleaned up the makefiles a bit. - Corrected doc on return values for UltraRecordDmaBusy() - Changed the segment group names for Borland tiny model. Makes a .sys driver easier..... - Added a UltraDup3d function. Will create another handle for the same 3D data. Saves DRAM. UltraCloseDup3d added also. - Fixed bug in UltraAlocVoice. Didn't init variable and could return OK when there were no free voices. - Moved some misc. global variables into _gf1_data struct - Changed initial mixer setting to everything disabled - Added support for the rollover bit - changed inportw to inpw outportw to outpw inport to inp outport to outp so it will compile with Borland C++ 3.1 - Fixed bug. Stopping a 3D sound abruptly would leave the volume at whatever level it was at. It should have ramped it down to zero. - Made functions use ANSI calling sequence. - Add support for rollover bit Version 2.10 - PASCAL routines added by Kurt Kennett of Ingenuity Software. These routines are a direct analog translation. - The documentation was completely reworked to allow for this interface. As a result, new sections were added to chapter 1, chapter 3 was slimmed down, and the appendices were changed to accomodate both languages. The section with the least # of changes was chapter 2. - The addition of PASCAL calls and the total rework of the documentation justified a full minor revision update. (2.02 to 2.10). Version 2.11 - Fixed bug in PASCAL version : UltraGetVoice returned only one voice before not allowing any more voices to be allocated. Pascal 'LoadMod' example file fixed. Source code included in this version.