Jump to content

Adding command modules to classic 99?


Recommended Posts

What's the easiest method to add modules to the menu list for cartridges in Classic 99? I'm at work, and have been a bit busy to read any ftm.


Reason being, MESS locks up horribly on Buck Rogers. MESS locked up to the point where it was constantly looping a sound, and any normal attempts to kill the task failed miserably. Yeah, don't use buck rogers.


I would love to easily switch games in Classic 99 instead of using MESS's cumbersome UI. I did however realize that you can just select the 2 files for a cart(why are they in 2 files?) and hit enter, and it runs. You don't have to individually mount the cart files. Instead, just go straight from the picker.

Link to comment
Share on other sites

Not really sure, but I seem to recall that Tursi has plans on adding a cartridge library (perhaps something in the style as win994A has?).


At this time, I suppose the only way to add cartridges to the menu in classic99, is to add the appropriate entries in the classic99.ini file.


Something like this:





I'm afraid you'l have to read the manual (in this case classic99.txt) ;)

Here is an extract on the ROM section


0	Apps
1	Games
2	User

-1	No cartridge selected
??	index of the cartridge from the appropriate menu

[userCart0]	 (and so on up to 99)
Name of the cartridge. If blank or missing, the cartridge is ignored.

Compatibility notes, if desired

rom0	(0-3 for a total of 4 ROMs per cartridge)
Contains notes for loading the cartridge. This is a pipe-limited row
of data, formatted like so:

T is the single character ROM type. Most carts only use G, C and X types.
E	DSR ROM bank 2 (used for p-code)
R	CPU RAM - this is loaded like CPU ROM but is not flagged as read-only!
S	Speech ROM
X	XB Bank 2 ROM (called 'D' in some systems, but I used D already)
A	AMS memory, RLE encoded (not working correctly yet)
K	Paste string for the keyboard after boot (to autostart tasks, not a filename)
3	Packed banks with a '379 style decoder. Similar to XB style but more banks and 
	all in one file. Note that this assumes a load at >6000, so you are specifying
	the offset in the banking space, with bank 0 at >0000, bank 1 at >2000, etc.
	SuperSpace carts (CRU >400) can be loaded this way for now, too, but will 
	likely split them up later. Max size is 64k.

(* GROM is special - to support multiple GROM bases, you can now load GROMs
into different memory bases - up to 16 of them! By default, GROMs load into
memory base 0. Append a hex number 1-F after the G to specify a different
base (like: G1). The console will detect these and add them to the start menu! 
Note that not all GROMs will work at alternate bases. Also note, in the real 
console, the console GROMs appear at all bases, so you can't load alternate
bases at less than >6000. Classic99 does not support using this with cartridges that
include CPU ROM. Each GROM base is offset 4 from the previous, ie: GROM Read
is >9800, >9804, >9808, etc.)

AAAA - load address in hexadecimal

LLLL - length of data in hexadecimal (will override actual size of file)

filename - filename on disk to load

This system supports both raw ROM files, and ROM files with a 6 byte GRAM
Kracker style header. The header is detected by checking if the first byte
is >00 or >FF, and if the 5th and 6th bytes represent the load address. The
header will be ignored if detected - the data in this INI file is
considered authoritative.

Link to comment
Share on other sites

Sorry that there is not yet a more intuitive way... core functionality has always been high priority in the very limited time I get to work on it. :)


There is one shortcut - if you are loading ROMs in the 'V9T9' format, which is also what MESS uses, you'll note they end with C.BIN, D.BIN or G.BIN. If all the files in the cart end like that, Classic99 has an auto-loader under Cartridge->User->Open, just select any one of the three files and it will find the others.


If it's not in that format, or it's one of the newer bank switch carts, then there's no autodetect, and you must use the INI file method. It's on the TODO list to add the MESS RPK format, which will simplify things nicely (if I can find a non-GPL unzip library....)


As for why they are separate files.. just legacy. Each file is a dump from a single type of memory, usually. C is the Cartridge ROM at >6000, up to 8k. D is the second bank of Cartridge ROM at >6000, up to 8k, used for Extended BASIC (and Atarisoft carts). G is GROM space, usually concatenated together into a single file, loading at >6000 and supporting up to 24k.


The MESS RPK format zips the files together and includes an XML layout file, which is surely the best way to go forward. XML is nicely extensible so we should be able to add manuals, screenshots, and cover scans to it as well. ;)


(edit: and I need to update that doc, apparently.. as far as I remember it supports up to 16 ROMs per cartridge now ;) )

Edited by Tursi
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...