Better organization for Frontend.cpp

This commit is contained in:
_AG 2019-06-25 14:25:39 +02:00
parent 628b9a8b54
commit 28509e216f
8 changed files with 772 additions and 668 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2,44 +2,45 @@
#include "Sprite2d.h" #include "Sprite2d.h"
#define HEADER_POS_X 35.0f #define MENUHEADER_POS_X 35.0f
#define HEADER_POS_Y 93.0f #define MENUHEADER_POS_Y 93.0f
#define HEADER_WIDTH 0.84f #define MENUHEADER_WIDTH 0.84f
#define HEADER_HEIGHT 1.6f #define MENUHEADER_HEIGHT 1.6f
#define ACTION_POS_X 20.0f #define MENUACTION_POS_X 20.0f
#define ACTION_POS_Y 37.5f #define MENUACTION_POS_Y 37.5f
#define ACTION_WIDTH 0.675f #define MENUACTION_WIDTH 0.675f
#define ACTION_HEIGHT 0.81f #define MENUACTION_HEIGHT 0.81f
#define COLUMN_POS_X HEADER_POS_X + 16.0f #define MENUCOLUMN_POS_X MENUHEADER_POS_X + 16.0f
#define COLUMN_MAX_Y 149.0f #define MENUCOLUMN_MAX_Y 149.0f
#define COLUMN_MID_Y 100.0f #define MENUCOLUMN_MID_Y 100.0f
#define COLUMN_MIN_Y 110.0f #define MENUCOLUMN_MIN_Y 110.0f
#define COLUMN_PAUSE_Y 25.0f #define MENUCOLUMN_PAUSE_Y 25.0f
#define COLUMN_START_Y 9.0f #define MENUCOLUMN_START_Y 9.0f
#define COLUMN_FEDS 139.0f #define MENUCOLUMN_FEDS 139.0f
#define COLUMN_SAVE_X 121.0f #define MENUCOLUMN_SAVE_X 121.0f
#define COLUMN_SAVE_Y 111.0f #define MENUCOLUMN_SAVE_Y 111.0f
#define COLUMN_SPACING_MAX 24.0f #define MENUCOLUMN_SPACING_MAX 24.0f
#define COLUMN_SPACING_MIN 20.0f #define MENUCOLUMN_SPACING_MIN 20.0f
#define SELECT_BOX_MAX 20.5f #define MENUSELECT_BOX_MAX 20.5f
#define SELECT_BOX_MIN 17.0f #define MENUSELECT_BOX_MIN 17.0f
#define FE_RADIO_ICON_X 31.5f #define MENURADIO_ICON_X 31.5f
#define FE_RADIO_ICON_Y 29.5f #define MENURADIO_ICON_Y 29.5f
#define FE_RADIO_ICON_W 60.0f #define MENURADIO_ICON_W 60.0f
#define FE_RADIO_ICON_H 60.0f #define MENURADIO_ICON_H 60.0f
#define DROP_COLOR_A 150 #define MENUDROP_COLOR_A 150
#define DROP_COLOR_SIZE -1 #define MENUDROP_COLOR_SIZE -1
#define SLIDER_X 306.0f #define MENUSLIDER_X 306.0f
enum { enum eLanguages
{
LANGUAGE_AMERICAN, LANGUAGE_AMERICAN,
LANGUAGE_FRENCH, LANGUAGE_FRENCH,
LANGUAGE_GERMAN, LANGUAGE_GERMAN,
@ -47,7 +48,8 @@ enum {
LANGUAGE_SPANISH, LANGUAGE_SPANISH,
}; };
enum eFrontendSprites { enum eFrontendSprites
{
FE2_MAINPANEL_UL, FE2_MAINPANEL_UL,
FE2_MAINPANEL_UR, FE2_MAINPANEL_UR,
FE2_MAINPANEL_DL, FE2_MAINPANEL_DL,
@ -78,102 +80,110 @@ enum eFrontendSprites {
FE_RADIO9, FE_RADIO9,
}; };
enum eMenuSprites { enum eMenuSprites
MENU_CONNECTION, {
MENU_FINDGAME, MENUSPRITE_CONNECTION,
MENU_HOSTGAME, MENUSPRITE_FINDGAME,
MENU_MAINMENU, MENUSPRITE_HOSTGAME,
MENU_PLAYERSET, MENUSPRITE_MAINMENU,
MENU_SINGLEPLAYER, MENUSPRITE_PLAYERSET,
MENU_MULTIPLAYER, MENUSPRITE_SINGLEPLAYER,
MENU_DMALOGO, MENUSPRITE_MULTIPLAYER,
MENU_GTALOGO, MENUSPRITE_DMALOGO,
MENU_RSTARLOGO, MENUSPRITE_GTALOGO,
MENU_GAMESPY, MENUSPRITE_RSTARLOGO,
MENU_MOUSE, MENUSPRITE_GAMESPY,
MENU_MOUSET, MENUSPRITE_MOUSE,
MENU_MP3LOGO, MENUSPRITE_MOUSET,
MENU_DOWNOFF, MENUSPRITE_MP3LOGO,
MENU_DOWNON, MENUSPRITE_DOWNOFF,
MENU_UPOFF, MENUSPRITE_DOWNON,
MENU_UPON, MENUSPRITE_UPOFF,
MENU_GTA3LOGO, MENUSPRITE_UPON,
MENUSPRITE_GTA3LOGO,
}; };
enum eMenuActions { enum eSaveSlot
MENU_ACTION_SAVE_1 = 1, {
MENU_ACTION_SAVE_2, SAVESLOT_NONE,
MENU_ACTION_SAVE_3, SAVESLOT_1,
MENU_ACTION_SAVE_4, SAVESLOT_2,
MENU_ACTION_SAVE_5, SAVESLOT_3,
MENU_ACTION_SAVE_6, SAVESLOT_4,
MENU_ACTION_SAVE_7, SAVESLOT_5,
MENU_ACTION_SAVE_8, SAVESLOT_6,
SAVESLOT_7,
SAVESLOT_8,
SAVESLOT_LABEL = 36
}; };
enum eMenuScreen { enum eMenuScreen
MENU_NONE = 0, {
MENU_STATS = 1, MENUPAGE_DISABLED = -1,
MENU_NEW_GAME = 2, MENUPAGE_NONE = 0,
MENU_BRIEFS = 3, MENUPAGE_STATS = 1,
MENU_CONTROLLER_SETTINGS = 4, MENUPAGE_NEW_GAME = 2,
MENU_SOUND_SETTINGS = 5, MENUPAGE_BRIEFS = 3,
MENU_GRAPHICS_SETTINGS = 6, MENUPAGE_CONTROLLER_SETTINGS = 4,
MENU_LANGUAGE_SETTINGS = 7, MENUPAGE_SOUND_SETTINGS = 5,
MENU_CHOOSE_LOAD_SLOT = 8, MENUPAGE_GRAPHICS_SETTINGS = 6,
MENU_CHOOSE_DELETE_SLOT = 9, MENUPAGE_LANGUAGE_SETTINGS = 7,
MENU_NEW_GAME_RELOAD = 10, MENUPAGE_CHOOSE_LOAD_SLOT = 8,
MENU_LOAD_SLOT_CONFIRM = 11, MENUPAGE_CHOOSE_DELETE_SLOT = 9,
MENU_DELETE_SLOT_CONFIRM = 12, MENUPAGE_NEW_GAME_RELOAD = 10,
MENU_13 = 13, MENUPAGE_LOAD_SLOT_CONFIRM = 11,
MENU_LOADING_IN_PROGRESS = 14, MENUPAGE_DELETE_SLOT_CONFIRM = 12,
MENU_DELETING_IN_PROGRESS = 15, MENUPAGE_13 = 13,
MENU_16 = 16, MENUPAGE_LOADING_IN_PROGRESS = 14,
MENU_DELETE_FAILED = 17, MENUPAGE_DELETING_IN_PROGRESS = 15,
MENU_DEBUG_MENU = 18, MENUPAGE_16 = 16,
MENU_MEMORY_CARD_1 = 19, MENUPAGE_DELETE_FAILED = 17,
MENU_MEMORY_CARD_2 = 20, MENUPAGE_DEBUG_MENU = 18,
MENU_MULTIPLAYER_MAIN = 21, MENUPAGE_MEMORY_CARD_1 = 19,
MENU_SAVE_FAILED_1 = 22, MENUPAGE_MEMORY_CARD_2 = 20,
MENU_SAVE_FAILED_2 = 23, MENUPAGE_MULTIPLAYER_MAIN = 21,
MENU_SAVE = 24, MENUPAGE_SAVE_FAILED_1 = 22,
MENU_NO_MEMORY_CARD = 25, MENUPAGE_SAVE_FAILED_2 = 23,
MENU_CHOOSE_SAVE_SLOT = 26, MENUPAGE_SAVE = 24,
MENU_SAVE_OVERWRITE_CONFIRM = 27, MENUPAGE_NO_MEMORY_CARD = 25,
MENU_MULTIPLAYER_MAP = 28, MENUPAGE_CHOOSE_SAVE_SLOT = 26,
MENU_MULTIPLAYER_CONNECTION = 29, MENUPAGE_SAVE_OVERWRITE_CONFIRM = 27,
MENU_MULTIPLAYER_FIND_GAME = 30, MENUPAGE_MULTIPLAYER_MAP = 28,
MENU_MULTIPLAYER_MODE = 31, MENUPAGE_MULTIPLAYER_CONNECTION = 29,
MENU_MULTIPLAYER_CREATE = 32, MENUPAGE_MULTIPLAYER_FIND_GAME = 30,
MENU_MULTIPLAYER_START = 33, MENUPAGE_MULTIPLAYER_MODE = 31,
MENU_SKIN_SELECT_OLD = 34, MENUPAGE_MULTIPLAYER_CREATE = 32,
MENU_CONTROLLER_PC = 35, MENUPAGE_MULTIPLAYER_START = 33,
MENU_CONTROLLER_PC_OLD1 = 36, MENUPAGE_SKIN_SELECT_OLD = 34,
MENU_CONTROLLER_PC_OLD2 = 37, MENUPAGE_CONTROLLER_PC = 35,
MENU_CONTROLLER_PC_OLD3 = 38, MENUPAGE_CONTROLLER_PC_OLD1 = 36,
MENU_CONTROLLER_PC_OLD4 = 39, MENUPAGE_CONTROLLER_PC_OLD2 = 37,
MENU_CONTROLLER_DEBUG = 40, MENUPAGE_CONTROLLER_PC_OLD3 = 38,
MENU_OPTIONS = 41, MENUPAGE_CONTROLLER_PC_OLD4 = 39,
MENU_EXIT = 42, MENUPAGE_CONTROLLER_DEBUG = 40,
MENU_SAVING_IN_PROGRESS = 43, MENUPAGE_OPTIONS = 41,
MENU_SAVE_SUCCESSFUL = 44, MENUPAGE_EXIT = 42,
MENU_DELETING = 45, MENUPAGE_SAVING_IN_PROGRESS = 43,
MENU_DELETE_SUCCESS = 46, MENUPAGE_SAVE_SUCCESSFUL = 44,
MENU_SAVE_FAILED = 47, MENUPAGE_DELETING = 45,
MENU_LOAD_FAILED = 48, MENUPAGE_DELETE_SUCCESS = 46,
MENU_LOAD_FAILED_2 = 49, MENUPAGE_SAVE_FAILED = 47,
MENU_FILTER_GAME = 50, MENUPAGE_LOAD_FAILED = 48,
MENU_START_MENU = 51, MENUPAGE_LOAD_FAILED_2 = 49,
MENU_PAUSE_MENU = 52, MENUPAGE_FILTER_GAME = 50,
MENU_CHOOSE_MODE = 53, MENUPAGE_START_MENU = 51,
MENU_SKIN_SELECT = 54, MENUPAGE_PAUSE_MENU = 52,
MENU_KEYBOARD_CONTROLS = 55, MENUPAGE_CHOOSE_MODE = 53,
MENU_MOUSE_CONTROLS = 56, MENUPAGE_SKIN_SELECT = 54,
MENU_57 = 57, MENUPAGE_KEYBOARD_CONTROLS = 55,
MENU_58 = 58, MENUPAGE_MOUSE_CONTROLS = 56,
MENUPAGE_57 = 57,
MENUPAGE_58 = 58,
MENUPAGES
}; };
enum eMenuAction { enum eMenuAction
{
MENUACTION_NOTHING, MENUACTION_NOTHING,
MENUACTION_LABEL, MENUACTION_LABEL,
MENUACTION_CHANGEMENU, MENUACTION_CHANGEMENU,
@ -194,7 +204,7 @@ enum eMenuAction {
MENUACTION_LANG_ENG, MENUACTION_LANG_ENG,
MENUACTION_LANG_FRE, MENUACTION_LANG_FRE,
MENUACTION_LANG_GER, MENUACTION_LANG_GER,
MENUACTION_LANG_IT, MENUACTION_LANG_ITA,
MENUACTION_LANG_SPA, MENUACTION_LANG_SPA,
MENUACTION_UPDATESAVE, MENUACTION_UPDATESAVE,
MENUACTION_CHECKSAVE, MENUACTION_CHECKSAVE,
@ -287,11 +297,43 @@ enum eMenuAction {
MENUACTION_UNK110, MENUACTION_UNK110,
}; };
enum eCheckHover { enum eCheckHover
{
ACTIVATE_OPTION = 2, ACTIVATE_OPTION = 2,
IGNORE_OPTION = 42, IGNORE_OPTION = 42,
}; };
enum eMenuColumns
{
MENUCOLUMN_LEFT,
MENUCOLUMN_CENTER,
MENUCOLUMN_RIGHT,
MENUCOLUMNS,
};
enum eMenuRow
{
MENUROW_0,
MENUROW_1,
MENUROW_2,
MENUROW_3,
MENUROW_4,
MENUROW_5,
MENUROW_6,
MENUROW_7,
MENUROW_8,
MENUROW_9,
MENUROW_10,
MENUROW_11,
MENUROW_12,
MENUROW_13,
MENUROW_14,
MENUROW_15,
MENUROW_16,
MENUROW_17,
MENUROWS,
};
struct tSkinInfo struct tSkinInfo
{ {
int field_0; int field_0;
@ -301,18 +343,19 @@ struct tSkinInfo
int field_304; int field_304;
}; };
struct CMenuScreen { struct CMenuScreen
{
char m_ScreenName[8]; char m_ScreenName[8];
int32 m_PreviousPage[3]; // int32 m_PreviousPage[3]; // eMenuScreen
int32 m_ParentEntry[2]; int32 m_ParentEntry[2]; // eMenuRow
struct CMenuEntry struct CMenuEntry
{ {
int32 m_Action; int32 m_Action; // eMenuAction
char m_EntryName[8]; char m_EntryName[8];
int32 m_ActionSlot; int32 m_SaveSlot; // eSaveSlot
int32 m_TargetMenu; int32 m_TargetMenu; // eMenuScreen
} m_aEntries[18]; } m_aEntries[MENUROWS];
}; };
class CMenuManager class CMenuManager
@ -401,12 +444,8 @@ public:
static int32 &m_PrefsSfxVolume; static int32 &m_PrefsSfxVolume;
static bool &m_bStartUpFrontEndRequested; static bool &m_bStartUpFrontEndRequested;
static bool &m_bShutDownFrontEndRequested; static bool &m_bShutDownFrontEndRequested;
static bool &m_PrefsAllowNastyGame; static bool &m_PrefsAllowNastyGame;
private:
enum eColumns { L, R, COLUMNS, };
public: public:
void BuildStatLine(char *, void *, uint16, void *); void BuildStatLine(char *, void *, uint16, void *);
static void CentreMousePointer(); static void CentreMousePointer();

380
src/MenuScreens.h Normal file
View File

@ -0,0 +1,380 @@
#pragma once
const CMenuScreen aScreens[] = {
// MENUPAGE_NONE = 0
{ "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0, },
// MENUPAGE_STATS = 1
{ "FET_STA", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, MENUROW_5, MENUROW_2,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_NEW_GAME = 2
{ "FET_SGA", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, MENUROW_0, MENUROW_1,
MENUACTION_CHANGEMENU, "FES_SNG", SAVESLOT_NONE, MENUPAGE_NEW_GAME_RELOAD,
MENUACTION_UPDATESAVE, "GMLOAD", SAVESLOT_NONE, MENUPAGE_CHOOSE_LOAD_SLOT,
MENUACTION_CHANGEMENU, "FES_DGA", SAVESLOT_NONE, MENUPAGE_CHOOSE_DELETE_SLOT,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_BRIEFS = 3
{ "FET_BRE", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, MENUROW_6, MENUROW_3,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENU_CONTROLLER_SETTINGS = 4
{ "FET_CON", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUROW_0, MENUROW_0,
},
// MENUPAGE_SOUND_SETTINGS = 5
{ "FET_AUD", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUROW_1, MENUROW_1,
MENUACTION_MUSICVOLUME, "FEA_MUS", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
MENUACTION_SFXVOLUME, "FEA_SFX", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
MENUACTION_AUDIOHW, "FEA_3DH", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
MENUACTION_SPEAKERCONF, "FEA_SPK", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
MENUACTION_DYNAMICACOUSTIC, "FET_DAM", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
MENUACTION_RADIO, "FEA_RSS", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
MENUACTION_RESTOREDEF, "FET_DEF", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
},
// MENUPAGE_GRAPHICS_SETTINGS = 6
{ "FET_DIS", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUROW_2, MENUROW_2,
MENUACTION_BRIGHTNESS, "FED_BRI", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_DRAWDIST, "FEM_LOD", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_FRAMESYNC, "FEM_VSC", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_FRAMELIMIT, "FEM_FRM", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_TRAILS, "FED_TRA", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_SUBTITLES, "FED_SUB", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_WIDESCREEN, "FED_WIS", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_SCREENRES, "FED_RES", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_RESTOREDEF, "FET_DEF", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_LANGUAGE_SETTINGS = 7
{ "FET_LAN", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUROW_3, MENUROW_3,
MENUACTION_LANG_ENG, "FEL_ENG", SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS,
MENUACTION_LANG_FRE, "FEL_FRE", SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS,
MENUACTION_LANG_GER, "FEL_GER", SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS,
MENUACTION_LANG_ITA, "FEL_ITA", SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS,
MENUACTION_LANG_SPA, "FEL_SPA", SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_CHOOSE_LOAD_SLOT = 8
{ "FET_LG", MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUROW_1, MENUROW_1,
MENUACTION_CHANGEMENU, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NEW_GAME,
MENUACTION_CHECKSAVE, "FEM_SL1", SAVESLOT_1 + 1, MENUPAGE_LOAD_SLOT_CONFIRM,
MENUACTION_CHECKSAVE, "FEM_SL2", SAVESLOT_2 + 1, MENUPAGE_LOAD_SLOT_CONFIRM,
MENUACTION_CHECKSAVE, "FEM_SL3", SAVESLOT_3 + 1, MENUPAGE_LOAD_SLOT_CONFIRM,
MENUACTION_CHECKSAVE, "FEM_SL4", SAVESLOT_4 + 1, MENUPAGE_LOAD_SLOT_CONFIRM,
MENUACTION_CHECKSAVE, "FEM_SL5", SAVESLOT_5 + 1, MENUPAGE_LOAD_SLOT_CONFIRM,
MENUACTION_CHECKSAVE, "FEM_SL6", SAVESLOT_6 + 1, MENUPAGE_LOAD_SLOT_CONFIRM,
MENUACTION_CHECKSAVE, "FEM_SL7", SAVESLOT_7 + 1, MENUPAGE_LOAD_SLOT_CONFIRM,
MENUACTION_CHECKSAVE, "FEM_SL8", SAVESLOT_8 + 1, MENUPAGE_LOAD_SLOT_CONFIRM,
},
// MENUPAGE_CHOOSE_DELETE_SLOT = 9
{ "FET_DG", MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUROW_2, MENUROW_2,
MENUACTION_CHANGEMENU, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NEW_GAME,
MENUACTION_CHANGEMENU, "FEM_SL1", SAVESLOT_1 + 1, MENUPAGE_DELETE_SLOT_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL2", SAVESLOT_2 + 1, MENUPAGE_DELETE_SLOT_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL3", SAVESLOT_3 + 1, MENUPAGE_DELETE_SLOT_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL4", SAVESLOT_4 + 1, MENUPAGE_DELETE_SLOT_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL5", SAVESLOT_5 + 1, MENUPAGE_DELETE_SLOT_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL6", SAVESLOT_6 + 1, MENUPAGE_DELETE_SLOT_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL7", SAVESLOT_7 + 1, MENUPAGE_DELETE_SLOT_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL8", SAVESLOT_8 + 1, MENUPAGE_DELETE_SLOT_CONFIRM,
},
// MENUPAGE_NEW_GAME_RELOAD = 10
{ "FET_NG", MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUPAGE_NEW_GAME, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FESZ_QR", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_NEW_GAME,
MENUACTION_NEWGAME, "FEM_YES", SAVESLOT_NONE, MENUPAGE_NEW_GAME_RELOAD,
},
// MENUPAGE_LOAD_SLOT_CONFIRM = 11
{ "FET_LG", MENUPAGE_CHOOSE_LOAD_SLOT, MENUPAGE_CHOOSE_LOAD_SLOT, MENUPAGE_CHOOSE_LOAD_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FESZ_QL", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_CHOOSE_LOAD_SLOT,
MENUACTION_CHANGEMENU, "FEM_YES", SAVESLOT_NONE, MENUPAGE_LOADING_IN_PROGRESS,
},
// MENUPAGE_DELETE_SLOT_CONFIRM = 12
{ "FET_DG", MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FESZ_QD", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_CHOOSE_DELETE_SLOT,
MENUACTION_CHANGEMENU, "FEM_YES", SAVESLOT_NONE, MENUPAGE_DELETING,
},
// MENUPAGE_13 = 13
{ "FES_NOC", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_LOADING_IN_PROGRESS = 14
{ "FET_LG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FED_LDW", SAVESLOT_NONE, MENUPAGE_LOAD_SLOT_CONFIRM,
},
// MENUPAGE_DELETING_IN_PROGRESS = 15
{ "FET_DG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FEDL_WR", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_16 = 16
{ "FET_LG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FES_LOE", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_DELETE_FAILED = 17
{ "FET_DG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FES_DEE", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEC_OKK", SAVESLOT_NONE, MENUPAGE_CHOOSE_DELETE_SLOT,
},
// MENUPAGE_DEBUG_MENU = 18
{ "FED_DBG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_MEMORY_CARD_1 = 19
{ "FEM_MCM", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_MEMORY_CARD_2 = 20
{ "FEM_MC2", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_MULTIPLAYER_MAIN = 21
{ "FET_MP", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_SAVE_FAILED_1 = 22
{ "MCDNSP", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_MEMCARDSAVECONFIRM, "JAILB_U", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_SAVE_FAILED_2 = 23
{ "MCGNSP", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_MEMCARDSAVECONFIRM, "JAILB_U", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_SAVE = 24
{ "FET_SG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FES_SCG", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_UPDATESAVE, "GMSAVE", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT,
MENUACTION_UPDATEMEMCARDSAVE, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_NO_MEMORY_CARD = 25
{ "FES_NOC", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_CHOOSE_SAVE_SLOT = 26
{ "FET_SG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_UPDATEMEMCARDSAVE, "FESZ_CA", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEM_SL1", SAVESLOT_1 + 1, MENUPAGE_SAVE_OVERWRITE_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL2", SAVESLOT_2 + 1, MENUPAGE_SAVE_OVERWRITE_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL3", SAVESLOT_3 + 1, MENUPAGE_SAVE_OVERWRITE_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL4", SAVESLOT_4 + 1, MENUPAGE_SAVE_OVERWRITE_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL5", SAVESLOT_5 + 1, MENUPAGE_SAVE_OVERWRITE_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL6", SAVESLOT_6 + 1, MENUPAGE_SAVE_OVERWRITE_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL7", SAVESLOT_7 + 1, MENUPAGE_SAVE_OVERWRITE_CONFIRM,
MENUACTION_CHANGEMENU, "FEM_SL8", SAVESLOT_8 + 1, MENUPAGE_SAVE_OVERWRITE_CONFIRM,
},
// MENUPAGE_SAVE_OVERWRITE_CONFIRM = 27
{ "FET_SG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FESZ_QO", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEM_YES", SAVESLOT_NONE, MENUPAGE_SAVING_IN_PROGRESS,
MENUACTION_CHANGEMENU, "FEM_NO", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT,
},
// MENUPAGE_MULTIPLAYER_MAP = 28
{ "FET_MAP", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_MULTIPLAYER_CONNECTION = 29
{ "FET_CON", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_MULTIPLAYER_FIND_GAME = 30
{ "FET_FG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_MULTIPLAYER_MODE = 31
{ "FET_GT", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_MULTIPLAYER_CREATE = 32
{ "FET_HG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_MULTIPLAYER_START = 33
{ "FEN_STA", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_SKIN_SELECT_OLD = 34
{ "FET_PS", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_CONTROLLER_PC = 35
{ "FET_CTL", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUROW_0, MENUROW_0,
MENUACTION_CTRLMETHOD, "FET_CME", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
MENUACTION_REDEFCTRL, "FET_RDK", SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS,
MENUACTION_CHANGEMENU, "FET_AMS", SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS,
MENUACTION_RESTOREDEF, "FET_DEF", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_CONTROLLER_PC_OLD1 = 36
{ "FET_CTL", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, MENUROW_0, MENUROW_0,
},
// MENUPAGE_CONTROLLER_PC_OLD2 = 37
{ "FET_CTL", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_CONTROLLER_PC_OLD3 = 38
{ "FET_CTL", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_CONTROLLER_PC_OLD4 = 39
{ "FET_CTL", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_CONTROLLER_DEBUG = 40
{ "FEC_DBG", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_OPTIONS = 41
{ "FET_OPT", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, MENUROW_1, MENUROW_4,
MENUACTION_CHANGEMENU, "FET_CTL", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
MENUACTION_LOADRADIO, "FET_AUD", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS,
MENUACTION_CHANGEMENU, "FET_DIS", SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS,
MENUACTION_CHANGEMENU, "FET_LAN", SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS,
MENUACTION_PLAYERSETUP, "FET_PSU", SAVESLOT_NONE, MENUPAGE_SKIN_SELECT,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_EXIT = 42
{ "FET_QG", MENUPAGE_NONE, MENUPAGE_NONE, MENUPAGE_NONE, MENUROW_2, MENUROW_5,
MENUACTION_LABEL, "FEQ_SRE", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_DONTCANCLE, "FEM_NO", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CANCLEGAME, "FEM_YES", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_SAVING_IN_PROGRESS = 43
{ "", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FES_WAR", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_SAVE_SUCCESSFUL = 44
{ "FET_SG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FES_SSC", SAVESLOT_LABEL, MENUPAGE_NONE,
MENUACTION_UPDATEMEMCARDSAVE, "FEC_OKK", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT,
},
// MENUPAGE_DELETING = 45
{ "FET_DG", MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FED_DLW", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_DELETE_SUCCESS = 46
{ "FET_DG", MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUPAGE_CHOOSE_DELETE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "DEL_FNM", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEC_OKK", SAVESLOT_NONE, MENUPAGE_CHOOSE_DELETE_SLOT,
},
// MENUPAGE_SAVE_FAILED = 47
{ "FET_SG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FEC_SVU", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEC_OKK", SAVESLOT_NONE, MENUPAGE_CHOOSE_SAVE_SLOT,
},
// MENUPAGE_LOAD_FAILED = 48
{ "FET_SG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FEC_SVU", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_LOAD_FAILED_2 = 49
{ "FET_LG", MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUPAGE_CHOOSE_SAVE_SLOT, MENUROW_0, MENUROW_0,
MENUACTION_LABEL, "FEC_LUN", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_CHOOSE_LOAD_SLOT,
},
// MENUPAGE_FILTER_GAME = 50
{ "FIL_FLT", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_START_MENU = 51
{ "FEM_MM", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_CHANGEMENU, "FEN_STA", SAVESLOT_NONE, MENUPAGE_NEW_GAME,
MENUACTION_CHANGEMENU, "FET_OPT", SAVESLOT_NONE, MENUPAGE_OPTIONS,
MENUACTION_CHANGEMENU, "FEM_QT", SAVESLOT_NONE, MENUPAGE_EXIT,
},
// MENUPAGE_PAUSE_MENU = 52
{ "FET_PAU", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
MENUACTION_RESUME, "FEM_RES", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEN_STA", SAVESLOT_NONE, MENUPAGE_NEW_GAME,
MENUACTION_CHANGEMENU, "FEP_STA", SAVESLOT_NONE, MENUPAGE_STATS,
MENUACTION_CHANGEMENU, "FEP_BRI", SAVESLOT_NONE, MENUPAGE_BRIEFS,
MENUACTION_CHANGEMENU, "FET_OPT", SAVESLOT_NONE, MENUPAGE_OPTIONS,
MENUACTION_CHANGEMENU, "FEM_QT", SAVESLOT_NONE, MENUPAGE_EXIT,
},
// MENUPAGE_CHOOSE_MODE = 53
{ "FEN_STA", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_SKIN_SELECT = 54
{ "FET_PSU", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, MENUROW_4, MENUROW_4,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_MULTIPLAYER_MAIN,
},
// MENUPAGE_KEYBOARD_CONTROLS = 55
{ "FET_STI", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, MENUROW_1, MENUROW_1,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
},
// MENUPAGE_MOUSE_CONTROLS = 56
{ "FET_MTI", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, MENUROW_2, MENUROW_2,
MENUACTION_MOUSESENS, "FEC_MSH", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
MENUACTION_INVVERT, "FEC_IVV", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
MENUACTION_MOUSESTEER, "FET_MST", SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC,
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
// MENUPAGE_57 = 57
{ "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
// MENUPAGE_58 = 58
{ "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUPAGE_DISABLED, MENUROW_0, MENUROW_0,
},
};

View File

@ -18,6 +18,7 @@ public:
static void SetTimeStep(float ts) { ms_fTimeStep = ts; } static void SetTimeStep(float ts) { ms_fTimeStep = ts; }
static uint32 GetFrameCounter(void) { return m_FrameCounter; } static uint32 GetFrameCounter(void) { return m_FrameCounter; }
static uint32 GetTimeInMilliseconds(void) { return m_snTimeInMilliseconds; } static uint32 GetTimeInMilliseconds(void) { return m_snTimeInMilliseconds; }
static uint32 GetTimeInMillisecondsPauseMode(void) { return m_snTimeInMillisecondsPauseMode; }
static inline bool GetIsPaused() { return m_UserPause || m_CodePause; } static inline bool GetIsPaused() { return m_UserPause || m_CodePause; }
static inline bool GetIsUserPaused() { return m_UserPause; } static inline bool GetIsUserPaused() { return m_UserPause; }

View File

@ -10,6 +10,8 @@ cAudioManager::PlayerJustLeftCar(void)
// UNUSED: This is a perfectly empty function. // UNUSED: This is a perfectly empty function.
} }
WRAPPER void cAudioManager::Service() { EAXJMP(0x57A2A0); }
STARTPATCHES STARTPATCHES
InjectHook(0x56AD20, &cAudioManager::PlayerJustLeftCar, PATCH_JUMP); InjectHook(0x56AD20, &cAudioManager::PlayerJustLeftCar, PATCH_JUMP);
ENDPATCHES ENDPATCHES

View File

@ -3,6 +3,7 @@
class cAudioManager { class cAudioManager {
public: public:
void PlayerJustLeftCar(void); void PlayerJustLeftCar(void);
void Service();
}; };
extern cAudioManager &AudioManager; extern cAudioManager &AudioManager;

View File

@ -20,3 +20,7 @@ WRAPPER void cDMAudio::PlayFrontEndSound(uint32, uint32) { EAXJMP(0x57CC20); }
WRAPPER void cDMAudio::PlayOneShot(int, uint16, float) { EAXJMP(0x57C840); } WRAPPER void cDMAudio::PlayOneShot(int, uint16, float) { EAXJMP(0x57C840); }
WRAPPER int cDMAudio::GetRadioInCar() { EAXJMP(0x57CE40); } WRAPPER int cDMAudio::GetRadioInCar() { EAXJMP(0x57CE40); }
WRAPPER uint8 cDMAudio::IsMP3RadioChannelAvailable() { EAXJMP(0x57C9F0); } WRAPPER uint8 cDMAudio::IsMP3RadioChannelAvailable() { EAXJMP(0x57C9F0); }
WRAPPER void cDMAudio::SetEffectsFadeVol(int16) { EAXJMP(0x57C8F0); }
WRAPPER void cDMAudio::SetMusicFadeVol(int16) { EAXJMP(0x57C920); }

View File

@ -191,5 +191,8 @@ public:
void PlayOneShot(int, uint16, float); void PlayOneShot(int, uint16, float);
int GetRadioInCar(); int GetRadioInCar();
uint8 IsMP3RadioChannelAvailable(); uint8 IsMP3RadioChannelAvailable();
void SetEffectsFadeVol(int16);
void SetMusicFadeVol(int16);
}; };
extern cDMAudio &DMAudio; extern cDMAudio &DMAudio;