9 November 2011 · Revision 1.6 ( Public )
Amazingly even with all the changes, rewrites and inclusion of new features... the executable dropped 1k in size and uses less memory in a less aggressive fashion. Though the stack does get a bit of a workout...
Added MT32/GM/Midi support
Requires the MIDI device to have a 24 step pitch bend range or allow setting via RPN -- Which "Microsoft GS Wavetable" does not... This is still in the early development stages and doesn't sound all that great yet -- but it shows promise.
Better EGA and VGA support
- VGA now uses BIOS scanline set, works properly on pretty much everything!
- EGA sets misc register properly
"infinite fruit" bugfix
Added counter of how many have been shown
Fixed AI bugs
- random for ghost turn was ignored
- random for ignore chase was always taken
- death during final 'chase' resumed as 'always scatter' instead of a 250 iteration scatter followed by resuming the chase. Fixing this bug revealed the Final Chase Update Bug.
*** NOTE *** AI bug fixes may have increased difficulty
Final Chase Update Bug
Fixed behavior update procedure being called every timer tick once the 'final chase' was reached. This got rid of late game 'slowdowns' on slower systems
Improved sound on/off handling
Can now turn sound off mid-theme and during longer sfx
Better dividing of tasks between audio timer ticks
Should lower CPU speed requirements even further
Removed many FOR, WHILE and REPEAT for recursive object calls
Speedup, lower memory use and simpler logic flow
Rewrote many library functions in ASM
speedup, smaller exe size
Stopped passing sprite pointer on every call
- now handled by global pointer "tileSource"
- speedup, less stack use
New Joystick Handler
faster, reads both axis at same time
Replaced write/writeln with custom handler
reduced total code size 5%, who knew WRITE was inefficient?
Smaller/simpler graphics 'outtext' routines
- removed all the custom number outputs
- allows wider use of background erase or transparent
Rewrote 'circling' pixels on menu page
Faster, lower memory use, prevents really slow 8088's from bogging down
Renamed many procedures and variables
Code cleanup, make it easier to find things
Renamed all data files to .DAT (no more .FNT or .TDT)
Actually allowed a bit of code reduction, and it's easier to keep track of when copying files to build the distro.
Moved music config info into external .DAT files
Lowers heap/stack/code size, makes customization easier
Patch files for MT32, General Midi or Custom (see custMidi.txt)
Instrument Data for Adlib
Revised CMS/Game Blaster code
I was using word width port outputs for register/data pairing, and not sending the chip enable on every tone change -- both of which appear to make said sound card not work on AT or higher systems, or with the Soundblaster 1.5. (Worked fine on my XT testbed with a SB 1.0). Hopefully this change will get it working for those of you reporting problems with the SoundBlaster 1.5's CMS chips or on AT/higher systems.
Distribution built with stack checking off
reduced exe size, faster execution. My stack is fine, don't need the compiler second guessing me.
Abandoned PC/JR and Tandy specific video code
Due to bugfixes and better understanding of the CGA implementation on both platforms, the code to try and use the 160x200 video mode is no longer required.
21 March 2011 · Revision 1.5 ( public )
- Faster blitting routines for backbuffer thanks to code discussion at Oldskooler Ramblings
- More PcJr. Fixes (I hope!)
20 March 2011 · Revision 1.5 Beta ( private )
- Code Cleanup from revisioning system screwup complete
- Testing new Jr. Textmode code
- Tandy/Jr specific version included in source tree
- Testing machine language optimizations for sprite blits
Version 1.4 was a train wreck -- I was using CVS on the code tree since version 1.2, and when I built 1.4 it had code regressions across the entire beast to problems I've not seen since the 0.89 alpha... So I've scrapped that nonsense and will just go back to doing it by hand as I pretty much had to brute force recode to clean up that mess anyways. Particularly annoying was large sections of code reverting back to their 1.1 and 1.2 incarnations.
Ended up like every time I'm forced into using extra 'tools' for HTML/CSS/PHP -- it's ALWAYS a broken buggy disaster; how do people even use this ****? I swear, I've not had problems that bad with code since I was forced into working with Dreamweaver, Jquery AND some rubbish CSS framework -- all three of which just result in disasters.
"Programmers Tools" -- I swear the only thing about these things that can be called professional grade tools are the people promoting their use.
5 March 2011 · Revision 1.4 ( Public )
- Minor code improvements to better handle 4.77mhz systems
- Joystick reads spread out across task slicing to prevent slowdowns and handle how certain systems do not properly 222discharge the capacitors if they are at less than full charge. (Like PCJr, SB2.0) without causing some systems to hang completely (original PC game adapter, tandy 1000) while not introducing any extra 'delays'.
- Fixed PC Jr. blink/intensity not being set right -- FINALLY
13 February 2011 · Revision 1.3 ( Public )
- Added Joystick Support
- Tracking of five most recent high scores
- Saving of high scores to disk
- New font renderer uses less memory and sped up menu.
- Fixed bug with MCGA detecting as VGA
- Fixed audio 'buzz' on PS/2 speakers
- Memory footprint down to 67k
10 February 2011 · Revision 1.2 ( Public )
Two days after the initial 1.0 release, and I'm already up to Rev 1.2. I've upped it to that number because I've rewritten the entire sprite engine from scratch. This has increased the memory footprint of the game to a "whopping" 70k, but by allocating an extra 16k to make two back-buffers I've completely eliminated flicker on 4.77mhz machines (though true CGA cards WILL have snow, not a lot I can do about that!). The speedup and improvement to how it's drawn was so good, I removed the speed test AND the /vsync option completely!
This technique should have occurred to me sooner, but I was so obsessed with not using memory. Even at 70k a machine with only 128k of RAM should be fine, even under DOS 3.
9 February 2011 · Revision 1.1 Alpha ( Private )
Minor improvements to the renderer
8 February 2011 · Revision 1.01 ( Public )
Fixed bug with level up voice sticking between levels
4 February 2011 · Revision 1.0 ( Public )