You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Merge pull request #772 from HackerN64/develop/2.2.0
Release: HackerSM64 2.2.0
This commit is contained in:
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "lib/libpl"]
|
||||
path = lib/libpl
|
||||
url = https://gitlab.com/parallel-launcher/libpl.git
|
||||
3
.vscode/c_cpp_properties.json
vendored
3
.vscode/c_cpp_properties.json
vendored
@@ -26,7 +26,8 @@
|
||||
"VERSION_US=1",
|
||||
"F3DEX_GBI_2=1",
|
||||
"F3DZEX_NON_GBI_2=1",
|
||||
"F3DEX_GBI_SHARED=1"
|
||||
"F3DEX_GBI_SHARED=1",
|
||||
"LIBPL=1"
|
||||
],
|
||||
"compilerPath": "/usr/bin/mips-linux-gnu-gcc",
|
||||
"cStandard": "gnu17",
|
||||
|
||||
26
Makefile
26
Makefile
@@ -135,7 +135,7 @@ endif
|
||||
#==============================================================================#
|
||||
|
||||
# Default non-gcc opt flags
|
||||
DEFAULT_OPT_FLAGS = -Ofast
|
||||
DEFAULT_OPT_FLAGS = -Ofast -falign-functions=32
|
||||
# Note: -fno-associative-math is used here to suppress warnings, ideally we would enable this as an optimization but
|
||||
# this conflicts with -ftrapping-math apparently.
|
||||
# TODO: Figure out how to allow -fassociative-math to be enabled
|
||||
@@ -253,6 +253,18 @@ ifeq ($(HVQM),1)
|
||||
SRC_DIRS += src/hvqm
|
||||
endif
|
||||
|
||||
# LIBPL - whether to include libpl library for interfacing with Parallel Launcher
|
||||
# (library will be pulled into repo after building with this enabled for the first time)
|
||||
# 1 - includes code in ROM
|
||||
# 0 - does not
|
||||
LIBPL ?= 0
|
||||
LIBPL_DIR := lib/libpl
|
||||
$(eval $(call validate-option,LIBPL,0 1))
|
||||
ifeq ($(LIBPL),1)
|
||||
DEFINES += LIBPL=1
|
||||
SRC_DIRS += $(LIBPL_DIR)
|
||||
endif
|
||||
|
||||
BUILD_DIR_BASE := build
|
||||
# BUILD_DIR is the location where all build artifacts are placed
|
||||
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)_$(CONSOLE)
|
||||
@@ -335,6 +347,18 @@ ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to build tools)
|
||||
endif
|
||||
|
||||
# Clone any needed submodules
|
||||
ifeq ($(LIBPL),1)
|
||||
ifeq ($(wildcard $(LIBPL_DIR)/*.h),)
|
||||
$(info Cloning libpl submodule...)
|
||||
DUMMY != git submodule update --init $(LIBPL_DIR) > /dev/null || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to clone libpl submodule)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
$(info Building ROM...)
|
||||
|
||||
endif
|
||||
|
||||
@@ -36,7 +36,6 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
|
||||
**Lighting Engine by Wiseguy**
|
||||
- Lighting Engine is available on a separate branch ([base/lighting-engine](https://github.com/Reonu/HackerSM64/tree/base/lighting-engine)). Instructions on how to use it are in the readme of that branch.
|
||||
- Alternatively, the main repo has `Puppylights` available, which is a more lightweight, but limited lighting library intended to be used to modify existing light properties. You can look at `puppylights.c` to find out how to use it.
|
||||
|
||||
**Puppycam**
|
||||
- Puppycam is available on the master branch now, you can toggle it in `config/config_camera.h`. *
|
||||
|
||||
@@ -1 +1 @@
|
||||
v2.1.3
|
||||
v2.2.0
|
||||
|
||||
@@ -30,7 +30,7 @@ const u8 small_font_kerning_default[] = {
|
||||
/*A*/ 7, /*B*/ 7, /*C*/ 7, /*D*/ 7, /*E*/ 6, /*F*/ 5, /*G*/ 8, /*H*/ 6, /*I*/ 6, /*J*/ 5, /*K*/ 7, /*L*/ 6, /*M*/ 7, /*N*/ 7, /*O*/ 7, /*P*/ 6,
|
||||
/*Q*/ 8, /*R*/ 6, /*S*/ 7, /*T*/ 7, /*U*/ 7, /*V*/ 7, /*W*/ 8, /*X*/ 7, /*Y*/ 7, /*Z*/ 7, /*[*/ 0, /*\\*/ 0, /*]*/ 0, /*^*/ 8, /*_*/ 0, /*`*/ 0,
|
||||
/*a*/ 7, /*b*/ 7, /*c*/ 6, /*d*/ 7, /*e*/ 7, /*f*/ 7, /*g*/ 7, /*h*/ 7, /*i*/ 3, /*j*/ 5, /*k*/ 8, /*l*/ 4, /*m*/ 7, /*n*/ 7, /*o*/ 7, /*p*/ 7,
|
||||
/*q*/ 7, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 7, /*w*/ 8, /*x*/ 6, /*y*/ 8, /*z*/ 7, /*~*/ 8,
|
||||
/*q*/ 7, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 7, /*w*/ 8, /*x*/ 6, /*y*/ 8, /*z*/ 7, /*{*/ 0, /*|*/ 0, /*}*/ 0, /*~*/ 8,
|
||||
};
|
||||
|
||||
const u16 small_font_offsets_default[] = {
|
||||
@@ -49,7 +49,7 @@ static const u8 small_font_kerning_outline[] = {
|
||||
/*A*/ 6, /*B*/ 6, /*C*/ 6, /*D*/ 6, /*E*/ 6, /*F*/ 6, /*G*/ 6, /*H*/ 6, /*I*/ 5, /*J*/ 7, /*K*/ 6, /*L*/ 6, /*M*/ 6, /*N*/ 6, /*O*/ 6, /*P*/ 6,
|
||||
/*Q*/ 6, /*R*/ 6, /*S*/ 6, /*T*/ 6, /*U*/ 6, /*V*/ 6, /*W*/ 6, /*X*/ 6, /*Y*/ 6, /*Z*/ 6, /*[*/ 0, /*\\*/ 0, /*]*/ 0, /*^*/ 7, /*_*/ 0, /*`*/ 0,
|
||||
/*a*/ 5, /*b*/ 5, /*c*/ 5, /*d*/ 5, /*e*/ 5, /*f*/ 5, /*g*/ 5, /*h*/ 5, /*i*/ 2, /*j*/ 6, /*k*/ 4, /*l*/ 2, /*m*/ 5, /*n*/ 5, /*o*/ 5, /*p*/ 5,
|
||||
/*q*/ 5, /*r*/ 5, /*s*/ 5, /*t*/ 5, /*u*/ 5, /*v*/ 5, /*w*/ 5, /*x*/ 5, /*y*/ 5, /*z*/ 5, /*~*/ 6,
|
||||
/*q*/ 5, /*r*/ 5, /*s*/ 5, /*t*/ 5, /*u*/ 5, /*v*/ 5, /*w*/ 5, /*x*/ 5, /*y*/ 5, /*z*/ 5, /*{*/ 0, /*|*/ 0, /*}*/ 0, /*~*/ 6,
|
||||
};
|
||||
|
||||
const u16 small_font_offsets_outline[] = {
|
||||
@@ -68,7 +68,7 @@ static const u8 small_font_kerning_plain[] = {
|
||||
/*A*/ 6, /*B*/ 6, /*C*/ 6, /*D*/ 6, /*E*/ 6, /*F*/ 6, /*G*/ 6, /*H*/ 6, /*I*/ 4, /*J*/ 6, /*K*/ 6, /*L*/ 6, /*M*/ 7, /*N*/ 7, /*O*/ 6, /*P*/ 6,
|
||||
/*Q*/ 6, /*R*/ 6, /*S*/ 6, /*T*/ 6, /*U*/ 6, /*V*/ 6, /*W*/ 7, /*X*/ 6, /*Y*/ 6, /*Z*/ 6, /*[*/ 0, /*\\*/ 0, /*]*/ 0, /*^*/ 7, /*_*/ 0, /*`*/ 0,
|
||||
/*a*/ 6, /*b*/ 6, /*c*/ 6, /*d*/ 6, /*e*/ 6, /*f*/ 6, /*g*/ 6, /*h*/ 6, /*i*/ 3, /*j*/ 4, /*k*/ 6, /*l*/ 5, /*m*/ 7, /*n*/ 6, /*o*/ 6, /*p*/ 6,
|
||||
/*q*/ 6, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 6, /*w*/ 7, /*x*/ 6, /*y*/ 6, /*z*/ 6, /*~*/ 7,
|
||||
/*q*/ 6, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 6, /*w*/ 7, /*x*/ 6, /*y*/ 6, /*z*/ 6, /*{*/ 0, /*|*/ 0, /*}*/ 0, /*~*/ 7,
|
||||
};
|
||||
|
||||
const u16 small_font_offsets_plain[] = {
|
||||
@@ -87,7 +87,7 @@ static const u8 small_font_kerning_vanilla[] = {
|
||||
/*A*/ 5, /*B*/ 5, /*C*/ 5, /*D*/ 5, /*E*/ 5, /*F*/ 5, /*G*/ 5, /*H*/ 5, /*I*/ 3, /*J*/ 5, /*K*/ 5, /*L*/ 5, /*M*/ 7, /*N*/ 7, /*O*/ 6, /*P*/ 5,
|
||||
/*Q*/ 6, /*R*/ 5, /*S*/ 5, /*T*/ 5, /*U*/ 5, /*V*/ 5, /*W*/ 7, /*X*/ 6, /*Y*/ 5, /*Z*/ 5, /*[*/ 0, /*\\*/ 0, /*]*/ 0, /*^*/ 7, /*_*/ 0, /*`*/ 0,
|
||||
/*a*/ 5, /*b*/ 4, /*c*/ 4, /*d*/ 4, /*e*/ 4, /*f*/ 5, /*g*/ 5, /*h*/ 4, /*i*/ 3, /*j*/ 4, /*k*/ 3, /*l*/ 2, /*m*/ 6, /*n*/ 4, /*o*/ 4, /*p*/ 4,
|
||||
/*q*/ 5, /*r*/ 4, /*s*/ 4, /*t*/ 4, /*u*/ 4, /*v*/ 4, /*w*/ 7, /*x*/ 5, /*y*/ 4, /*z*/ 5, /*~*/ 6,
|
||||
/*q*/ 5, /*r*/ 4, /*s*/ 4, /*t*/ 4, /*u*/ 4, /*v*/ 4, /*w*/ 7, /*x*/ 5, /*y*/ 4, /*z*/ 5, /*{*/ 0, /*|*/ 0, /*}*/ 0, /*~*/ 6,
|
||||
};
|
||||
|
||||
const u16 small_font_offsets_vanilla[] = {
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
#define BC_HH(a, b) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 0, 16))
|
||||
#define BC_W(a) ((uintptr_t)(u32)(a))
|
||||
#define BC_PTR(a) ((uintptr_t)(a))
|
||||
#define BC_BPTR(a, b) (_SHIFTL(a, 24, 8) + OS_K0_TO_PHYSICAL(b))
|
||||
|
||||
enum BehaviorCommands {
|
||||
/*0x00*/ BHV_CMD_BEGIN,
|
||||
@@ -180,8 +181,7 @@ enum BehaviorCommands {
|
||||
|
||||
// Executes a native game function.
|
||||
#define CALL_NATIVE(func) \
|
||||
BC_B(BHV_CMD_CALL_NATIVE), \
|
||||
BC_PTR(func)
|
||||
BC_BPTR(BHV_CMD_CALL_NATIVE, func)
|
||||
|
||||
// Adds a float to the specified field.
|
||||
#define ADD_FLOAT(field, value) \
|
||||
@@ -386,8 +386,7 @@ enum BehaviorCommands {
|
||||
|
||||
// Spawns a water droplet with the given parameters.
|
||||
#define SPAWN_WATER_DROPLET(dropletParams) \
|
||||
BC_B(BHV_CMD_SPAWN_WATER_DROPLET), \
|
||||
BC_PTR(dropletParams)
|
||||
BC_BPTR(BHV_CMD_SPAWN_WATER_DROPLET, dropletParams)
|
||||
|
||||
|
||||
const BehaviorScript bhvStarDoor[] = {
|
||||
@@ -5873,7 +5872,7 @@ const BehaviorScript bhvRacingPenguin[] = {
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),
|
||||
ANIMATE(PENGUIN_ANIM_IDLE),
|
||||
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 300, /*Gravity*/ -800, /*Bounciness*/ -5, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),
|
||||
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 200, /*Gravity*/ -800, /*Bounciness*/ -5, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),
|
||||
SCALE(/*Unused*/ 0, /*Field*/ 400),
|
||||
CALL_NATIVE(bhv_racing_penguin_init),
|
||||
BEGIN_LOOP(),
|
||||
|
||||
@@ -17,3 +17,9 @@
|
||||
* Skips the title/splash screen (Super Mario 64 logo).
|
||||
*/
|
||||
// #define SKIP_TITLE_SCREEN
|
||||
|
||||
/**
|
||||
* Skips the File Select screen
|
||||
*/
|
||||
// #define SKIP_FILE_SELECT
|
||||
|
||||
|
||||
@@ -60,12 +60,12 @@
|
||||
/**
|
||||
* Makes the coins ia8 64x64 instead of ia16 32x32. Uses new ia8 textures so that vanilla coins look better.
|
||||
*/
|
||||
#define IA8_COINS
|
||||
// #define IA8_COINS
|
||||
|
||||
/**
|
||||
* Similar to the above, but 30 FPS (Textures by InTheBeef, cleaned up by Arceveti).
|
||||
*/
|
||||
#define IA8_30FPS_COINS
|
||||
// #define IA8_30FPS_COINS
|
||||
|
||||
/**
|
||||
* Use .rej microcode for certain objects (experimental - only should be used when F3DEX_GBI_2 is defined).
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/**
|
||||
* Decides whether you can exit course while moving (has no effect if you disable Exit Course).
|
||||
*/
|
||||
#define EXIT_COURSE_WHILE_MOVING
|
||||
// #define EXIT_COURSE_WHILE_MOVING
|
||||
|
||||
/**
|
||||
* Decides whether to treat exiting course as if the player had died.
|
||||
|
||||
@@ -26,12 +26,12 @@
|
||||
* - Precise turning control.
|
||||
* - Prevents falling from the edges.
|
||||
*/
|
||||
#define BETTER_HANGING
|
||||
// #define BETTER_HANGING
|
||||
|
||||
/**
|
||||
* Change the movement speed when hanging from a ceiling (the vanilla value is 4.0f, has no effect if BETTER_HANGING is enabled).
|
||||
*/
|
||||
#define HANGING_SPEED 12.0f
|
||||
#define HANGING_SPEED 4.0f
|
||||
|
||||
/**
|
||||
* Prevents Mario from falling asleep while idle.
|
||||
@@ -81,12 +81,12 @@
|
||||
/**
|
||||
* If A and Z are pressed on the same frame while running, Mario will long jump instead of ground pound.
|
||||
*/
|
||||
#define EASIER_LONG_JUMPS
|
||||
// #define EASIER_LONG_JUMPS
|
||||
|
||||
/**
|
||||
* Enables the ability to hold Z while twirling to descend faster.
|
||||
*/
|
||||
#define Z_TWIRL
|
||||
// #define Z_TWIRL
|
||||
|
||||
/**
|
||||
* Disables bonks when ground pounding next to a wall.
|
||||
@@ -101,7 +101,7 @@
|
||||
/**
|
||||
* Allows Mario to grab hangable ceilings from any state.
|
||||
*/
|
||||
#define HANGING_FIX
|
||||
// #define HANGING_FIX
|
||||
|
||||
/**
|
||||
* The maximum angle the player can wall kick, in degrees. 0..90. To allow 45 degree wall kicks, you must supply `46` to allow 45 and under.
|
||||
@@ -113,6 +113,11 @@
|
||||
*/
|
||||
#define DONT_LEDGE_GRAB_STEEP_SLOPES
|
||||
|
||||
/**
|
||||
* Buffers an A input if you jump off a slope during the landing lag
|
||||
*/
|
||||
// #define SLOPE_BUFFER
|
||||
|
||||
/**
|
||||
* Disables BLJs and crushes SimpleFlips's dreams.
|
||||
*/
|
||||
@@ -129,7 +134,7 @@
|
||||
* be interrupted with text
|
||||
* Uncomment this to fix this bug, and frustrate speedrunners
|
||||
*/
|
||||
// #define BUGFIX_DIALOG_TIME_STOP
|
||||
#define BUGFIX_DIALOG_TIME_STOP
|
||||
|
||||
/**
|
||||
* Enables Platform Displacement 2, an upgrade to the physics involving moving platforms and how Mario interacts with them.
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
/**
|
||||
* Moving Coins flicker and disappear when they hit lava instead of being instantly deleted.
|
||||
*/
|
||||
#define COIN_LAVA_FLICKER
|
||||
// #define COIN_LAVA_FLICKER
|
||||
|
||||
/**
|
||||
* Allows for retries on collecting the remaining blue coins from a blue coin switch.
|
||||
@@ -56,7 +56,7 @@
|
||||
/**
|
||||
* Causes leaf particles to occasionally fall from trees which contain Hoot.
|
||||
*/
|
||||
#define HOOT_TREE_PARTICLES
|
||||
// #define HOOT_TREE_PARTICLES
|
||||
|
||||
/**************
|
||||
* -- MR I --
|
||||
|
||||
@@ -49,26 +49,6 @@
|
||||
#undef BETTER_REVERB
|
||||
#endif
|
||||
|
||||
|
||||
/*****************
|
||||
* config_graphics.h
|
||||
*/
|
||||
|
||||
#ifndef F3DEX_GBI_2
|
||||
#undef OBJECTS_REJ // OBJECTS_REJ requires f3dex2.
|
||||
#endif // !F3DEX_GBI_2
|
||||
|
||||
#ifndef F3DEX_GBI_SHARED
|
||||
#undef OBJECTS_REJ // Non F3DEX-based ucodes do NOT support ucode switching.
|
||||
#endif // !F3DEX_GBI_SHARED
|
||||
|
||||
#ifdef OBJECTS_REJ
|
||||
// Enable required ucodes.
|
||||
#define F3DEX2_REJ_GBI
|
||||
#define F3DLX2_REJ_GBI
|
||||
#endif // OBJECTS_REJ
|
||||
|
||||
|
||||
/*****************
|
||||
* config_debug.h
|
||||
*/
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "level_table.h"
|
||||
#include "config.h"
|
||||
#include "game/puppylights.h"
|
||||
|
||||
enum LevelCommands {
|
||||
/*0x00*/ LEVEL_CMD_LOAD_AND_EXECUTE,
|
||||
@@ -71,9 +70,7 @@ enum LevelCommands {
|
||||
/*0x3C*/ LEVEL_CMD_GET_OR_SET_VAR,
|
||||
/*0x3D*/ LEVEL_CMD_PUPPYVOLUME,
|
||||
/*0x3E*/ LEVEL_CMD_CHANGE_AREA_SKYBOX,
|
||||
/*0x3F*/ LEVEL_CMD_PUPPYLIGHT_ENVIRONMENT,
|
||||
/*0x40*/ LEVEL_CMD_PUPPYLIGHT_NODE,
|
||||
/*0x41*/ LEVEL_CMD_SET_ECHO,
|
||||
/*0x3F*/ LEVEL_CMD_SET_ECHO,
|
||||
};
|
||||
|
||||
enum LevelActs {
|
||||
|
||||
@@ -49,8 +49,6 @@ enum ObjFlags {
|
||||
OBJ_FLAG_PERSISTENT_RESPAWN = (1 << 14), // 0x00004000
|
||||
OBJ_FLAG_VELOCITY_PLATFORM = (1 << 15), // 0x00008000
|
||||
OBJ_FLAG_DONT_CALC_COLL_DIST = (1 << 16), // 0x00010000
|
||||
OBJ_FLAG_UCODE_SMALL = (1 << 17), // 0x00020000
|
||||
OBJ_FLAG_UCODE_LARGE = (1 << 18), // 0x00040000
|
||||
OBJ_FLAG_SILHOUETTE = (1 << 19), // 0x00080000
|
||||
OBJ_FLAG_OCCLUDE_SILHOUETTE = (1 << 20), // 0x00100000
|
||||
OBJ_FLAG_OPACITY_FROM_CAMERA_DIST = (1 << 21), // 0x00200000
|
||||
|
||||
@@ -169,9 +169,6 @@
|
||||
#define /*0x1BC*/ oAngleToHome OBJECT_FIELD_S32(0x4D)
|
||||
#define /*0x1C0*/ oFloor OBJECT_FIELD_SURFACE(0x4E)
|
||||
#define /*0x1C4*/ oDeathSound OBJECT_FIELD_S32(0x4F)
|
||||
#ifdef PUPPYLIGHTS
|
||||
#define /*0x1C4*/ oLightID OBJECT_FIELD_S32(0x50)
|
||||
#endif
|
||||
|
||||
/* Pathed (see obj_follow_path) */
|
||||
#define /*0x0FC*/ oPathedStartWaypoint OBJECT_FIELD_WAYPOINT(0x1D)
|
||||
|
||||
@@ -475,8 +475,8 @@
|
||||
.byte \a
|
||||
.endm
|
||||
|
||||
.macro chan_testlayerfinished a
|
||||
.byte 0x80 + \a
|
||||
.macro chan_testlayersfinished
|
||||
.byte 0x80
|
||||
.endm
|
||||
|
||||
.macro chan_setlayer a, b
|
||||
@@ -488,14 +488,14 @@
|
||||
.byte 0x60 + \a
|
||||
.endm
|
||||
|
||||
.macro chan_freelayer a
|
||||
.byte 0x90 + \a
|
||||
.macro chan_freelayers
|
||||
.byte 0x90
|
||||
.endm
|
||||
|
||||
#else
|
||||
|
||||
.macro chan_testlayerfinished a
|
||||
.byte 0x0 + \a
|
||||
.macro chan_testlayersfinished
|
||||
.byte 0x00
|
||||
.endm
|
||||
|
||||
.macro chan_ioreadval a
|
||||
@@ -507,8 +507,8 @@
|
||||
.byte (\b - sequence_start) >> 8, (\b - sequence_start) & 0xff
|
||||
.endm
|
||||
|
||||
.macro chan_freelayer a
|
||||
.byte 0xa0 + \a
|
||||
.macro chan_freelayers
|
||||
.byte 0xa0
|
||||
.endm
|
||||
|
||||
#ifdef VERSION_EU
|
||||
|
||||
@@ -248,9 +248,6 @@ struct GraphNodeObject {
|
||||
/*0x4C*/ struct SpawnInfo *spawnInfo;
|
||||
/*0x50*/ Mat4 *throwMatrix; // matrix ptr
|
||||
/*0x54*/ Vec3f cameraToObject;
|
||||
#ifdef OBJECTS_REJ
|
||||
u16 ucode;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct ObjectNode {
|
||||
@@ -259,27 +256,9 @@ struct ObjectNode {
|
||||
struct ObjectNode *prev;
|
||||
};
|
||||
|
||||
#ifdef PUPPYLIGHTS
|
||||
struct PuppyLight {
|
||||
Vec3t pos[2]; // The location of the light. First index is the absolute position, second index are offsets.
|
||||
s16 yaw; // Used by cubes. Allows epic rotating of the volume.
|
||||
RoomData room; // Which room to use. -1 is visible from all rooms.
|
||||
s8 epicentre; // What percentage inside the volume you'll be before maximum light strength is applied. (E.g: 100 will be full strength always, and 0 will be full strength at the centre.)
|
||||
u8 flags; // Some stuff to define how the volume is used. Mostly just shape stuff, but can potentially have other uses.
|
||||
ColorRGBA rgba; // Colour. Go on, take even the tiniest guess as to what this entails.
|
||||
u8 area; // Which section of the level this light is stored in.
|
||||
u8 active: 1; // Whether the light will actually work. Mostly intended to be used for objects.
|
||||
};
|
||||
#endif
|
||||
|
||||
// NOTE: Since ObjectNode is the first member of Object, it is difficult to determine
|
||||
// whether some of these pointers point to ObjectNode or Object.
|
||||
|
||||
#ifdef PUPPYLIGHTS
|
||||
#define MAX_OBJECT_FIELDS 0x51
|
||||
#else
|
||||
#define MAX_OBJECT_FIELDS 0x50
|
||||
#endif
|
||||
|
||||
struct Object {
|
||||
/*0x000*/ struct ObjectNode header;
|
||||
@@ -338,9 +317,6 @@ struct Object {
|
||||
/*0x218*/ void *collisionData;
|
||||
/*0x21C*/ Mat4 transform;
|
||||
/*0x25C*/ void *respawnInfo;
|
||||
#ifdef PUPPYLIGHTS
|
||||
struct PuppyLight puppylight;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct ObjectHitbox {
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
#include "segment_symbols.h"
|
||||
#include "level_commands.h"
|
||||
|
||||
#include "config/config_cutscenes.h"
|
||||
|
||||
#include "game/area.h"
|
||||
#include "game/level_update.h"
|
||||
#include "menu/file_select.h"
|
||||
@@ -19,6 +21,7 @@
|
||||
#include "levels/menu/header.h"
|
||||
|
||||
const LevelScript level_main_menu_entry_file_select[] = {
|
||||
#ifndef SKIP_FILE_SELECT
|
||||
INIT_LEVEL(),
|
||||
LOAD_GODDARD(),
|
||||
LOAD_LEVEL_DATA(menu),
|
||||
@@ -53,6 +56,7 @@ const LevelScript level_main_menu_entry_file_select[] = {
|
||||
SLEEP(/*frames*/ 16),
|
||||
CLEAR_LEVEL(),
|
||||
SLEEP_BEFORE_EXIT(/*frames*/ 1),
|
||||
#endif // SKIP_FILE_SELECT
|
||||
SET_REG(/*value*/ START_LEVEL),
|
||||
EXIT_AND_EXECUTE(/*seg*/ SEGMENT_GLOBAL_LEVEL_SCRIPT, _scriptsSegmentRomStart, _scriptsSegmentRomEnd, level_main_scripts_entry),
|
||||
};
|
||||
|
||||
1
lib/libpl
Submodule
1
lib/libpl
Submodule
Submodule lib/libpl added at cfc74e5898
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user