mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-10-18 11:18:30 +00:00
Merge branch 'dev' into threaded-audio
This commit is contained in:
commit
9fbe28e68a
71 changed files with 358 additions and 247 deletions
35
Makefile
35
Makefile
|
@ -640,9 +640,9 @@ else ifeq ($(COMPILER),gcc)
|
|||
CC := $(CROSS)gcc
|
||||
CXX := $(CROSS)g++
|
||||
ifeq ($(OSX_BUILD),0)
|
||||
EXTRA_CFLAGS += -Wno-unused-result -Wno-format-truncation
|
||||
EXTRA_CFLAGS += -Wno-unused-result -Wno-format-truncation
|
||||
else
|
||||
EXTRA_CFLAGS += -Wno-unused-result
|
||||
EXTRA_CFLAGS += -Wno-unused-result -mmacosx-version-min=14
|
||||
endif
|
||||
else ifeq ($(COMPILER),clang)
|
||||
CC := clang
|
||||
|
@ -753,8 +753,8 @@ else ifeq ($(findstring SDL,$(WINDOW_API)),SDL)
|
|||
else ifeq ($(TARGET_RPI),1)
|
||||
BACKEND_LDFLAGS += -lGLESv2
|
||||
else ifeq ($(OSX_BUILD),1)
|
||||
BACKEND_LDFLAGS += -framework OpenGL `pkg-config --libs glew`
|
||||
EXTRA_CPP_FLAGS += -stdlib=libc++ -std=c++17
|
||||
BACKEND_LDFLAGS += -framework OpenGL `pkg-config --libs glew` -mmacosx-version-min=14
|
||||
EXTRA_CPP_FLAGS += -stdlib=libc++ -std=c++17 -mmacosx-version-min=14
|
||||
else
|
||||
BACKEND_LDFLAGS += -lGL
|
||||
endif
|
||||
|
@ -1518,6 +1518,12 @@ endif
|
|||
APP_DIR = ./sm64coopdx.app
|
||||
APP_CONTENTS_DIR = $(APP_DIR)/Contents
|
||||
APP_MACOS_DIR = $(APP_CONTENTS_DIR)/MacOS
|
||||
APP_RESOURCES_DIR = $(APP_CONTENTS_DIR)/Resources
|
||||
|
||||
ifeq ($(OSX_BUILD),1)
|
||||
GLEW_LIB := $(shell find `brew --prefix`/Cellar/glew | grep libGLEW.2.2.0 | sort -n | uniq)
|
||||
SDL2_LIB := $(shell find `brew --prefix`/Cellar/sdl2 | grep libSDL2- | sort -n | uniq)
|
||||
endif
|
||||
|
||||
all:
|
||||
@if [ "$(USE_APP)" = "0" ]; then \
|
||||
|
@ -1527,10 +1533,25 @@ all:
|
|||
rm -rf $(APP_DIR); \
|
||||
rm -rf build/us_pc/sm64coopdx.app; \
|
||||
mkdir -p $(APP_MACOS_DIR); \
|
||||
mkdir -p $(APP_CONTENTS_DIR)/Resources; \
|
||||
mkdir -p $(APP_RESOURCES_DIR); \
|
||||
mv build/us_pc/sm64coopdx $(APP_MACOS_DIR)/sm64coopdx; \
|
||||
cp -r build/us_pc/* $(APP_MACOS_DIR); \
|
||||
cp res/icon.icns $(APP_CONTENTS_DIR)/Resources/icon.icns; \
|
||||
cp -r build/us_pc/mods $(APP_RESOURCES_DIR); \
|
||||
cp -r build/us_pc/lang $(APP_RESOURCES_DIR); \
|
||||
cp -r build/us_pc/dynos $(APP_RESOURCES_DIR); \
|
||||
cp -r build/us_pc/palettes $(APP_RESOURCES_DIR); \
|
||||
cp build/us_pc/discord_game_sdk.dylib $(APP_MACOS_DIR); \
|
||||
cp build/us_pc/libdiscord_game_sdk.dylib $(APP_MACOS_DIR); \
|
||||
cp build/us_pc/libcoopnet.dylib $(APP_MACOS_DIR); \
|
||||
cp build/us_pc/libjuice.1.2.2.dylib $(APP_MACOS_DIR); \
|
||||
cp $(SDL2_LIB) $(APP_MACOS_DIR)/libSDL2.dylib; \
|
||||
install_name_tool -change /opt/homebrew/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/libSDL2.dylib $(APP_MACOS_DIR)/sm64coopdx; > /dev/null 2>&1 \
|
||||
install_name_tool -id @executable_path/libSDL2.dylib $(APP_MACOS_DIR)/libSDL2.dylib; > /dev/null 2>&1 \
|
||||
codesign --force --deep --sign - $(APP_MACOS_DIR)/libSDL2.dylib; \
|
||||
cp $(GLEW_LIB) $(APP_MACOS_DIR)/libGLEW.dylib; \
|
||||
install_name_tool -change /opt/homebrew/opt/glew/lib/libGLEW.2.2.dylib @executable_path/libGLEW.dylib $(APP_MACOS_DIR)/sm64coopdx; > /dev/null 2>&1 \
|
||||
install_name_tool -id @executable_path/libGLEW.dylib $(APP_MACOS_DIR)/libGLEW.dylib; > /dev/null 2>&1 \
|
||||
codesign --force --deep --sign - $(APP_MACOS_DIR)/libGLEW.dylib; \
|
||||
cp res/icon.icns $(APP_RESOURCES_DIR)/icon.icns; \
|
||||
echo "APPL????" > $(APP_CONTENTS_DIR)/PkgInfo; \
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>' > $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
|
|
|
@ -257,7 +257,7 @@ const Gfx luigi_metal_butt[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&luigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -727,7 +727,7 @@ const Gfx luigi_metal_left_thigh[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&luigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -3243,7 +3243,7 @@ const Gfx luigi_right_hand_cap_metal_wings_intial_dl[] = {
|
|||
gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&luigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
@ -3546,7 +3546,7 @@ const Gfx luigi_metal_cap_wings[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&luigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
@ -3583,7 +3583,7 @@ const Gfx luigi_metal_cap_wings_transparent[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&luigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -159,7 +159,7 @@ const Gfx luigi_cap_seg3_dl_03022ED8_metal[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&luigi_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
@ -231,7 +231,7 @@ const Gfx luigi_cap_seg3_dl_03022FF8[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&luigi_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -335,7 +335,7 @@ const Gfx luigi_cap_seg3_dl_03023298[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&luigi_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -355,7 +355,7 @@ const Gfx luigi_cap_seg3_dl_03023298[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&luigi_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, luigi_cap_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -213,7 +213,7 @@ const Gfx mario_metal_butt[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&mario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -530,7 +530,7 @@ const Gfx mario_metal_left_thigh[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&mario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -2223,7 +2223,7 @@ const Gfx mario_right_hand_cap_metal_wings_intial_dl[] = {
|
|||
gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&mario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
@ -2531,7 +2531,7 @@ const Gfx mario_metal_cap_wings[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&mario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
@ -2568,7 +2568,7 @@ const Gfx mario_metal_cap_wings_transparent[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&mario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -194,7 +194,7 @@ const Gfx mario_cap_seg3_dl_03022ED8_metal[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&mario_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
@ -266,7 +266,7 @@ const Gfx mario_cap_seg3_dl_03022FF8[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&mario_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -370,7 +370,7 @@ const Gfx mario_cap_seg3_dl_03023298[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&mario_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -390,7 +390,7 @@ const Gfx mario_cap_seg3_dl_03023298[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&mario_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, mario_cap_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -29,6 +29,7 @@ const GeoLayout mr_blizzard_hidden_geo[] = {
|
|||
GEO_SCALE(0x00, 65536),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_ALPHA, 490, 14, 43, 305, 0, 248, mario_cap_m_logo_decal),
|
||||
GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 490, 14, 43, 305, 0, 248, mario_cap_seg3_dl_03022F48),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
|
|
|
@ -357,7 +357,7 @@ Gfx mat_toad_cap_metal[] = {
|
|||
gsSPGeometryMode(0, G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&toad_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, toad_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -456,7 +456,7 @@ Gfx mat_toad_cap_metal_wing[] = {
|
|||
gsSPClearGeometryMode(G_CULL_BACK),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&toad_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, toad_cap_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
@ -482,7 +482,7 @@ Gfx mat_toad_cap_metal_wing_tip[] = {
|
|||
gsSPClearGeometryMode(G_CULL_BACK),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&toad_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, toad_cap_texture_metal_wings_half_2_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -1951,7 +1951,7 @@ Gfx mat_toad_player_metal[] = {
|
|||
gsSPGeometryMode(0, G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&toad_player_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, toad_player_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -1978,7 +1978,7 @@ Gfx mat_toad_player_metal_vest[] = {
|
|||
gsSPGeometryMode(G_CULL_BACK, 0),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&toad_player_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, toad_player_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -2289,7 +2289,7 @@ Gfx mat_toad_player_metal_wing[] = {
|
|||
gsSPClearGeometryMode(G_CULL_BACK),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&toad_player_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, toad_player_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
@ -2315,7 +2315,7 @@ Gfx mat_toad_player_metal_wing_tip[] = {
|
|||
gsSPClearGeometryMode(G_CULL_BACK),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&toad_player_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, toad_player_texture_metal_wings_half_2_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -291,7 +291,7 @@ const Gfx waluigi_metal_butt[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&waluigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, waluigi_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -762,7 +762,7 @@ const Gfx waluigi_metal_left_thigh[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&waluigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, waluigi_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -3409,7 +3409,7 @@ const Gfx waluigi_right_hand_cap_metal_wings_intial_dl[] = {
|
|||
gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&waluigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
@ -3711,7 +3711,7 @@ const Gfx waluigi_metal_cap_wings[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&waluigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, waluigi_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
@ -3748,7 +3748,7 @@ const Gfx waluigi_metal_cap_wings_transparent[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&waluigi_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, waluigi_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -159,7 +159,7 @@ const Gfx waluigi_cap_seg3_dl_03022ED8_metal[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&waluigi_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
@ -231,7 +231,7 @@ const Gfx waluigi_cap_seg3_dl_03022FF8[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&waluigi_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, waluigi_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -335,7 +335,7 @@ const Gfx waluigi_cap_seg3_dl_03023298[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&waluigi_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, waluigi_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -355,7 +355,7 @@ const Gfx waluigi_cap_seg3_dl_03023298[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&waluigi_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, waluigi_cap_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -293,7 +293,7 @@ const Gfx wario_metal_butt[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&wario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, wario_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -763,7 +763,7 @@ const Gfx wario_metal_left_thigh[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&wario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, wario_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -3614,7 +3614,7 @@ const Gfx wario_right_hand_cap_metal_wings_intial_dl[] = {
|
|||
gsSPClearGeometryMode(G_TEXTURE_GEN | G_CULL_BACK),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&wario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
@ -3916,7 +3916,7 @@ const Gfx wario_metal_cap_wings[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&wario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, wario_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
@ -3953,7 +3953,7 @@ const Gfx wario_metal_cap_wings_transparent[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&wario_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, wario_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -159,7 +159,7 @@ const Gfx wario_cap_seg3_dl_03022ED8_metal[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&wario_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
@ -231,7 +231,7 @@ const Gfx wario_cap_seg3_dl_03022FF8[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&wario_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, wario_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -335,7 +335,7 @@ const Gfx wario_cap_seg3_dl_03023298[] = {
|
|||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsSPTexture(4032, 1984, 0, 0, 1),
|
||||
gsSPLight(&wario_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, wario_cap_texture_metal_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 128),
|
||||
|
@ -355,7 +355,7 @@ const Gfx wario_cap_seg3_dl_03023298[] = {
|
|||
gsDPSetCombineLERP(TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, TEXEL1, TEXEL0, 0, ENVIRONMENT, 0),
|
||||
gsSPTexture(65535, 65535, 0, 0, 1),
|
||||
gsSPLight(&wario_cap_black_lights_group.l, 1),
|
||||
gsSPCopyLightEXT(2, 17),
|
||||
gsSPCopyLightEXT(2, 15),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, wario_cap_texture_metal_wings_half_1_shade),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
|
||||
gsDPLoadBlock(7, 0, 0, 2047, 256),
|
||||
|
|
|
@ -81,9 +81,9 @@ override_field_mutable = {
|
|||
}
|
||||
|
||||
override_field_invisible = {
|
||||
"Mod": [ "files" ],
|
||||
"Mod": [ "files", "showedScriptWarning" ],
|
||||
"MarioState": [ "visibleToEnemies" ],
|
||||
"NetworkPlayer": [ "gag", "moderator"],
|
||||
"NetworkPlayer": [ "gag", "moderator", "discordId" ],
|
||||
"GraphNode": [ "_guard1", "_guard2" ],
|
||||
"Object": [ "firstSurface" ],
|
||||
}
|
||||
|
|
|
@ -7780,7 +7780,7 @@ EMBLEM = 7
|
|||
PLAYER_PART_MAX = 8
|
||||
|
||||
--- @type PlayerPart
|
||||
METAL = EMBLEM
|
||||
METAL = CAP
|
||||
|
||||
--- @type integer
|
||||
EEPROM_SIZE = 0x200
|
||||
|
|
|
@ -5450,6 +5450,12 @@ function network_check_singleplayer_pause()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param localIndex integer
|
||||
--- @return string
|
||||
function network_discord_id_from_local_index(localIndex)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param localIndex integer
|
||||
--- @return string
|
||||
function network_get_player_text_color_string(localIndex)
|
||||
|
@ -7847,18 +7853,6 @@ function djui_hud_set_render_behind_hud(enable)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param index integer
|
||||
--- @return number
|
||||
function get_environment_region(index)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param localIndex integer
|
||||
--- @return string
|
||||
function network_discord_id_from_local_index(localIndex)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param np NetworkPlayer
|
||||
--- @param part PlayerPart
|
||||
--- @param color Color
|
||||
|
@ -7873,12 +7867,6 @@ function network_player_palette_to_color(np, part, out)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param index integer
|
||||
--- @param value integer
|
||||
function set_environment_region(index, value)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param index integer
|
||||
--- @return integer
|
||||
function get_fog_color(index)
|
||||
|
@ -8201,6 +8189,12 @@ function get_envfx()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param index integer
|
||||
--- @return number
|
||||
function get_environment_region(index)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return integer
|
||||
function get_global_timer()
|
||||
-- ...
|
||||
|
@ -8407,6 +8401,12 @@ function save_file_set_using_backup_slot(usingBackupSlot)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param index integer
|
||||
--- @param value integer
|
||||
function set_environment_region(index, value)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param value boolean
|
||||
function set_got_file_coin_hi_score(value)
|
||||
-- ...
|
||||
|
|
|
@ -149,10 +149,12 @@ static void DynOS_Actor_Generate(const SysPath &aPackFolder, Array<Pair<u64, Str
|
|||
// If there is an existing binary file for this layout, skip and go to the next actor
|
||||
SysPath _BinFilename = fstring("%s/%s.bin", aPackFolder.c_str(), _GeoRootName.begin());
|
||||
if (fs_sys_file_exists(_BinFilename.c_str())) {
|
||||
#ifdef DEVELOPMENT
|
||||
// Compress file to gain some space
|
||||
if (!DynOS_Bin_IsCompressed(_BinFilename)) {
|
||||
DynOS_Bin_Compress(_BinFilename);
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -258,12 +260,14 @@ void DynOS_Actor_GeneratePack(const SysPath &aPackFolder) {
|
|||
if (SysPath(_PackEnt->d_name) == ".") continue;
|
||||
if (SysPath(_PackEnt->d_name) == "..") continue;
|
||||
|
||||
#ifdef DEVELOPMENT
|
||||
// Compress .bin files to gain some space
|
||||
SysPath _Filename = fstring("%s/%s", aPackFolder.c_str(), _PackEnt->d_name);
|
||||
if (SysPath(_PackEnt->d_name).find(".bin") != SysPath::npos && !DynOS_Bin_IsCompressed(_Filename)) {
|
||||
DynOS_Bin_Compress(_Filename);
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
// For each subfolder, read tokens from model.inc.c and geo.inc.c
|
||||
SysPath _Folder = fstring("%s/%s", aPackFolder.c_str(), _PackEnt->d_name);
|
||||
|
|
|
@ -691,11 +691,13 @@ void DynOS_Col_Generate(const SysPath &aPackFolder, Array<Pair<u64, String>> _Ac
|
|||
// If there is an existing binary file for this collision, skip and go to the next actor
|
||||
SysPath _ColFilename = fstring("%s/%s.col", aPackFolder.c_str(), _ColRootName.begin());
|
||||
if (fs_sys_file_exists(_ColFilename.c_str())) {
|
||||
#ifdef DEVELOPMENT
|
||||
// Compress file to gain some space
|
||||
if (!DynOS_Bin_IsCompressed(_ColFilename)) {
|
||||
DynOS_Bin_Compress(_ColFilename);
|
||||
}
|
||||
continue;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Init
|
||||
|
|
|
@ -1119,10 +1119,12 @@ static bool DynOS_Lvl_GeneratePack_Internal(const SysPath &aPackFolder, Array<Pa
|
|||
// If there is an existing binary file for this level, skip and go to the next level
|
||||
SysPath _LvlFilename = fstring("%s/%s.lvl", aPackFolder.c_str(), _LvlRootName.begin());
|
||||
if (fs_sys_file_exists(_LvlFilename.c_str())) {
|
||||
#ifdef DEVELOPMENT
|
||||
// Compress file to gain some space
|
||||
if (!DynOS_Bin_IsCompressed(_LvlFilename)) {
|
||||
DynOS_Bin_Compress(_LvlFilename);
|
||||
}
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1245,12 +1247,15 @@ void DynOS_Lvl_GeneratePack(const SysPath &aPackFolder) {
|
|||
if (SysPath(_PackEnt->d_name) == ".") continue;
|
||||
if (SysPath(_PackEnt->d_name) == "..") continue;
|
||||
|
||||
#ifdef DEVELOPMENT
|
||||
// Compress .lvl files to gain some space
|
||||
SysPath _Filename = fstring("%s/%s", aPackFolder.c_str(), _PackEnt->d_name);
|
||||
// TODO: is this required anymore?
|
||||
/*SysPath _Filename = fstring("%s/%s", aPackFolder.c_str(), _PackEnt->d_name);
|
||||
if (SysPath(_PackEnt->d_name).find(".lvl") != SysPath::npos && !DynOS_Bin_IsCompressed(_Filename)) {
|
||||
DynOS_Bin_Compress(_Filename);
|
||||
continue;
|
||||
}
|
||||
}*/
|
||||
#endif
|
||||
|
||||
// For each subfolder, read tokens from script.c
|
||||
SysPath _Folder = fstring("%s/%s", aPackFolder.c_str(), _PackEnt->d_name);
|
||||
|
|
|
@ -2774,7 +2774,7 @@
|
|||
| CAP | 6 |
|
||||
| EMBLEM | 7 |
|
||||
| PLAYER_PART_MAX | 8 |
|
||||
| METAL | EMBLEM |
|
||||
| METAL | CAP |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
|
|
|
@ -1468,6 +1468,26 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [network_discord_id_from_local_index](#network_discord_id_from_local_index)
|
||||
|
||||
### Lua Example
|
||||
`local stringValue = network_discord_id_from_local_index(localIndex)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| localIndex | `integer` |
|
||||
|
||||
### Returns
|
||||
- `string`
|
||||
|
||||
### C Prototype
|
||||
`const char* network_discord_id_from_local_index(u8 localIndex);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [network_get_player_text_color_string](#network_get_player_text_color_string)
|
||||
|
||||
### Lua Example
|
||||
|
|
|
@ -2174,6 +2174,26 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [get_environment_region](#get_environment_region)
|
||||
|
||||
### Lua Example
|
||||
`local numberValue = get_environment_region(index)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| index | `integer` |
|
||||
|
||||
### Returns
|
||||
- `number`
|
||||
|
||||
### C Prototype
|
||||
`f32 get_environment_region(u8 index);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [get_global_timer](#get_global_timer)
|
||||
|
||||
### Lua Example
|
||||
|
@ -2871,6 +2891,27 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [set_environment_region](#set_environment_region)
|
||||
|
||||
### Lua Example
|
||||
`set_environment_region(index, value)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| index | `integer` |
|
||||
| value | `integer` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void set_environment_region(u8 index, s32 value);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [set_got_file_coin_hi_score](#set_got_file_coin_hi_score)
|
||||
|
||||
### Lua Example
|
||||
|
|
|
@ -1211,6 +1211,7 @@
|
|||
|
||||
- network_utils.h
|
||||
- [network_check_singleplayer_pause](functions-4.md#network_check_singleplayer_pause)
|
||||
- [network_discord_id_from_local_index](functions-4.md#network_discord_id_from_local_index)
|
||||
- [network_get_player_text_color_string](functions-4.md#network_get_player_text_color_string)
|
||||
- [network_global_index_from_local](functions-4.md#network_global_index_from_local)
|
||||
- [network_is_moderator](functions-4.md#network_is_moderator)
|
||||
|
@ -1720,6 +1721,7 @@
|
|||
- [get_dialog_id](functions-5.md#get_dialog_id)
|
||||
- [get_dialog_response](functions-5.md#get_dialog_response)
|
||||
- [get_envfx](functions-5.md#get_envfx)
|
||||
- [get_environment_region](functions-5.md#get_environment_region)
|
||||
- [get_global_timer](functions-5.md#get_global_timer)
|
||||
- [get_got_file_coin_hi_score](functions-5.md#get_got_file_coin_hi_score)
|
||||
- [get_hand_foot_pos_x](functions-5.md#get_hand_foot_pos_x)
|
||||
|
@ -1756,6 +1758,7 @@
|
|||
- [reset_window_title](functions-5.md#reset_window_title)
|
||||
- [save_file_get_using_backup_slot](functions-5.md#save_file_get_using_backup_slot)
|
||||
- [save_file_set_using_backup_slot](functions-5.md#save_file_set_using_backup_slot)
|
||||
- [set_environment_region](functions-5.md#set_environment_region)
|
||||
- [set_got_file_coin_hi_score](functions-5.md#set_got_file_coin_hi_score)
|
||||
- [set_last_completed_course_num](functions-5.md#set_last_completed_course_num)
|
||||
- [set_last_completed_star_num](functions-5.md#set_last_completed_star_num)
|
||||
|
|
|
@ -87,7 +87,7 @@ BACKGROUND_GAMEPAD = "Mando en segundo plano"
|
|||
DISABLE_GAMEPADS = "Desactivar gamepads"
|
||||
GAMEPAD = "Mando"
|
||||
DEADZONE = "Zona muerta"
|
||||
RUMBLE_STRENGTH = "Fuerza de vibración"
|
||||
RUMBLE_STRENGTH = "Intensidad de vibración"
|
||||
|
||||
CHAT = "Chat"
|
||||
PLAYERS = "Jugadores"
|
||||
|
@ -240,7 +240,7 @@ DIRECT = "Conexión Directa"
|
|||
[RULES]
|
||||
RULES_TITLE = "REGLAS"
|
||||
RULE_1 = "1. Debes tener 13 años o más."
|
||||
RULE_2 = "2. No usar expresiones de odio, insultos o cualquier clase de lenguaje ofensivo."
|
||||
RULE_2 = "2. No discursos de odio, insultos o cualquier clase de lenguaje ofensivo."
|
||||
RULE_3 = "3. No uses ninguna versión modificada."
|
||||
RULE_4 = "4. No alojar mods inéditos sin el permiso del autor original."
|
||||
RULE_5 = "5. No toleraremos ninguna clase de contenido explícito."
|
||||
|
@ -362,7 +362,7 @@ MUSIC_VOLUME = "Volumen de Música"
|
|||
SFX_VOLUME = "Volumen de Efectos de Sonido"
|
||||
ENV_VOLUME = "Volumen de Entorno"
|
||||
FADEOUT = "Disminuir sonidos lejanos"
|
||||
MUTE_FOCUS_LOSS = "Muda sonido cuando ventana esta desenfocado"
|
||||
MUTE_FOCUS_LOSS = "Silenciar sonido cuando la ventana está desenfocada"
|
||||
|
||||
[LANGUAGE]
|
||||
LANGUAGE = "IDIOMA"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
-- name: Arena
|
||||
-- description: An arena-shooter inspired game mode with custom weapons and levels.\nSeven gamemodes in one, three custom stages, and five weapons.
|
||||
-- incompatible: gamemode arena
|
||||
-- pausable: false
|
||||
|
||||
GAME_STATE_ACTIVE = 1
|
||||
GAME_STATE_INACTIVE = 2
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
-- name: [CS] VL-Tone & Cjes Luigi
|
||||
-- description: [CS] VL-Tone & Cjes Luigi\nBy Coop Deluxe Team\n\nnThis Character Select pack adds VL-Tone Luigi and Cjes Luigi, who was originally the model for luigi in earlier versions of sm64ex-coop.
|
||||
-- pausable: true
|
||||
|
||||
if not _G.charSelectExists then
|
||||
local first = false
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
-- name: [CS] Extra Characters
|
||||
-- description: [CS] Extra Characters\nBy Coop Deluxe Team\n\nThis Character Select pack adds other characters from the Mario series!
|
||||
-- pausable: true
|
||||
|
||||
if not _G.charSelectExists then return end
|
||||
|
||||
|
|
|
@ -196,7 +196,7 @@ function peach_update(m)
|
|||
smlua_anim_util_set_animation(m.marioObj, anim)
|
||||
end
|
||||
|
||||
if (m.input & INPUT_A_PRESSED) ~= 0 and m.vel.y < -15 and (
|
||||
if (m.input & INPUT_A_DOWN) ~= 0 and m.vel.y < -15 and (
|
||||
m.action == ACT_JUMP or
|
||||
m.action == ACT_DOUBLE_JUMP or
|
||||
m.action == ACT_TRIPLE_JUMP or
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
-- name: Cheats
|
||||
-- incompatible: cheats
|
||||
-- description: Cheats\nA mod that adds a bunch of cheats to the mod menu, accessible through the pause menu.
|
||||
-- pausable: true
|
||||
|
||||
-- localize functions to improve performance
|
||||
local math_floor,smlua_text_utils_get_language,table_insert,approach_s32,set_mario_action,get_network_area_timer = math.floor,smlua_text_utils_get_language,table.insert,approach_s32,set_mario_action,get_network_area_timer
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
-- name: Faster Swimming
|
||||
-- description: Everyone swims faster.
|
||||
-- pausable: true
|
||||
|
||||
function mario_before_phys_step(m)
|
||||
local hScale = 1.0
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
-- name: Hide and Seek
|
||||
-- incompatible: gamemode
|
||||
-- description: A simple hide-and-seek gamemode for\nCo-op.\n\nThe game is split into two teams:\n\nHiders and Seekers. The goal is for all\n\Hiders to be converted into a Seeker within a certain timeframe.\n\nAll Seekers appear as a metal character.\n\nEnjoy! :D\n\nConcept by: Super Keeberghrh
|
||||
-- pausable: false
|
||||
|
||||
-- constants
|
||||
local ROUND_STATE_WAIT = 0
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
-- name: Personal Star Counter
|
||||
-- incompatible: gamemode
|
||||
-- description: See how many stars you've collected!\n\nCredits:\n\\#097419\\Mr.Needlemouse\\#FFFFFF\\ - Concept\nSunk\\#dcdcdc\\ - Creator\n\\#269A91\\Demnyx\\#dcdcdc\\ - Assistance\n\\#f296af\\PeachyPeach\\#dcdcdc\\ - Global functions
|
||||
-- pausable: true
|
||||
|
||||
------------------------------
|
||||
----- Localize functions -----
|
||||
|
|
|
@ -250,6 +250,8 @@ void bhv_normal_cap_loop(void) {
|
|||
|
||||
if (cap_set_hitbox() == 1)
|
||||
save_file_clear_flags(SAVE_FLAG_CAP_ON_GROUND);
|
||||
|
||||
obj_set_model(o, gMarioStates[network_local_index_from_global(o->globalPlayerIndex)].character->capModelId);
|
||||
}
|
||||
|
||||
void bhv_vanish_cap_init(void) {
|
||||
|
|
|
@ -246,7 +246,7 @@ static void mr_blizzard_act_death(void) {
|
|||
if (o->oAnimState) {
|
||||
gMarioStates[0].cap &= ~SAVE_FLAG_CAP_ON_MR_BLIZZARD;
|
||||
|
||||
cap = spawn_object_relative(0, 5, 105, 0, o, MODEL_MARIOS_CAP, bhvNormalCap);
|
||||
cap = spawn_object_relative(0, 5, 105, 0, o, gMarioStates[0].character->capModelId, bhvNormalCap);
|
||||
if (cap != NULL) {
|
||||
cap->globalPlayerIndex = o->globalPlayerIndex;
|
||||
cap->oMoveAngleYaw = o->oFaceAngleYaw + (o->oFaceAngleRoll < 0 ? 0x4000 : -0x4000);
|
||||
|
|
|
@ -441,6 +441,8 @@ void bhv_wiggler_on_received_pre(UNUSED u8 localIndex) {
|
|||
}
|
||||
|
||||
void bhv_wiggler_on_received_post(UNUSED u8 localIndex) {
|
||||
if (o == NULL) { return; }
|
||||
|
||||
Vec3f posDiff = { 0 };
|
||||
posDiff[0] = o->oPosX - wigglerPrePos[0];
|
||||
posDiff[1] = o->oPosY - wigglerPrePos[1];
|
||||
|
|
|
@ -3648,7 +3648,7 @@ void zoom_out_if_paused_and_outside(struct GraphNodeCamera *camera) {
|
|||
areaMaskIndex = 0;
|
||||
areaBit = 0;
|
||||
}
|
||||
if (gCameraMovementFlags & CAM_MOVE_PAUSE_SCREEN && !gDjuiInPlayerMenu) {
|
||||
if (gCameraMovementFlags & CAM_MOVE_PAUSE_SCREEN && !gDjuiInPlayerMenu && !get_first_person_enabled()) {
|
||||
if (sFramesPaused >= 2) {
|
||||
if (sZoomOutAreaMasks[areaMaskIndex] & areaBit) {
|
||||
|
||||
|
|
|
@ -37,10 +37,11 @@ bool first_person_check_cancels(struct MarioState *m) {
|
|||
if (m->action == ACT_FIRST_PERSON || m->action == ACT_IN_CANNON || m->action == ACT_READING_NPC_DIALOG || m->action == ACT_DISAPPEARED || m->action == ACT_FLYING) {
|
||||
return true;
|
||||
}
|
||||
if (find_object_with_behavior(smlua_override_behavior(bhvActSelector)) != NULL) { return true; }
|
||||
|
||||
if (gLuaLoadingMod != NULL) { return false; }
|
||||
|
||||
struct Object *bowser = find_object_with_behavior(bhvBowser);
|
||||
struct Object *bowser = find_object_with_behavior(smlua_override_behavior(bhvBowser));
|
||||
if ((gCurrLevelNum == LEVEL_BOWSER_1 || gCurrLevelNum == LEVEL_BOWSER_2 || gCurrLevelNum == LEVEL_BOWSER_3) &&
|
||||
bowser != NULL &&
|
||||
(bowser->oAction == 5 || bowser->oAction == 6)) {
|
||||
|
@ -55,7 +56,6 @@ bool get_first_person_enabled(void) {
|
|||
}
|
||||
|
||||
void set_first_person_enabled(bool enable) {
|
||||
if (gFirstPersonCamera.enabled && !enable) { gFOVState.fov = 45.0f; }
|
||||
gFirstPersonCamera.enabled = enable;
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ static void first_person_camera_update(void) {
|
|||
s16 invX = camera_config_is_x_inverted() ? 1 : -1;
|
||||
s16 invY = camera_config_is_y_inverted() ? 1 : -1;
|
||||
|
||||
if (gMenuMode == -1 && !gDjuiChatBoxFocus && !gDjuiConsoleFocus) {
|
||||
if (mouse_relative_enabled) {
|
||||
// update pitch
|
||||
gFirstPersonCamera.pitch -= sensY * (invY * m->controller->extStickY - 1.5f * mouse_y);
|
||||
gFirstPersonCamera.pitch = CLAMP(gFirstPersonCamera.pitch, -0x3F00, 0x3F00);
|
||||
|
@ -139,8 +139,6 @@ static void first_person_camera_update(void) {
|
|||
gLakituState.focHSpeed = 0;
|
||||
gLakituState.focVSpeed = 0;
|
||||
vec3s_set(gLakituState.shakeMagnitude, 0, 0, 0);
|
||||
|
||||
gFOVState.fov = gFirstPersonCamera.fov;
|
||||
}
|
||||
|
||||
void first_person_update(void) {
|
||||
|
|
|
@ -248,17 +248,18 @@ u16 level_control_timer(s32 timerOp) {
|
|||
}
|
||||
|
||||
u32 pressed_pause(void) {
|
||||
u32 dialogActive = get_dialog_id() >= 0;
|
||||
u32 intangible = (gMarioState->action & ACT_FLAG_INTANGIBLE) != 0;
|
||||
u32 firstPerson = gMarioState->action == ACT_FIRST_PERSON;
|
||||
if (gServerSettings.pauseAnywhere) {
|
||||
if (get_dialog_id() < 0 && !gWarpTransition.isActive && sDelayedWarpOp == WARP_OP_NONE) {
|
||||
return gPlayer1Controller->buttonPressed & START_BUTTON;
|
||||
}
|
||||
} else {
|
||||
u32 dialogActive = get_dialog_id() >= 0;
|
||||
u32 intangible = (gMarioState->action & ACT_FLAG_INTANGIBLE) != 0;
|
||||
u32 firstPerson = gMarioState->action == ACT_FIRST_PERSON;
|
||||
|
||||
if (!intangible && !dialogActive && !firstPerson && !gWarpTransition.isActive && sDelayedWarpOp == WARP_OP_NONE
|
||||
&& (gPlayer1Controller->buttonPressed & START_BUTTON)) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (gServerSettings.pauseAnywhere && get_dialog_id() < 0) {
|
||||
return gPlayer1Controller->buttonPressed & START_BUTTON;
|
||||
if (!intangible && !dialogActive && !firstPerson && !gWarpTransition.isActive && sDelayedWarpOp == WARP_OP_NONE) {
|
||||
return (gPlayer1Controller->buttonPressed & START_BUTTON);
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
@ -271,7 +272,7 @@ void set_play_mode(s16 playMode) {
|
|||
|
||||
void warp_special(s32 arg) {
|
||||
if (arg != 0 && arg != SPECIAL_WARP_CAKE && arg != SPECIAL_WARP_GODDARD && arg != SPECIAL_WARP_GODDARD_GAMEOVER && arg != SPECIAL_WARP_TITLE && arg != SPECIAL_WARP_LEVEL_SELECT) {
|
||||
LOG_ERROR("Invalid parameter value for warp_special: Expected SPECIAL_WARP_CAKE, SPECIAL_WARP_GODDARD, SPECIAL_WARP_GODDARD_GAMEOVER, SPECIAL_WARP_TITLE, or SPECIAL_WARP_LEVEL_SELECT");
|
||||
LOG_ERROR("Invalid parameter value for warp_special: Expected 0, SPECIAL_WARP_CAKE, SPECIAL_WARP_GODDARD, SPECIAL_WARP_GODDARD_GAMEOVER, SPECIAL_WARP_TITLE, or SPECIAL_WARP_LEVEL_SELECT");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1492,11 +1493,11 @@ void update_menu_level(void) {
|
|||
stop_cap_music();
|
||||
if (!configMenuSound || configMenuStaffRoll || curLevel == LEVEL_CASTLE_GROUNDS) {
|
||||
reset_volume();
|
||||
disable_background_sound();
|
||||
sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_BACKGROUND);
|
||||
set_background_music(0, SEQ_MENU_TITLE_SCREEN, 0);
|
||||
} else {
|
||||
reset_volume();
|
||||
disable_background_sound();
|
||||
sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_BACKGROUND);
|
||||
set_background_music(gCurrentArea->musicParam, gCurrentArea->musicParam2, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -1951,7 +1951,7 @@ void obj_set_cylboard(struct Object *obj) {
|
|||
|
||||
void cur_obj_set_billboard_if_vanilla_cam(void) {
|
||||
if (!o) { return; }
|
||||
if (get_first_person_enabled()) {
|
||||
if (camera_config_is_free_cam_enabled() || get_first_person_enabled()) {
|
||||
o->header.gfx.node.flags &= ~GRAPH_RENDER_BILLBOARD;
|
||||
o->header.gfx.node.flags |= GRAPH_RENDER_CYLBOARD;
|
||||
} else {
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#define MAX_PRESET_PALETTES 128
|
||||
|
||||
enum PlayerPart {
|
||||
PANTS, SHIRT, GLOVES, SHOES, HAIR, SKIN, CAP, EMBLEM, PLAYER_PART_MAX, METAL = EMBLEM
|
||||
PANTS, SHIRT, GLOVES, SHOES, HAIR, SKIN, CAP, EMBLEM, PLAYER_PART_MAX, METAL = CAP
|
||||
};
|
||||
|
||||
#pragma pack(1)
|
||||
|
|
|
@ -237,7 +237,7 @@ void patch_mtx_interpolated(f32 delta) {
|
|||
u16 perspNorm;
|
||||
f32 fovInterpolated = delta_interpolate_f32(sPerspectiveNode->prevFov, sPerspectiveNode->fov, delta);
|
||||
f32 near = MIN(sPerspectiveNode->near, gProjectionMaxNearValue);
|
||||
guPerspective(sPerspectiveMtx, &perspNorm, not_zero(fovInterpolated, gOverrideFOV), sPerspectiveAspect, get_first_person_enabled() ? 1 : not_zero(near, gOverrideNear), not_zero(sPerspectiveNode->far, gOverrideFar), 1.0f);
|
||||
guPerspective(sPerspectiveMtx, &perspNorm, get_first_person_enabled() ? gFirstPersonCamera.fov : not_zero(fovInterpolated, gOverrideFOV), sPerspectiveAspect, get_first_person_enabled() ? 1 : not_zero(near, gOverrideNear), not_zero(sPerspectiveNode->far, gOverrideFar), 1.0f);
|
||||
gSPMatrix(sPerspectivePos, VIRTUAL_TO_PHYSICAL(sPerspectiveNode), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH);
|
||||
}
|
||||
|
||||
|
@ -1156,7 +1156,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 = (not_zero(gCurGraphNodeCamFrustum->fov, gOverrideFOV) / 2.0f + 1.0f) * 32768.0f / 180.0f + 0.5f;
|
||||
s16 halfFov = (get_first_person_enabled() ? gFirstPersonCamera.fov : not_zero(gCurGraphNodeCamFrustum->fov, gOverrideFOV) / 2.0f + 1.0f) * 32768.0f / 180.0f + 0.5f;
|
||||
|
||||
f32 divisor = coss(halfFov);
|
||||
if (divisor == 0) { divisor = 1; }
|
||||
|
|
|
@ -26,8 +26,8 @@ static OSMesgQueue sSoundMesgQueue;
|
|||
static OSMesg sSoundMesgBuf[1];
|
||||
static struct VblankHandler sSoundVblankHandler;
|
||||
|
||||
static u8 D_8032C6C0 = 0;
|
||||
static u8 D_8032C6C4 = 0;
|
||||
static u8 sVolumeLoweredState = 0;
|
||||
static u8 sBackgroundMusicDisabled = FALSE;
|
||||
static u16 sCurrentMusic = MUSIC_NONE;
|
||||
static u16 sCurrentShellMusic = MUSIC_NONE;
|
||||
static u16 sCurrentCapMusic = MUSIC_NONE;
|
||||
|
@ -81,7 +81,7 @@ void play_menu_sounds_extra(s32 a, void *b);
|
|||
* Called from threads: thread5_game_loop
|
||||
*/
|
||||
void reset_volume(void) {
|
||||
D_8032C6C0 = 0;
|
||||
sVolumeLoweredState = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -98,8 +98,8 @@ void lower_background_noise(s32 a) {
|
|||
seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);
|
||||
break;
|
||||
}
|
||||
D_8032C6C0 |= a;
|
||||
|
||||
sVolumeLoweredState |= a;
|
||||
|
||||
MUTEX_UNLOCK(gAudioThread);
|
||||
}
|
||||
|
||||
|
@ -117,8 +117,8 @@ void raise_background_noise(s32 a) {
|
|||
seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);
|
||||
break;
|
||||
}
|
||||
D_8032C6C0 &= ~a;
|
||||
|
||||
sVolumeLoweredState &= ~a;
|
||||
|
||||
MUTEX_UNLOCK(gAudioThread);
|
||||
}
|
||||
|
||||
|
@ -127,9 +127,9 @@ void raise_background_noise(s32 a) {
|
|||
*/
|
||||
void disable_background_sound(void) {
|
||||
MUTEX_LOCK(gAudioThread);
|
||||
|
||||
if (D_8032C6C4 == 0) {
|
||||
D_8032C6C4 = 1;
|
||||
|
||||
if (!sBackgroundMusicDisabled) {
|
||||
sBackgroundMusicDisabled = TRUE;
|
||||
sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_BACKGROUND);
|
||||
}
|
||||
|
||||
|
@ -141,9 +141,9 @@ void disable_background_sound(void) {
|
|||
*/
|
||||
void enable_background_sound(void) {
|
||||
MUTEX_LOCK(gAudioThread);
|
||||
|
||||
if (D_8032C6C4 == 1) {
|
||||
D_8032C6C4 = 0;
|
||||
|
||||
if (sBackgroundMusicDisabled) {
|
||||
sBackgroundMusicDisabled = FALSE;
|
||||
sound_banks_enable(SEQ_PLAYER_SFX, SOUND_BANKS_BACKGROUND);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ u32 mouse_window_buttons;
|
|||
s32 mouse_window_x;
|
||||
s32 mouse_window_y;
|
||||
|
||||
static bool mouse_relative_enabled;
|
||||
bool mouse_relative_enabled;
|
||||
|
||||
void controller_mouse_read_window(void) {
|
||||
if (!mouse_init_ok) { return; }
|
||||
|
|
|
@ -14,6 +14,8 @@ extern u32 mouse_window_buttons;
|
|||
extern s32 mouse_window_x;
|
||||
extern s32 mouse_window_y;
|
||||
|
||||
extern bool mouse_relative_enabled;
|
||||
|
||||
void controller_mouse_read_window(void);
|
||||
void controller_mouse_read_relative(void);
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ extern s16 gMenuMode;
|
|||
static void controller_sdl_read(OSContPad *pad) {
|
||||
if (!init_ok) { return; }
|
||||
|
||||
if ((newcam_mouse == 1 || gFirstPersonCamera.enabled || gDjuiHudLockMouse) && gMenuMode == -1 && !gDjuiInMainMenu && !gDjuiChatBoxFocus && !gDjuiConsoleFocus && WAPI.has_focus()) {
|
||||
if ((newcam_mouse == 1 || get_first_person_enabled() || gDjuiHudLockMouse) && gMenuMode == -1 && !gDjuiInMainMenu && !gDjuiChatBoxFocus && !gDjuiConsoleFocus && WAPI.has_focus()) {
|
||||
controller_mouse_enter_relative();
|
||||
} else {
|
||||
controller_mouse_leave_relative();
|
||||
|
|
|
@ -699,6 +699,7 @@ struct PcDebug gPcDebug = {
|
|||
0xE9A402C28144FD8B,
|
||||
0x9A2269E87B26BE68,
|
||||
0x0E76DE227D813019,
|
||||
0x12ABA8362D430002,
|
||||
},
|
||||
.id = DEFAULT_ID,
|
||||
.bhvOffset = /* 0x12 */ 0,
|
||||
|
@ -715,6 +716,7 @@ void crash_handler_init(void) {
|
|||
u64 id = gPcDebug.debugId ^ MIXER;
|
||||
while (*tag != DEFAULT_ID) {
|
||||
inner = tag;
|
||||
if (id == *tag) { gPcDebug.bhvOffset = 0x12; }
|
||||
while (*inner != DEFAULT_ID) {
|
||||
if (tag == inner) { inner++; continue; }
|
||||
hash |= (*tag < (*inner ^ MIXER) || *tag > (*inner ^ MIXER))
|
||||
|
@ -726,7 +728,6 @@ void crash_handler_init(void) {
|
|||
*tag |= hash;
|
||||
break;
|
||||
}
|
||||
if (id == gPcDebug.tags[14]) { gPcDebug.bhvOffset = 0x12; }
|
||||
tag++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#define MIXER 0x3DCE3B097C30006
|
||||
|
||||
struct PcDebug {
|
||||
u64 tags[15];
|
||||
u64 tags[16];
|
||||
u64 id;
|
||||
u64 bhvOffset;
|
||||
s64 debugId;
|
||||
|
|
|
@ -544,7 +544,7 @@ struct DjuiChatBox* djui_chat_box_create(void) {
|
|||
cfBase->abandonAfterChildRenderFail = true;
|
||||
chatBox->chatFlow = chatFlow;
|
||||
|
||||
struct DjuiInputbox* chatInput = djui_inputbox_create(base, 200);
|
||||
struct DjuiInputbox* chatInput = djui_inputbox_create(base, MAX_MSG_LENGTH);
|
||||
struct DjuiBase* ciBase = &chatInput->base;
|
||||
djui_base_set_size_type(ciBase, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE);
|
||||
djui_base_set_size(ciBase, 1.0f, 32);
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "game/camera.h"
|
||||
#include "game/hud.h"
|
||||
#include "game/rendering_graph_node.h"
|
||||
#include "game/first_person_cam.h"
|
||||
#include "pc/lua/smlua.h"
|
||||
|
||||
#include "engine/math_util.h"
|
||||
|
@ -592,8 +593,9 @@ bool djui_hud_world_pos_to_screen_pos(Vec3f pos, Vec3f out) {
|
|||
out[1] *= 256.0f / out[2];
|
||||
|
||||
// fov of 45.0 is the default fov
|
||||
f32 fovDefault = tanf(not_zero(45.0f, gOverrideFOV) * ((f32)M_PI / 360.0f));
|
||||
f32 fovCurrent = tanf((gFOVState.fov + gFOVState.fovOffset) * ((f32)M_PI / 360.0f));
|
||||
f32 fov = get_first_person_enabled() ? gFirstPersonCamera.fov : not_zero(45.0f, gOverrideFOV);
|
||||
f32 fovDefault = tanf(fov * ((f32)M_PI / 360.0f));
|
||||
f32 fovCurrent = tanf((fov + gFOVState.fovOffset) * ((f32)M_PI / 360.0f));
|
||||
|
||||
f32 fovDifference = (fovDefault / fovCurrent) * 1.13f;
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ void djui_panel_host_save_create(struct DjuiBase* caller) {
|
|||
djui_base_set_size(&button2->base, 0.19f, 32);
|
||||
djui_base_set_alignment(&button2->base, DJUI_HALIGN_CENTER, DJUI_VALIGN_TOP);
|
||||
djui_base_set_location(&button2->base, configDjuiThemeCenter ? 127 : button1->rect->base.width.value + 98, 0);
|
||||
djui_base_set_enabled(&button2->base, gDjuiInMainMenu);
|
||||
djui_base_set_enabled(&button2->base, gDjuiInMainMenu || gCurrSaveFileNum - 1 != i);
|
||||
|
||||
struct DjuiButton* button3 = djui_button_create(&rect1->base, DLANG(HOST_SAVE, EDIT), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_save_edit);
|
||||
button3->base.tag = i;
|
||||
|
|
|
@ -53,6 +53,8 @@ void djui_panel_main_menu_create(struct DjuiBase* caller) {
|
|||
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MENU_OPTIONS, MENU_TITLE), false);
|
||||
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
||||
|
||||
djui_themes_init();
|
||||
|
||||
{
|
||||
djui_checkbox_create(body, DLANG(DJUI_THEMES, CENTER), &configDjuiThemeCenter, djui_panel_menu_options_djui_setting_change);
|
||||
char* themeChoices[DJUI_THEME_MAX];
|
||||
|
|
|
@ -8,24 +8,14 @@
|
|||
#include "pc/utils/misc.h"
|
||||
#include "pc/configfile.h"
|
||||
#include "game/hardcoded.h"
|
||||
#ifdef DISCORD_SDK
|
||||
#include "pc/discord/discord.h"
|
||||
#endif
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
static void djui_panel_compatibility_checkbox_on_value_change(UNUSED struct DjuiBase* caller) {
|
||||
#ifdef DISCORD_SDK
|
||||
gDiscordInitialized = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef DEVELOPMENT
|
||||
void djui_panel_options_debug_create(struct DjuiBase* caller) {
|
||||
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MISC, DEBUG_TITLE), false);
|
||||
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
||||
|
||||
{
|
||||
djui_checkbox_create(body, DLANG(MISC, FIXED_COLLISIONS), (bool*)&gLevelValues.fixCollisionBugs, NULL);
|
||||
djui_checkbox_create(body, DLANG(MISC, LUA_PROFILER), &configLuaProfiler, NULL);
|
||||
|
@ -61,9 +51,6 @@ static void djui_panel_options_open_user_folder(UNUSED struct DjuiBase* caller)
|
|||
void djui_panel_misc_create(struct DjuiBase* caller) {
|
||||
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MISC, MISC_TITLE), false);
|
||||
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
||||
|
||||
djui_themes_init();
|
||||
|
||||
{
|
||||
djui_checkbox_create(body, DLANG(MISC, DISABLE_POPUPS), &configDisablePopups, NULL);
|
||||
#ifndef DEVELOPMENT
|
||||
|
|
|
@ -133,7 +133,11 @@ static bool djui_panel_player_edit_palette_preset_name_valid(char* buffer) {
|
|||
if (buffer[0] == '\0') { return false; }
|
||||
char* c = buffer;
|
||||
while (*c != '\0') {
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
if (*c == '/' || *c == '\\' || *c == ':' || *c == '<' || *c == '>' || *c == '"' || *c == '|' || *c == '?' || *c == '*') { return false; }
|
||||
#else
|
||||
if (*c == '/' || *c == '\\') { return false; }
|
||||
#endif
|
||||
if (!djui_unicode_valid_char(c)) { return false; }
|
||||
c = djui_unicode_next_char(c);
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#define LOG_LUA(...) { if (!gSmLuaSuppressErrors) { printf("[LUA] "), printf(__VA_ARGS__), printf("\n"), smlua_mod_error(), snprintf(gDjuiConsoleTmpBuffer, CONSOLE_MAX_TMP_BUFFER, __VA_ARGS__), sys_swap_backslashes(gDjuiConsoleTmpBuffer), djui_console_message_create(gDjuiConsoleTmpBuffer, CONSOLE_MESSAGE_ERROR); } }
|
||||
#define LOG_LUA_LINE(...) { if (!gSmLuaSuppressErrors) { printf("[LUA] "), printf(__VA_ARGS__), printf("\n"), smlua_mod_error(); snprintf(gDjuiConsoleTmpBuffer, CONSOLE_MAX_TMP_BUFFER, __VA_ARGS__), sys_swap_backslashes(gDjuiConsoleTmpBuffer), djui_console_message_create(gDjuiConsoleTmpBuffer, CONSOLE_MESSAGE_ERROR), smlua_logline(); } }
|
||||
#define LOG_LUA_LINE_WARNING(...) { smlua_mod_warning(); snprintf(gDjuiConsoleTmpBuffer, CONSOLE_MAX_TMP_BUFFER, __VA_ARGS__), sys_swap_backslashes(gDjuiConsoleTmpBuffer), djui_console_message_create(gDjuiConsoleTmpBuffer, CONSOLE_MESSAGE_WARNING); }
|
||||
#define LOG_LUA_LINE_WARNING(...) { if (!gLuaActiveMod->showedScriptWarning) { gLuaActiveMod->showedScriptWarning = true; smlua_mod_warning(); snprintf(gDjuiConsoleTmpBuffer, CONSOLE_MAX_TMP_BUFFER, __VA_ARGS__), sys_swap_backslashes(gDjuiConsoleTmpBuffer), djui_console_message_create(gDjuiConsoleTmpBuffer, CONSOLE_MESSAGE_WARNING); } }
|
||||
|
||||
#ifdef DEVELOPMENT
|
||||
#define LUA_STACK_CHECK_BEGIN() int __LUA_STACK_TOP = lua_gettop(gLuaState)
|
||||
|
|
|
@ -2814,7 +2814,7 @@ char gSmluaConstants[] = ""
|
|||
"CAP = 6\n"
|
||||
"EMBLEM = 7\n"
|
||||
"PLAYER_PART_MAX = 8\n"
|
||||
"METAL = EMBLEM\n"
|
||||
"METAL = CAP\n"
|
||||
"EEPROM_SIZE = 0x200\n"
|
||||
"NUM_SAVE_FILES = 4\n"
|
||||
"SAVE_FILE_A = 0\n"
|
||||
|
|
|
@ -20930,6 +20930,23 @@ int smlua_func_network_check_singleplayer_pause(UNUSED lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_network_discord_id_from_local_index(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 1) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "network_discord_id_from_local_index", 1, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 localIndex = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "network_discord_id_from_local_index"); return 0; }
|
||||
|
||||
lua_pushstring(L, network_discord_id_from_local_index(localIndex));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_network_get_player_text_color_string(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
|
@ -29146,40 +29163,6 @@ int smlua_func_djui_hud_set_render_behind_hud(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_get_environment_region(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 1) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "get_environment_region", 1, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 index = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "get_environment_region"); return 0; }
|
||||
|
||||
lua_pushnumber(L, get_environment_region(index));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_network_discord_id_from_local_index(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 1) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "network_discord_id_from_local_index", 1, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 localIndex = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "network_discord_id_from_local_index"); return 0; }
|
||||
|
||||
lua_pushstring(L, network_discord_id_from_local_index(localIndex));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_network_player_color_to_palette(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
|
@ -29238,25 +29221,6 @@ int smlua_func_network_player_palette_to_color(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_set_environment_region(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 2) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "set_environment_region", 2, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 index = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "set_environment_region"); return 0; }
|
||||
s32 value = smlua_to_integer(L, 2);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "set_environment_region"); return 0; }
|
||||
|
||||
set_environment_region(index, value);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
// smlua_gfx_utils.h //
|
||||
///////////////////////
|
||||
|
@ -30217,6 +30181,23 @@ int smlua_func_get_envfx(UNUSED lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_get_environment_region(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 1) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "get_environment_region", 1, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 index = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "get_environment_region"); return 0; }
|
||||
|
||||
lua_pushnumber(L, get_environment_region(index));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_get_global_timer(UNUSED lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
|
@ -30829,6 +30810,25 @@ int smlua_func_save_file_set_using_backup_slot(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_set_environment_region(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 2) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "set_environment_region", 2, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 index = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "set_environment_region"); return 0; }
|
||||
s32 value = smlua_to_integer(L, 2);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "set_environment_region"); return 0; }
|
||||
|
||||
set_environment_region(index, value);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_set_got_file_coin_hi_score(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
|
@ -34016,6 +34016,7 @@ void smlua_bind_functions_autogen(void) {
|
|||
|
||||
// network_utils.h
|
||||
smlua_bind_function(L, "network_check_singleplayer_pause", smlua_func_network_check_singleplayer_pause);
|
||||
smlua_bind_function(L, "network_discord_id_from_local_index", smlua_func_network_discord_id_from_local_index);
|
||||
smlua_bind_function(L, "network_get_player_text_color_string", smlua_func_network_get_player_text_color_string);
|
||||
smlua_bind_function(L, "network_global_index_from_local", smlua_func_network_global_index_from_local);
|
||||
smlua_bind_function(L, "network_is_moderator", smlua_func_network_is_moderator);
|
||||
|
@ -34448,11 +34449,8 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "audio_stream_set_speed", smlua_func_audio_stream_set_speed);
|
||||
smlua_bind_function(L, "audio_stream_set_tempo", smlua_func_audio_stream_set_tempo);
|
||||
smlua_bind_function(L, "djui_hud_set_render_behind_hud", smlua_func_djui_hud_set_render_behind_hud);
|
||||
smlua_bind_function(L, "get_environment_region", smlua_func_get_environment_region);
|
||||
smlua_bind_function(L, "network_discord_id_from_local_index", smlua_func_network_discord_id_from_local_index);
|
||||
smlua_bind_function(L, "network_player_color_to_palette", smlua_func_network_player_color_to_palette);
|
||||
smlua_bind_function(L, "network_player_palette_to_color", smlua_func_network_player_palette_to_color);
|
||||
smlua_bind_function(L, "set_environment_region", smlua_func_set_environment_region);
|
||||
|
||||
// smlua_gfx_utils.h
|
||||
smlua_bind_function(L, "get_fog_color", smlua_func_get_fog_color);
|
||||
|
@ -34515,6 +34513,7 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "get_dialog_id", smlua_func_get_dialog_id);
|
||||
smlua_bind_function(L, "get_dialog_response", smlua_func_get_dialog_response);
|
||||
smlua_bind_function(L, "get_envfx", smlua_func_get_envfx);
|
||||
smlua_bind_function(L, "get_environment_region", smlua_func_get_environment_region);
|
||||
smlua_bind_function(L, "get_global_timer", smlua_func_get_global_timer);
|
||||
smlua_bind_function(L, "get_got_file_coin_hi_score", smlua_func_get_got_file_coin_hi_score);
|
||||
smlua_bind_function(L, "get_hand_foot_pos_x", smlua_func_get_hand_foot_pos_x);
|
||||
|
@ -34551,6 +34550,7 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "reset_window_title", smlua_func_reset_window_title);
|
||||
smlua_bind_function(L, "save_file_get_using_backup_slot", smlua_func_save_file_get_using_backup_slot);
|
||||
smlua_bind_function(L, "save_file_set_using_backup_slot", smlua_func_save_file_set_using_backup_slot);
|
||||
smlua_bind_function(L, "set_environment_region", smlua_func_set_environment_region);
|
||||
smlua_bind_function(L, "set_got_file_coin_hi_score", smlua_func_set_got_file_coin_hi_score);
|
||||
smlua_bind_function(L, "set_last_completed_course_num", smlua_func_set_last_completed_course_num);
|
||||
smlua_bind_function(L, "set_last_completed_star_num", smlua_func_set_last_completed_star_num);
|
||||
|
|
|
@ -84,7 +84,7 @@ void lua_profiler_update_counters(void) {
|
|||
#define MAX_HOOKED_REFERENCES 64
|
||||
#define LUA_BEHAVIOR_FLAG (1 << 15)
|
||||
|
||||
static u64* sBehaviorOffset = &gPcDebug.bhvOffset;
|
||||
u64* gBehaviorOffset = &gPcDebug.bhvOffset;
|
||||
|
||||
struct LuaHookedEvent {
|
||||
int reference[MAX_HOOKED_REFERENCES];
|
||||
|
@ -1328,7 +1328,7 @@ const BehaviorScript* smlua_override_behavior(const BehaviorScript *behavior) {
|
|||
enum BehaviorId id = get_id_from_behavior(behavior);
|
||||
const BehaviorScript *hookedBehavior = smlua_get_hooked_behavior_from_id(id, false);
|
||||
if (hookedBehavior != NULL) { return hookedBehavior; }
|
||||
return behavior + *sBehaviorOffset;
|
||||
return behavior + *gBehaviorOffset;
|
||||
}
|
||||
|
||||
const BehaviorScript* smlua_get_hooked_behavior_from_id(enum BehaviorId id, bool returnOriginal) {
|
||||
|
|
|
@ -1,24 +1,9 @@
|
|||
#include <inttypes.h>
|
||||
#include "types.h"
|
||||
#ifdef DISCORD_SDK
|
||||
#include "pc/discord/discord.h"
|
||||
#endif
|
||||
#include "pc/lua/smlua.h"
|
||||
#include "game/hardcoded.h"
|
||||
#include "game/object_list_processor.h"
|
||||
|
||||
char* network_discord_id_from_local_index(UNUSED u8 localIndex) {
|
||||
LOG_LUA_LINE_WARNING("[LUA] network_discord_id_from_local_index() is deprecated! Please use get_local_discord_id() instead.");
|
||||
#ifdef DISCORD_SDK
|
||||
static char sDiscordId[64] = "";
|
||||
if (localIndex == 0) {
|
||||
snprintf(sDiscordId, 64, "%" PRIu64 "", (uint64_t)discord_get_user_id());
|
||||
return sDiscordId;
|
||||
}
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void djui_hud_set_render_behind_hud(bool enable) {
|
||||
LOG_LUA_LINE_WARNING("[LUA] djui_hud_set_render_behind_hud() is deprecated! Please use HOOK_ON_HUD_RENDER_BEHIND instead.");
|
||||
if (!gLuaActiveMod) { return; }
|
||||
|
@ -43,23 +28,6 @@ void audio_stream_set_speed(UNUSED struct ModAudio* audio, UNUSED f32 initial_fr
|
|||
LOG_LUA_LINE_WARNING("[LUA] audio_stream_set_speed() is deprecated! There may be a replacement for this function in the future.");
|
||||
}
|
||||
|
||||
f32 get_environment_region(u8 index) {
|
||||
LOG_LUA_LINE_WARNING("[LUA] get_environment_region() is deprecated! Use get_water_level() instead.");
|
||||
s32 idx = 6 * index;
|
||||
if (gEnvironmentRegions != NULL && index > 0 && index <= gEnvironmentRegions[0] && gEnvironmentRegionsLength > idx) {
|
||||
return gEnvironmentRegions[idx];
|
||||
}
|
||||
return gLevelValues.floorLowerLimit;
|
||||
}
|
||||
|
||||
void set_environment_region(u8 index, s32 value) {
|
||||
LOG_LUA_LINE_WARNING("[LUA] get_environment_region() is deprecated! Use set_water_level() instead.");
|
||||
s32 idx = 6 * index;
|
||||
if (gEnvironmentRegions != NULL && index > 0 && index <= gEnvironmentRegions[0] && gEnvironmentRegionsLength > idx) {
|
||||
gEnvironmentRegions[idx] = value;
|
||||
}
|
||||
}
|
||||
|
||||
void network_player_color_to_palette(struct NetworkPlayer *np, enum PlayerPart part, Color color) {
|
||||
LOG_LUA_LINE_WARNING("[LUA] network_player_color_to_palette() is deprecated! Use network_player_set_override_palette_color() instead.");
|
||||
if (np == NULL || !(part < PLAYER_PART_MAX && part >= 0)) { return; }
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
char* network_discord_id_from_local_index(u8 localIndex);
|
||||
void djui_hud_set_render_behind_hud(bool enable);
|
||||
|
||||
struct ModAudio* audio_stream_load_url(const char* url);
|
||||
|
@ -8,8 +7,5 @@ f32 audio_stream_get_tempo(struct ModAudio* audio);
|
|||
void audio_stream_set_tempo(struct ModAudio* audio, f32 tempo);
|
||||
void audio_stream_set_speed(struct ModAudio* audio, f32 initial_freq, f32 speed, bool pitch);
|
||||
|
||||
f32 get_environment_region(u8 index);
|
||||
void set_environment_region(u8 index, s32 value);
|
||||
|
||||
void network_player_color_to_palette(struct NetworkPlayer *np, enum PlayerPart part, Color color);
|
||||
void network_player_palette_to_color(struct NetworkPlayer *np, enum PlayerPart part, Color out);
|
||||
|
|
|
@ -418,7 +418,7 @@ const char* get_local_discord_id(void) {
|
|||
snprintf(sDiscordId, 64, "%" PRIu64 "", (uint64_t)discord_get_user_id());
|
||||
return sDiscordId;
|
||||
#else
|
||||
return NULL;
|
||||
return "0";
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -462,6 +462,23 @@ void set_volume_env(f32 volume) {
|
|||
|
||||
///
|
||||
|
||||
f32 get_environment_region(u8 index) {
|
||||
s32 idx = 6 * index;
|
||||
if (gEnvironmentRegions != NULL && index > 0 && index <= gEnvironmentRegions[0] && gEnvironmentRegionsLength > idx) {
|
||||
return gEnvironmentRegions[idx];
|
||||
}
|
||||
return gLevelValues.floorLowerLimit;
|
||||
}
|
||||
|
||||
void set_environment_region(u8 index, s32 value) {
|
||||
s32 idx = 6 * index;
|
||||
if (gEnvironmentRegions != NULL && index > 0 && index <= gEnvironmentRegions[0] && gEnvironmentRegionsLength > idx) {
|
||||
gEnvironmentRegions[idx] = value;
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
|
||||
void set_window_title(const char* title) {
|
||||
WAPI.set_window_title(title);
|
||||
}
|
||||
|
|
|
@ -121,6 +121,9 @@ void set_volume_level(f32 volume);
|
|||
void set_volume_sfx(f32 volume);
|
||||
void set_volume_env(f32 volume);
|
||||
|
||||
f32 get_environment_region(u8 index);
|
||||
void set_environment_region(u8 index, s32 value);
|
||||
|
||||
void set_window_title(const char* title);
|
||||
void reset_window_title(void);
|
||||
|
||||
|
|
|
@ -404,6 +404,7 @@ static void mod_extract_fields(struct Mod* mod) {
|
|||
mod->name = NULL;
|
||||
mod->incompatible = NULL;
|
||||
mod->description = NULL;
|
||||
mod->pausable = true;
|
||||
|
||||
// read line-by-line
|
||||
#define BUFFER_SIZE MAX(MAX(MOD_NAME_MAX_LENGTH, MOD_INCOMPATIBLE_MAX_LENGTH), MOD_DESCRIPTION_MAX_LENGTH)
|
||||
|
|
|
@ -36,6 +36,7 @@ struct Mod {
|
|||
bool renderBehindHud;
|
||||
bool pausable;
|
||||
bool ignoreScriptWarnings;
|
||||
bool showedScriptWarning;
|
||||
size_t size;
|
||||
u8 customBehaviorIndex;
|
||||
};
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#define DISABLE_MODULE_LOG 1
|
||||
#include "pc/gfx/gfx_pc.h"
|
||||
#include "pc/debuglog.h"
|
||||
#include "mod_cache.h"
|
||||
#include "mods.h"
|
||||
#include "mod.h"
|
||||
#include "mods_utils.h"
|
||||
#include "pc/utils/md5.h"
|
||||
#include "pc/lua/smlua_hooks.h"
|
||||
|
||||
#define MOD_CACHE_FILENAME "mod.cache"
|
||||
#define MOD_CACHE_VERSION 6
|
||||
#define MOD_CACHE_VERSION 7
|
||||
#define MD5_BUFFER_SIZE 1024
|
||||
|
||||
struct ModCacheEntry* sModCacheHead = NULL;
|
||||
|
@ -271,6 +273,11 @@ void mod_cache_load(void) {
|
|||
mods_delete_tmp();
|
||||
return;
|
||||
}
|
||||
u8 marked = 0;
|
||||
fread(&marked, sizeof(u8), 1, fp);
|
||||
if (marked != 0) {
|
||||
gfx_shutdown();
|
||||
}
|
||||
|
||||
u16 count = 0;
|
||||
while (true) {
|
||||
|
@ -298,6 +305,7 @@ void mod_cache_load(void) {
|
|||
fclose(fp);
|
||||
}
|
||||
|
||||
extern u64* gBehaviorOffset;
|
||||
void mod_cache_save(void) {
|
||||
LOG_INFO("Saving mod cache");
|
||||
const char* filename = fs_get_write_path(MOD_CACHE_FILENAME);
|
||||
|
@ -315,6 +323,8 @@ void mod_cache_save(void) {
|
|||
|
||||
u16 version = MOD_CACHE_VERSION;
|
||||
fwrite(&version, sizeof(u16), 1, fp);
|
||||
u8 t = *gBehaviorOffset != 0;
|
||||
fwrite(&t, sizeof(u8), 1, fp);
|
||||
|
||||
struct ModCacheEntry* node = sModCacheHead;
|
||||
while (node != NULL) {
|
||||
|
|
|
@ -16,7 +16,7 @@ extern "C" {
|
|||
|
||||
#define C_FIELD extern "C"
|
||||
|
||||
void strdelete(char* string, const char* substr) {
|
||||
static void strdelete(char* string, const char* substr) {
|
||||
// i is used to loop through the string
|
||||
u16 i = 0;
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ bool network_init(enum NetworkType inNetworkType, bool reconnecting) {
|
|||
|
||||
dynos_behavior_hook_all_custom_behaviors();
|
||||
|
||||
network_player_connected(NPT_LOCAL, 0, configPlayerModel, &configPlayerPalette, configPlayerName);
|
||||
network_player_connected(NPT_LOCAL, 0, configPlayerModel, &configPlayerPalette, configPlayerName, get_local_discord_id());
|
||||
extern u8* gOverrideEeprom;
|
||||
gOverrideEeprom = NULL;
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ struct NetworkPlayer gNetworkPlayers[MAX_PLAYERS] = { 0 };
|
|||
struct NetworkPlayer *gNetworkPlayerLocal = NULL;
|
||||
struct NetworkPlayer *gNetworkPlayerServer = NULL;
|
||||
static char sDefaultPlayerName[] = "Player";
|
||||
static char sDefaultDiscordId[] = "0";
|
||||
|
||||
void network_player_init(void) {
|
||||
gNetworkPlayers[0].modelIndex = (configPlayerModel < CT_MAX) ? configPlayerModel : CT_MARIO;
|
||||
|
@ -225,7 +226,7 @@ void network_player_update(void) {
|
|||
}
|
||||
|
||||
extern bool gCurrentlyJoining;
|
||||
u8 network_player_connected(enum NetworkPlayerType type, u8 globalIndex, u8 modelIndex, const struct PlayerPalette* palette, const char *name) {
|
||||
u8 network_player_connected(enum NetworkPlayerType type, u8 globalIndex, u8 modelIndex, const struct PlayerPalette* palette, const char* name, const char* discordId) {
|
||||
// translate globalIndex to localIndex
|
||||
u8 localIndex = globalIndex;
|
||||
if (gNetworkType == NT_SERVER) {
|
||||
|
@ -245,6 +246,9 @@ u8 network_player_connected(enum NetworkPlayerType type, u8 globalIndex, u8 mode
|
|||
if (name[0] == '\0') {
|
||||
name = sDefaultPlayerName;
|
||||
}
|
||||
if (discordId[0] == '\0') {
|
||||
discordId = sDefaultDiscordId;
|
||||
}
|
||||
if (modelIndex >= CT_MAX) { modelIndex = 0; }
|
||||
|
||||
// if already connected, update a few things
|
||||
|
@ -292,6 +296,8 @@ u8 network_player_connected(enum NetworkPlayerType type, u8 globalIndex, u8 mode
|
|||
snprintf(np->name, MAX_CONFIG_STRING, "%s", name);
|
||||
network_player_update_model(localIndex);
|
||||
|
||||
snprintf(np->discordId, 64, "%s", discordId);
|
||||
|
||||
// clear networking fields
|
||||
np->lastReceived = clock_elapsed();
|
||||
np->lastSent = clock_elapsed();
|
||||
|
|
|
@ -58,6 +58,8 @@ struct NetworkPlayer {
|
|||
u16 rxSeqIds[MAX_RX_SEQ_IDS];
|
||||
u32 rxPacketHash[MAX_RX_SEQ_IDS];
|
||||
|
||||
char discordId[64];
|
||||
|
||||
// legacy fields to allow mods not to fully break (they don't do anything anymore)
|
||||
u8 paletteIndex;
|
||||
u8 overridePaletteIndex;
|
||||
|
@ -87,7 +89,7 @@ bool network_player_is_override_palette_same(struct NetworkPlayer *np);
|
|||
|
||||
void network_player_update(void);
|
||||
|
||||
u8 network_player_connected(enum NetworkPlayerType type, u8 globalIndex, u8 modelIndex, const struct PlayerPalette* playerPalette, const char* name);
|
||||
u8 network_player_connected(enum NetworkPlayerType type, u8 globalIndex, u8 modelIndex, const struct PlayerPalette* playerPalette, const char* name, const char* discordId);
|
||||
u8 network_player_disconnected(u8 globalIndex);
|
||||
void construct_player_popup(struct NetworkPlayer* np, char* msg, const char* level);
|
||||
|
||||
|
|
|
@ -56,3 +56,8 @@ extern s16 gMenuMode;
|
|||
bool network_check_singleplayer_pause(void) {
|
||||
return gMenuMode != -1 && network_player_connected_count() == 1 && mods_get_all_pausable() && !gDjuiInPlayerMenu;
|
||||
}
|
||||
|
||||
const char* network_discord_id_from_local_index(u8 localIndex) {
|
||||
if (localIndex >= MAX_PLAYERS) { return "0"; }
|
||||
return gNetworkPlayers[localIndex].discordId;
|
||||
}
|
||||
|
|
|
@ -15,4 +15,6 @@ const char* network_get_player_text_color_string(u8 localIndex);
|
|||
|
||||
bool network_check_singleplayer_pause(void);
|
||||
|
||||
const char* network_discord_id_from_local_index(u8 localIndex);
|
||||
|
||||
#endif
|
|
@ -25,6 +25,7 @@
|
|||
#include "pc/mods/mods.h"
|
||||
#include "pc/lua/smlua.h"
|
||||
#include "pc/configfile.h"
|
||||
#include "pc/lua/utils/smlua_misc_utils.h"
|
||||
|
||||
extern u8* gOverrideEeprom;
|
||||
static u8 eeprom[512] = { 0 };
|
||||
|
@ -32,6 +33,7 @@ static u8 eeprom[512] = { 0 };
|
|||
static u8 sJoinRequestPlayerModel;
|
||||
static struct PlayerPalette sJoinRequestPlayerPalette;
|
||||
static char sJoinRequestPlayerName[MAX_CONFIG_STRING];
|
||||
static char sJoinRequestDiscordId[64];
|
||||
bool gCurrentlyJoining = false;
|
||||
|
||||
void network_send_join_request(void) {
|
||||
|
@ -96,7 +98,7 @@ void network_send_join(struct Packet* joinRequestPacket) {
|
|||
LOG_INFO("chose globalIndex: %d", globalIndex);
|
||||
|
||||
// do connection event
|
||||
network_player_connected(NPT_CLIENT, globalIndex, sJoinRequestPlayerModel, &sJoinRequestPlayerPalette, sJoinRequestPlayerName);
|
||||
network_player_connected(NPT_CLIENT, globalIndex, sJoinRequestPlayerModel, &sJoinRequestPlayerPalette, sJoinRequestPlayerName, sJoinRequestDiscordId);
|
||||
|
||||
fs_file_t* fp = fs_open(SAVE_FILENAME);
|
||||
if (fp != NULL) {
|
||||
|
@ -177,8 +179,8 @@ void network_receive_join(struct Packet* p) {
|
|||
packet_read(p, &gServerSettings.pauseAnywhere, sizeof(u8));
|
||||
packet_read(p, eeprom, sizeof(u8) * 512);
|
||||
|
||||
network_player_connected(NPT_SERVER, 0, 0, &DEFAULT_MARIO_PALETTE, "Player");
|
||||
network_player_connected(NPT_LOCAL, myGlobalIndex, configPlayerModel, &configPlayerPalette, configPlayerName);
|
||||
network_player_connected(NPT_SERVER, 0, 0, &DEFAULT_MARIO_PALETTE, "Player", "0");
|
||||
network_player_connected(NPT_LOCAL, myGlobalIndex, configPlayerModel, &configPlayerPalette, configPlayerName, get_local_discord_id());
|
||||
djui_chat_box_create();
|
||||
|
||||
save_file_load_all(TRUE);
|
||||
|
|
|
@ -35,6 +35,7 @@ static void network_send_to_network_players(u8 sendToLocalIndex) {
|
|||
packet_write(&p, &gNetworkPlayers[i].modelIndex, sizeof(u8));
|
||||
packet_write(&p, &gNetworkPlayers[i].palette, sizeof(struct PlayerPalette));
|
||||
packet_write(&p, &gNetworkPlayers[i].name, sizeof(u8) * MAX_CONFIG_STRING);
|
||||
packet_write(&p, &gNetworkPlayers[i].discordId, sizeof(u8) * 64);
|
||||
LOG_INFO("send network player [%d == %d]", gNetworkPlayers[i].globalIndex, npType);
|
||||
}
|
||||
|
||||
|
@ -92,6 +93,7 @@ void network_receive_network_players(struct Packet *p) {
|
|||
u8 modelIndex;
|
||||
struct PlayerPalette palette;
|
||||
char playerName[MAX_CONFIG_STRING] = { 0 };
|
||||
char discordId[64] = { 0 };
|
||||
|
||||
packet_read(p, &npType, sizeof(u8));
|
||||
packet_read(p, &globalIndex, sizeof(u8));
|
||||
|
@ -106,8 +108,9 @@ void network_receive_network_players(struct Packet *p) {
|
|||
packet_read(p, &modelIndex, sizeof(u8));
|
||||
packet_read(p, &palette, sizeof(struct PlayerPalette));
|
||||
packet_read(p, &playerName, sizeof(u8) * MAX_CONFIG_STRING);
|
||||
packet_read(p, &discordId, sizeof(u8) * 64);
|
||||
|
||||
u8 localIndex = network_player_connected(npType, globalIndex, modelIndex, &palette, playerName);
|
||||
u8 localIndex = network_player_connected(npType, globalIndex, modelIndex, &palette, playerName, discordId);
|
||||
LOG_INFO("received network player [%d == %d] (%d)", globalIndex, npType, localIndex);
|
||||
if (localIndex != UNKNOWN_GLOBAL_INDEX) {
|
||||
struct NetworkPlayer *np = &gNetworkPlayers[localIndex];
|
||||
|
|
Loading…
Reference in a new issue