// license:BSD-3-Clause
// copyright-holders:Curt Coder
/*********************************************************************
cbm_crt.h
Commodore C64 cartridge images
*********************************************************************/
#ifndef MAME_FORMATS_CBM_CRT_H
#define MAME_FORMATS_CBM_CRT_H
#pragma once
#include "formats/imageutl.h"
//**************************************************************************
// MACROS/CONSTANTS
//**************************************************************************
// C64 cartridge types
enum
{
CRT_C64_STANDARD = 0,
CRT_C64_ACTION_REPLAY,
CRT_C64_KCS_POWER,
CRT_C64_FINAL_III,
CRT_C64_SIMONS_BASIC,
CRT_C64_OCEAN,
CRT_C64_EXPERT,
CRT_C64_FUNPLAY,
CRT_C64_SUPER_GAMES,
CRT_C64_ATOMIC_POWER,
CRT_C64_EPYX_FASTLOAD,
CRT_C64_WESTERMANN,
CRT_C64_REX,
CRT_C64_FINAL_I,
CRT_C64_MAGIC_FORMEL,
CRT_C64_GS,
CRT_C64_WARPSPEED,
CRT_C64_DINAMIC,
CRT_C64_ZAXXON,
CRT_C64_MAGIC_DESK,
CRT_C64_SUPER_SNAPSHOT_V5,
CRT_C64_COMAL80,
CRT_C64_STRUCTURED_BASIC,
CRT_C64_ROSS,
CRT_C64_DELA_EP64,
CRT_C64_DELA_EP7x8,
CRT_C64_DELA_EP256,
CRT_C64_REX_EP256,
CRT_C64_MIKRO_ASSEMBLER,
CRT_C64_FINAL_PLUS,
CRT_C64_ACTION_REPLAY4,
CRT_C64_STARDOS,
CRT_C64_EASYFLASH,
CRT_C64_EASYFLASH_XBANK,
CRT_C64_CAPTURE,
CRT_C64_ACTION_REPLAY3,
CRT_C64_RETRO_REPLAY,
CRT_C64_MMC64,
CRT_C64_MMC_REPLAY,
CRT_C64_IDE64,
CRT_C64_SUPER_SNAPSHOT,
CRT_C64_IEEE488,
CRT_C64_GAME_KILLER,
CRT_C64_P64,
CRT_C64_EXOS,
CRT_C64_FREEZE_FRAME,
CRT_C64_FREEZE_MACHINE,
CRT_C64_SNAPSHOT64,
CRT_C64_SUPER_EXPLODE_V5,
CRT_C64_MAGIC_VOICE,
CRT_C64_ACTION_REPLAY2,
CRT_C64_MACH5,
CRT_C64_DIASHOW_MAKER,
CRT_C64_PAGEFOX,
CRT_C64_KINGSOFT,
CRT_C64_SILVERROCK,
_CRT_C64_COUNT
};
// chip types
enum
{
CRT_CHIP_TYPE_ROM = 0,
CRT_CHIP_TYPE_RAM,
CRT_CHIP_TYPE_FLASH_ROM
};
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
struct cbm_crt_header
{
uint8_t signature[16];
uint8_t header_length[4];
uint8_t version[2];
uint8_t hardware[2];
uint8_t exrom;
uint8_t game;
uint8_t reserved[6];
uint8_t name[32];
};
struct cbm_crt_chip
{
uint8_t signature[4];
uint8_t packet_length[4];
uint8_t chip_type[2];
uint8_t bank[2];
uint8_t start_address[2];
uint8_t image_size[2];
};
//**************************************************************************
// FUNCTION PROTOTYPES
//**************************************************************************
std::string cbm_crt_get_card(util::core_file &file);
bool cbm_crt_read_header(util::core_file &file, size_t *roml_size, size_t *romh_size, int *exrom, int *game);
bool cbm_crt_read_data(util::core_file &file, uint8_t *roml, uint8_t *romh);
#endif // MAME_FORMATS_CBM_CRT_H