NEO Team's Project for SEGA MK3/MD5/32X > MD development section

NeoMythMenu Deluxe

(1/5) > >>

This is a test platform for the enhanced menu. This menu is larger than 64KB, so you need to use madmonkey's writer to burn this to the menu flash of the flash cart. Use this command from a terminal:

--- Code: ---neowriter -iot menu -w MDBIOS.BIN
--- End code ---

So what's different about this compared to the "official" 1.2 NeoMythMenu? This menu is designed to allow me to use more than 48KB of code. That would allow me to do things like use a full FAT filesystem for things like long name support on the SD cards. I could also add a lot more features to the menu. This "deluxe" version of the menu is basically the "offical" menu with some extras added to it as I figure out how to run large menus on the MD Myth. The first extra feature of the deluxe menu is a VGM player. You can now play VGM music files off the SD card. Just hit START twice to get to the SD card browser, go browse into a directory with VGM files and press B or C to play the file. Press C to stop the player, otherwise it will just repeat the song until you go insane.

The extra info you get when you pause over an entry shows the name of the track from the GD3 tag info (if present). You can only play files up to 2MB in size. If I have the chance, I'll add bank selecting to the player code to allow files up to 8MB. The player is adapted from vgmplay from mic over at SpritesMind. As always, the source is included.

I'll probably add full FAT FS to this next to work out the issues with a full FS in a menu I know works.


I truly hope you understand how much your work is appreciated!  You've taken a solid product and made it something special!

Can't wait for long filename support!!!!

Woooohooo  ! ;D
Thanks for another great update! ~sm-42.gif~

By the way , any chance to get SD write mode?  ::sm-24.gif::

yeeha! bigger menu code opens a lot of possibilities. for now I second longer filename support. sd write seems to be useful too, and it will allow to write saves to sd cart automatically, similar to how nds carts work.
out of curiosity, how does it work? there were some problems with bigger code before.
and can you add md-neo.ld file? it seems it's missing.

Yes, writing the SD card will be added as well. That's part of the full file system.

I'm attaching an arc of the map. I forgot that's in the toolchain libs.

The way it works:
Only 64KB of the menu shows up when the Genesis first starts (that's why the original menu was limited to a max of 64KB), so I have the "standard" Genesis init code at the start like usual. However, that init code copies a block of code to ram that switches on the menu flash officially, sets the flash bank registers to make 1MB (the max) appear in the rom space, then sets the mode to mode 7. If you remember, mode 7 allows 1MB of flash (menu or game) to appear at 0, 1MB of PSRAM (bank selected) at 0x200000, and (as we found later from Dr.neo) 1MB of PSRAM (bank 7) at 0x300000.

The init code then goes on to do the normal hardware set up and jumps to main(). At that point, I simply make a big block of nothing in the code segment to make an empty space up through what the official menu wants for things like the menu entries. So you have the init code at 0 to about 0x480, then there's nothing up to 0x01FFFF, then you have the code and data for the menu at 0x020000 through about 0x02BF00, then it's padded out to 0x040000.

There's plenty of space for stuff. I just have to keep it under where the official menu puts the bad block list.

So anyway - the code all winds up in "rom" (the menu flash), the data in the Genesis Work RAM, and I've got 1MB of fixed RAM that can be mapped into a section called ".fixed", and 7 or 8 MB of bank selected ram (depending on if you use .fixed in the program). The VGM player, for example, counts on the fact that bank 6 is contiguous with bank 7, so it uses my regular game loader routine to load the VGM file into bank 6 and 7 (which is why the maximum VGM size is currently 2 MB), then the player sets the bank register to bank 6 and plays the VGM as a flat 2 MB chunk of memory from 0x200000 to 0x3FFFFF.


[0] Message Index

[#] Next page

Go to full version