summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/imagedev/multcart.h
blob: 15697033e667fab5b95dad15a1e56f6686b9043a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*********************************************************************

    multcart.h

    Multi-cartridge handling code

*********************************************************************/

#ifndef __MULTCART_H__
#define __MULTCART_H__

#include "osdcore.h"


/***************************************************************************
    TYPE DEFINITIONS
***************************************************************************/

enum _multicart_load_flags
{
	MULTICART_FLAGS_DONT_LOAD_RESOURCES	= 0x00,
	MULTICART_FLAGS_LOAD_RESOURCES		= 0x01
};
typedef enum _multicart_load_flags multicart_load_flags;

enum _multicart_resource_type
{
	MULTICART_RESOURCE_TYPE_INVALID,
	MULTICART_RESOURCE_TYPE_ROM,
	MULTICART_RESOURCE_TYPE_RAM
};
typedef enum _multicart_resource_type multicart_resource_type;

typedef struct _multicart_resource multicart_resource;
struct _multicart_resource
{
	const char *				id;
	const char *				filename;
	multicart_resource *		next;
	multicart_resource_type		type;
	UINT32						length;
	void *						ptr;
};


typedef struct _multicart_socket multicart_socket;
struct _multicart_socket
{
	const char *				id;
	multicart_socket *			next;
	const multicart_resource *	resource;
	void *						ptr;
};


typedef struct _multicart_private multicart_private;

typedef struct _multicart_t multicart_t;
struct _multicart_t
{
	const multicart_resource *	resources;
	const multicart_socket *	sockets;
	const char *				pcb_type;
	const char *				gamedrv_name; /* need this to find the path to the nvram files */
	multicart_private *			data;
};


enum _multicart_open_error
{
	MCERR_NONE,
	MCERR_NOT_MULTICART,
	MCERR_CORRUPT,
	MCERR_OUT_OF_MEMORY,
	MCERR_XML_ERROR,
	MCERR_INVALID_FILE_REF,
	MCERR_ZIP_ERROR,
	MCERR_MISSING_RAM_LENGTH,
	MCERR_INVALID_RAM_SPEC,
	MCERR_UNKNOWN_RESOURCE_TYPE,
	MCERR_INVALID_RESOURCE_REF,
	MCERR_INVALID_FILE_FORMAT,
	MCERR_MISSING_LAYOUT,
	MCERR_NO_PCB_OR_RESOURCES
};
typedef enum _multicart_open_error multicart_open_error;

const char *multicart_error_text(multicart_open_error error);

/***************************************************************************
    PROTOTYPES
***************************************************************************/

/* opens a multicart */
multicart_open_error multicart_open(const char *filename, const char *drvname, multicart_load_flags load_flags, multicart_t **cart);

/* closes a multicart */
void multicart_close(multicart_t *cart);

#endif /* __MULTCART_H__ */