MESS 0.36 beta 15 New drivers supported (in no particular order): ----------------------------------------------- AdventureVision [Dan Boris] Commodore64(NTSC&pal), Max [Peter Trauner] Apple1, Nascom1 [Paul Danials] MicroBee (32,56k) [Juergen Buchmueller] zx80, zx81, ts1000, aszmic, pc8300, pow3000 [Juergen Buchmueller] laser 110, 210, 200, 310, 350, 500, 700, tx8000 [Juergen Buchmueller] cpc464, cpc664 [Kev Thacker] kc85_4 (preliminary) [Kev Thacker] These drivers have improved GRAPHICS: ------------------------------------- - ORIC endianness bug, which messed the screen on a Macintosh, fixed. [Raphael Nabet] - TI99_4a display palette (F4) corruption fix [Mathis Rosenhauer] - Overlays load again with a vectrex cart inserted. [Mathis Rosenhauer] - Amstrad CPC/KC Compact fixed mode problems, and problem where keys were not displayed in the UI. [Kev Thacker] - Enterprise 128 graphics display correcly (chars are correct size now) [Kev Thacker] These drivers have new or improved SOUND: ----------------------------------------- - Jupiter buzzer emulation [Paul Daniels] Other drivers changes: ---------------------- - Atari 7800 image compatibility increase! all non-banked available images should work now. [Dan Boris] - coco driver update, which includes the coco3 startup crash fix, and floppy disk bug fix in the Coco floopy disk code [Mathis Rosenhauer, Nate Woods] - TI99 series fixes (also TMS9901 core added) [Raphael Nabet] - Fixed KC Compact input port problems [Kev Thacker] - Spectrum keys are now displayed in UI [Kev Thacker] - Implemented interrupt system in the Enterprise 128. It starts up better, but will be made accurate when programs can be run. [Kev Thacker] - Enabled disc support in the Enterprise 128. It is currently fixed to loading real discs - it doesn't work yet though. From basic enter ":EXDOS" to enter a CLI. From here you can type DOS like commands e.g. DIR, CHDIR, MKDIR to access the drive. From basic you can enter the same commands, but prefix with ":". Changes to the main program: ---------------------------- - mess/msdos.c & mess/msdos.h created for MESS DOS specific functions. Note: Each port is now responsible for handling these functions. - there have been major changes to the Driver structures and loading procedure. *Here is an overview: * Every game driver's struct GameDriver (src/mess/systems/*.c) is now defined using one of four macros COMP/COMPX or CONS/CONSX. COMP is for computers and CONS is for consoles. The X versions allow specifying additional flags (GAME_NOT_WORKING ect.) * Every game driver specifies it's peripherals in an array of "struct IODevice" elements. * rom_load and rom_id fields were moved into that list, together with the number of devices and the known file extensions for images of that type. * MAME's src/driver.h now only contains one pointer to this list of devices, all of MESS' extra fields are gone. Old: #ifdef MESS int (*rom_load)(void); int (*rom_id)(const char *name, const char *gamename); const char **file_extension; int num_of_rom_slots; int num_of_floppy_drives; int num_of_hard_drives; int num_of_cassette_drives; #endif New: #ifdef MESS const struct IODevice *dev; #endif * The global rom_name[], floppy_name[], hard_name[] and cassette_name[] arrays are gone! Instead each machine driver (src/mess/systems/*.c) should specify an init function for every device it supports. This init function is called during the startup with an id (0 to max instances of the device - 1) and a filename. The driver can either store the filename locally to access it later, or already do something with the file, like loading and decoding it like the apple2 driver seems to do it (seems, because I didn't understand too much of the code :) * rom_load is called very early when a driver is started. It is the 'init' function for the device type IO_CARTSLOT, so the previous statement applies here too. * the rom_id function pointer moved into the struct IODevice too. Every device can have a id function, so if it is possible to identify eg. a floppy disk, harddisk, cassette ect., you should provide the identifying functions and put them in this field in your systems/driver code. The id function return value is sort of TRUE/FALSE, ie. non zero means image is ok for this device, zero is not recognized. * The IODevice contains an "void (*exit)(int id);" entry, so each driver could (and probably should) handle shutting down the various device instances. The exit entries are called from src/mess/mess.c exit_devices(), which is called from src/mame.c shutdown_machine(). * Startup handling moved from src/mame.c to src/mess/mess.c In the first stage load_image() is called. The images specified on the command line are parsed in mess.c now, and a list of "struct ImageFile" entries in the GameOptions is set. This struct contains a "char *name" and an "int type", where type should be set to one of the IO_CARTSLOT, IO_FLOPPY ect. values. GUI ports could use this to store some file selection lists together with the type of files selected. The DOS port stores image names from the command line (*argv) in this array, and the type of image is determined this way: 1st: user specified a type using a switch before a (list of) name(s). For DOS this looks like "mess system -floppy test -rom rom1 rom2" 2nd: the extension of the filename matches one of the MessDevice entries of the driver which is started. So if a driver defines "cas" for it's IO_CASSETTE device and "dsk" for it's IO_FLOPPY device, the command line "mess driver a.dsk b.cas" will be sufficient. 3rd: if the image type is not know, it is stored along with a type of IO_CARTSLOT. * In the second stage during startup, the get_files() function is called and images are sorted into some (static) arrays of names in mess.c. This is to allow easier/faster access to them and maybe useful for swapping the names and calling init_ again. * The third stage now walks through the list of devices of the driver which is to be started and calls it's init functions with the the names from the arrays. If the driver returns non zero, the startup process is terminated here. Source: ------- - The core is based on MAME 0.36b15. This incorporates all features of the update to this core. [MAME team] Other: ------ - Extensive CRC updates [Chris Henry, Gerardo Jorrin, Peter Trauner] SysInfo.dat documentation update [Chris Henry, Kev Thacker, Raphael Nabet] Please send all CRC/sysinfo file contributions to Chris Henry. (battlepriest@hotmail.com).