mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-21 19:45:10 +00:00
Tear out External Data and make Free Cam always compile
This commit is contained in:
parent
4ecbca1473
commit
a4cb43bbb9
22 changed files with 112 additions and 618 deletions
114
Makefile
114
Makefile
|
@ -34,18 +34,8 @@ OSX_BUILD ?= 0
|
|||
TARGET_ARCH ?= native
|
||||
TARGET_BITS ?= 0
|
||||
|
||||
# Enable better camera by default
|
||||
BETTERCAMERA ?= 1
|
||||
# Enable no drawing distance by default
|
||||
NODRAWINGDISTANCE ?= 1
|
||||
# Disable texture fixes by default (helps with them purists)
|
||||
TEXTURE_FIX ?= 0
|
||||
# Enable extended options menu by default
|
||||
EXT_OPTIONS_MENU ?= 1
|
||||
# Disable text-based save-files by default
|
||||
TEXTSAVES ?= 0
|
||||
# Load resources from external files
|
||||
EXTERNAL_DATA ?= 0
|
||||
# Enable Discord Game SDK (used for Discord invites)
|
||||
DISCORD_SDK ?= 1
|
||||
# Enable CoopNet SDK (used for CoopNet server hosting)
|
||||
|
@ -67,8 +57,8 @@ HEADLESS ?= 0
|
|||
ICON ?= 1
|
||||
# Use .app (mac only)
|
||||
USE_APP ?= 1
|
||||
# Various workarounds for weird toolchains
|
||||
|
||||
# Various workarounds for weird toolchains
|
||||
NO_BZERO_BCOPY ?= 0
|
||||
NO_LDIV ?= 0
|
||||
|
||||
|
@ -83,11 +73,6 @@ AUDIO_API ?= SDL2
|
|||
# Controller backends (can have multiple, space separated): SDL2, SDL1
|
||||
CONTROLLER_API ?= SDL2
|
||||
|
||||
# Misc settings for EXTERNAL_DATA
|
||||
|
||||
BASEDIR ?= res
|
||||
BASEPACK ?= base.zip
|
||||
|
||||
# Automatic settings for PC port(s)
|
||||
|
||||
WINDOWS_BUILD ?= 0
|
||||
|
@ -1055,24 +1040,6 @@ ifeq ($(DOCKERBUILD),1)
|
|||
CFLAGS += -DDOCKERBUILD
|
||||
endif
|
||||
|
||||
# Check for Puppycam option
|
||||
ifeq ($(BETTERCAMERA),1)
|
||||
CC_CHECK_CFLAGS += -DBETTERCAMERA
|
||||
CFLAGS += -DBETTERCAMERA
|
||||
EXT_OPTIONS_MENU := 1
|
||||
endif
|
||||
|
||||
#ifeq ($(TEXTSAVES),1)
|
||||
# CC_CHECK_CFLAGS += -DTEXTSAVES
|
||||
# CFLAGS += -DTEXTSAVES
|
||||
#endif
|
||||
|
||||
# Check for no drawing distance option
|
||||
#ifeq ($(NODRAWINGDISTANCE),1)
|
||||
CC_CHECK_CFLAGS += -DNODRAWINGDISTANCE
|
||||
CFLAGS += -DNODRAWINGDISTANCE
|
||||
#endif
|
||||
|
||||
# Check for Discord SDK option
|
||||
ifeq ($(DISCORD_SDK),1)
|
||||
CC_CHECK_CFLAGS += -DDISCORD_SDK
|
||||
|
@ -1103,12 +1070,6 @@ ifeq ($(TEXTURE_FIX),1)
|
|||
CFLAGS += -DTEXTURE_FIX
|
||||
endif
|
||||
|
||||
# Check for extended options menu option
|
||||
ifeq ($(EXT_OPTIONS_MENU),1)
|
||||
CC_CHECK_CFLAGS += -DEXT_OPTIONS_MENU
|
||||
CFLAGS += -DEXT_OPTIONS_MENU
|
||||
endif
|
||||
|
||||
# Check for no bzero/bcopy workaround option
|
||||
ifeq ($(NO_BZERO_BCOPY),1)
|
||||
CC_CHECK_CFLAGS += -DNO_BZERO_BCOPY
|
||||
|
@ -1127,16 +1088,6 @@ ifeq ($(LEGACY_GL),1)
|
|||
CFLAGS += -DLEGACY_GL
|
||||
endif
|
||||
|
||||
# Load external textures
|
||||
ifeq ($(EXTERNAL_DATA),1)
|
||||
CC_CHECK_CFLAGS += -DEXTERNAL_DATA -DFS_BASEDIR="\"$(BASEDIR)\""
|
||||
CFLAGS += -DEXTERNAL_DATA -DFS_BASEDIR="\"$(BASEDIR)\""
|
||||
# tell skyconv to write names instead of actual texture data and save the split tiles so we can use them later
|
||||
SKYTILE_DIR := $(BUILD_DIR)/textures/skybox_tiles
|
||||
SKYCONV_ARGS := --store-names --write-tiles "$(SKYTILE_DIR)"
|
||||
$(shell mkdir -p $(SKYTILE_DIR))
|
||||
endif
|
||||
|
||||
#==============================================================================#
|
||||
# Miscellaneous Tools #
|
||||
#==============================================================================#
|
||||
|
@ -1189,40 +1140,6 @@ endef
|
|||
# Main Targets #
|
||||
#==============================================================================#
|
||||
|
||||
|
||||
|
||||
ifeq ($(EXTERNAL_DATA),1)
|
||||
|
||||
BASEPACK_PATH := $(BUILD_DIR)/$(BASEDIR)/$(BASEPACK)
|
||||
BASEPACK_LST := $(BUILD_DIR)/basepack.lst
|
||||
|
||||
# depend on resources as well
|
||||
all: $(BASEPACK_PATH)
|
||||
|
||||
# phony target for building resources
|
||||
res: $(BASEPACK_PATH)
|
||||
|
||||
# prepares the basepack.lst
|
||||
$(BASEPACK_LST): $(EXE)
|
||||
@$(PRINT) "$(GREEN)Making basepack list.$(NO_COL)\n"
|
||||
@mkdir -p $(BUILD_DIR)/$(BASEDIR)
|
||||
@echo -n > $(BASEPACK_LST)
|
||||
@echo "$(BUILD_DIR)/sound/bank_sets sound/bank_sets" >> $(BASEPACK_LST)
|
||||
@echo "$(BUILD_DIR)/sound/sequences.bin sound/sequences.bin" >> $(BASEPACK_LST)
|
||||
@echo "$(BUILD_DIR)/sound/sound_data.ctl sound/sound_data.ctl" >> $(BASEPACK_LST)
|
||||
@echo "$(BUILD_DIR)/sound/sound_data.tbl sound/sound_data.tbl" >> $(BASEPACK_LST)
|
||||
@$(foreach f, $(wildcard $(SKYTILE_DIR)/*), echo $(f) gfx/$(f:$(BUILD_DIR)/%=%) >> $(BASEPACK_LST);)
|
||||
@find actors -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \;
|
||||
@find levels -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \;
|
||||
@find textures -name \*.png -exec echo "{} gfx/{}" >> $(BASEPACK_LST) \;
|
||||
|
||||
# prepares the resource ZIP with base data
|
||||
$(BASEPACK_PATH): $(BASEPACK_LST)
|
||||
@$(PRINT) "$(GREEN)Packing basepack zip file.$(NO_COL)\n"
|
||||
$(V)$(PYTHON) $(TOOLS_DIR)/mkzip.py $(BASEPACK_LST) $(BASEPACK_PATH)
|
||||
|
||||
endif
|
||||
|
||||
#all: $(ROM)
|
||||
all: $(EXE)
|
||||
|
||||
|
@ -1342,33 +1259,24 @@ $(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h
|
|||
#==============================================================================#
|
||||
TEXTURE_ENCODING := u8
|
||||
|
||||
ifeq ($(EXTERNAL_DATA),1)
|
||||
$(BUILD_DIR)/%: %.png
|
||||
$(call print,Dummying:,$<,$@)
|
||||
$(V)$(PYTHON) $(TOOLS_DIR)/zeroterm.py "$(patsubst %.png,%,$^)" > $@
|
||||
else
|
||||
# Convert PNGs to RGBA32, RGBA16, IA16, IA8, IA4, IA1, I8, I4 binary files
|
||||
$(BUILD_DIR)/%: %.png
|
||||
# Convert PNGs to RGBA32, RGBA16, IA16, IA8, IA4, IA1, I8, I4 binary files
|
||||
$(BUILD_DIR)/%: %.png
|
||||
$(call print,Converting:,$<,$@)
|
||||
$(V)$(N64GRAPHICS) -s raw -i $@ -g $< -f $(lastword $(subst ., ,$@))
|
||||
|
||||
$(BUILD_DIR)/%.inc.c: %.png
|
||||
$(BUILD_DIR)/%.inc.c: %.png
|
||||
$(call print,Converting:,$<,$@)
|
||||
$(V)$(N64GRAPHICS) -s $(TEXTURE_ENCODING) -i $@ -g $< -f $(lastword ,$(subst ., ,$(basename $<)))
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(EXTERNAL_DATA),0)
|
||||
# Color Index CI8
|
||||
$(BUILD_DIR)/%.ci8: %.ci8.png
|
||||
# Color Index CI8
|
||||
$(BUILD_DIR)/%.ci8: %.ci8.png
|
||||
$(call print,Converting:,$<,$@)
|
||||
$(V)$(N64GRAPHICS_CI) -i $@ -g $< -f ci8
|
||||
|
||||
# Color Index CI4
|
||||
$(BUILD_DIR)/%.ci4: %.ci4.png
|
||||
# Color Index CI4
|
||||
$(BUILD_DIR)/%.ci4: %.ci4.png
|
||||
$(call print,Converting:,$<,$@)
|
||||
$(V)$(N64GRAPHICS_CI) -i $@ -g $< -f ci4
|
||||
endif
|
||||
|
||||
#==============================================================================#
|
||||
# Compressed Segment Generation #
|
||||
|
@ -1464,12 +1372,6 @@ $(SOUND_BIN_DIR)/%.m64: $(SOUND_BIN_DIR)/%.o
|
|||
# Generated Source Code Files #
|
||||
#==============================================================================#
|
||||
|
||||
ifeq ($(EXTERNAL_DATA),1)
|
||||
$(SOUND_BIN_DIR)/%.inc.c: $(SOUND_BIN_DIR)/%
|
||||
$(call print,Dummying:,$<,$@)
|
||||
$(V)$(PYTHON) $(TOOLS_DIR)/zeroterm.py "$(patsubst $(BUILD_DIR)/%,%,$^)" | hexdump -v -e '1/1 "0x%X,"' > $@
|
||||
endif
|
||||
|
||||
# Convert binary file to a comma-separated list of byte values for inclusion in C code
|
||||
$(BUILD_DIR)/%.inc.c: $(BUILD_DIR)/%
|
||||
$(call print,Piping:,$<,$@)
|
||||
|
|
|
@ -7,7 +7,7 @@ else
|
|||
fi
|
||||
|
||||
INCLUDES="-Iinclude -Isrc -I. -Ilib/lua/include"
|
||||
DEFINES="-DRAPI_GL=1 -DWAPI_SDL2=1 -DAAPI_SDL2=1 -DCAPI_SDL2=1 -DHAVE_SDL2=1 -DVERSION_US -D_LANGUAGE_C -DNIGHTLY -DNON_MATCHING -DAVOID_UB -DF3DEX_GBI_2E -DCOOP -DIMMEDIATELOAD -DBETTERCAMERA -DNODRAWINGDISTANCE -DDISCORD_SDK -DTEXTURE_FIX -DEXT_OPTIONS_MENU"
|
||||
DEFINES="-DRAPI_GL=1 -DWAPI_SDL2=1 -DAAPI_SDL2=1 -DCAPI_SDL2=1 -DHAVE_SDL2=1 -DVERSION_US -D_LANGUAGE_C -DNIGHTLY -DNON_MATCHING -DAVOID_UB -DF3DEX_GBI_2E -DDISCORD_SDK"
|
||||
PARAMS="--language=c --quiet --platform=unix64 -v src -j8"
|
||||
|
||||
cppcheck -DLLONG_MAX $INCLUDES $DEFINES $EXTRA $PARAMS
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
if [ $# -eq 0 ]; then
|
||||
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 DEVELOPMENT=1 STRICT=1 -j
|
||||
make DEBUG=1 DEVELOPMENT=1 STRICT=1 -j
|
||||
else
|
||||
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 DEVELOPMENT=1 -j
|
||||
make DEBUG=1 DEVELOPMENT=1 -j
|
||||
fi
|
||||
|
||||
# find file
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
if [ $# -eq 0 ]; then
|
||||
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 DEVELOPMENT=1 STRICT=1 -j
|
||||
make DEBUG=1 DEVELOPMENT=1 STRICT=1 -j
|
||||
else
|
||||
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 DEVELOPMENT=1 -j
|
||||
make DEBUG=1 DEVELOPMENT=1 -j
|
||||
fi
|
||||
|
||||
# find file
|
||||
|
|
|
@ -1791,21 +1791,6 @@ u8 gShindouSequencesHeader[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
#ifdef EXTERNAL_DATA
|
||||
# define LOAD_DATA(x) load_sound_res((const char *)x)
|
||||
# include <stdio.h>
|
||||
# include <stdlib.h>
|
||||
static inline void *load_sound_res(const char *path) {
|
||||
void *data = fs_load_file(path, NULL);
|
||||
if (!data) sys_fatal("could not load sound data from '%s'", path);
|
||||
// FIXME: figure out where it is safe to free this shit
|
||||
// can't free it immediately after in audio_init()
|
||||
return data;
|
||||
}
|
||||
#else
|
||||
# define LOAD_DATA(x) x
|
||||
#endif
|
||||
|
||||
// (void) must be omitted from parameters
|
||||
void audio_init() {
|
||||
#if defined(VERSION_EU)
|
||||
|
@ -1956,7 +1941,7 @@ void audio_init() {
|
|||
init_sequence_players();
|
||||
#else
|
||||
gSeqFileHeader = (ALSeqFile *) buf;
|
||||
data = LOAD_DATA(gMusicData);
|
||||
data = gMusicData;
|
||||
audio_dma_copy_immediate((uintptr_t) data, gSeqFileHeader, 0x10);
|
||||
gSequenceCount = gSeqFileHeader->seqCount;
|
||||
#if defined(VERSION_EU)
|
||||
|
@ -1971,7 +1956,7 @@ void audio_init() {
|
|||
|
||||
// Load header for CTL (assets/sound_data.ctl.s, i.e. ADSR)
|
||||
gAlCtlHeader = (ALSeqFile *) buf;
|
||||
data = LOAD_DATA(gSoundDataADSR);
|
||||
data = gSoundDataADSR;
|
||||
audio_dma_copy_immediate((uintptr_t) data, gAlCtlHeader, 0x10);
|
||||
size = gAlCtlHeader->seqCount * sizeof(ALSeqData) + 4;
|
||||
size = ALIGN16(size);
|
||||
|
@ -1987,12 +1972,12 @@ void audio_init() {
|
|||
size = ALIGN16(size);
|
||||
gAlTbl = soundAlloc(&gAudioInitPool, size);
|
||||
|
||||
data = LOAD_DATA(gSoundDataRaw);
|
||||
data = gSoundDataRaw;
|
||||
audio_dma_copy_immediate((uintptr_t) data, gAlTbl, size);
|
||||
alSeqFileNew(gAlTbl, data);
|
||||
|
||||
// Load bank sets for each sequence (assets/bank_sets.s)
|
||||
data = LOAD_DATA(gBankSetsData);
|
||||
data = gBankSetsData;
|
||||
gAlBankSets = soundAlloc(&gAudioInitPool, 160);
|
||||
audio_dma_copy_immediate((uintptr_t)data, gAlBankSets, 160);
|
||||
|
||||
|
|
|
@ -52,13 +52,10 @@ static void fish_spawner_act_spawn(void) {
|
|||
* Mario is more than 2000 units higher.
|
||||
*/
|
||||
void fish_spawner_act_idle(void) {
|
||||
// TODO: should this be re-enabled?
|
||||
/*#ifndef NODRAWINGDISTANCE
|
||||
struct Object *player = nearest_player_to_object(o);
|
||||
if ((gCurrLevelNum != LEVEL_SA) && (player->oPosY - o->oPosY > 2000.0f)) {
|
||||
o->oAction = FISH_SPAWNER_ACT_RESPAWN;
|
||||
}
|
||||
#endif*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -723,10 +723,9 @@ BAD_RETURN(f32) calc_y_to_curr_floor(f32 *posOff, f32 posMul, f32 posBound, f32
|
|||
*focOff = -focBound;
|
||||
}
|
||||
}
|
||||
//Compiler gets mad if I put this any further above. thanks refresh 7
|
||||
#ifdef BETTERCAMERA
|
||||
|
||||
// compiler gets mad if I put this any further above. thanks refresh 7
|
||||
#include "bettercamera.inc.h"
|
||||
#endif
|
||||
|
||||
void focus_on_mario(Vec3f focus, Vec3f pos, f32 posYOff, f32 focYOff, f32 dist, s16 pitch, s16 yaw) {
|
||||
Vec3f marioPos;
|
||||
|
@ -2690,7 +2689,6 @@ s32 exit_c_up(struct Camera *c) {
|
|||
gCameraMovementFlags |= CAM_MOVE_STARTED_EXITING_C_UP;
|
||||
transition_next_state(c, 15);
|
||||
} else {
|
||||
#ifdef BETTERCAMERA
|
||||
newcam_init_settings();
|
||||
if (newcam_active == 1) {
|
||||
// Retrieve the previous position and focus
|
||||
|
@ -2712,11 +2710,6 @@ s32 exit_c_up(struct Camera *c) {
|
|||
gCameraMovementFlags &= ~(CAM_MOVE_STARTED_EXITING_C_UP | CAM_MOVE_C_UP_MODE);
|
||||
vec3f_set_dist_and_angle(checkFoc, c->pos, curDist, curPitch, curYaw + checkYaw);
|
||||
}
|
||||
#else
|
||||
// Let the next camera mode handle it
|
||||
gCameraMovementFlags &= ~(CAM_MOVE_STARTED_EXITING_C_UP | CAM_MOVE_C_UP_MODE);
|
||||
vec3f_set_dist_and_angle(checkFoc, c->pos, curDist, curPitch, curYaw + checkYaw);
|
||||
#endif
|
||||
}
|
||||
play_sound_cbutton_down();
|
||||
}
|
||||
|
@ -2936,9 +2929,7 @@ static bool allow_romhack_camera_override_mode(u8 mode) {
|
|||
case CAMERA_MODE_WATER_SURFACE:
|
||||
case CAMERA_MODE_INSIDE_CANNON:
|
||||
case CAMERA_MODE_BOSS_FIGHT:
|
||||
#ifdef BETTERCAMERA
|
||||
case CAMERA_MODE_NEWCAM:
|
||||
#endif
|
||||
case CAMERA_MODE_ROM_HACK:
|
||||
return false;
|
||||
default:
|
||||
|
@ -2970,16 +2961,12 @@ void set_camera_mode(struct Camera *c, s16 mode, s16 frames) {
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
if (mode == CAMERA_MODE_C_UP && gLakituState.mode == CAMERA_MODE_NEWCAM) {
|
||||
newcam_init_settings_override(false);
|
||||
}
|
||||
|
||||
if (mode != CAMERA_MODE_NEWCAM && gLakituState.mode != CAMERA_MODE_NEWCAM)
|
||||
{
|
||||
#endif
|
||||
if (mode == CAMERA_MODE_WATER_SURFACE && gCurrLevelArea == AREA_TTM_OUTSIDE) {
|
||||
} else {
|
||||
if (mode != CAMERA_MODE_NEWCAM && gLakituState.mode != CAMERA_MODE_NEWCAM) {
|
||||
if (mode != CAMERA_MODE_WATER_SURFACE && gCurrLevelArea != AREA_TTM_OUTSIDE) {
|
||||
// Clear movement flags that would affect the transition
|
||||
gCameraMovementFlags &= (u16)~(CAM_MOVE_RESTRICT | CAM_MOVE_ROTATE);
|
||||
gCameraMovementFlags |= CAM_MOVING_INTO_MODE;
|
||||
|
@ -3023,9 +3010,7 @@ void set_camera_mode(struct Camera *c, s16 mode, s16 frames) {
|
|||
vec3f_get_dist_and_angle(start->focus, start->pos, &start->dist, &start->pitch, &start->yaw);
|
||||
vec3f_get_dist_and_angle(end->focus, end->pos, &end->dist, &end->pitch, &end->yaw);
|
||||
}
|
||||
#ifdef BETTERCAMERA
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3041,11 +3026,7 @@ void update_lakitu(struct Camera *c) {
|
|||
s16 newYaw;
|
||||
UNUSED u8 unused1[8];
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
u8 allowPauseCheck = (c->mode != CAMERA_MODE_NEWCAM);
|
||||
#else
|
||||
u8 allowPauseCheck = TRUE;
|
||||
#endif
|
||||
|
||||
if (allowPauseCheck && (gCameraMovementFlags & CAM_MOVE_PAUSE_SCREEN)) {
|
||||
} else {
|
||||
|
@ -3117,12 +3098,7 @@ void update_lakitu(struct Camera *c) {
|
|||
gLakituState.roll += sHandheldShakeRoll;
|
||||
gLakituState.roll += gLakituState.keyDanceRoll;
|
||||
|
||||
if (c->mode != CAMERA_MODE_C_UP && c->cutscene == 0
|
||||
#ifdef BETTERCAMERA
|
||||
&& c->mode != CAMERA_MODE_NEWCAM
|
||||
#endif
|
||||
)
|
||||
{
|
||||
if (c->mode != CAMERA_MODE_C_UP && c->cutscene == 0 && c->mode != CAMERA_MODE_NEWCAM) {
|
||||
gCheckingSurfaceCollisionsForCamera = TRUE;
|
||||
distToFloor = find_floor(gLakituState.pos[0],
|
||||
gLakituState.pos[1] + 20.0f,
|
||||
|
@ -3179,11 +3155,7 @@ void update_camera(struct Camera *c) {
|
|||
|
||||
if (c->cutscene == 0) {
|
||||
// Only process R_TRIG if 'fixed' is not selected in the menu
|
||||
if (cam_select_alt_mode(0) == CAM_SELECTION_MARIO
|
||||
#ifdef BETTERCAMERA
|
||||
&& c->mode != CAMERA_MODE_NEWCAM
|
||||
#endif
|
||||
) {
|
||||
if (cam_select_alt_mode(0) == CAM_SELECTION_MARIO && c->mode != CAMERA_MODE_NEWCAM) {
|
||||
if ((sCurrPlayMode != PLAY_MODE_PAUSED) && gPlayer1Controller->buttonPressed & R_TRIG) {
|
||||
bool returnValue = true;
|
||||
if (set_cam_angle(0) == CAM_ANGLE_LAKITU) {
|
||||
|
@ -3228,22 +3200,16 @@ void update_camera(struct Camera *c) {
|
|||
c->mode = gLakituState.mode;
|
||||
c->defMode = gLakituState.defMode;
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
if (c->mode != CAMERA_MODE_NEWCAM)
|
||||
{
|
||||
#endif
|
||||
if (c->mode != CAMERA_MODE_NEWCAM) {
|
||||
camera_course_processing(c);
|
||||
stub_camera_3(c);
|
||||
sCButtonsPressed = find_c_buttons_pressed(sCButtonsPressed, gPlayer1Controller->buttonPressed,gPlayer1Controller->buttonDown);
|
||||
#ifdef BETTERCAMERA
|
||||
}
|
||||
|
||||
if (gMarioStates[0].action == ACT_SHOT_FROM_CANNON && newcam_active)
|
||||
{
|
||||
if (gMarioStates[0].action == ACT_SHOT_FROM_CANNON && newcam_active) {
|
||||
gMarioStates[0].area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (c->cutscene != 0) {
|
||||
sYawSpeed = 0;
|
||||
|
@ -3281,11 +3247,9 @@ void update_camera(struct Camera *c) {
|
|||
mode_cannon_camera(c);
|
||||
break;
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
case CAMERA_MODE_NEWCAM:
|
||||
newcam_loop(c);
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
mode_mario_camera(c);
|
||||
|
@ -3351,11 +3315,9 @@ void update_camera(struct Camera *c) {
|
|||
mode_rom_hack_camera(c);
|
||||
break;
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
case CAMERA_MODE_NEWCAM:
|
||||
newcam_loop(c);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3662,10 +3624,8 @@ void init_camera(struct Camera *c) {
|
|||
c->yaw = gLakituState.yaw;
|
||||
c->nextYaw = gLakituState.yaw;
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
newcam_init(c, 0);
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5784,10 +5744,10 @@ void set_camera_mode_8_directions(struct Camera *c) {
|
|||
s8DirModeBaseYaw = 0;
|
||||
s8DirModeYawOffset = 0;
|
||||
}
|
||||
#ifdef BETTERCAMERA
|
||||
if (newcam_active == 1)
|
||||
|
||||
if (newcam_active == 1) {
|
||||
c->mode = CAMERA_MODE_NEWCAM;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5808,10 +5768,10 @@ void set_camera_mode_close_cam(u8 *mode) {
|
|||
sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;
|
||||
*mode = CAMERA_MODE_CLOSE;
|
||||
}
|
||||
#ifdef BETTERCAMERA
|
||||
if (newcam_active == 1)
|
||||
|
||||
if (newcam_active == 1) {
|
||||
*mode = CAMERA_MODE_NEWCAM;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5837,10 +5797,10 @@ void set_camera_mode_radial(struct Camera *c, s16 transitionTime) {
|
|||
}
|
||||
sModeOffsetYaw = 0;
|
||||
}
|
||||
#ifdef BETTERCAMERA
|
||||
if (newcam_active == 1)
|
||||
|
||||
if (newcam_active == 1) {
|
||||
c->mode = CAMERA_MODE_NEWCAM;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7297,9 +7257,7 @@ void update_camera_yaw(struct Camera *c) {
|
|||
if (!c) { return; }
|
||||
c->nextYaw = calculate_yaw(c->focus, c->pos);
|
||||
c->yaw = c->nextYaw;
|
||||
#ifdef BETTERCAMERA
|
||||
newcam_apply_outside_values(c,0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void cutscene_reset_spline(void) {
|
||||
|
@ -9694,14 +9652,9 @@ BAD_RETURN(s32) cutscene_non_painting_end(struct Camera *c) {
|
|||
|
||||
if (c->defMode == CAMERA_MODE_CLOSE) {
|
||||
c->mode = CAMERA_MODE_CLOSE;
|
||||
} else
|
||||
#ifdef BETTERCAMERA
|
||||
if (c->defMode == CAMERA_MODE_NEWCAM) {
|
||||
} else if (c->defMode == CAMERA_MODE_NEWCAM) {
|
||||
c->mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
} else {
|
||||
c->mode = CAMERA_MODE_FREE_ROAM;
|
||||
}
|
||||
|
||||
|
@ -10484,9 +10437,7 @@ BAD_RETURN(s32) cutscene_sliding_doors_follow_mario(struct Camera *c) {
|
|||
BAD_RETURN(s32) cutscene_sliding_doors_open(struct Camera *c) {
|
||||
UNUSED u32 pad[2];
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
newcam_apply_outside_values(c,1);
|
||||
#endif
|
||||
reset_pan_distance(c);
|
||||
cutscene_event(cutscene_sliding_doors_open_start, c, 0, 8);
|
||||
cutscene_event(cutscene_sliding_doors_open_set_cvars, c, 8, 8);
|
||||
|
@ -10699,12 +10650,11 @@ BAD_RETURN(s32) cutscene_unused_exit_focus_mario(struct Camera *c) {
|
|||
*/
|
||||
BAD_RETURN(s32) cutscene_exit_painting_end(struct Camera *c) {
|
||||
if (!c) { return; }
|
||||
#ifdef BETTERCAMERA
|
||||
if (newcam_active == 1)
|
||||
if (newcam_active == 1) {
|
||||
c->mode = CAMERA_MODE_NEWCAM;
|
||||
else
|
||||
#endif
|
||||
} else {
|
||||
c->mode = CAMERA_MODE_CLOSE;
|
||||
}
|
||||
c->cutscene = 0;
|
||||
gCutsceneTimer = CUTSCENE_STOP;
|
||||
sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;
|
||||
|
@ -10874,24 +10824,13 @@ BAD_RETURN(s32) cutscene_door_follow_mario(struct Camera *c) {
|
|||
*/
|
||||
BAD_RETURN(s32) cutscene_door_end(struct Camera *c) {
|
||||
if (!c) { return; }
|
||||
#ifndef BETTERCAMERA
|
||||
if (c->defMode == CAMERA_MODE_FREE_ROAM) {
|
||||
c->mode = CAMERA_MODE_FREE_ROAM;
|
||||
} else {
|
||||
c->mode = CAMERA_MODE_CLOSE;
|
||||
}
|
||||
#else
|
||||
if (c->defMode == CAMERA_MODE_CLOSE) {
|
||||
c->mode = CAMERA_MODE_CLOSE;
|
||||
} else
|
||||
if (c->defMode == CAMERA_MODE_NEWCAM) {
|
||||
} else if (c->defMode == CAMERA_MODE_NEWCAM) {
|
||||
c->mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
c->mode = CAMERA_MODE_FREE_ROAM;
|
||||
}
|
||||
#endif
|
||||
|
||||
c->cutscene = 0;
|
||||
gCutsceneTimer = CUTSCENE_STOP;
|
||||
|
|
|
@ -123,9 +123,7 @@ extern u8 gOverrideAllowToxicGasCamera;
|
|||
#define CAMERA_MODE_8_DIRECTIONS 0x0E // AKA Parallel Camera, Bowser Courses & Rainbow Ride
|
||||
#define CAMERA_MODE_FREE_ROAM 0x10
|
||||
#define CAMERA_MODE_SPIRAL_STAIRS 0x11
|
||||
#ifdef BETTERCAMERA
|
||||
#define CAMERA_MODE_NEWCAM 0x12
|
||||
#endif
|
||||
#define CAMERA_MODE_ROM_HACK 0x13
|
||||
|
||||
#define CAM_MOVE_RETURN_TO_MIDDLE 0x0001
|
||||
|
|
|
@ -24,9 +24,7 @@
|
|||
#include "src/pc/djui/djui_panel_pause.h"
|
||||
#include "rumble_init.h"
|
||||
#include <prevent_bss_reordering.h>
|
||||
#ifdef BETTERCAMERA
|
||||
#include "bettercamera.h"
|
||||
#endif
|
||||
#include "hud.h"
|
||||
|
||||
// FIXME: I'm not sure all of these variables belong in this file, but I don't
|
||||
|
@ -545,10 +543,8 @@ void init_controllers(void) {
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
// load bettercam settings from the config file
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void setup_game_memory(void) {
|
||||
|
|
|
@ -36,9 +36,6 @@
|
|||
#include "hud.h"
|
||||
#include "pc/lua/smlua_hooks.h"
|
||||
#include "game/camera.h"
|
||||
#ifdef BETTERCAMERA
|
||||
#include "bettercamera.h"
|
||||
#endif
|
||||
#include "level_info.h"
|
||||
|
||||
u16 gDialogColorFadeTimer;
|
||||
|
@ -142,7 +139,7 @@ u8 gMenuHoldKeyIndex = 0;
|
|||
u8 gMenuHoldKeyTimer = 0;
|
||||
s32 gDialogResponse = 0;
|
||||
|
||||
#if !defined(EXTERNAL_DATA) && (defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU))
|
||||
#if (defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_EU))
|
||||
#ifdef VERSION_EU
|
||||
#define CHCACHE_BUFLEN (8 * 8) // EU only converts 8x8
|
||||
#else
|
||||
|
@ -316,16 +313,12 @@ static inline void alloc_ia8_text_from_i1(u8 *out, u16 *in, s16 width, s16 heigh
|
|||
}
|
||||
|
||||
static inline u8 *convert_ia8_char(u8 c, u16 *tex, s16 w, s16 h) {
|
||||
#ifdef EXTERNAL_DATA
|
||||
return (u8 *)tex; // the data's just a name
|
||||
#else
|
||||
if (!tex) return NULL;
|
||||
if (!charCache[c].used) {
|
||||
charCache[c].used = 1;
|
||||
alloc_ia8_text_from_i1(charCache[c].data, tex, w, h);
|
||||
}
|
||||
return charCache[c].data;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -377,16 +370,12 @@ static void alloc_ia4_tex_from_i1(u8 *out, u8 *in, s16 width, s16 height) {
|
|||
}
|
||||
|
||||
static u8 *convert_ia4_char(u8 c, u8 *tex, s16 w, s16 h) {
|
||||
#ifdef EXTERNAL_DATA
|
||||
return tex; // the data's just a name
|
||||
#else
|
||||
if (!tex) return NULL;
|
||||
if (!charCache[c].used) {
|
||||
charCache[c].used = 1;
|
||||
alloc_ia4_tex_from_i1(charCache[c].data, tex, w, h);
|
||||
}
|
||||
return charCache[c].data;
|
||||
#endif
|
||||
}
|
||||
|
||||
void render_generic_char_at_pos(s16 xPos, s16 yPos, u8 c) {
|
||||
|
|
|
@ -43,9 +43,7 @@
|
|||
#include "pc/network/network.h"
|
||||
#include "pc/lua/smlua.h"
|
||||
#include "pc/network/socket/socket.h"
|
||||
#ifdef BETTERCAMERA
|
||||
#include "bettercamera.h"
|
||||
#endif
|
||||
|
||||
#define MAX_HANG_PREVENTION 64
|
||||
|
||||
|
@ -1571,14 +1569,11 @@ void update_mario_joystick_inputs(struct MarioState *m) {
|
|||
if ((sCurrPlayMode == PLAY_MODE_PAUSED) || m->playerIndex != 0) { return; }
|
||||
|
||||
if (m->intendedMag > 0.0f) {
|
||||
#ifndef BETTERCAMERA
|
||||
if (gLakituState.mode != CAMERA_MODE_NEWCAM) {
|
||||
m->intendedYaw = atan2s(-controller->stickY, controller->stickX) + m->area->camera->yaw;
|
||||
#else
|
||||
if (gLakituState.mode != CAMERA_MODE_NEWCAM)
|
||||
m->intendedYaw = atan2s(-controller->stickY, controller->stickX) + m->area->camera->yaw;
|
||||
else
|
||||
m->intendedYaw = atan2s(-controller->stickY, controller->stickX)-newcam_yaw+0x4000;
|
||||
#endif
|
||||
} else {
|
||||
m->intendedYaw = atan2s(-controller->stickY, controller->stickX) - newcam_yaw + 0x4000;
|
||||
}
|
||||
m->input |= INPUT_NONZERO_ANALOG;
|
||||
} else {
|
||||
m->intendedYaw = m->faceAngle[1];
|
||||
|
|
|
@ -13,9 +13,7 @@
|
|||
#include "mario_step.h"
|
||||
#include "save_file.h"
|
||||
#include "rumble_init.h"
|
||||
#ifdef BETTERCAMERA
|
||||
#include "bettercamera.h"
|
||||
#endif
|
||||
#include "behavior_table.h"
|
||||
#include "object_helpers.h"
|
||||
#include "pc/debuglog.h"
|
||||
|
@ -1769,19 +1767,14 @@ s32 act_shot_from_cannon(struct MarioState *m) {
|
|||
case AIR_STEP_LANDED:
|
||||
set_mario_action(m, ACT_DIVE_SLIDE, 0);
|
||||
m->faceAngle[0] = 0;
|
||||
#ifndef BETTERCAMERA
|
||||
if (allowCameraChange) { set_camera_mode(m->area->camera, m->area->camera->defMode, 1); }
|
||||
#else
|
||||
if (allowCameraChange) {
|
||||
if (newcam_active == 0)
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
queue_rumble_data_mario(m, 5, 80);
|
||||
break;
|
||||
|
||||
|
@ -1795,19 +1788,14 @@ s32 act_shot_from_cannon(struct MarioState *m) {
|
|||
|
||||
set_mario_particle_flags(m, PARTICLE_VERTICAL_STAR, FALSE);
|
||||
set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);
|
||||
#ifndef BETTERCAMERA
|
||||
if (allowCameraChange) { set_camera_mode(m->area->camera, m->area->camera->defMode, 1); }
|
||||
#else
|
||||
if (allowCameraChange) {
|
||||
if (newcam_active == 0)
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case AIR_STEP_HIT_LAVA_WALL:
|
||||
|
@ -1838,17 +1826,12 @@ s32 act_flying(struct MarioState *m) {
|
|||
if (m->input & INPUT_Z_PRESSED) {
|
||||
if (m->area->camera->mode == CAMERA_MODE_BEHIND_MARIO) {
|
||||
if (m->playerIndex == 0) {
|
||||
#ifndef BETTERCAMERA
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
#else
|
||||
if (newcam_active == 0)
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return set_mario_action(m, ACT_GROUND_POUND, 1);
|
||||
|
@ -1857,17 +1840,12 @@ s32 act_flying(struct MarioState *m) {
|
|||
if (!(m->flags & MARIO_WING_CAP)) {
|
||||
if (m->area->camera->mode == CAMERA_MODE_BEHIND_MARIO) {
|
||||
if (m->playerIndex == 0) {
|
||||
#ifndef BETTERCAMERA
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
#else
|
||||
if (newcam_active == 0)
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return set_mario_action(m, ACT_FREEFALL, 0);
|
||||
|
@ -1875,19 +1853,15 @@ s32 act_flying(struct MarioState *m) {
|
|||
|
||||
if (m->area->camera->mode != CAMERA_MODE_BEHIND_MARIO) {
|
||||
if (m->playerIndex == 0) {
|
||||
#ifndef BETTERCAMERA
|
||||
set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);
|
||||
#else
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);
|
||||
// note: EX sets it to the following line instead, but I have
|
||||
// no idea why... possibly copy/paste error?
|
||||
//set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
// set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1932,17 +1906,12 @@ s32 act_flying(struct MarioState *m) {
|
|||
m->faceAngle[0] = 0;
|
||||
|
||||
if (m->playerIndex == 0) {
|
||||
#ifndef BETTERCAMERA
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
#else
|
||||
if (newcam_active == 0)
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
queue_rumble_data_mario(m, 5, 60);
|
||||
break;
|
||||
|
@ -1964,17 +1933,12 @@ s32 act_flying(struct MarioState *m) {
|
|||
set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);
|
||||
|
||||
if (m->playerIndex == 0) {
|
||||
#ifndef BETTERCAMERA
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
#else
|
||||
if (newcam_active == 0)
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
if (m->actionTimer++ == 0) {
|
||||
|
@ -2061,17 +2025,12 @@ s32 act_flying_triple_jump(struct MarioState *m) {
|
|||
#ifndef VERSION_JP
|
||||
if (m->input & (INPUT_B_PRESSED | INPUT_Z_PRESSED)) {
|
||||
if (m->playerIndex == 0 && m->area->camera->mode == CAMERA_MODE_BEHIND_MARIO) {
|
||||
#ifndef BETTERCAMERA
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
#else
|
||||
if (newcam_active == 0)
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (m->input & INPUT_B_PRESSED) {
|
||||
return set_mario_action(m, ACT_DIVE, 0);
|
||||
|
@ -2110,17 +2069,12 @@ s32 act_flying_triple_jump(struct MarioState *m) {
|
|||
|
||||
if (m->vel[1] < 4.0f) {
|
||||
if (m->playerIndex == 0 && m->area->camera->mode != CAMERA_MODE_BEHIND_MARIO) {
|
||||
#ifndef BETTERCAMERA
|
||||
set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);
|
||||
#else
|
||||
if (newcam_active == 0)
|
||||
if (newcam_active == 0) {
|
||||
set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m->area->camera->mode = CAMERA_MODE_NEWCAM;
|
||||
gLakituState.mode = CAMERA_MODE_NEWCAM;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (m->forwardVel < 32.0f) {
|
||||
|
@ -2130,12 +2084,6 @@ s32 act_flying_triple_jump(struct MarioState *m) {
|
|||
set_mario_action(m, ACT_FLYING, 1);
|
||||
}
|
||||
|
||||
#ifndef BETTERCAMERA
|
||||
if (m->playerIndex == 0 && m->actionTimer++ == 10 && m->area->camera->mode != CAMERA_MODE_BEHIND_MARIO) {
|
||||
set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
update_air_without_turn(m);
|
||||
|
||||
switch (perform_air_step(m, 0)) {
|
||||
|
|
|
@ -1153,7 +1153,7 @@ static s32 obj_is_in_view(struct GraphNodeObject *node, Mat4 matrix) {
|
|||
// visibly pop in or out at the edge of the screen.
|
||||
//
|
||||
// Half of the fov in in-game angle units instead of degrees.
|
||||
s16 halfFov = (gOverrideFOV != 0 ? gOverrideFOV : gCurGraphNodeCamFrustum->fov / 2.0f + 1.0f) * 32768.0f / 180.0f + 0.5f;
|
||||
s16 halfFov = (not_zero(gCurGraphNodeCamFrustum->fov, gOverrideFOV) / 2.0f + 1.0f) * 32768.0f / 180.0f + 0.5f;
|
||||
|
||||
f32 divisor = coss(halfFov);
|
||||
if (divisor == 0) { divisor = 1; }
|
||||
|
|
|
@ -103,11 +103,7 @@ unsigned int configKeyNextPage[MAX_BINDS] = { 0x0018, VK_INVALID, VK_INVALID
|
|||
unsigned int configKeyDisconnect[MAX_BINDS] = { 0x003C, VK_INVALID, VK_INVALID };
|
||||
unsigned int configStickDeadzone = 16; // 16*DEADZONE_STEP=4960 (the original default deadzone)
|
||||
unsigned int configRumbleStrength = 50;
|
||||
#ifdef EXTERNAL_DATA
|
||||
bool configPrecacheRes = false;
|
||||
#endif
|
||||
#ifdef BETTERCAMERA
|
||||
// BetterCamera settings
|
||||
// better camera settings
|
||||
unsigned int configCameraXSens = 10;
|
||||
unsigned int configCameraYSens = 10;
|
||||
unsigned int configCameraAggr = 0;
|
||||
|
@ -118,7 +114,6 @@ bool configCameraInvertY = true;
|
|||
bool configEnableCamera = false;
|
||||
bool configCameraAnalog = false;
|
||||
bool configCameraMouse = false;
|
||||
#endif
|
||||
bool configSkipIntro = 0;
|
||||
bool configEnableCheats = 0;
|
||||
bool configBubbleDeath = true;
|
||||
|
@ -208,10 +203,6 @@ static const struct ConfigOption options[] = {
|
|||
{.name = "key_disconnect", .type = CONFIG_TYPE_BIND, .uintValue = configKeyDisconnect},
|
||||
{.name = "stick_deadzone", .type = CONFIG_TYPE_UINT, .uintValue = &configStickDeadzone},
|
||||
{.name = "rumble_strength", .type = CONFIG_TYPE_UINT, .uintValue = &configRumbleStrength},
|
||||
#ifdef EXTERNAL_DATA
|
||||
{.name = "precache", .type = CONFIG_TYPE_BOOL, .boolValue = &configPrecacheRes},
|
||||
#endif
|
||||
#ifdef BETTERCAMERA
|
||||
{.name = "bettercam_enable", .type = CONFIG_TYPE_BOOL, .boolValue = &configEnableCamera},
|
||||
{.name = "bettercam_analog", .type = CONFIG_TYPE_BOOL, .boolValue = &configCameraAnalog},
|
||||
{.name = "bettercam_mouse_look", .type = CONFIG_TYPE_BOOL, .boolValue = &configCameraMouse},
|
||||
|
@ -222,7 +213,6 @@ static const struct ConfigOption options[] = {
|
|||
{.name = "bettercam_aggression", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraAggr},
|
||||
{.name = "bettercam_pan_level", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraPan},
|
||||
{.name = "bettercam_degrade", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraDegrade},
|
||||
#endif
|
||||
{.name = "skip_intro", .type = CONFIG_TYPE_BOOL, .boolValue = &configSkipIntro},
|
||||
{.name = "enable_cheats", .type = CONFIG_TYPE_BOOL, .boolValue = &configEnableCheats},
|
||||
// debug
|
||||
|
|
|
@ -64,10 +64,6 @@ extern unsigned int configStickDeadzone;
|
|||
extern unsigned int configRumbleStrength;
|
||||
extern unsigned int configGamepadNumber;
|
||||
extern bool configBackgroundGamepad;
|
||||
#ifdef EXTERNAL_DATA
|
||||
extern bool configPrecacheRes;
|
||||
#endif
|
||||
#ifdef BETTERCAMERA
|
||||
extern unsigned int configCameraXSens;
|
||||
extern unsigned int configCameraYSens;
|
||||
extern unsigned int configCameraAggr;
|
||||
|
@ -78,7 +74,6 @@ extern bool configCameraInvertY;
|
|||
extern bool configEnableCamera;
|
||||
extern bool configCameraMouse;
|
||||
extern bool configCameraAnalog;
|
||||
#endif
|
||||
extern bool configHUD;
|
||||
extern bool configSkipIntro;
|
||||
extern bool configEnableCheats;
|
||||
|
|
|
@ -42,9 +42,7 @@ enum {
|
|||
MAX_AXES,
|
||||
};
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
extern u8 newcam_mouse;
|
||||
#endif
|
||||
|
||||
static bool init_ok;
|
||||
static SDL_Joystick *sdl_joy;
|
||||
|
@ -127,11 +125,9 @@ static void controller_sdl_init(void) {
|
|||
joy_axis_binds[i] = -1;
|
||||
}
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
if (newcam_mouse == 1)
|
||||
SDL_WM_GrabInput(SDL_GRAB_ON);
|
||||
SDL_GetRelativeMouseState(&mouse_x, &mouse_y);
|
||||
#endif
|
||||
|
||||
controller_sdl_bind();
|
||||
|
||||
|
@ -154,7 +150,6 @@ static inline int16_t get_axis(const int i) {
|
|||
static void controller_sdl_read(OSContPad *pad) {
|
||||
if (!init_ok) return;
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
if (newcam_mouse == 1 && sCurrPlayMode != 2)
|
||||
SDL_WM_GrabInput(SDL_GRAB_ON);
|
||||
else
|
||||
|
@ -171,7 +166,6 @@ static void controller_sdl_read(OSContPad *pad) {
|
|||
// remember buttons that changed from 0 to 1
|
||||
last_mouse = (mouse_buttons ^ mouse) & mouse;
|
||||
mouse_buttons = mouse;
|
||||
#endif
|
||||
|
||||
if (!sdl_joy) return;
|
||||
|
||||
|
|
|
@ -35,9 +35,7 @@
|
|||
#define MAX_JOYBUTTONS 32 // arbitrary; includes virtual keys for triggers
|
||||
#define AXIS_THRESHOLD (30 * 256)
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
extern u8 newcam_mouse;
|
||||
#endif
|
||||
|
||||
static bool init_ok = false;
|
||||
static bool haptics_enabled = false;
|
||||
|
@ -128,11 +126,9 @@ static void controller_sdl_init(void) {
|
|||
free(gcdata);
|
||||
}
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
if (newcam_mouse == 1)
|
||||
SDL_SetRelativeMouseMode(SDL_TRUE);
|
||||
SDL_GetRelativeMouseState(&mouse_x, &mouse_y);
|
||||
#endif
|
||||
|
||||
controller_sdl_bind();
|
||||
|
||||
|
@ -179,7 +175,6 @@ static void controller_sdl_read(OSContPad *pad) {
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef BETTERCAMERA
|
||||
if (!gDjuiHudLockMouse) {
|
||||
if (newcam_mouse == 1 && (!is_game_paused() || sCurrPlayMode != 2) && !gDjuiInMainMenu) {
|
||||
SDL_SetRelativeMouseMode(SDL_TRUE);
|
||||
|
@ -200,22 +195,9 @@ static void controller_sdl_read(OSContPad *pad) {
|
|||
// remember buttons that changed from 0 to 1
|
||||
last_mouse = (mouse_buttons ^ mouse) & mouse;
|
||||
mouse_buttons = mouse;
|
||||
#endif
|
||||
|
||||
if (!ignore_lock && (!is_game_paused() || sCurrPlayMode != 2) && !gDjuiInMainMenu) {
|
||||
SDL_SetRelativeMouseMode(gDjuiHudLockMouse ? SDL_TRUE : SDL_FALSE);
|
||||
|
||||
#ifndef BETTERCAMERA
|
||||
u32 mouse = SDL_GetRelativeMouseState(&mouse_x, &mouse_y);
|
||||
|
||||
if (!gInteractableOverridePad) {
|
||||
for (u32 i = 0; i < num_mouse_binds; ++i)
|
||||
if (mouse & SDL_BUTTON(mouse_binds[i][0]))
|
||||
pad->button |= mouse_binds[i][1];
|
||||
}
|
||||
// remember buttons that changed from 0 to 1
|
||||
last_mouse = (mouse_buttons ^ mouse) & mouse;
|
||||
mouse_buttons = mouse;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (configBackgroundGamepad != sBackgroundGamepad) {
|
||||
|
|
|
@ -15,9 +15,7 @@ void djui_panel_camera_create(struct DjuiBase* caller) {
|
|||
{
|
||||
djui_checkbox_create(body, DLANG(CAMERA, FREE_CAMERA), &configEnableCamera, djui_panel_camera_value_changed);
|
||||
djui_checkbox_create(body, DLANG(CAMERA, ANALOG_CAMERA), &configCameraAnalog, djui_panel_camera_value_changed);
|
||||
#ifdef BETTERCAMERA
|
||||
djui_checkbox_create(body, DLANG(CAMERA, MOUSE_LOOK), &configCameraMouse, djui_panel_camera_value_changed);
|
||||
#endif
|
||||
djui_checkbox_create(body, DLANG(CAMERA, INVERT_X), &configCameraInvertX, djui_panel_camera_value_changed);
|
||||
djui_checkbox_create(body, DLANG(CAMERA, INVERT_Y), &configCameraInvertY, djui_panel_camera_value_changed);
|
||||
djui_slider_create(body, DLANG(CAMERA, X_SENSITIVITY), &configCameraXSens, 1, 100, djui_panel_camera_value_changed);
|
||||
|
|
|
@ -64,10 +64,6 @@ void djui_panel_display_create(struct DjuiBase* caller) {
|
|||
|
||||
djui_checkbox_create(body, DLANG(DISPLAY, FORCE_4BY3), &configForce4By3, djui_panel_display_apply);
|
||||
|
||||
#ifdef EXTERNAL_DATA
|
||||
djui_checkbox_create(body, DLANG(DISPLAY, PRELOAD_TEXTURES), &configPrecacheRes, NULL);
|
||||
#endif
|
||||
|
||||
djui_checkbox_create(body, DLANG(DISPLAY, VSYNC), &configWindow.vsync, djui_panel_display_apply);
|
||||
djui_checkbox_create(body, DLANG(DISPLAY, UNCAPPED_FRAMERATE), &configUncappedFramerate, djui_panel_display_uncapped_change);
|
||||
|
||||
|
|
|
@ -214,15 +214,6 @@ static void gfx_update_loaded_texture(uint8_t tile_number, uint32_t size_bytes,
|
|||
void ext_gfx_run_dl(Gfx* cmd);
|
||||
//////////////////////////////////
|
||||
|
||||
#ifdef EXTERNAL_DATA
|
||||
static inline size_t string_hash(const uint8_t *str) {
|
||||
size_t h = 0;
|
||||
for (const uint8_t *p = str; *p; p++)
|
||||
h = 31 * h + *p;
|
||||
return h;
|
||||
}
|
||||
#endif
|
||||
|
||||
static unsigned long get_time(void) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -370,13 +361,8 @@ void gfx_texture_cache_clear(void) {
|
|||
}
|
||||
|
||||
static bool gfx_texture_cache_lookup(int tile, struct TextureHashmapNode **n, const uint8_t *orig_addr, uint32_t fmt, uint32_t siz) {
|
||||
#ifdef EXTERNAL_DATA // hash and compare the data (i.e. the texture name) itself
|
||||
size_t hash = string_hash(orig_addr);
|
||||
#define CMPADDR(x, y) (x && !sys_strcasecmp((const char *)x, (const char *)y))
|
||||
#else // hash and compare the address
|
||||
size_t hash = (uintptr_t)orig_addr;
|
||||
#define CMPADDR(x, y) x == y
|
||||
#endif
|
||||
|
||||
hash = (hash >> HASH_SHIFT) & HASH_MASK;
|
||||
|
||||
|
@ -595,102 +581,6 @@ static void import_texture_ci8(int tile) {
|
|||
gfx_rapi->upload_texture(rgba32_buf, width, height);
|
||||
}
|
||||
|
||||
|
||||
#ifdef EXTERNAL_DATA
|
||||
|
||||
static inline void load_texture(const char *fullpath) {
|
||||
int w, h;
|
||||
u64 imgsize = 0;
|
||||
|
||||
u8 *imgdata = fs_load_file(fullpath, (uint64_t*) &imgsize);
|
||||
if (imgdata) {
|
||||
// TODO: implement stbi_callbacks or some shit instead of loading the whole texture
|
||||
u8 *data = stbi_load_from_memory(imgdata, imgsize, &w, &h, NULL, 4);
|
||||
free(imgdata);
|
||||
if (data) {
|
||||
gfx_rapi->upload_texture(data, w, h);
|
||||
stbi_image_free(data); // don't need this anymore
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(stderr, "Could not load texture: `%s`\n", fullpath);
|
||||
// replace with missing texture
|
||||
gfx_rapi->upload_texture(missing_texture, MISSING_W, MISSING_H);
|
||||
}
|
||||
|
||||
|
||||
// this is taken straight from n64graphics
|
||||
static bool texname_to_texformat(const char *name, u8 *fmt, u8 *siz) {
|
||||
static const struct {
|
||||
const char *name;
|
||||
const u8 format;
|
||||
const u8 size;
|
||||
} fmt_table[] = {
|
||||
{ "rgba16", G_IM_FMT_RGBA, G_IM_SIZ_16b },
|
||||
{ "rgba32", G_IM_FMT_RGBA, G_IM_SIZ_32b },
|
||||
{ "ia1", G_IM_FMT_IA, G_IM_SIZ_8b }, // uhh
|
||||
{ "ia4", G_IM_FMT_IA, G_IM_SIZ_4b },
|
||||
{ "ia8", G_IM_FMT_IA, G_IM_SIZ_8b },
|
||||
{ "ia16", G_IM_FMT_IA, G_IM_SIZ_16b },
|
||||
{ "i4", G_IM_FMT_I, G_IM_SIZ_4b },
|
||||
{ "i8", G_IM_FMT_I, G_IM_SIZ_8b },
|
||||
{ "ci8", G_IM_FMT_I, G_IM_SIZ_8b },
|
||||
{ "ci16", G_IM_FMT_I, G_IM_SIZ_16b },
|
||||
};
|
||||
|
||||
char *fstr = strrchr(name, '.');
|
||||
if (!fstr) return false; // no format string?
|
||||
fstr++;
|
||||
|
||||
for (unsigned i = 0; i < sizeof(fmt_table) / sizeof(fmt_table[0]); ++i) {
|
||||
if (!sys_strcasecmp(fstr, fmt_table[i].name)) {
|
||||
*fmt = fmt_table[i].format;
|
||||
*siz = fmt_table[i].size;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// calls import_texture() on every texture in the res folder
|
||||
// we can get the format and size from the texture files
|
||||
// and then cache them using gfx_texture_cache_lookup
|
||||
static bool preload_texture(UNUSED void *user, const char *path) {
|
||||
// strip off the extension
|
||||
char texname[SYS_MAX_PATH];
|
||||
strncpy(texname, path, sizeof(texname));
|
||||
texname[sizeof(texname)-1] = 0;
|
||||
char *dot = strrchr(texname, '.');
|
||||
if (dot) *dot = 0;
|
||||
|
||||
// get the format and size from filename
|
||||
u8 fmt, siz;
|
||||
if (!texname_to_texformat(texname, &fmt, &siz)) {
|
||||
fprintf(stderr, "Unknown texture format: `%s`, skipping\n", texname);
|
||||
return true; // just skip it, might be a stray skybox or something
|
||||
}
|
||||
|
||||
char *actualname = texname;
|
||||
// strip off the prefix // TODO: make a fs_ function for this shit
|
||||
if (!strncmp(FS_TEXTUREDIR "/", actualname, 4)) actualname += 4;
|
||||
// this will be stored in the hashtable, so make a copy
|
||||
actualname = sys_strdup(actualname);
|
||||
assert(actualname);
|
||||
|
||||
struct TextureHashmapNode *n;
|
||||
if (!gfx_texture_cache_lookup(0, &n, (unsigned char*)actualname, fmt, siz)) {
|
||||
//fprintf(stdout, "Loading new texture: `%s.`\n", actualname);
|
||||
load_texture(path); // new texture, load it
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // EXTERNAL_DATA
|
||||
|
||||
static void import_texture(int tile) {
|
||||
extern s32 dynos_tex_import(void **output, void *ptr, s32 tile, void *grapi, void **hashmap, void *pool, s32 *poolpos, s32 poolsize);
|
||||
if (dynos_tex_import((void **) &rendering_state.textures[tile], (void *) rdp.loaded_texture[tile].addr, tile, gfx_rapi, (void **) gfx_texture_cache.hashmap, (void *) gfx_texture_cache.pool, (int *) &gfx_texture_cache.pool_pos, MAX_CACHED_TEXTURES)) { return; }
|
||||
|
@ -707,30 +597,6 @@ static void import_texture(int tile) {
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef EXTERNAL_DATA
|
||||
// the "texture data" is actually a C string with the path to our texture in it
|
||||
// load it from an external image in our data path
|
||||
const char* texid = (const char*)rdp.loaded_texture[tile].addr;
|
||||
|
||||
// make sure the texture id is a printable ascii string
|
||||
bool texidIsPrintable = true;
|
||||
char* c = (char*)texid;
|
||||
u16 length = 0;
|
||||
while (c != NULL && *c != '\0') {
|
||||
if (*c < 33 || *c > 126) {
|
||||
texidIsPrintable = false;
|
||||
break;
|
||||
}
|
||||
length++;
|
||||
c++;
|
||||
}
|
||||
if (texidIsPrintable && length > 0) {
|
||||
char texname[SYS_MAX_PATH];
|
||||
snprintf(texname, sizeof(texname), FS_TEXTUREDIR "/%s.png", texid);
|
||||
load_texture(texname);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
// the texture data is actual texture data
|
||||
//int t0 = get_time();
|
||||
if (fmt == G_IM_FMT_RGBA) {
|
||||
|
@ -1914,13 +1780,6 @@ void gfx_init(struct GfxWindowManagerAPI *wapi, struct GfxRenderingAPI *rapi, co
|
|||
gfx_cc_precomp();
|
||||
}
|
||||
|
||||
#ifdef EXTERNAL_DATA
|
||||
void gfx_precache_textures(void) {
|
||||
// preload all textures
|
||||
fs_walk(FS_TEXTUREDIR, preload_texture, NULL, true);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct GfxRenderingAPI *gfx_get_current_rendering_api(void) {
|
||||
return gfx_rapi;
|
||||
}
|
||||
|
|
|
@ -305,163 +305,103 @@ void camera_allow_toxic_gas_camera(u8 allow) {
|
|||
}
|
||||
|
||||
bool camera_config_is_free_cam_enabled(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideEnableCamera.override ? sOverrideEnableCamera.value : configEnableCamera;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool camera_config_is_analog_cam_enabled(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraAnalog.override ? sOverrideCameraAnalog.value : configCameraAnalog;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool camera_config_is_mouse_look_enabled(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraMouse.override ? sOverrideCameraMouse.value : configCameraMouse;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool camera_config_is_x_inverted(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraInvertX.override ? sOverrideCameraInvertX.value : configCameraInvertX;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool camera_config_is_y_inverted(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraInvertY.override ? sOverrideCameraInvertY.value : configCameraInvertY;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
u32 camera_config_get_x_sensitivity(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraXSens.override ? sOverrideCameraXSens.value : configCameraXSens;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
u32 camera_config_get_y_sensitivity(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraYSens.override ? sOverrideCameraYSens.value : configCameraYSens;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
u32 camera_config_get_aggression(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraAggr.override ? sOverrideCameraAggr.value : configCameraAggr;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
u32 camera_config_get_pan_level(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraPan.override ? sOverrideCameraPan.value : configCameraPan;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
u32 camera_config_get_deceleration(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return sOverrideCameraDegrade.override ? sOverrideCameraDegrade.value : configCameraDegrade;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_enable_free_cam(bool enable) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideEnableCamera.value = enable;
|
||||
sOverrideEnableCamera.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_enable_analog_cam(bool enable) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraAnalog.value = enable;
|
||||
sOverrideCameraAnalog.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_enable_mouse_look(bool enable) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraMouse.value = enable;
|
||||
sOverrideCameraMouse.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_invert_x(bool invert) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraInvertX.value = invert;
|
||||
sOverrideCameraInvertX.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_invert_y(bool invert) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraInvertY.value = invert;
|
||||
sOverrideCameraInvertY.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_x_sensitivity(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraXSens.value = MIN(MAX(value, 1), 100);
|
||||
sOverrideCameraXSens.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_y_sensitivity(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraYSens.value = MIN(MAX(value, 1), 100);
|
||||
sOverrideCameraYSens.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_aggression(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraAggr.value = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraAggr.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_pan_level(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraPan.value = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraPan.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_deceleration(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
sOverrideCameraDegrade.value = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraDegrade.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
///
|
||||
|
|
|
@ -329,15 +329,6 @@ void main_func(void) {
|
|||
network_init(NT_NONE, false);
|
||||
}
|
||||
|
||||
#ifdef EXTERNAL_DATA
|
||||
// precache data if needed
|
||||
if (configPrecacheRes) {
|
||||
fprintf(stdout, "precaching data\n");
|
||||
fflush(stdout);
|
||||
gfx_precache_textures();
|
||||
}
|
||||
#endif
|
||||
|
||||
gGameInited = true;
|
||||
|
||||
while (true) {
|
||||
|
|
Loading…
Reference in a new issue