Deathshadow's Madness
Madness and you, perfect together


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 )

  1. Faster blitting routines for backbuffer thanks to code discussion at Oldskooler Ramblings
  2. More PcJr. Fixes (I hope!)

20 March 2011 · Revision 1.5 Beta ( private )

  1. Code Cleanup from revisioning system screwup complete
  2. Testing new Jr. Textmode code
  3. Tandy/Jr specific version included in source tree
  4. 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 )

  1. Minor code improvements to better handle 4.77mhz systems
  2. 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'.
  3. Fixed PC Jr. blink/intensity not being set right -- FINALLY

13 February 2011 · Revision 1.3 ( Public )

  1. Added Joystick Support
  2. Tracking of five most recent high scores
  3. Saving of high scores to disk
  4. New font renderer uses less memory and sped up menu.
  5. Fixed bug with MCGA detecting as VGA
  6. Fixed audio 'buzz' on PS/2 speakers
  7. 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 )

Initial Release

Play Now in Your Browser!

  • MS-DOS
    Chrome or Firefox Recommended!. Other browsers may try to run this, but it uses some advanced modern JavaScript to function properly.
  • Commodore 64
    This requires Oracle Java to work properly, which not all browsers will even let you DO in the browser anymore! Laughably, this is the one you're better off trying in IE or Safari.

System Requirements

  • 4.77mhz or faster 8088
  • 128k of RAM
  • (66,560 bytes free in DOS)
  • DOS 2.11 or Higher
  • CGA, Tandy/PcJr, EGA
    or VGA video

...or just run it in DosBox

Supported Sound Cards

PC Speaker, Tandy/PcJr, C/MS Game Blaster, Adlib, MT-32 or other MIDI Device

For more information on running DOS games on modern systems, visit the DOSBox Website

To learn more about on running DOS games in your browser, please visit the JDOSBox Website or it's associated SourceForge project page.