Expose title screen geo functions to DynOS (#246)

* Expose title screen level/geo stuff

* Move builtin defines
This commit is contained in:
Agent X 2022-12-17 13:28:19 -05:00 committed by GitHub
parent d03ec2dd9d
commit 5abecaa67e
7 changed files with 33 additions and 1 deletions

View File

@ -9,6 +9,7 @@ extern "C" {
#include "src/game/level_update.h"
#include "include/dialog_ids.h"
#include "levels/scripts.h"
#include "levels/menu/header.h"
#include "src/game/area.h"
}
@ -308,6 +309,7 @@ s64 DynOS_Lvl_ParseLevelScriptConstants(const String& _Arg, bool* found) {
// global scripts
lvl_constant(level_main_scripts_entry);
lvl_constant(level_main_menu_entry_1);
lvl_constant(script_func_global_1);
lvl_constant(script_func_global_2);
lvl_constant(script_func_global_3);
@ -365,6 +367,7 @@ s64 DynOS_Lvl_ParseLevelScriptConstants(const String& _Arg, bool* found) {
// Other constants
lvl_constant(NULL);
lvl_constant(TRUE);
lvl_constant(FALSE);
*found = false;

View File

@ -21,6 +21,8 @@ extern "C" {
#include "game/behavior_actions.h"
#include "game/rendering_graph_node.h"
#include "game/skybox.h"
#include "menu/level_select_menu.h"
#include "menu/intro_geo.h"
#include "actors/common0.h"
#include "actors/common1.h"
@ -78,6 +80,7 @@ extern "C" {
#include "levels/wdw/header.h"
#include "levels/wf/header.h"
#include "levels/wmotr/header.h"
#include "levels/menu/header.h"
#include "dynos_mgr_builtin_externs.h"
#include "textures.h"
@ -175,6 +178,7 @@ static const void* sDynosBuiltinScriptPtrs[] = {
define_builtin(level_wdw_entry),
define_builtin(level_wf_entry),
define_builtin(level_wmotr_entry),
define_builtin(level_main_menu_entry_1),
};
const void* DynOS_Builtin_ScriptPtr_GetFromName(const char* aDataName) {
@ -1900,6 +1904,13 @@ static const void* sDynosBuiltinFuncs[] = {
// Other
define_builtin(load_object_collision_model),
define_builtin(obj_set_secondary_camera_focus),
// Menu related
define_builtin(lvl_intro_update),
define_builtin(geo_intro_super_mario_64_logo),
define_builtin(geo_intro_tm_copyright),
define_builtin(geo_intro_regular_backdrop),
define_builtin(geo_draw_mario_head_goddard),
};
const void* DynOS_Builtin_Func_GetFromName(const char* aDataName) {

View File

@ -1680,6 +1680,10 @@ void handle_controller_cursor_input(void) {
if (sCursorPos[1] < -90.0f) {
sCursorPos[1] = -90.0f;
}
if (sCursorClickingTimer == 0) {
handle_cursor_button_input();
}
}
/**

View File

@ -63,6 +63,8 @@ static Gfx *sIntroScalePos;
static Vec3f sIntroScale;
static Vec3f sIntroScalePrev;
bool skipInterpolationTitleScreen = false;
void patch_title_screen_before(void) {
sIntroScalePos = NULL;
}

View File

@ -7,6 +7,8 @@
#include "types.h"
#include "engine/graph_node.h"
extern bool skipInterpolationTitleScreen;
Gfx *geo_intro_super_mario_64_logo(s32 sp50, struct GraphNode *sp54, UNUSED void *context);
Gfx *geo_intro_tm_copyright(s32 sp40, struct GraphNode *sp44, UNUSED void *context);
Gfx *geo_intro_regular_backdrop(s32 sp48, struct GraphNode *sp4c, UNUSED void *context);

View File

@ -15,6 +15,7 @@
#include "seq_ids.h"
#include "sm64.h"
#include "pc/lua/utils/smlua_level_utils.h"
#include "menu/intro_geo.h"
#define PRESS_START_DEMO_TIMER 800
@ -249,6 +250,13 @@ s32 lvl_intro_update(s16 arg1, UNUSED s32 arg2) {
case 3:
retVar = level_select_input_loop();
break;
case 4:
gGlobalTimer = 0;
skipInterpolationTitleScreen = true;
break;
case 5:
skipInterpolationTitleScreen = false;
break;
}
return retVar;
}

View File

@ -54,6 +54,8 @@
#include "pc/mods/mods.h"
#include "menu/intro_geo.h"
OSMesg D_80339BEC;
OSMesgQueue gSIEventMesgQueue;
@ -171,7 +173,7 @@ void produce_interpolation_frames_and_delay(void) {
gfx_start_frame();
f32 delta = MIN((curTime - sFrameTimeStart) / (sFrameTargetTime - sFrameTimeStart), 1);
gRenderingDelta = delta;
patch_interpolations(delta);
if (!skipInterpolationTitleScreen) { patch_interpolations(delta); }
send_display_list(gGfxSPTask);
gfx_end_frame();