2019-10-05 15:08:05 -04:00
# ifndef CONFIG_H
# define CONFIG_H
2021-08-18 01:53:18 +01:00
// HACKERSM64 CONFIG DEFINES NEAR BOTTOM
2019-08-25 00:46:40 -04:00
/**
* @ file config . h
2021-07-10 23:33:50 -04:00
* A catch - all file for configuring various bugfixes and other settings ( maybe eventually ) in SM64
2019-08-25 00:46:40 -04:00
*/
// Bug Fixes
2021-07-12 23:17:54 -04:00
// --| Post-JP Version Nintendo Bug Fixes
2019-08-25 00:46:40 -04:00
/// Fixes bug where obtaining over 999 coins sets the number of lives to 999 (or -25)
2020-04-03 14:57:26 -04:00
# define BUGFIX_MAX_LIVES (0 || VERSION_US || VERSION_EU || VERSION_SH)
2019-11-03 14:36:27 -05:00
/// Fixes bug where the Boss music won't fade out after defeating King Bob-omb
2020-12-03 14:26:38 -05:00
# define BUGFIX_KING_BOB_OMB_FADE_MUSIC (0 || VERSION_US || VERSION_EU || VERSION_SH)
2019-08-25 00:46:40 -04:00
/// Fixes bug in Bob-Omb Battlefield where entering a warp stops the Koopa race music
2020-04-03 14:57:26 -04:00
# define BUGFIX_KOOPA_RACE_MUSIC (0 || VERSION_US || VERSION_EU || VERSION_SH)
2019-08-25 00:46:40 -04:00
/// Fixes bug where Piranha Plants do not reset their action state when the
/// player exits their activation radius.
2020-04-03 14:57:26 -04:00
# define BUGFIX_PIRANHA_PLANT_STATE_RESET (0 || VERSION_US || VERSION_EU || VERSION_SH)
2019-08-25 00:46:40 -04:00
/// Fixes bug where sleeping Piranha Plants damage players that bump into them
2020-04-03 14:57:26 -04:00
# define BUGFIX_PIRANHA_PLANT_SLEEP_DAMAGE (0 || VERSION_US || VERSION_SH)
2019-08-25 00:46:40 -04:00
/// Fixes bug where it shows a star when you grab a key in bowser battle stages
2020-12-03 14:26:38 -05:00
# define BUGFIX_STAR_BOWSER_KEY (0 || VERSION_US || VERSION_EU || VERSION_SH)
2021-07-12 23:17:54 -04:00
/// Fixes bug that enables Mario in time stop even if is not ready to speak
# define BUGFIX_DIALOG_TIME_STOP (0 || VERSION_US || VERSION_EU || VERSION_SH)
/// Fixes bug that causes Mario to still collide with Bowser in BITS after his defeat
# define BUGFIX_BOWSER_COLLIDE_BITS_DEAD (0 || VERSION_US || VERSION_EU || VERSION_SH)
/// Fixes bug where Bowser wouldn't reset his speed when fallen off (and adds missing checks)
# define BUGFIX_BOWSER_FALLEN_OFF_STAGE (0 || VERSION_US || VERSION_EU || VERSION_SH)
/// Fixes bug where Bowser would look weird while fading out
# define BUGFIX_BOWSER_FADING_OUT (0 || VERSION_US || VERSION_EU || VERSION_SH)
2021-07-15 11:33:37 -07:00
/// Removes multi-language cake screen
# define EU_CUSTOM_CAKE_FIX 1
2019-08-25 00:46:40 -04:00
2020-12-08 19:28:12 -05:00
// Support Rumble Pak
2021-06-28 14:08:49 +01:00
// Currently not recommended, as it may cause random crashes.
2021-05-24 09:02:40 +01:00
//#define ENABLE_RUMBLE (1 || VERSION_SH)
2020-12-08 19:28:12 -05:00
2021-06-08 12:39:10 -04:00
// Clear RAM on boot
# define CLEARRAM 1
2019-10-05 15:08:05 -04:00
// Screen Size Defines
2019-08-25 00:46:40 -04:00
# define SCREEN_WIDTH 320
# define SCREEN_HEIGHT 240
2019-10-05 15:08:05 -04:00
// Border Height Define for NTSC Versions
2020-06-02 12:44:34 -04:00
# ifdef TARGET_N64
2021-07-12 17:10:44 +01:00
// Size of the black border at the top and bottom of the screen. You can set it to different values for console and emulator.
// There is generally no reason to have a value other than 0 for emulator. As for console, it provides a (small) performance boost.
# define BORDER_HEIGHT_CONSOLE 0
# define BORDER_HEIGHT_EMULATOR 0
2021-05-26 14:41:46 +01:00
2019-08-25 00:46:40 -04:00
# endif
2020-06-02 12:44:34 -04:00
2021-08-18 01:53:18 +01:00
// -- HackerSM64 specific settings --
2021-07-10 23:33:50 -04:00
2021-07-25 14:01:49 +01:00
// TEST LEVEL
// Uncomment this define and set a test level in order to boot straight into said level.
// This allows you to quickly test the level you're working on.
// If you want the game to boot normally, just comment out the define again.
//#define TEST_LEVEL LEVEL_BOB
2021-07-10 23:33:50 -04:00
// COMMON HACK CHANGES
2021-07-12 16:56:36 +01:00
// Internal ROM name. NEEDS TO BE **EXACTLY** 20 CHARACTERS. Can't be 19 characters, can't be 21 characters. You can fill it with spaces.
// The end quote should be here: "
# define INTERNAL_ROM_NAME "SUPERMARIO64 "
2021-07-10 23:33:50 -04:00
// Disable lives and hide the lives counter
# define DISABLE_LIVES
2021-05-26 15:07:11 +01:00
// Skip peach letter cutscene
# define PEACH_SKIP
2021-07-03 21:33:17 +01:00
// Fixes the castle music sometimes triggering after getting a dialog
# define CASTLE_MUSIC_FIX
2021-05-26 15:10:32 +01:00
// Remove course specific camera processing
# define CAMERA_FIX
2021-07-17 18:19:32 +01:00
// Change the movement speed when hanging from a ceiling (the vanilla value is 4.f)
2021-07-14 00:23:56 +01:00
# define HANGING_SPEED 12.f
2021-07-13 23:57:00 +01:00
// Makes Mario face the direction of the analog stick directly while hanging from a ceiling, without doing "semicircles"
# define TIGHTER_HANGING_CONTROLS
2021-07-14 00:23:56 +01:00
// Makes Mario turn around instantly when moving on the ground
//#define SUPER_RESPONSIVE_CONTROLS
2021-07-10 23:33:50 -04:00
// Disables fall damage
# define NO_FALL_DAMAGE
// Disables the scream that mario makes when falling off a great height (this is separate from actual fall damage)
//#define NO_FALL_DAMAGE_SOUND
// Number of coins to spawn the "100 coin" star. If you remove the define altogether, then there won't be a 100 coin star at all.
# define X_COIN_STAR 100
2021-08-06 02:20:12 +01:00
// Platform displacement 2 also known as momentum patch. Makes Mario keep the momemtum from moving platforms. Doesn't break treadmills anymore!
# define PLATFORM_DISPLACEMENT_2
2021-07-10 23:33:50 -04:00
// Stars don't kick you out of the level
2021-09-01 15:03:08 -07:00
//#define NON_STOP_STARS
2021-07-10 23:33:50 -04:00
// Uncomment this if you want global star IDs (useful for creating an open world hack ala MVC)
//#define GLOBAL_STAR_IDS
// Uncomment this if you want to skip the title screen (Super Mario 64 logo)
//#define SKIP_TITLE_SCREEN
// Uncomment this if you want to keep the mario head and not skip it
//#define KEEP_MARIO_HEAD
2021-07-17 18:19:32 +01:00
// Enables "parallel lakitu camera" or "aglab cam" which lets you move the camera smoothly with the dpad
# define PARALLEL_LAKITU_CAM
2021-07-25 15:45:23 +01:00
// Allows Mario to ledgegrab sloped floors
# define NO_FALSE_LEDGEGRABS
2021-09-01 15:03:08 -07:00
// Adds multiple languages to the game. Just a placeholder for the most part, because it only works with EU, and must be enabled with EU.
2021-08-16 17:41:27 +01:00
# define MULTILANG (0 || VERSION_EU)
2021-09-01 15:03:08 -07:00
// Enables Puppy Camera 2, a rewritten camera that can be freely configured and modified.
2021-08-15 15:15:16 +01:00
//#define PUPPYCAM
2021-09-04 09:59:30 -07:00
// Automatically calculate the optimal collision distance for an object based on its vertices.
# define AUTO_COLLISION_DISTANCE
2021-07-12 14:28:41 +01:00
2021-07-10 23:33:50 -04:00
2021-08-16 22:10:57 +01:00
// HACKER QOL
2021-05-26 17:06:48 +01:00
// Increase the maximum pole length (it will treat bparam1 and bparam2 as a single value)
2021-05-26 15:13:36 +01:00
# define LONGER_POLES
2021-07-10 23:33:50 -04:00
// Number of possible unique model ID's (keep it higher than 256)
# define MODEL_ID_COUNT 256
2021-07-12 19:16:06 -05:00
// Increase audio heap size to allow for more concurrent notes to be played and for more custom sequences/banks to be imported (does nothing with EU and SH versions)
# define EXPAND_AUDIO_HEAP
2021-08-02 17:44:03 +01:00
// Allow all surfaces types to have force, (doesn't require setting force, just allows it to be optional).
# define ALL_SURFACES_HAVE_FORCE
2021-08-05 22:17:09 +01:00
// Custom debug mode. Press DPAD left to show the debug UI. Press DPAD right to enter the noclip mode.
//#define CUSTOM_DEBUG
2021-08-15 11:30:19 +01:00
// Include Puppyprint, a display library for text and large images. Also includes a custom, enhanced performance profiler.
2021-08-15 11:38:31 +01:00
//#define PUPPYPRINT
2021-08-20 17:39:22 +01:00
# define PUPPYPRINT_DEBUG 0
2021-09-01 15:03:08 -07:00
// Visual debug enables some collision visuals. Tapping Right on the dpad will cycle between visual hitboxes, visual surfaces, both, and neither.
// If puppyprint is enabled, then this can be cycled only while the screen is active.
2021-08-20 17:39:22 +01:00
//#define VISUAL_DEBUG
2021-07-10 23:33:50 -04:00
// BUG/GAME QOL FIXES
// Fix instant warp offset not working when warping across different areas
# define INSTANT_WARP_OFFSET_FIX
// Whether a tree uses snow particles or not is decided via the model IDs instead of the course number
# define TREE_PARTICLE_FIX
2021-06-21 17:35:28 +01:00
// Allows Mario to jump kick on steep surfaces that are set to be non slippery, instead of being forced to dive
# define JUMP_KICK_FIX
2021-06-30 22:27:43 +01:00
// Allow Mario to grab hangable ceilings from any state
# define HANGING_FIX
2021-07-11 03:44:44 +01:00
// The last frame that will be considered a firsty when wallkicking
# define FIRSTY_LAST_FRAME 1
2021-06-29 19:35:07 +01:00
// 46 degree walkicks
//#define WALLKICKS_46_DEGREES
2021-07-01 10:28:34 +01:00
// Disable BLJs and crush SimpleFlips's dreams
//#define DISABLE_BLJ
2021-07-10 23:33:50 -04:00
// RELATING TO EXIT COURSE
2021-06-30 23:10:03 +01:00
// Disable exit course
//#define DISABLE_EXIT_COURSE
2021-07-03 20:42:31 +01:00
// Decides whether you can exit course while moving (has no effect if you disable exit course)
//#define EXIT_COURSE_WHILE_MOVING
2021-06-30 23:10:03 +01:00
// Decides which level "exit course" takes you to (has no effect if you disable exit course)
# define EXIT_COURSE_LEVEL LEVEL_CASTLE
// Decides the area node "exit course" takes you to (has no effect if you disable exit course)
# define EXIT_COURSE_AREA 0x01
// Decides the warp node "exit course" takes you to (has no effect if you disable exit course)
# define EXIT_COURSE_NODE 0x1F
2021-05-26 14:41:46 +01:00
2021-07-12 14:35:52 +01:00
// OTHER ENHANCEMENTS
2021-07-25 15:45:23 +01:00
// Enable widescreen (16:9) support
# define WIDE
2021-07-12 14:49:50 +01:00
// Skybox size modifier, changing this will add support for larger skybox images. NOTE: Vanilla skyboxes may break if you change this option. Be sure to rescale them accordingly.
// Whenever you change this, make sure to run "make -C tools clean" to rebuild the skybox tool (alternatively go into skyconv.c and change the file in any way (like adding/deleting a space) to specifically rebuild that tool).
// When increasing this, you should probably also increase the GFX pool size. (the GFX_POOL_SIZE define in src/game/game_init.h)
2021-07-11 20:02:12 -04:00
# define SKYBOX_SIZE 1
2021-07-25 15:45:23 +01:00
// When this option is enabled, LODs will ONLY work on console.
// When this option is disabled, LODs will work regardless of whether console or emulator is used.
// Regardless of whether this setting is enabled or not, you can use gIsConsole to wrap your own code in a console check.
# define AUTO_LOD
// Disable AA (Recommended: it changes nothing on emulator, and it makes console run better)
# define DISABLE_AA
2021-07-25 15:46:11 +01:00
// Makes the coins ia8 64x64 instead of ia16 32x32. Uses new ia8 textures so that vanilla coins look better.
# define IA8_COINS
2021-08-04 03:17:51 -05:00
// Use a much better implementation of reverb over vanilla's fake echo reverb. Great for caves or eerie levels, as well as just a better audio experience in general.
2021-09-01 14:12:03 -07:00
// Reverb parameters can be configured in audio/synthesis.c to meet desired aesthetic/performance needs. Currently US/JP only.
2021-08-04 03:17:51 -05:00
//#define BETTER_REVERB
2021-09-01 15:03:08 -07:00
// Collision data is the type that the collision system uses. All data by default is stored as an s16, but you may change it to s32.
// Naturally, that would double the size of all collision data, but would allow you to use 32 bit values instead of 16.
// Rooms are s8 in vanilla, but if you somehow have more than 255 rooms, you may raise this number.
// Currently, they *must* say as s8, because the room tables generated by literally anything are explicitly u8 and don't use a macro, making this currently infeasable.
2021-08-18 22:36:42 +01:00
# define COLLISION_DATA_TYPE s16
# define ROOM_DATA_TYPE s8
2021-05-26 14:41:46 +01:00
2021-06-27 17:19:09 +01:00
// If you want to change the extended boundaries mode, go to engine/extended_bounds.h and change EXTENDED_BOUNDS_MODE
2021-05-26 15:28:06 +01:00
2020-06-02 12:44:34 -04:00
# endif // CONFIG_H