More MOD Player Stuff
I got the MOD player running at 3-4ms/f on the 486DX2 at 66mhz with a
4-channel MOD file playing at 22khz. Doing okay, but not perfect.
The vibrato effect (4xx) has been implemented. I had to write another
program to generate the 2kb tables of precomputed fixed-point (1.15,
don't ask) vibrato pitch shift values, and aside from the per-sample
branch to check if the vibrato is active, it doesn't have performance
overhead unless you're using it.
The vibrato was one of the more complicated effects, and I had been
putting it off for a while. Now that it's out of the way, other
effects are being added much faster.
The glissando effect (E3x) on the slide-to-note effect (3xy) is also
in. This one is just a modification to some per-tick code, adding an
extra branch, so performance impact is negligible when not in use.
Progress is poking along. I might get this working natively on my
Linux machine just so I can get some compiler warnings. Apparently
Watcom 10.0a doesn't warn when you pass a pointer into a function
that's the wrong type. You can probably imagine how long that
took to track down.
Also, it'd be nice to have a native MOD player kicking around for
Video Capture Woes
I got a nice fancy VGA capture card with generally good reviews from
Inogeni. The images that come through on the thing are crystal clear,
and look totally amazing, but it only works (on my DOS machine) in the
640x480@60hz mode that Windows 3.11 gives me. In fact, it seems to
have issues with most of the DOS VGA modes, which are all in the 70hz
range and higher.
By this point I've been through quite a few capture devices and format
converters trying to find something or some combination of them that
supports 70hz VGA modes. So far the only working option I've found is
using a VGA-to-S-Video converter, then capturing the (fuzzy,
low-framerate) S-Video output.
If I ever stream development on this game I'll be doing it through
fuzzy S-Video goggles, I guess.
Mode 13h is too Slow?
Jumping into graphics a bit early, I set up mode 13h and got the
palette controls and vertical blank syncronization all hooked up. I
set up a simple back buffer for the 320x200 pixel/byte display, and
wrapped it all up in a simple double buffering setup. Then I ran into
Turns out, if you copy 64000 bytes from system memory to VRAM on a
486DX2, it takes about 7 milliseconds. To hit that 70fps goal, I have
about 14 milliseconds to do everything for the entire frame. Game
logic, sound mixing, rendering to the backbuffer, and then... this.
This 7ms monstrosity of an operation just to copy the backbuffer to
the front buffer. Even distilling it down to a simple "REP MOVSD" in
assembly didn't save me any time.
Then everyone told me I should be using Mode X instead of mode 13h. So
I guess I'll be doing that once I get back to graphics.
Time to do some
0 1 2 3 4 5 6 [ 7 ] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
Previous | Next