mirror of
https://github.com/Pecusx/libretro-atari800.git
synced 2026-05-21 21:33:56 +02:00
initial commit
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
#ifndef CARTRIDGE_H_
|
||||
#define CARTRIDGE_H_
|
||||
|
||||
#include "config.h"
|
||||
#include "atari.h"
|
||||
|
||||
enum {
|
||||
CARTRIDGE_UNKNOWN = -1,
|
||||
CARTRIDGE_NONE = 0,
|
||||
CARTRIDGE_STD_8 = 1,
|
||||
CARTRIDGE_STD_16 = 2,
|
||||
CARTRIDGE_OSS_034M_16 = 3,
|
||||
CARTRIDGE_5200_32 = 4,
|
||||
CARTRIDGE_DB_32 = 5,
|
||||
CARTRIDGE_5200_EE_16 = 6,
|
||||
CARTRIDGE_5200_40 = 7,
|
||||
CARTRIDGE_WILL_64 = 8,
|
||||
CARTRIDGE_EXP_64 = 9,
|
||||
CARTRIDGE_DIAMOND_64 = 10,
|
||||
CARTRIDGE_SDX_64 = 11,
|
||||
CARTRIDGE_XEGS_32 = 12,
|
||||
CARTRIDGE_XEGS_07_64 = 13,
|
||||
CARTRIDGE_XEGS_128 = 14,
|
||||
CARTRIDGE_OSS_M091_16 = 15,
|
||||
CARTRIDGE_5200_NS_16 = 16,
|
||||
CARTRIDGE_ATRAX_128 = 17,
|
||||
CARTRIDGE_BBSB_40 = 18,
|
||||
CARTRIDGE_5200_8 = 19,
|
||||
CARTRIDGE_5200_4 = 20,
|
||||
CARTRIDGE_RIGHT_8 = 21,
|
||||
CARTRIDGE_WILL_32 = 22,
|
||||
CARTRIDGE_XEGS_256 = 23,
|
||||
CARTRIDGE_XEGS_512 = 24,
|
||||
CARTRIDGE_XEGS_1024 = 25,
|
||||
CARTRIDGE_MEGA_16 = 26,
|
||||
CARTRIDGE_MEGA_32 = 27,
|
||||
CARTRIDGE_MEGA_64 = 28,
|
||||
CARTRIDGE_MEGA_128 = 29,
|
||||
CARTRIDGE_MEGA_256 = 30,
|
||||
CARTRIDGE_MEGA_512 = 31,
|
||||
CARTRIDGE_MEGA_1024 = 32,
|
||||
CARTRIDGE_SWXEGS_32 = 33,
|
||||
CARTRIDGE_SWXEGS_64 = 34,
|
||||
CARTRIDGE_SWXEGS_128 = 35,
|
||||
CARTRIDGE_SWXEGS_256 = 36,
|
||||
CARTRIDGE_SWXEGS_512 = 37,
|
||||
CARTRIDGE_SWXEGS_1024 = 38,
|
||||
CARTRIDGE_PHOENIX_8 = 39,
|
||||
CARTRIDGE_BLIZZARD_16 = 40,
|
||||
CARTRIDGE_ATMAX_128 = 41,
|
||||
CARTRIDGE_ATMAX_1024 = 42,
|
||||
CARTRIDGE_SDX_128 = 43,
|
||||
CARTRIDGE_OSS_8 = 44,
|
||||
CARTRIDGE_OSS_043M_16 = 45,
|
||||
CARTRIDGE_BLIZZARD_4 = 46,
|
||||
CARTRIDGE_AST_32 = 47,
|
||||
CARTRIDGE_ATRAX_SDX_64 = 48,
|
||||
CARTRIDGE_ATRAX_SDX_128 = 49,
|
||||
CARTRIDGE_TURBOSOFT_64 = 50,
|
||||
CARTRIDGE_TURBOSOFT_128 = 51,
|
||||
CARTRIDGE_ULTRACART_32 = 52,
|
||||
CARTRIDGE_LOW_BANK_8 = 53,
|
||||
CARTRIDGE_SIC_128 = 54,
|
||||
CARTRIDGE_SIC_256 = 55,
|
||||
CARTRIDGE_SIC_512 = 56,
|
||||
CARTRIDGE_STD_2 = 57,
|
||||
CARTRIDGE_STD_4 = 58,
|
||||
CARTRIDGE_RIGHT_4 = 59,
|
||||
CARTRIDGE_BLIZZARD_32 = 60,
|
||||
CARTRIDGE_MEGAMAX_2048 = 61,
|
||||
CARTRIDGE_THECART_128M = 62,
|
||||
CARTRIDGE_MEGA_4096 = 63,
|
||||
CARTRIDGE_MEGA_2048 = 64,
|
||||
CARTRIDGE_THECART_32M = 65,
|
||||
CARTRIDGE_THECART_64M = 66,
|
||||
CARTRIDGE_XEGS_8F_64 = 67,
|
||||
CARTRIDGE_LAST_SUPPORTED = 67
|
||||
};
|
||||
|
||||
#define CARTRIDGE_MAX_SIZE (128 * 1024 * 1024)
|
||||
extern int const CARTRIDGE_kb[CARTRIDGE_LAST_SUPPORTED + 1];
|
||||
|
||||
#define CARTRIDGE_STD_8_DESC "Standard 8 KB cartridge"
|
||||
#define CARTRIDGE_STD_16_DESC "Standard 16 KB cartridge"
|
||||
#define CARTRIDGE_OSS_034M_16_DESC "OSS two chip 16 KB cartridge (034M)"
|
||||
#define CARTRIDGE_5200_32_DESC "Standard 32 KB 5200 cartridge"
|
||||
#define CARTRIDGE_DB_32_DESC "DB 32 KB cartridge"
|
||||
#define CARTRIDGE_5200_EE_16_DESC "Two chip 16 KB 5200 cartridge"
|
||||
#define CARTRIDGE_5200_40_DESC "Bounty Bob 40 KB 5200 cartridge"
|
||||
#define CARTRIDGE_WILL_64_DESC "64 KB Williams cartridge"
|
||||
#define CARTRIDGE_EXP_64_DESC "Express 64 KB cartridge"
|
||||
#define CARTRIDGE_DIAMOND_64_DESC "Diamond 64 KB cartridge"
|
||||
#define CARTRIDGE_SDX_64_DESC "SpartaDOS X 64 KB cartridge"
|
||||
#define CARTRIDGE_XEGS_32_DESC "XEGS 32 KB cartridge"
|
||||
#define CARTRIDGE_XEGS_07_64_DESC "XEGS 64 KB cartridge (banks 0-7)"
|
||||
#define CARTRIDGE_XEGS_128_DESC "XEGS 128 KB cartridge"
|
||||
#define CARTRIDGE_OSS_M091_16_DESC "OSS one chip 16 KB cartridge"
|
||||
#define CARTRIDGE_5200_NS_16_DESC "One chip 16 KB 5200 cartridge"
|
||||
#define CARTRIDGE_ATRAX_128_DESC "Atrax 128 KB cartridge"
|
||||
#define CARTRIDGE_BBSB_40_DESC "Bounty Bob 40 KB cartridge"
|
||||
#define CARTRIDGE_5200_8_DESC "Standard 8 KB 5200 cartridge"
|
||||
#define CARTRIDGE_5200_4_DESC "Standard 4 KB 5200 cartridge"
|
||||
#define CARTRIDGE_RIGHT_8_DESC "Right slot 8 KB cartridge"
|
||||
#define CARTRIDGE_WILL_32_DESC "32 KB Williams cartridge"
|
||||
#define CARTRIDGE_XEGS_256_DESC "XEGS 256 KB cartridge"
|
||||
#define CARTRIDGE_XEGS_512_DESC "XEGS 512 KB cartridge"
|
||||
#define CARTRIDGE_XEGS_1024_DESC "XEGS 1 MB cartridge"
|
||||
#define CARTRIDGE_MEGA_16_DESC "MegaCart 16 KB cartridge"
|
||||
#define CARTRIDGE_MEGA_32_DESC "MegaCart 32 KB cartridge"
|
||||
#define CARTRIDGE_MEGA_64_DESC "MegaCart 64 KB cartridge"
|
||||
#define CARTRIDGE_MEGA_128_DESC "MegaCart 128 KB cartridge"
|
||||
#define CARTRIDGE_MEGA_256_DESC "MegaCart 256 KB cartridge"
|
||||
#define CARTRIDGE_MEGA_512_DESC "MegaCart 512 KB cartridge"
|
||||
#define CARTRIDGE_MEGA_1024_DESC "MegaCart 1 MB cartridge"
|
||||
#define CARTRIDGE_SWXEGS_32_DESC "Switchable XEGS 32 KB cartridge"
|
||||
#define CARTRIDGE_SWXEGS_64_DESC "Switchable XEGS 64 KB cartridge"
|
||||
#define CARTRIDGE_SWXEGS_128_DESC "Switchable XEGS 128 KB cartridge"
|
||||
#define CARTRIDGE_SWXEGS_256_DESC "Switchable XEGS 256 KB cartridge"
|
||||
#define CARTRIDGE_SWXEGS_512_DESC "Switchable XEGS 512 KB cartridge"
|
||||
#define CARTRIDGE_SWXEGS_1024_DESC "Switchable XEGS 1 MB cartridge"
|
||||
#define CARTRIDGE_PHOENIX_8_DESC "Phoenix 8 KB cartridge"
|
||||
#define CARTRIDGE_BLIZZARD_16_DESC "Blizzard 16 KB cartridge"
|
||||
#define CARTRIDGE_ATMAX_128_DESC "Atarimax 128 KB Flash cartridge"
|
||||
#define CARTRIDGE_ATMAX_1024_DESC "Atarimax 1 MB Flash cartridge"
|
||||
#define CARTRIDGE_SDX_128_DESC "SpartaDOS X 128 KB cartridge"
|
||||
#define CARTRIDGE_OSS_8_DESC "OSS 8 KB cartridge"
|
||||
#define CARTRIDGE_OSS_043M_16_DESC "OSS two chip 16 KB cartridge (043M)"
|
||||
#define CARTRIDGE_BLIZZARD_4_DESC "Blizzard 4 KB cartridge"
|
||||
#define CARTRIDGE_AST_32_DESC "AST 32 KB cartridge"
|
||||
#define CARTRIDGE_ATRAX_SDX_64_DESC "Atrax SDX 64 KB cartridge"
|
||||
#define CARTRIDGE_ATRAX_SDX_128_DESC "Atrax SDX 128 KB cartridge"
|
||||
#define CARTRIDGE_TURBOSOFT_64_DESC "Turbosoft 64 KB cartridge"
|
||||
#define CARTRIDGE_TURBOSOFT_128_DESC "Turbosoft 128 KB cartridge"
|
||||
#define CARTRIDGE_ULTRACART_32_DESC "Ultracart 32 KB cartridge"
|
||||
#define CARTRIDGE_LOW_BANK_8_DESC "Low bank 8 KB cartridge"
|
||||
#define CARTRIDGE_SIC_128_DESC "SIC! 128 KB cartridge"
|
||||
#define CARTRIDGE_SIC_256_DESC "SIC! 256 KB cartridge"
|
||||
#define CARTRIDGE_SIC_512_DESC "SIC! 512 KB cartridge"
|
||||
#define CARTRIDGE_STD_2_DESC "Standard 2 KB cartridge"
|
||||
#define CARTRIDGE_STD_4_DESC "Standard 4 KB cartridge"
|
||||
#define CARTRIDGE_RIGHT_4_DESC "Right slot 4 KB cartridge"
|
||||
#define CARTRIDGE_BLIZZARD_32_DESC "Blizzard 32 KB cartridge"
|
||||
#define CARTRIDGE_MEGAMAX_2048_DESC "MegaMax 2 MB cartridge"
|
||||
#define CARTRIDGE_THECART_128M_DESC "The!Cart 128 MB cartridge"
|
||||
#define CARTRIDGE_MEGA_4096_DESC "Flash MegaCart 4 MB cartridge"
|
||||
#define CARTRIDGE_MEGA_2048_DESC "MegaCart 2 MB cartridge"
|
||||
#define CARTRIDGE_THECART_32M_DESC "The!Cart 32 MB cartridge"
|
||||
#define CARTRIDGE_THECART_64M_DESC "The!Cart 64 MB cartridge"
|
||||
#define CARTRIDGE_XEGS_8F_64_DESC "XEGS 64 KB cartridge (banks 8-15)"
|
||||
|
||||
/* Indicates whether the emulator should automatically reboot (coldstart)
|
||||
after inserting/removing a cartridge. (Doesn't affect the piggyback
|
||||
cartridge - in this case system will never autoreboot.) */
|
||||
extern int CARTRIDGE_autoreboot;
|
||||
|
||||
typedef struct CARTRIDGE_image_t {
|
||||
int type;
|
||||
int state; /* Cartridge's state, such as selected bank or switch on/off. */
|
||||
int size; /* Size of the image, in kilobytes */
|
||||
UBYTE *image;
|
||||
char filename[FILENAME_MAX];
|
||||
} CARTRIDGE_image_t;
|
||||
|
||||
extern CARTRIDGE_image_t CARTRIDGE_main;
|
||||
extern CARTRIDGE_image_t CARTRIDGE_piggyback;
|
||||
|
||||
int CARTRIDGE_Checksum(const UBYTE *image, int nbytes);
|
||||
|
||||
int CARTRIDGE_ReadConfig(char *string, char *ptr);
|
||||
void CARTRIDGE_WriteConfig(FILE *fp);
|
||||
int CARTRIDGE_Initialise(int *argc, char *argv[]);
|
||||
void CARTRIDGE_Exit(void);
|
||||
|
||||
#define CARTRIDGE_CANT_OPEN -1 /* Can't open cartridge image file */
|
||||
#define CARTRIDGE_BAD_FORMAT -2 /* Unknown cartridge format */
|
||||
#define CARTRIDGE_BAD_CHECKSUM -3 /* Warning: bad CART checksum */
|
||||
/* Inserts the left cartrifge. */
|
||||
int CARTRIDGE_Insert(const char *filename);
|
||||
/* Inserts the left cartridge and reboots the system if needed. */
|
||||
int CARTRIDGE_InsertAutoReboot(const char *filename);
|
||||
/* Inserts the piggyback cartridge. */
|
||||
int CARTRIDGE_Insert_Second(const char *filename);
|
||||
/* When the cartridge type is CARTRIDGE_UNKNOWN after a call to
|
||||
CARTRIDGE_Insert(), this function should be called to set the
|
||||
cartridge's type manually to a value chosen by user. */
|
||||
void CARTRIDGE_SetType(CARTRIDGE_image_t *cart, int type);
|
||||
/* Sets type of the cartridge and reboots the system if needed. */
|
||||
void CARTRIDGE_SetTypeAutoReboot(CARTRIDGE_image_t *cart, int type);
|
||||
|
||||
/* Removes the left cartridge. */
|
||||
void CARTRIDGE_Remove(void);
|
||||
/* Removes the left cartridge and reboots the system if needed. */
|
||||
void CARTRIDGE_RemoveAutoReboot(void);
|
||||
/* Removed the piggyback cartridge. */
|
||||
void CARTRIDGE_Remove_Second(void);
|
||||
|
||||
/* Called on system coldstart. Resets the states of mounted cartridges. */
|
||||
void CARTRIDGE_ColdStart(void);
|
||||
|
||||
UBYTE CARTRIDGE_GetByte(UWORD addr, int no_side_effects);
|
||||
void CARTRIDGE_PutByte(UWORD addr, UBYTE byte);
|
||||
void CARTRIDGE_BountyBob1(UWORD addr);
|
||||
void CARTRIDGE_BountyBob2(UWORD addr);
|
||||
void CARTRIDGE_StateSave(void);
|
||||
void CARTRIDGE_StateRead(UBYTE version);
|
||||
#ifdef PAGED_ATTRIB
|
||||
UBYTE CARTRIDGE_BountyBob1GetByte(UWORD addr, int no_side_effects);
|
||||
UBYTE CARTRIDGE_BountyBob2GetByte(UWORD addr, int no_side_effects);
|
||||
void CARTRIDGE_BountyBob1PutByte(UWORD addr, UBYTE value);
|
||||
void CARTRIDGE_BountyBob2PutByte(UWORD addr, UBYTE value);
|
||||
#endif
|
||||
|
||||
#endif /* CARTRIDGE_H_ */
|
||||
Reference in New Issue
Block a user