Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/levels/menu/script.c
7858 views
1
#include <ultra64.h>
2
#include "sm64.h"
3
#include "behavior_data.h"
4
#include "model_ids.h"
5
#include "seq_ids.h"
6
#include "segment_symbols.h"
7
#include "level_commands.h"
8
9
#include "game/area.h"
10
#include "game/level_update.h"
11
#include "menu/file_select.h"
12
#include "menu/star_select.h"
13
14
#include "levels/scripts.h"
15
16
#include "actors/common1.h"
17
18
#include "make_const_nonconst.h"
19
#include "levels/menu/header.h"
20
21
const LevelScript level_main_menu_entry_1[] = {
22
INIT_LEVEL(),
23
FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),
24
LOAD_MIO0(/*seg*/ 0x07, _menu_segment_7SegmentRomStart, _menu_segment_7SegmentRomEnd),
25
LOAD_RAW(/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),
26
ALLOC_LEVEL_POOL(),
27
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, geo_menu_mario_save_button),
28
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_RED_ERASE_BUTTON, geo_menu_erase_button),
29
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_BLUE_COPY_BUTTON, geo_menu_copy_button),
30
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_YELLOW_FILE_BUTTON, geo_menu_file_button),
31
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_GREEN_SCORE_BUTTON, geo_menu_score_button),
32
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE, geo_menu_mario_save_button_fade),
33
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_MARIO_NEW_BUTTON, geo_menu_mario_new_button),
34
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE, geo_menu_mario_new_button_fade),
35
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_PURPLE_SOUND_BUTTON, geo_menu_sound_button),
36
LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_GENERIC_BUTTON, geo_menu_generic_button),
37
38
AREA(/*index*/ 1, geo_menu_file_select_strings_and_menu_cursor),
39
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 0, -19000, /*angle*/ 0, 0, 0, /*behParam*/ 0x04000000, /*beh*/ bhvMenuButtonManager),
40
OBJECT(/*model*/ MODEL_MAIN_MENU_YELLOW_FILE_BUTTON, /*pos*/ 0, 0, -19000, /*angle*/ 0, 0, 0, /*behParam*/ 0x04000000, /*beh*/ bhvYellowBackgroundInMenu),
41
TERRAIN(/*terrainData*/ main_menu_seg7_collision),
42
END_AREA(),
43
44
FREE_LEVEL_POOL(),
45
LOAD_AREA(/*area*/ 1),
46
SET_MENU_MUSIC(/*seq*/ SEQ_MENU_FILE_SELECT),
47
TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
48
CALL(/*arg*/ 0, /*func*/ lvl_init_menu_values_and_cursor_pos),
49
CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_file_selected),
50
GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_SAVE_FILE_NUM),
51
STOP_MUSIC(/*fadeOutTime*/ 0x00BE),
52
TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
53
SLEEP(/*frames*/ 16),
54
CLEAR_LEVEL(),
55
SLEEP_BEFORE_EXIT(/*frames*/ 1),
56
SET_REG(/*value*/ LEVEL_CASTLE_GROUNDS),
57
EXIT_AND_EXECUTE(/*seg*/ 0x15, _scriptsSegmentRomStart, _scriptsSegmentRomEnd, level_main_scripts_entry),
58
};
59
60
const LevelScript level_main_menu_entry_2[] = {
61
/*0*/ CALL(/*arg*/ 0, /*func*/ lvl_set_current_level),
62
/*2*/ JUMP_IF(/*op*/ OP_EQ, /*arg*/ 0, level_main_menu_entry_2 + 41), //MORS NOTE: This was changed from 42 to add a slight delay.
63
/*5*/ INIT_LEVEL(),
64
/*6*/ FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),
65
/*10*/ LOAD_MIO0(/*seg*/ 0x07, _menu_segment_7SegmentRomStart, _menu_segment_7SegmentRomEnd),
66
/*13*/ ALLOC_LEVEL_POOL(),
67
68
/*14*/ AREA(/*index*/ 2, geo_menu_act_selector_strings),
69
/*16*/ OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -100, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x04000000, /*beh*/ bhvActSelector),
70
/*22*/ TERRAIN(/*terrainData*/ main_menu_seg7_collision),
71
/*24*/ END_AREA(),
72
73
/*25*/ FREE_LEVEL_POOL(),
74
/*26*/ LOAD_AREA(/*area*/ 2),
75
#ifdef NO_SEGMENTED_MEMORY
76
// sVisibleStars is set to 0 during FIXED_LOAD above on N64, but not when NO_SEGMENTED_MEMORY is used.
77
// lvl_init_act_selector_values_and_stars must be called here otherwise the previous
78
// value is retained and causes incorrect drawing during the 16 transition frames.
79
CALL(/*arg*/ 0, /*func*/ lvl_init_act_selector_values_and_stars),
80
#endif
81
/*27*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
82
/*29*/ SLEEP(/*frames*/ 16),
83
/*30*/ SET_MENU_MUSIC(/*seq*/ 0x000D),
84
#ifndef NO_SEGMENTED_MEMORY
85
/*31*/ CALL(/*arg*/ 0, /*func*/ lvl_init_act_selector_values_and_stars),
86
#endif
87
/*33*/ CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_act_button_actions),
88
/*35*/ GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_ACT_NUM),
89
/*36*/ STOP_MUSIC(/*fadeOutTime*/ 0x00BE),
90
/*37*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
91
/*39*/ SLEEP(/*frames*/ 16),
92
/*40*/ CLEAR_LEVEL(),
93
#ifdef TARGET_N64
94
/*41*/ SLEEP_BEFORE_EXIT(/*frames*/ 1),
95
#else
96
/*41*/ SLEEP_BEFORE_EXIT(/*frames*/ 9), //MORS NOTE: This was changed from 1 to simulate the load times.
97
#endif
98
// L1:
99
/*42*/ EXIT(),
100
};
101
102