Changes from V2+i to VW: Stuff that no longer works: - Almost all of the console commands have been disabled. - The undocumented 'S' renderstring command has been disabled. - Character files, once opened, are cached for the remaining execution. (i.e. character files are never freed, but are only opened once). The same is true of fonts. - Mouse functions may give out-of-bound values in windowed modes when the cursor isn't in the window? (Haven't tested this yet.) - System mouse cursor shows during program execution. - VC memory manager will crash after VC allocates a total of 2 gig (regardless of whether or not the memory is freed). - The timer will overflow after running the game for about 32 continuous days, probably crashing the game. - Packfiles are not implemented. - The undocumented variable "vsp" has been disabled. - The undocumented variable "last_pressed" has been disabled. - The "screen" variable has been disabled. - The "key" variable is now read-only. - The undocumented array variable "layer[x].hline" has been disabled. - The "pal" array variable has been disabled. - Palette morphing has been disabled. - The undocumented variable "music_volume" has been disabled. - FLIs are disabled. - The undocumented functions "MapLine" and "TMapLine" have been disabled. - The undocumented function "Tint" has been disabled. - The function "AllowConsole" has been disabled. - The function "InitMosaicTable" has been disabled. It returns zero, so its return value should never be used. - The function "Mosaic" has been disabled. - Hooked scripts now never interrupt executing VC code: don't rely on HookTimer or HookKey to get you out of a while loop. HookRetrace still works as expected. - In order for the program to respond to Windows system events (moving the window, changing applications, etc.), an update function must be called regularly. This function is called from UpdateControls, UpdateMouse, and ShowPage (and, of course, the main loop), so most programs should remain interactive. Enhancements: - Memory management is much better. Less memory is leaked, VC memory access is more rigorously checked, graphics clipping is always performed. Unlike V2 and V2+i, VW does not require me to reboot my machine between program runs. - Undocumented poly functions now work better than ever: FlatPoly(x1, y1, x2, y2, x3, y3, color); TMapPoly(x1, y1, x2, y2, x3, y3, tx1, ty1, tx2, ty2, tx3, ty3, texWidth, texHeight, texImage); - Supported music formats: MOD, S3M, XM, and IT. (added IT) - Supported graphics formats: GIF, 8- and 24-bit PCX, 8- and 24-bit BMP. Odd-width images are now supported. (added 24-bit PCX, fixed PCX and BMP width issues, fixed GIF memory leaks). - Graphics are generally faster, and you can have any graphics dimension in a windowed mode. Fullscreen modes appear to be more stable than before. - To access fullscreen modes, add "fullscreen" to user.cfg. - To access other bit depths, add "viddepth #" to user.cfg, where # can currently be 16 or 32. Note that there is no way to communicate the bit depth to VC, so code that relies on 16-bit image sizes may crash in 32-bit mode. Also, VC's rshift, gshift, and bshift variable values are currently incorrect for 32-bit mode. Thus: stick to 16-bit mode for now. - 16-bit mode is now in 565 format instead of 555 format. This gives an extra bit to green colors, which makes the graphics look a little nicer. - Transparency table is now calculated to 128 bits, as opposed to 32 bits, which makes transparency a little more accurate. - Any Windows-installed joystick works. (As opposed to just GRIP under DOS.) The button mappings can be configured using user.cfg, as in V2+i. - The program uses reasonable defaults when user.cfg is not present. The only files actually needed, in addition to the executable and the DLLs, are console.gif, system.fnt, a startup map (defaults to test.map), the map's VSP and compiled VC code, and the compiled system VC code (system.vcs and system.idx). - Screenshots can be made by pressing F11, even during most VC execution. Screenshots are saved in a "capture" subdirectory, which must exist for VERGE screen capture to work. Of course, you can always use Windows to capture a windowed mode to the clipboard by pressing alt-printscreen. Changes from V2 to V2+i by the Speed Bump (thespeedbump@home.com) As of April 2nd Notes on all the stuff I did with V2: Directories: You no longer have to lump all your files in one directory. V2 will now allow access to subfolders of your verge directory, but nothing else. HIGH COLOR!!! Sorry, but I had to remove 8 bit support in this version. If you'd rather use 256 colors, use a version I haven't manhandled, or wait for V2.5. :) BTW: Check out the transparencies!!! (SWEET! @_@) GETMODE.EXE: This sounds kind of retarded, but I don't know much about protected mode addressing and whatnot. So I wrote GETMODE.EXE to do most of the VESA interfacing. Keep it in the same directory as VERGE.EXE. VSPs: VERGE now loads any VSP format (8bit compressed/uncompressed or 16bit uncompressed). I didn't think there was much of a point to compressing the 16 bit VSPs, it'd probably increase the filesize as opposed to decreasing it. note that 16 bit VSPs have the extension of .V16. If the engine cannot find tileset.v16 then it'll load tileset.vsp. This works as a great workaround until I (or anyone else who wants to) can redo MapEd. Fonts: Since fonts don't have a palette in them, support for 8 bit fonts has been removed. Calm down :). Just get font.pcx, convert it into a 24 bit BMP, and use BMP2FONT.EXE. (run it without paramaters to get the syntax). Use flat black (r0 g0 b0) for the background color. CHRs: Like fonts, CHRs have no palette. So, you'll have to convert them to 24 bit BMPs. Also, I'm not too good at string parsing yet, so the MAK files are a bit different. (An example is included). Images: As of yet, I can't figure out 24 bit PCXs and there are no 24 bit GIFS. In short, you can load all your old images, plus 24 bit BMPs. SetLucent: Since there's a lot more you can do with transparencies in high color, I added some functions to this. SetLucent(2); will enable variable transparencies. First, Enter the new function CalcLucent(translevel) where translevel is the level of translucency. 0 is invisible, 255 is opaque. SetLucent(3); causes all the colors to be added togeather. This is great for lighting. Run the demo to see! @_@ <-my new favourite emoticon SetLucent(4); is the opposite, it's awesome for shadows/etc... Again check out the demo, there is only one image loaded in memory, one is added to the screen, the other subtracted. Guess which :) SetLucent(5); allows for VARIABLE color addition. It uses the CalcLucent table, but it's backwards (dunno why). Anyhow, CalcLucent(0); is just like fixed addition, while 255 is invisible. SetLucent(6); is, rather predictably, variable color subtraction. It works just like SetLucent(5); PaletteMorph: There is no longer any palette to morph. :) I guess I should stick something in place to simulate it, but it'd be so damn slow (every pixel would have to be transformed at every retrace). If anyone has any ideas, drop me a line at thespeedbump@home.com TRANS.TBL: This isn't used by VERGE.EXE anymore. Keep it there for MapEd's sake. (Until a 16 bit version is available) GrIP I added some commands to USER.CFG to enable it: grip - on a line by itself. enables GrIP jb1,jb2,etc... - followed by a button number. just like in V1 You'll have to mess with it a bit to get the numbers right, or you can use JOYTEST.EXE. Just run it. Also, make sure GRIP.GLL (note that it's not DLL) is in the same dir as the EXE