2019-05-29 18:47:33 -04:00
# pragma once
2019-05-15 10:52:37 -04:00
enum Config {
2020-12-03 10:04:59 -05:00
NUMPLAYERS = 1 , // 4 on PS2
2020-03-22 10:23:40 -04:00
2020-02-25 12:24:45 -05:00
NUMCDIMAGES = 12 , // gta3.img duplicates (not used on PC)
MAX_CDIMAGES = 8 , // additional cdimages
2019-07-24 12:55:43 -04:00
MAX_CDCHANNELS = 5 ,
2019-05-15 10:52:37 -04:00
2020-12-03 10:04:59 -05:00
MODELINFOSIZE = 5500 , // 3150 on PS2
2020-08-18 04:58:15 -04:00
// TXDSTORESIZE = 850,
TXDSTORESIZE = 1024 , // for Xbox map
2019-05-15 10:52:37 -04:00
EXTRADIRSIZE = 128 ,
2019-09-28 11:16:52 -04:00
CUTSCENEDIRSIZE = 512 ,
2019-05-15 10:52:37 -04:00
2020-12-03 10:04:59 -05:00
SIMPLEMODELSIZE = 5000 , // 2910 on PS2
2020-01-20 15:41:41 -05:00
MLOMODELSIZE = 1 ,
MLOINSTANCESIZE = 1 ,
2019-05-15 10:52:37 -04:00
TIMEMODELSIZE = 30 ,
CLUMPMODELSIZE = 5 ,
PEDMODELSIZE = 90 ,
2020-12-03 10:04:59 -05:00
VEHICLEMODELSIZE = 120 , // 70 on PS2
2020-01-20 15:41:41 -05:00
XTRACOMPSMODELSIZE = 2 ,
2020-12-03 10:04:59 -05:00
TWODFXSIZE = 2000 , // 1210 on PS2
2019-05-15 10:52:37 -04:00
2020-02-25 12:24:45 -05:00
MAXVEHICLESLOADED = 50 , // 70 on mobile
2019-06-20 08:49:16 -04:00
2019-06-12 05:08:56 -04:00
NUMOBJECTINFO = 168 , // object.dat
2019-05-15 10:52:37 -04:00
// Pool sizes
2019-06-12 05:08:56 -04:00
NUMPTRNODES = 30000 , // 26000 on PS2
NUMENTRYINFOS = 5400 , // 3200 on PS2
2020-02-25 12:24:45 -05:00
NUMPEDS = 140 , // 90 on PS2
NUMVEHICLES = 110 , // 70 on PS2
2019-06-12 05:08:56 -04:00
NUMBUILDINGS = 5500 , // 4915 on PS2
2019-05-15 10:52:37 -04:00
NUMTREADABLES = 1214 ,
NUMOBJECTS = 450 ,
2019-06-12 05:08:56 -04:00
NUMDUMMIES = 2802 , // 2368 on PS2
2019-05-15 10:52:37 -04:00
NUMAUDIOSCRIPTOBJECTS = 256 ,
2019-09-11 20:43:18 -04:00
NUMCUTSCENEOBJECTS = 50 ,
2019-05-15 10:52:37 -04:00
2020-05-08 14:58:40 -04:00
NUMANIMBLOCKS = 2 ,
NUMANIMATIONS = 250 ,
2019-07-08 15:37:47 -04:00
NUMTEMPOBJECTS = 30 ,
2019-08-09 13:42:18 -04:00
// Path data
NUM_PATHNODES = 4930 ,
NUM_CARPATHLINKS = 2076 ,
NUM_MAPOBJECTS = 1250 ,
NUM_PATHCONNECTIONS = 10260 ,
2019-05-15 10:52:37 -04:00
// Link list lengths
2020-04-16 05:44:04 -04:00
NUMALPHALIST = 20 ,
NUMALPHAENTITYLIST = 150 ,
2019-05-15 10:52:37 -04:00
NUMCOLCACHELINKS = 200 ,
NUMREFERENCES = 800 ,
// Zones
NUMAUDIOZONES = 36 ,
NUMZONES = 50 ,
NUMMAPZONES = 25 ,
// Cull zones
NUMCULLZONES = 512 ,
NUMATTRIBZONES = 288 ,
NUMZONEINDICES = 55000 ,
PATHNODESIZE = 4500 ,
NUMWEATHERS = 4 ,
NUMHOURS = 24 ,
2019-05-30 05:12:49 -04:00
2019-06-01 06:02:31 -04:00
NUMEXTRADIRECTIONALS = 4 ,
2019-05-30 05:12:49 -04:00
NUMANTENNAS = 8 ,
2019-06-01 13:18:19 -04:00
NUMCORONAS = 56 ,
2019-06-12 05:08:56 -04:00
NUMPOINTLIGHTS = 32 ,
2019-10-16 19:22:39 -04:00
NUM3DMARKERS = 32 ,
2020-04-07 10:48:49 -04:00
NUMBRIGHTLIGHTS = 32 ,
2020-04-07 06:33:14 -04:00
NUMSHINYTEXTS = 32 ,
2019-10-03 06:21:00 -04:00
NUMMONEYMESSAGES = 16 ,
2019-10-03 15:28:56 -04:00
NUMPICKUPMESSAGES = 16 ,
2020-03-22 06:20:36 -04:00
NUMBULLETTRACES = 16 ,
2020-04-07 16:26:01 -04:00
NUMMBLURSTREAKS = 4 ,
2020-04-08 10:35:23 -04:00
NUMSKIDMARKS = 32 ,
2019-06-12 05:08:56 -04:00
2019-06-24 18:42:23 -04:00
NUMONSCREENTIMERENTRIES = 1 ,
2019-06-23 07:11:41 -04:00
NUMRADARBLIPS = 32 ,
2019-10-03 15:28:56 -04:00
NUMGENERALPICKUPS = 320 ,
NUMSCRIPTEDPICKUPS = 16 ,
NUMPICKUPS = NUMGENERALPICKUPS + NUMSCRIPTEDPICKUPS ,
NUMCOLLECTEDPICKUPS = 20 ,
2020-04-12 16:50:34 -04:00
NUMPACMANPICKUPS = 256 ,
2019-07-12 12:01:22 -04:00
NUMEVENTS = 64 ,
2019-07-27 14:28:18 -04:00
2019-09-11 14:42:34 -04:00
NUM_CARGENS = 160 ,
NUM_PATH_NODES_IN_AUTOPILOT = 8 ,
2019-09-14 19:28:07 -04:00
NUM_ACCIDENTS = 20 ,
2019-10-06 17:39:25 -04:00
NUM_FIRES = 40 ,
2020-01-03 11:48:13 -05:00
NUM_GARAGES = 32 ,
2020-01-12 06:31:04 -05:00
NUM_PROJECTILES = 32 ,
2019-10-06 17:39:25 -04:00
2020-04-01 17:04:56 -04:00
NUM_GLASSPANES = 45 ,
NUM_GLASSENTITIES = 32 ,
2020-02-25 12:24:45 -05:00
NUM_WATERCANNONS = 3 ,
2019-10-06 17:39:25 -04:00
NUMPEDROUTES = 200 ,
2019-11-24 21:25:10 -05:00
NUMPHONES = 50 ,
2020-02-15 21:15:58 -05:00
NUMPEDGROUPS = 31 ,
NUMMODELSPERPEDGROUP = 8 ,
2020-03-29 11:26:23 -04:00
NUMSHOTINFOS = 100 ,
2019-11-02 19:13:29 -04:00
2020-03-25 10:13:06 -04:00
NUMROADBLOCKS = 600 ,
2019-11-02 19:13:29 -04:00
NUMVISIBLEENTITIES = 2000 ,
NUMINVISIBLEENTITIES = 150 ,
2020-03-22 10:23:40 -04:00
2020-03-21 09:51:30 -04:00
NUM_AUDIOENTITY_EVENTS = 4 ,
NUM_PED_COMMENTS_BANKS = 2 ,
NUM_PED_COMMENTS_SLOTS = 20 ,
NUM_SOUNDS_SAMPLES_BANKS = 2 ,
NUM_SOUNDS_SAMPLES_SLOTS = 27 ,
NUM_AUDIOENTITIES = 200 ,
NUM_AUDIO_REFLECTIONS = 5 ,
NUM_SCRIPT_MAX_ENTITIES = 40 ,
2020-03-28 08:24:13 -04:00
2020-04-05 05:35:51 -04:00
NUM_GARAGE_STORED_CARS = 6 ,
2020-04-08 15:29:02 -04:00
NUM_CRANES = 8 ,
NUM_EXPLOSIONS = 48 ,
2019-05-15 10:52:37 -04:00
} ;
2019-05-30 17:49:06 -04:00
2019-06-27 04:58:51 -04:00
// We don't expect to compile for PS2 or Xbox
// but it might be interesting for documentation purposes
# define GTA_PC
//#define GTA_PS2
//#define GTA_XBOX
2019-07-03 07:13:55 -04:00
// This enables things from the PS2 version on PC
# define GTA_PS2_STUFF
// This is enabled for all released games.
// any debug stuff that isn't left in any game is not in FINAL
//#define FINAL
// This is enabled for all released games except mobile
// any debug stuff that is only left in mobile, is not in MASTER
//#define MASTER
2020-10-29 14:01:09 -04:00
// once and for all:
// pc: FINAL & MASTER
// mobile: FINAL
// MASTER builds must be FINAL
# ifdef MASTER
# define FINAL
# endif
2020-11-29 06:26:34 -05:00
// Version defines
# define GTA3_PS2_140 300
# define GTA3_PS2_160 301
# define GTA3_PC_10 310
# define GTA3_PC_11 311
# define GTA3_PC_STEAM 312
// TODO? maybe something for xbox or android?
# define GTA_VERSION GTA3_PC_11
2020-10-29 14:01:09 -04:00
// quality of life fixes that should also be in FINAL
# define NASTY_GAME // nasty game for all languages
# define NO_CDCHECK
// those infamous texts
# define DRAW_GAME_VERSION_TEXT
# define DRAW_MENU_VERSION_TEXT
2020-11-29 06:26:34 -05:00
// Memory allocation and compression
// #define USE_CUSTOM_ALLOCATOR // use CMemoryHeap for allocation. use with care, not finished yet
//#define COMPRESSED_COL_VECTORS // use compressed vectors for collision vertices
//#define ANIM_COMPRESSION // only keep most recently used anims uncompressed
2019-07-03 07:13:55 -04:00
# if defined GTA_PS2
2020-04-08 23:20:44 -04:00
# define GTA_PS2_STUFF
2019-07-03 07:13:55 -04:00
# define RANDOMSPLASH
2020-11-29 06:26:34 -05:00
# define USE_CUSTOM_ALLOCATOR
2020-08-03 06:58:37 -04:00
# define VU_COLLISION
2020-11-16 16:43:15 -05:00
# define ANIM_COMPRESSION
2019-07-03 07:13:55 -04:00
# elif defined GTA_PC
# ifdef GTA_PS2_STUFF
2020-04-19 00:14:13 -04:00
# define USE_PS2_RAND
2019-07-03 07:13:55 -04:00
# define RANDOMSPLASH // use random splash as on PS2
# define PS2_MATFX
# endif
2020-12-21 14:48:40 -05:00
# define PC_PLAYER_CONTROLS // mouse player/cam mode
2020-12-01 15:08:05 -05:00
# define GTA_REPLAY
2020-12-01 18:41:05 -05:00
# define GTA_SCENE_EDIT
2019-07-03 07:13:55 -04:00
# elif defined GTA_XBOX
# endif
2020-08-03 06:58:37 -04:00
# ifdef VU_COLLISION
2020-11-29 06:26:34 -05:00
# define COMPRESSED_COL_VECTORS // currently need compressed vectors in this code
2020-08-03 06:58:37 -04:00
# endif
2019-07-03 07:13:55 -04:00
# ifdef MASTER
// only in master builds
2020-10-29 14:01:09 -04:00
# undef DRAW_GAME_VERSION_TEXT
2019-07-03 07:13:55 -04:00
# else
// not in master builds
2019-10-08 16:07:11 -04:00
# define VALIDATE_SAVE_SIZE
2020-10-29 14:23:59 -04:00
# define NO_MOVIES // disable intro videos
# define DEBUGMENU
2019-07-03 07:13:55 -04:00
# endif
# ifdef FINAL
// in all games
# define USE_MY_DOCUMENTS // use my documents directory for user files
# else
// not in any game
# define CHATTYSPLASH // print what the game is loading
2020-05-29 06:03:32 -04:00
# define TIMEBARS // print debug timers
2019-07-03 07:13:55 -04:00
# endif
2020-11-07 10:04:01 -05:00
# define FIX_BUGS // fixes bugs that we've came across during reversing
2020-03-29 02:35:13 -04:00
# define MORE_LANGUAGES // Add more translations to the game
2020-05-28 04:49:58 -04:00
# define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible
2020-11-07 10:04:01 -05:00
# define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS
2020-05-28 04:49:58 -04:00
2020-11-15 18:41:03 -05:00
// Just debug menu entries
# ifdef DEBUGMENU
# define MISSION_SWITCHER // from debug menu
# endif
2020-05-28 04:49:58 -04:00
// Rendering/display
2020-10-29 14:21:16 -04:00
//#define EXTRA_MODEL_FLAGS // from mobile to optimize rendering
//# define HARDCODED_MODEL_FLAGS // sets the flags enabled above from hardcoded model names.
2020-10-29 14:11:47 -04:00
// NB: keep this enabled unless your map IDEs have these flags baked in
2020-05-28 04:49:58 -04:00
# define ASPECT_RATIO_SCALE // Not just makes everything scale with aspect ratio, also adds support for all aspect ratios
2020-05-10 22:55:57 -04:00
# define DEFAULT_NATIVE_RESOLUTION // Set default video mode to your native resolution (fixes Windows 10 launch)
2020-04-27 14:56:44 -04:00
# define USE_TXD_CDIMAGE // generate and load textures from txd.img
2020-07-29 08:31:34 -04:00
# define PS2_ALPHA_TEST // emulate ps2 alpha test
2020-04-29 12:08:54 -04:00
# define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number
2020-07-09 13:40:15 -04:00
# define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time
2020-11-28 09:29:45 -05:00
# define DISABLE_VSYNC_ON_TEXTURE_CONVERSION // make texture conversion work faster by disabling vsync
2020-04-17 01:54:14 -04:00
//#define USE_TEXTURE_POOL
2020-10-31 20:09:46 -04:00
# ifdef LIBRW
2020-12-26 08:48:47 -05:00
# define EXTENDED_COLOURFILTER // more options for colour filter (replaces mblur)
# define EXTENDED_PIPELINES // custom render pipelines (includes Neo)
# define SCREEN_DROPLETS // neo water droplets
2020-11-19 10:23:52 -05:00
# endif
2020-08-15 18:37:09 -04:00
2020-11-19 10:23:52 -05:00
# ifndef EXTENDED_COLOURFILTER
2020-11-29 06:26:34 -05:00
# undef SCREEN_DROPLETS // we need the backbuffer for this effect
2020-11-19 10:23:52 -05:00
# endif
2020-04-23 04:24:03 -04:00
// Particle
//#define PC_PARTICLE
//#define PS2_ALTERNATIVE_CARSPLASH // unused on PS2
2019-10-05 09:44:03 -04:00
// Pad
2020-05-10 22:55:57 -04:00
# if !defined(RW_GL3) && defined(_WIN32)
2020-03-27 14:54:35 -04:00
# define XINPUT
2020-04-26 07:18:34 -04:00
# endif
2020-10-02 10:36:56 -04:00
# if !defined(_WIN32) && !defined(__SWITCH__)
# define DONT_TRUST_RECOGNIZED_JOYSTICKS // Then we'll only rely on GLFW gamepad DB, and expect user to enter Controller->Detect joysticks if his joystick isn't on that list.
2020-09-30 13:02:47 -04:00
# endif
2020-05-02 12:00:47 -04:00
# define DETECT_PAD_INPUT_SWITCH // Adds automatic switch of pad related stuff between controller and kb/m
2019-07-01 15:46:44 -04:00
# define KANGAROO_CHEAT
2020-04-25 14:25:14 -04:00
# define ALLCARSHELI_CHEAT
# define ALT_DODO_CHEAT
2020-04-12 13:22:28 -04:00
# define REGISTER_START_BUTTON
2020-12-28 01:36:21 -05:00
# define BIND_VEHICLE_FIREWEAPON // Adds ability to rebind fire key for 'in vehicle' controls
2020-11-05 10:05:16 -05:00
# define BUTTON_ICONS // use textures to show controller buttons
2019-10-05 09:44:03 -04:00
2020-01-07 09:23:09 -05:00
// Hud, frontend and radar
2020-12-20 10:16:56 -05:00
//#define PS2_HUD
2020-05-10 22:55:57 -04:00
# define HUD_ENHANCEMENTS // Adjusts some aspects to make the HUD look/behave a little bit better.
2020-09-27 12:21:16 -04:00
// #define BETA_SLIDING_TEXT
2020-06-29 03:29:02 -04:00
# define TRIANGULAR_BLIPS // height indicating triangular radar blips, as in VC
2020-11-18 18:09:04 -05:00
// #define XBOX_SUBTITLES // the infamous outlines
2020-12-14 21:51:53 -05:00
# define RADIO_OFF_TEXT
2020-06-29 03:29:02 -04:00
# define PC_MENU
# ifndef PC_MENU
# define PS2_MENU
//# define PS2_MENU_USEALLPAGEICONS
2020-08-15 18:37:09 -04:00
# else
2020-06-29 03:29:02 -04:00
# define MENU_MAP // VC-like menu map. Make sure you have new menu.txd
# define SCROLLABLE_STATS_PAGE // only draggable by mouse atm
# define TRIANGLE_BACK_BUTTON
//# define CIRCLE_BACK_BUTTON
2020-09-26 21:39:25 -04:00
//# define PS2_LIKE_MENU // An effort to recreate PS2 menu, cycling through tabs, different bg etc.
//# define PS2_SAVE_DIALOG // PS2 style save dialog with transparent black box
2020-08-19 13:30:57 -04:00
# define CUSTOM_FRONTEND_OPTIONS
2020-11-07 10:04:01 -05:00
# ifdef CUSTOM_FRONTEND_OPTIONS
2020-12-16 15:45:18 -05:00
# define GRAPHICS_MENU_OPTIONS // otherwise Display settings will be scrollable
2020-11-07 10:04:01 -05:00
# define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
# define CUTSCENE_BORDERS_SWITCH
# define MULTISAMPLING // adds MSAA option
2020-11-15 18:21:04 -05:00
# define INVERT_LOOK_FOR_PAD // add bInvertLook4Pad from VC
2020-11-07 10:04:01 -05:00
# endif
2020-06-29 03:29:02 -04:00
# endif
2019-10-05 09:44:03 -04:00
// Script
2020-05-29 06:03:32 -04:00
# define USE_DEBUG_SCRIPT_LOADER // Loads main.scm by default. Hold R for main_freeroam.scm and D for main_d.scm
2020-02-16 15:08:54 -05:00
# define USE_MEASUREMENTS_IN_METERS // makes game use meters instead of feet in script
# define USE_PRECISE_MEASUREMENT_CONVERTION // makes game convert feet to meeters more precisely
2020-06-29 03:29:02 -04:00
# ifdef PC_MENU
# define MISSION_REPLAY // mobile feature
# endif
2020-05-26 17:25:12 -04:00
//#define SIMPLIER_MISSIONS // apply simplifications from mobile
2020-07-02 18:28:41 -04:00
# define USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
2020-11-21 13:12:47 -05:00
# define SCRIPT_LOG_FILE_LEVEL 0 // 0 == no log, 1 == overwrite every frame, 2 == full log
2019-10-05 09:44:03 -04:00
2020-06-28 04:59:20 -04:00
# ifndef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
# define USE_BASIC_SCRIPT_DEBUG_OUTPUT
# endif
2020-03-15 11:47:21 -04:00
// Replay
//#define DONT_FIX_REPLAY_BUGS // keeps various bugs in CReplay, some of which are fairly cool!
//#define USE_BETA_REPLAY_MODE // adds another replay mode, a few seconds slomo (caution: buggy!)
2019-10-05 09:44:03 -04:00
// Vehicles
2019-07-31 17:57:18 -04:00
# define EXPLODING_AIRTRAIN // can blow up jumbo jet with rocket launcher
2019-09-11 14:42:34 -04:00
//#define REMOVE_TREADABLE_PATHFIND
2019-10-05 09:44:03 -04:00
// Pickups
//#define MONEY_MESSAGES
2020-04-20 01:17:08 -04:00
# define CAMERA_PICKUP
2019-10-05 09:44:03 -04:00
// Peds
2020-05-02 16:52:41 -04:00
# define PED_SKIN // support for skinned geometry on peds
2019-10-05 09:44:03 -04:00
# define ANIMATE_PED_COL_MODEL
2020-07-02 09:01:42 -04:00
// #define VC_PED_PORTS // various ports from VC's CPed, mostly subtle
2020-03-25 10:13:06 -04:00
// #define NEW_WALK_AROUND_ALGORITHM // to make walking around vehicles/objects less awkward
2019-10-05 10:32:01 -04:00
# define CANCELLABLE_CAR_ENTER
2020-07-01 08:28:43 -04:00
//#define PEDS_REPORT_CRIMES_ON_PHONE
2020-03-26 09:16:06 -04:00
2020-03-29 08:05:21 -04:00
// Camera
2020-06-20 08:38:21 -04:00
//#define PS2_CAM_TRANSITION // old way of transitioning between cam modes
2020-03-26 09:16:06 -04:00
# define IMPROVED_CAMERA // Better Debug cam, and maybe more in the future
2020-04-02 06:48:01 -04:00
# define FREE_CAM // Rotating cam
2020-07-17 06:48:25 -04:00
// Audio
2020-12-14 21:51:53 -05:00
# define RADIO_SCROLL_TO_PREV_STATION
2021-01-01 10:43:26 -05:00
# define AUDIO_CACHE
2020-08-02 21:00:12 -04:00
//#define PS2_AUDIO // changes audio paths for cutscenes and radio to PS2 paths, needs vbdec to support VB with MSS
2020-11-03 12:00:10 -05:00
// IMG
# define BIG_IMG // allows to read larger img files
2020-08-02 21:00:12 -04:00
//#define SQUEEZE_PERFORMANCE
# ifdef SQUEEZE_PERFORMANCE
# undef PS2_ALPHA_TEST
# undef NO_ISLAND_LOADING
# define PC_PARTICLE
# define VC_PED_PORTS // To not process collisions always. But should be tested if that's really beneficial
2021-01-02 18:12:01 -05:00
# define VC_RAIN_NERF // Reduces number of rain particles
2020-10-02 10:36:56 -04:00
# endif
2020-11-07 10:04:01 -05:00
# ifdef LIBRW
// these are not supported with librw yet
# endif