You've already forked HackerSM64
mirror of
https://github.com/HackerN64/HackerSM64.git
synced 2026-01-21 10:35:32 -08:00
Compare commits
1 Commits
develop/2.
...
flips_fix
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f1a08ada2 |
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,3 +0,0 @@
|
||||
[submodule "lib/libpl"]
|
||||
path = lib/libpl
|
||||
url = https://gitlab.com/parallel-launcher/libpl.git
|
||||
3
.vscode/c_cpp_properties.json
vendored
3
.vscode/c_cpp_properties.json
vendored
@@ -26,8 +26,7 @@
|
||||
"VERSION_US=1",
|
||||
"F3DEX_GBI_2=1",
|
||||
"F3DZEX_NON_GBI_2=1",
|
||||
"F3DEX_GBI_SHARED=1",
|
||||
"LIBPL=1"
|
||||
"F3DEX_GBI_SHARED=1"
|
||||
],
|
||||
"compilerPath": "/usr/bin/mips-linux-gnu-gcc",
|
||||
"cStandard": "gnu17",
|
||||
|
||||
15
Dockerfile
15
Dockerfile
@@ -1,18 +1,17 @@
|
||||
FROM ubuntu:22.04 as build
|
||||
FROM ubuntu:18.04 as build
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
binutils-mips-linux-gnu \
|
||||
bsdextrautils \
|
||||
bsdmainutils \
|
||||
build-essential \
|
||||
gcc-mips-linux-gnu \
|
||||
libcapstone-dev \
|
||||
pkgconf \
|
||||
python3
|
||||
|
||||
RUN mkdir /hackersm64
|
||||
WORKDIR /hackersm64
|
||||
ENV PATH="/hackersm64/tools:${PATH}"
|
||||
RUN mkdir /sm64
|
||||
WORKDIR /sm64
|
||||
ENV PATH="/sm64/tools:${PATH}"
|
||||
|
||||
CMD echo 'Usage: docker run --rm -v ${PWD}:/hackersm64 hackersm64 make VERSION=us -j4\n' \
|
||||
'See https://github.com/HackerN64/HackerSM64/blob/master/README.md for more information'
|
||||
CMD echo 'usage: docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 sm64 make VERSION=us -j4\n' \
|
||||
'see https://github.com/n64decomp/sm64/blob/master/README.md for advanced usage'
|
||||
|
||||
26
Makefile
26
Makefile
@@ -135,7 +135,7 @@ endif
|
||||
#==============================================================================#
|
||||
|
||||
# Default non-gcc opt flags
|
||||
DEFAULT_OPT_FLAGS = -Ofast -falign-functions=32
|
||||
DEFAULT_OPT_FLAGS = -Ofast
|
||||
# Note: -fno-associative-math is used here to suppress warnings, ideally we would enable this as an optimization but
|
||||
# this conflicts with -ftrapping-math apparently.
|
||||
# TODO: Figure out how to allow -fassociative-math to be enabled
|
||||
@@ -253,18 +253,6 @@ ifeq ($(HVQM),1)
|
||||
SRC_DIRS += src/hvqm
|
||||
endif
|
||||
|
||||
# LIBPL - whether to include libpl library for interfacing with Parallel Launcher
|
||||
# (library will be pulled into repo after building with this enabled for the first time)
|
||||
# 1 - includes code in ROM
|
||||
# 0 - does not
|
||||
LIBPL ?= 0
|
||||
LIBPL_DIR := lib/libpl
|
||||
$(eval $(call validate-option,LIBPL,0 1))
|
||||
ifeq ($(LIBPL),1)
|
||||
DEFINES += LIBPL=1
|
||||
SRC_DIRS += $(LIBPL_DIR)
|
||||
endif
|
||||
|
||||
BUILD_DIR_BASE := build
|
||||
# BUILD_DIR is the location where all build artifacts are placed
|
||||
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)_$(CONSOLE)
|
||||
@@ -347,18 +335,6 @@ ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to build tools)
|
||||
endif
|
||||
|
||||
# Clone any needed submodules
|
||||
ifeq ($(LIBPL),1)
|
||||
ifeq ($(wildcard $(LIBPL_DIR)/*.h),)
|
||||
$(info Cloning libpl submodule...)
|
||||
DUMMY != git submodule update --init $(LIBPL_DIR) > /dev/null || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to clone libpl submodule)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
$(info Building ROM...)
|
||||
|
||||
endif
|
||||
|
||||
@@ -21,7 +21,7 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
|
||||
- **Fazana**: PuppyLib, ucode swapping, audio load time optimisations (with Arctic), general hacker qol improvements, visual debug
|
||||
- **Reonu**: Starting the project/repo, widescreen, reonucam, various defines for hacker QoL
|
||||
- **JoshDuMan**: Decomp guy, general assistance
|
||||
- **Arceveti**: Silhouette, shadow optimizations, better hanging, breath meter, painting objects, 4 controller support, implementation of frameperfection's rounded corners fix, naming most unknowns, various hacker QOL improvements, and various optimizations/fixes
|
||||
- **Arceveti**: Silhouette, shadow optimisation, better hanging, breath meter, 4 controller support
|
||||
- **axollyon**: Console testing, bugfixes, idea-guying, and had a hand in silhouettes
|
||||
- **Wiseguy**: World scale reimplementation, silhouette, graph node optimisations, instant input patch, cake screen fix, segmented code support, and various optimizations/fixes
|
||||
- **Kaze**: Graph node optimisations, automatic optimal collision distance
|
||||
@@ -36,6 +36,7 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
|
||||
**Lighting Engine by Wiseguy**
|
||||
- Lighting Engine is available on a separate branch ([base/lighting-engine](https://github.com/Reonu/HackerSM64/tree/base/lighting-engine)). Instructions on how to use it are in the readme of that branch.
|
||||
- Alternatively, the main repo has `Puppylights` available, which is a more lightweight, but limited lighting library intended to be used to modify existing light properties. You can look at `puppylights.c` to find out how to use it.
|
||||
|
||||
**Puppycam**
|
||||
- Puppycam is available on the master branch now, you can toggle it in `config/config_camera.h`. *
|
||||
|
||||
@@ -1 +1 @@
|
||||
v2.2.0
|
||||
v2.1.1
|
||||
|
||||
@@ -226,9 +226,6 @@ extern const Gfx mushroom_1up_seg3_dl_0302A660[];
|
||||
// number
|
||||
extern const GeoLayout number_geo[];
|
||||
|
||||
// painting
|
||||
extern const GeoLayout painting_geo[];
|
||||
|
||||
// pebble
|
||||
extern const Gfx pebble_seg3_dl_0301CB00[];
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "leaves/geo.inc.c"
|
||||
#include "mario_cap/geo.inc.c"
|
||||
#include "number/geo.inc.c"
|
||||
#include "painting/geo.inc.c"
|
||||
#include "mushroom_1up/geo.inc.c"
|
||||
#include "star/geo.inc.c"
|
||||
#include "dirt/geo.inc.c"
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
#include "game/paintings.h"
|
||||
|
||||
const GeoLayout painting_geo[] = {
|
||||
GEO_CULLING_RADIUS(2000),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_painting_draw),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
669
bin/segment2.c
669
bin/segment2.c
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -143,8 +143,7 @@ const Gfx title_screen_bg_dl_face_easter_egg_end[] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
// Not part of segment2, but define still covers same use case
|
||||
#if (defined(COMPLETE_EN_US_SEGMENT2) && ENABLE_RUMBLE)
|
||||
#if defined(VERSION_SH)
|
||||
ALIGNED8 static const Texture title_texture_rumble_pak[] = {
|
||||
#include "textures/title_screen_bg/title_screen_bg.06648.rgba16.inc.c"
|
||||
};
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
#include "game/behavior_actions.h"
|
||||
#include "game/mario_actions_cutscene.h"
|
||||
#include "game/mario_misc.h"
|
||||
#include "game/paintings.h"
|
||||
#include "game/object_helpers.h"
|
||||
#include "game/debug.h"
|
||||
#include "menu/file_select.h"
|
||||
@@ -67,7 +66,6 @@
|
||||
#define BC_HH(a, b) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 0, 16))
|
||||
#define BC_W(a) ((uintptr_t)(u32)(a))
|
||||
#define BC_PTR(a) ((uintptr_t)(a))
|
||||
#define BC_BPTR(a, b) (_SHIFTL(a, 24, 8) + OS_K0_TO_PHYSICAL(b))
|
||||
|
||||
enum BehaviorCommands {
|
||||
/*0x00*/ BHV_CMD_BEGIN,
|
||||
@@ -182,7 +180,8 @@ enum BehaviorCommands {
|
||||
|
||||
// Executes a native game function.
|
||||
#define CALL_NATIVE(func) \
|
||||
BC_BPTR(BHV_CMD_CALL_NATIVE, func)
|
||||
BC_B(BHV_CMD_CALL_NATIVE), \
|
||||
BC_PTR(func)
|
||||
|
||||
// Adds a float to the specified field.
|
||||
#define ADD_FLOAT(field, value) \
|
||||
@@ -387,7 +386,8 @@ enum BehaviorCommands {
|
||||
|
||||
// Spawns a water droplet with the given parameters.
|
||||
#define SPAWN_WATER_DROPLET(dropletParams) \
|
||||
BC_BPTR(BHV_CMD_SPAWN_WATER_DROPLET, dropletParams)
|
||||
BC_B(BHV_CMD_SPAWN_WATER_DROPLET), \
|
||||
BC_PTR(dropletParams)
|
||||
|
||||
|
||||
const BehaviorScript bhvStarDoor[] = {
|
||||
@@ -2228,6 +2228,16 @@ const BehaviorScript bhvWaterLevelPillar[] = {
|
||||
END_LOOP(),
|
||||
};
|
||||
|
||||
const BehaviorScript bhvDddWarp[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
SET_FLOAT(oCollisionDistance, 30000),
|
||||
BEGIN_LOOP(),
|
||||
CALL_NATIVE(bhv_ddd_warp_loop),
|
||||
CALL_NATIVE(load_object_collision_model),
|
||||
END_LOOP(),
|
||||
};
|
||||
|
||||
const BehaviorScript bhvMoatGrills[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
#ifdef UNLOCK_ALL
|
||||
@@ -3485,15 +3495,6 @@ const BehaviorScript bhvUnlockDoorStar[] = {
|
||||
END_LOOP(),
|
||||
};
|
||||
|
||||
const BehaviorScript bhvPainting[] = {
|
||||
BEGIN(OBJ_LIST_LEVEL),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
CALL_NATIVE(bhv_painting_init),
|
||||
BEGIN_LOOP(),
|
||||
CALL_NATIVE(bhv_painting_loop),
|
||||
END_LOOP(),
|
||||
};
|
||||
|
||||
const BehaviorScript bhvInstantActiveWarp[] = {
|
||||
BREAK(),
|
||||
};
|
||||
@@ -5872,7 +5873,7 @@ const BehaviorScript bhvRacingPenguin[] = {
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),
|
||||
ANIMATE(PENGUIN_ANIM_IDLE),
|
||||
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 200, /*Gravity*/ -800, /*Bounciness*/ -5, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),
|
||||
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 300, /*Gravity*/ -800, /*Bounciness*/ -5, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),
|
||||
SCALE(/*Unused*/ 0, /*Field*/ 400),
|
||||
CALL_NATIVE(bhv_racing_penguin_init),
|
||||
BEGIN_LOOP(),
|
||||
|
||||
@@ -173,6 +173,7 @@ extern const BehaviorScript bhvBowserKeyUnlockDoor[];
|
||||
extern const BehaviorScript bhvBowserKeyCourseExit[];
|
||||
extern const BehaviorScript bhvInvisibleObjectsUnderBridge[];
|
||||
extern const BehaviorScript bhvWaterLevelPillar[];
|
||||
extern const BehaviorScript bhvDddWarp[];
|
||||
extern const BehaviorScript bhvMoatGrills[];
|
||||
extern const BehaviorScript bhvClockMinuteHand[];
|
||||
extern const BehaviorScript bhvClockHourHand[];
|
||||
@@ -293,7 +294,6 @@ extern const BehaviorScript bhvYellowBall[];
|
||||
extern const BehaviorScript bhvMario[];
|
||||
extern const BehaviorScript bhvToadMessage[];
|
||||
extern const BehaviorScript bhvUnlockDoorStar[];
|
||||
extern const BehaviorScript bhvPainting[];
|
||||
extern const BehaviorScript bhvInstantActiveWarp[];
|
||||
extern const BehaviorScript bhvAirborneWarp[];
|
||||
extern const BehaviorScript bhvHardAirKnockBackWarp[];
|
||||
|
||||
@@ -17,9 +17,3 @@
|
||||
* Skips the title/splash screen (Super Mario 64 logo).
|
||||
*/
|
||||
// #define SKIP_TITLE_SCREEN
|
||||
|
||||
/**
|
||||
* Skips the File Select screen
|
||||
*/
|
||||
// #define SKIP_FILE_SELECT
|
||||
|
||||
|
||||
@@ -14,10 +14,6 @@
|
||||
*/
|
||||
// #define DISABLE_ALL
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Enables a comprehensive standalone profiler. Automatically enabled by PUPPYPRINT_DEBUG.
|
||||
* If not using PUPPYPRINT_DEBUG, press L + D-Pad Up to toggle the profiler.
|
||||
@@ -89,8 +85,3 @@
|
||||
* Forces a crash when the game starts. Useful for debugging the crash screen.
|
||||
*/
|
||||
// #define DEBUG_FORCE_CRASH_ON_BOOT
|
||||
|
||||
/**
|
||||
* Intentionally crash the game whenever a runtime assertion fails (also invoked by the DEBUG define in the Makefile).
|
||||
*/
|
||||
#define DEBUG_ASSERTIONS
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/**
|
||||
* Enables some mechanics that change behavior depending on hardcoded level numbers.
|
||||
* TODO: separate this into separate defines, behavior params, or make these mechanics otherwise dynamic.
|
||||
*/
|
||||
*/
|
||||
// #define ENABLE_VANILLA_LEVEL_SPECIFIC_CHECKS
|
||||
|
||||
/**
|
||||
@@ -71,7 +71,7 @@
|
||||
// #define DIALOG_INDICATOR
|
||||
|
||||
/**
|
||||
* Include the English characters that were missing from US segment2 and the rumble pak texture if using rumble.
|
||||
* Include the English characters that were missing from US segment2
|
||||
* J, Q, V, X, Z, ¨, !, !!, ?, &, %, ., and the beta key.
|
||||
* [MAKE SURE TO INCLUDE EU AND JP/SH BASEROMS IN THE REPO TO OBTAIN THE ASSETS]
|
||||
* If this is disabled, backup assets will be used.
|
||||
|
||||
@@ -60,12 +60,12 @@
|
||||
/**
|
||||
* Makes the coins ia8 64x64 instead of ia16 32x32. Uses new ia8 textures so that vanilla coins look better.
|
||||
*/
|
||||
// #define IA8_COINS
|
||||
#define IA8_COINS
|
||||
|
||||
/**
|
||||
* Similar to the above, but 30 FPS (Textures by InTheBeef, cleaned up by Arceveti).
|
||||
*/
|
||||
// #define IA8_30FPS_COINS
|
||||
#define IA8_30FPS_COINS
|
||||
|
||||
/**
|
||||
* Use .rej microcode for certain objects (experimental - only should be used when F3DEX_GBI_2 is defined).
|
||||
@@ -141,10 +141,9 @@
|
||||
#define DEFAULT_CULLING_RADIUS 300
|
||||
|
||||
/**
|
||||
* Eases the textured screen transitions to make them look smoother.
|
||||
* Extends the full radius for mario, bowser and the star transitions.
|
||||
* Eases the textured screen transitions to make them look smoother.
|
||||
*/
|
||||
// #define POLISHED_TRANSITIONS
|
||||
#define EASE_IN_OUT_TRANSITIONS
|
||||
|
||||
/**
|
||||
* Uses frustratio of 2 instead of 1.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/**
|
||||
* Decides whether you can exit course while moving (has no effect if you disable Exit Course).
|
||||
*/
|
||||
// #define EXIT_COURSE_WHILE_MOVING
|
||||
#define EXIT_COURSE_WHILE_MOVING
|
||||
|
||||
/**
|
||||
* Decides whether to treat exiting course as if the player had died.
|
||||
|
||||
@@ -26,12 +26,12 @@
|
||||
* - Precise turning control.
|
||||
* - Prevents falling from the edges.
|
||||
*/
|
||||
// #define BETTER_HANGING
|
||||
#define BETTER_HANGING
|
||||
|
||||
/**
|
||||
* Change the movement speed when hanging from a ceiling (the vanilla value is 4.0f, has no effect if BETTER_HANGING is enabled).
|
||||
*/
|
||||
#define HANGING_SPEED 4.0f
|
||||
#define HANGING_SPEED 12.0f
|
||||
|
||||
/**
|
||||
* Prevents Mario from falling asleep while idle.
|
||||
@@ -81,12 +81,12 @@
|
||||
/**
|
||||
* If A and Z are pressed on the same frame while running, Mario will long jump instead of ground pound.
|
||||
*/
|
||||
// #define EASIER_LONG_JUMPS
|
||||
#define EASIER_LONG_JUMPS
|
||||
|
||||
/**
|
||||
* Enables the ability to hold Z while twirling to descend faster.
|
||||
*/
|
||||
// #define Z_TWIRL
|
||||
#define Z_TWIRL
|
||||
|
||||
/**
|
||||
* Disables bonks when ground pounding next to a wall.
|
||||
@@ -101,7 +101,7 @@
|
||||
/**
|
||||
* Allows Mario to grab hangable ceilings from any state.
|
||||
*/
|
||||
// #define HANGING_FIX
|
||||
#define HANGING_FIX
|
||||
|
||||
/**
|
||||
* The maximum angle the player can wall kick, in degrees. 0..90. To allow 45 degree wall kicks, you must supply `46` to allow 45 and under.
|
||||
@@ -113,11 +113,6 @@
|
||||
*/
|
||||
#define DONT_LEDGE_GRAB_STEEP_SLOPES
|
||||
|
||||
/**
|
||||
* Buffers an A input if you jump off a slope during the landing lag
|
||||
*/
|
||||
// #define SLOPE_BUFFER
|
||||
|
||||
/**
|
||||
* Disables BLJs and crushes SimpleFlips's dreams.
|
||||
*/
|
||||
@@ -134,7 +129,7 @@
|
||||
* be interrupted with text
|
||||
* Uncomment this to fix this bug, and frustrate speedrunners
|
||||
*/
|
||||
#define BUGFIX_DIALOG_TIME_STOP
|
||||
// #define BUGFIX_DIALOG_TIME_STOP
|
||||
|
||||
/**
|
||||
* Enables Platform Displacement 2, an upgrade to the physics involving moving platforms and how Mario interacts with them.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user