INL-retro-progdump/shared/old_shared_enums.h

139 lines
3.1 KiB
C

#ifndef _shared_enums_h
#define _shared_enums_h
//One concise place to list all enums used
//for setting cartridge and memory elements on the host
//which end up getting communicated between device and host
//used to denote when any cartridge element is not known
#define UNKNOWN 0xFF
//console options
#define NES_CART 'N'
#define FC_CART 'F'
#define SNES_CART 'S'
#define BKWD_CART 'B'
//NES mappers
#define NROM 0
#define MMC1 1
#define CNROM 2
#define UxROM 3
#define MMC3 4
#define MMC5 5
#define AxROM 7
#define MMC2 9
#define MMC4 10
#define CDREAMS 11
#define A53 28
#define UNROM512 30
#define EZNSF 31
#define BxROM 34
#define RAMBO 64
#define H3001 65 //IREM mapper
#define GxROM 66
#define SUN3 67
#define SUN4 68
#define FME7 69 //SUNSOFT-5 with synth
#define HDIVER 78
#define DxROM 205
// UNKNOWN 255 don't assign to something meaningful
enum mirroring {
MIR_1SCNA = 0x10, //SCNA
MIR_1SCNB = 0x11, //SCNB
MIR_VERT = 0x12, //VERT
MIR_HORIZ = 0x13, //HORIZ
MIR_ANROM,
MIR_MMC1,
MIR_MMC3,
MIR_FME7
};
enum operations {
READ = 10,
WRITE,
CHECK
};
//SST 39SF0x0 manf/prod IDs
#define SST_MANF_ID 0xBF
#define SST_PROD_128 0xB5
#define SST_PROD_256 0xB6
#define SST_PROD_512 0xB7
//SRAM manf/prod ID
#define SRAM 0xAA
//MASK ROM read only
#define MASKROM 0xDD
enum buff_mem_type {
PRGROM = 10,
CHRROM,
PRGRAM,
SNESROM,
SNESRAM
};
//buffer/operation status values
#define EMPTY 0x00
#define RESET 0x01
#define PROBLEM 0x10
#define PREPARING 0x20
#define USB_UNLOADING 0x80
#define USB_LOADING 0x90
#define USB_FULL 0x98
#define CHECKING 0xC0
#define DUMPING 0xD0
#define STARTDUMP 0xD2
#define DUMPED 0xD8
#define ERASING 0xE0
#define FLASHING 0xF0
#define STARTFLASH 0xF2
#define FLASHED 0xF4
#define FLASH_WAIT 0xF8
#define STOPPED 0xFE
#define UNALLOC 0xFF
enum addr_high_direct_mask {
//actual value is part mapper dependent and part flash dependent
//mapper controlled address bits dictate where split is
//32KB banking A14-0 NES ctl, A15+ mapper ctl "bank" NROM, BNROM, ANROM
//addrH_dmask = 0b0111 1111 directly addressable addrH bits
MSK_32KB = 0x7F,
//16KB banking A13-0 NES ctl, A14+ mapper ctl "bank" UxROM, MMC1
//addrH_dmask = 0b0011 1111
MSK_16KB = 0x3F,
// 8KB banking A12-0 NES ctl, A13+ mapper ctl "bank" MMC3, FME7, CHR discrete banking
//addrH_dmask = 0b0001 1111
MSK_8KB = 0x1F,
// 4KB banking A11-0 NES ctl, A12+ mapper ctl "bank" ezNSF MMC1 CHR
//addrH_dmask = 0b0000 1111
MSK_4KB = 0x0F,
// 2KB banking A10-0 NES ctl, A11+ mapper ctl "bank" MMC3 CHR
//addrH_dmask = 0b0000 0111
MSK_2KB = 0x07,
// 1KB banking A9-0 NES ctl, A10+ mapper ctl "bank" FME7 CHR
//addrH_dmask = 0b0000 0011
MSK_1KB = 0x03
};
enum page2bankshiftright {
//A15->A8 = 7 shifts (equal to number of set bits in addrH_mask
PG2B_32KB = 7,
//A14->A8 = 6 shifts
PG2B_16KB = 6,
//A13->A8 = 5 shifts
PG2B_8KB = 5,
//A12->A8 = 4 shifts
PG2B_4KB = 4,
//A11->A8 = 3 shifts
PG2B_2KB = 3,
//A10->A8 = 2 shifts
PG2B_1KB = 2
};
#endif