fbneo/src/burner/burner.h

302 lines
8.7 KiB
C

// FinalBurn Neo - Emulator for MC68000/Z80 based arcade games
// Refer to the "license.txt" file for more info
#pragma once
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <assert.h>
#include <ctype.h>
#include "tchar.h"
// Macro to make quoted strings
#define MAKE_STRING_2(s) #s
#define MAKE_STRING(s) MAKE_STRING_2(s)
#define BZIP_MAX (20) // Maximum zip files to search through
#if defined (BUILD_QT)
#define DIRS_MAX (4) // Maximum number of directories to search
#else
#define DIRS_MAX (20) // Maximum number of directories to search
#endif
#include "title.h"
#include "burn.h"
#include "joyprocess.h"
// ---------------------------------------------------------------------------
// OS dependent functionality
typedef struct tagIMAGE {
unsigned int width;
unsigned int height;
unsigned int rowbytes;
unsigned int imgbytes;
unsigned char** rowptr;
unsigned char* bmpbits;
unsigned int flags;
} IMAGE;
#if defined (BUILD_WIN32)
#include "burner_win32.h"
#elif defined (BUILD_MACOS)
#include "burner_macos.h"
#elif defined (BUILD_SDL) || defined (BUILD_SDL2)
#include "burner_sdl.h"
#elif defined (_XBOX) && !defined(__LIBRETRO__)
#include "burner_xbox.h"
#elif defined(__LIBRETRO__)
#include "burner_libretro.h"
#elif defined(BUILD_QT)
#include "burner_qt.h"
#endif
// ---------------------------------------------------------------------------
// OS independent functionality
#ifndef __LIBRETRO__
#include "interface.h"
#endif
#if defined (INCLUDE_LUA_SUPPORT) || defined (BUILD_WIN32)
#include "luaengine.h"
#endif
#define IMG_FREE (1 << 0)
// Macros for parsing text
#define SKIP_WS(s) while (_istspace(*s)) { s++; } // Skip whitespace
#define FIND_WS(s) while (*s && !_istspace(*s)) { s++; } // Find whitespace
#define FIND_QT(s) while (*s && *s != _T('\"')) { s++; } // Find quote
// burn/burn.cpp
extern INT32 bRewindEnabled;
extern INT64 nRewindMemory;
// image.cpp
extern int bPngImageOrientation;
void img_free(IMAGE* img);
INT32 img_alloc(IMAGE* img);
bool PNGIsImage(FILE* fp);
bool PNGIsImageBuffer(unsigned char* buffer, int bufferLength);
INT32 PNGLoad(IMAGE* img, FILE* fp, INT32 nPreset);
INT32 PNGLoadBuffer(IMAGE* img, unsigned char* buffer, int bufferLength, INT32 nPreset);
INT32 PNGGetInfo(IMAGE* img, FILE *fp);
INT32 PNGGetInfoBuffer(IMAGE* img, unsigned char* buffer, int bufferLength);
// gami.cpp
extern struct GameInp* GameInp;
extern UINT32 nGameInpCount;
extern UINT32 nMacroCount;
extern UINT32 nMaxMacro;
extern INT32 nAnalogSpeed;
extern INT32 nFireButtons;
extern INT32 nSubDrvSelected;
extern bool bStreetFighterLayout;
extern bool bLeftAltkeyMapped;
extern bool bResetDrv;
INT32 GameInpInit();
INT32 GameInpExit();
TCHAR* InputCodeDesc(INT32 c);
TCHAR* InpToDesc(struct GameInp* pgi);
TCHAR* InpMacroToDesc(struct GameInp* pgi);
TCHAR* InputNumToName(UINT32 i);
TCHAR* InpToString(struct GameInp* pgi);
TCHAR* InpMacroToString(struct GameInp* pgi);
#ifndef __LIBRETRO__
void GameInpCheckLeftAlt();
void GameInpCheckMouse();
#endif
INT32 GameInpBlank(INT32 bDipSwitch);
INT32 GameInputAutoIni(INT32 nPlayer, TCHAR* lpszFile, bool bOverWrite);
INT32 ConfigGameLoadHardwareDefaults();
INT32 GameInpDefault();
INT32 GameInpWrite(FILE* h);
INT32 GameInpRead(TCHAR* szVal, bool bOverWrite);
INT32 GameInpMacroRead(TCHAR* szVal, bool bOverWrite);
INT32 GameMacroAutofireRead(TCHAR* szVal, bool bOverWrite);
INT32 GameInpCustomRead(TCHAR* szVal, bool bOverWrite);
struct tIniStruct {
TCHAR system[80];
TCHAR ini[MAX_PATH];
INT32 hw[8];
char gameinfotoken[80];
};
extern tIniStruct gamehw_cfg[];
UINT32 GameInputGetHWFlag();
void GetHistoryDatHardwareToken(char *to_string);
// inp_interface.cpp
extern INT32 nAutoFireRate;
// Player Default Controls
extern INT32 nPlayerDefaultControls[8];
extern TCHAR szPlayerDefaultIni[5][MAX_PATH];
// mappable System Macros for the Input Dialogue
extern UINT8 macroSystemPause;
extern UINT8 macroSystemFFWD;
extern UINT8 macroSystemFrame;
extern UINT8 macroSystemSaveState;
extern UINT8 macroSystemLoadState;
extern UINT8 macroSystemNextState;
extern UINT8 macroSystemPreviousState;
extern UINT8 macroSystemUNDOState;
extern UINT8 macroSystemRewind;
extern UINT8 macroSystemRewindCancel;
extern UINT8 macroSystemSlowMo[5];
extern UINT8 macroSystemLuaHotkey1;
extern UINT8 macroSystemLuaHotkey2;
extern UINT8 macroSystemLuaHotkey3;
extern UINT8 macroSystemLuaHotkey4;
extern UINT8 macroSystemLuaHotkey5;
extern UINT8 macroSystemLuaHotkey6;
extern UINT8 macroSystemLuaHotkey7;
extern UINT8 macroSystemLuaHotkey8;
extern UINT8 macroSystemLuaHotkey9;
// scrn.cpp
extern void scrnSSUndo();
extern bool bHasFocus;
// cong.cpp
extern const INT32 nConfigMinVersion; // Minimum version of application for which input files are valid
extern bool bSaveInputs;
INT32 ConfigGameLoad(bool bOverWrite); // char* lpszName = NULL
INT32 ConfigGameSave(bool bSave);
// conc.cpp
INT32 ConfigCheatLoad();
// gamc.cpp
INT32 GamcMisc(struct GameInp* pgi, char* szi, INT32 nPlayer);
INT32 GamcAnalogKey(struct GameInp* pgi, char* szi, INT32 nPlayer, INT32 nSlide);
INT32 GamcAnalogJoy(struct GameInp* pgi, char* szi, INT32 nPlayer, INT32 nJoy, INT32 nSlide);
INT32 GamcPlayer(struct GameInp* pgi, char* szi, INT32 nPlayer, INT32 nDevice);
INT32 GamcPlayerHotRod(struct GameInp* pgi, char* szi, INT32 nPlayer, INT32 nFlags, INT32 nSlide);
// misc.cpp
#define QUOTE_MAX (128) // Maximum length of "quoted strings"
INT32 QuoteRead(TCHAR** ppszQuote, TCHAR** ppszEnd, TCHAR* pszSrc); // Read a quoted string from szSrc and poINT32 to the end
TCHAR* LabelCheck(TCHAR* s, TCHAR* pszLabel);
TCHAR* ExtractFilename(TCHAR* fullname);
TCHAR* DriverToName(UINT32 nDrv);
UINT32 NameToDriver(TCHAR* szName);
TCHAR *StrReplace(TCHAR *str, TCHAR find, TCHAR replace);
TCHAR *StrLower(TCHAR *str);
TCHAR *FileExt(TCHAR *str);
bool IsFileExt(TCHAR *str, TCHAR *ext);
extern INT32 bDoGamma;
extern INT32 bHardwareGammaOnly;
extern double nGamma;
INT32 SetBurnHighCol(INT32 nDepth);
char* GameDecoration(UINT32 nBurnDrv);
char* DecorateGameName(UINT32 nBurnDrv);
TCHAR* DecorateGenreInfo();
void ComputeGammaLUT();
// dat.cpp
#define DAT_ARCADE_ONLY 0
#define DAT_MEGADRIVE_ONLY 1
#define DAT_PCENGINE_ONLY 2
#define DAT_TG16_ONLY 3
#define DAT_SGX_ONLY 4
#define DAT_SG1000_ONLY 5
#define DAT_COLECO_ONLY 6
#define DAT_MASTERSYSTEM_ONLY 7
#define DAT_GAMEGEAR_ONLY 8
#define DAT_MSX_ONLY 9
#define DAT_SPECTRUM_ONLY 10
#define DAT_NEOGEO_ONLY 11
#define DAT_NES_ONLY 12
#define DAT_FDS_ONLY 13
#define DAT_SNES_ONLY 14
#define DAT_NGP_ONLY 15
#define DAT_CHANNELF_ONLY 16
INT32 write_datfile(INT32 bType, FILE* fDat);
INT32 create_datfile(TCHAR* szFilename, INT32 bType);
// sshot.cpp
INT32 MakeScreenShot(INT32 bType);
// state.cpp
INT32 BurnStateLoadEmbed(FILE* fp, INT32 nOffset, INT32 bAll, INT32 (*pLoadGame)());
INT32 BurnStateLoad(TCHAR* szName, INT32 bAll, INT32 (*pLoadGame)());
INT32 BurnStateSaveEmbed(FILE* fp, INT32 nOffset, INT32 bAll);
INT32 BurnStateSave(TCHAR* szName, INT32 bAll);
INT32 BurnStateUNDO(TCHAR* szName);
// statec.cpp
INT32 BurnStateCompress(UINT8** pDef, INT32* pnDefLen, INT32 bAll);
INT32 BurnStateDecompress(UINT8* Def, INT32 nDefLen, INT32 bAll);
// nvram.cpp
INT32 BurnNvramLoad(TCHAR* szName);
INT32 BurnNvramSave(TCHAR* szName);
// zipfn.cpp
struct ZipEntry { char* szName; UINT32 nLen; UINT32 nCrc; };
INT32 ZipOpen(char* szZip);
INT32 ZipClose();
INT32 ZipGetList(struct ZipEntry** pList, INT32* pnListCount);
INT32 ZipLoadFile(UINT8* Dest, INT32 nLen, INT32* pnWrote, INT32 nEntry);
INT32 __cdecl ZipLoadOneFile(char* arcName, const char* fileName, void** Dest, INT32* pnWrote);
// romdata.cpp
extern TCHAR szRomdataName[MAX_PATH];
TCHAR* AdaptiveEncodingReads(const TCHAR* pszFileName);
// ips_manager.cpp
void IpsPatchInit();
void IpsPatchExit();
// bzip.cpp
#define BZIP_STATUS_OK (0)
#define BZIP_STATUS_BADDATA (1)
#define BZIP_STATUS_ERROR (2)
INT32 BzipOpen(bool);
INT32 BzipClose();
INT32 BzipInit();
INT32 BzipExit();
INT32 BzipStatus();
// support_paths.cpp
extern TCHAR szAppPreviewsPath[MAX_PATH];
extern TCHAR szAppTitlesPath[MAX_PATH];
extern TCHAR szAppCheatsPath[MAX_PATH];
extern TCHAR szAppIpsPath[MAX_PATH];
extern TCHAR szAppRomdataPath[MAX_PATH];
extern TCHAR szAppIconsPath[MAX_PATH];
extern TCHAR szAppSelectPath[MAX_PATH];
extern TCHAR szAppVersusPath[MAX_PATH];
extern TCHAR szAppHowtoPath[MAX_PATH];
extern TCHAR szAppScoresPath[MAX_PATH];
extern TCHAR szAppBossesPath[MAX_PATH];
extern TCHAR szAppGameoverPath[MAX_PATH];
extern TCHAR szAppFlyersPath[MAX_PATH];
extern TCHAR szAppMarqueesPath[MAX_PATH];
extern TCHAR szAppControlsPath[MAX_PATH];
extern TCHAR szAppCabinetsPath[MAX_PATH];
extern TCHAR szAppPCBsPath[MAX_PATH];
extern TCHAR szAppHistoryPath[MAX_PATH];