I have been quite busy as of late. I work 40 hours
a week. I have friends and co-workers who I enjoy spending my time
with. I come home and either I program or I work on my computer
for a few hours and then I sleep. I have a rigorous sleep schedule
of 10 hours a night. :)
I have been working, I have been working on Sintendo,
I have been researching for Sintendo, et cetera. I have accomplished
a few things but I can't say that I have actually finished any one
particular aspect of Sintendo that I would like to add to
the next release.
Obviously, the most awaited is sound. Sound works,
kind of. At the moment, I have sound support taken out because I've
grown quite frustrated at it and want to work on a few other things
for the moment. SNES sound, however, as you know it, does not work.
Only in vague ways does it actually resemble what you would expect
to hear, and that's when it doesn't crash. On the Dreamcast, it
crashes, and badly at that.
What does work, however, and is quite nifty, is something
I designed as a preliminary to the SNES sound. Sintendo can successful
play a wav file of any size. The reason for this added functionality
is that I wish for Sintendo to be able to have menu music. Menu
music would be by no means required. Actually, at the moment, the
way I intend for menu music to be implemented is that you may create
a 'WAV' directory in the root (right next to 'SNES' and 'WINCE')
and this directory may contain any number of songs of any length,
so long as they fit on the CD (this is actually quite a restriction).
The bad news is that wav's take up a lot of space usually and could
easily fill a CD. But, I imagine, you could probably easily fit
20-30 minutes worth of music and still have a very wide selection
of SNES roms on the same CD. I may also add an option to continue
playing menu music once the SNES has begun playing. The menu music
would then be mixed on top of the SNES music as though you were
listening to a CD while playing a video game.
Obviously, the exact details of this feature as still
uncertain. I thought it more important to move directly into SNES
sound after completing wav playing that it would be to have to deal
with the intimate details of making menu music operational (such
as: playing more than one wav in sequence, or starting or stopping
music playback when menus are left or entered).
The one feature nearest completion is background bitmaps.
I finally got the Direct3D code to work for showing bitmaps (textures)
behind the menu. Due to the colors of certain backgrounds, I have
decided to change the general menu color from blue as you are used
to it, to a move nuetral black/gray. It is still in transition because
I have yet to convert all the icons, arrows, et cetera to match
the new color scheme. Even still, background bitmaps add a striking
appeal to the menus that a White to Black gradient just couldn't
do, and only took me about 2-3 days worth of programming early after
my last release. Background bitmaps should certainly be expected
with the next release. However, I am having so video memory issues,
so I may have to find a better way to hold them in memory or to
load them dynamically.
Background bitmaps lead an interesting transition
of using the same (or similar) code to render transparencies using
the Dreamcast hardware rather than in the Snes9x software, which
adds together ever pixel individually, and can be quite slow. Hardware
transparencies would render nearly as quickly as Sintendo renders
with transparencies disabled, hopefully reducing frameskips by as
much as 20 frames per second on averge, and still providing strikingly
accurate SNES images. I am still in the middle of programming this,
and I have run into a few problems, such as texture rendering not
being as accurate as 2D blitting, resulting in more jaggies and
awkward edges, taking away from the engraved-in-stone pixelated
look and feel of the original SNES. My old code even went a long
way to smooth a lot of those pixels using anti-aliasing and actually
improving the image quality, while this new code can't even be said
to render at the quality of the original SNES. This problem may
be solvable as I look into things further.
Lastly, (I believe) someone dropped me a line (I'll
look up the name later, or he can drop me a line if he wants credit)
about the exact size of many of the larger SNES roms, suggesting
that 6 Megs (6,291,456 bytes) plus a few extra buffers for headers
should be plenty of space for almost any ROM ever made for the Dreamcast.
rather than the 8 Megs which I had previously set. I have since
reduced the ROM allocation size to a comfortable 6 Megs, which freed
up an additional 2 Megs which I immediately used for allocating
enough space for Hi-res game support. Sadly and strangely, code
which once rendered hi-res games no longer works properly on hi-res
games for unknown reasons as of yet. Normal games run fine, but
hi-res support is not yet perfected. I've added it to the list of
things which I need to work on.
As far as sight changes go, I've updated this page
(obviously), and I'll probably be uploading a new timeline at the
same time. I added a few checkmarks, and changed a lot of them over
to blue. I've also developed, slightly, a timeline for sound, but
it's not particularly well thought out. I still haven't prepared
CDRECORD instructions, and the reason for this is because I am searching
for a file system structure that mkisofs can prepare that preserves
capitalization and special characters, such as spaces or hypens.
The normal file system uses all caps and changes spaces, hypens,
and a few other characters into underscores, which I find unattractive.
If anyone knows of any command line for mkisofs that preserves such
characters and capitalization, please drop me a line. Please, however,
make sure the burned iso actually plays on the Dreamcast.
I guess that about covers it all for now. Just giving
everyone an update and letting people know how things are coming
as well as what to expect. As a final note, I still haven't solved
the inserting VMUs problem, but I'm considering changing the way
Sintendo saves anyways.
Again, I can't promise that I'll update soon, as,
you can see, I'm chest deep in a lot of thick code and I'm trying
to dig my way out. I need to find some way to relax for a moment
or two so that I can, hopefully, come back stronger afterwards.
I'll be moving sometime this month, perhaps that'll do the trick.
I'll update again when a reasonable update is available.