diff --git a/levels/menu/script.c b/levels/menu/script.c index 4e955c12..54f2b3b4 100644 --- a/levels/menu/script.c +++ b/levels/menu/script.c @@ -50,7 +50,7 @@ const LevelScript level_main_menu_entry_1[] = { GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_SAVE_FILE_NUM), STOP_MUSIC(/*fadeOutTime*/ 0x00BE), TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF), - SLEEP(/*frames*/ 16), + SLEEP(/*frames*/ 8), // Was 16 frames CLEAR_LEVEL(), SLEEP_BEFORE_EXIT(/*frames*/ 1), SET_REG(/*value*/ LEVEL_CASTLE_GROUNDS), @@ -58,37 +58,37 @@ const LevelScript level_main_menu_entry_1[] = { }; const LevelScript level_main_menu_entry_2[] = { - /*0*/ CALL(/*arg*/ 0, /*func*/ lvl_set_current_level), - /*2*/ JUMP_IF(/*op*/ OP_EQ, /*arg*/ 0, level_main_menu_entry_2 + 42), - /*5*/ INIT_LEVEL(), - /*6*/ FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd), - /*10*/ LOAD_MIO0(/*seg*/ 0x07, _menu_segment_7SegmentRomStart, _menu_segment_7SegmentRomEnd), - /*13*/ ALLOC_LEVEL_POOL(), + CALL(/*arg*/ 0, /*func*/ lvl_set_current_level), + JUMP_IF(/*op*/ OP_EQ, /*arg*/ 0, level_main_menu_entry_2 + 42), + INIT_LEVEL(), + FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd), + LOAD_MIO0(/*seg*/ 0x07, _menu_segment_7SegmentRomStart, _menu_segment_7SegmentRomEnd), + ALLOC_LEVEL_POOL(), - /*14*/ AREA(/*index*/ 2, geo_menu_act_selector_strings), - /*16*/ OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -100, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x04000000, /*beh*/ bhvActSelector), - /*22*/ TERRAIN(/*terrainData*/ main_menu_seg7_collision), - /*24*/ END_AREA(), + AREA(/*index*/ 2, geo_menu_act_selector_strings), + OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -100, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x04000000, /*beh*/ bhvActSelector), + TERRAIN(/*terrainData*/ main_menu_seg7_collision), + END_AREA(), - /*25*/ FREE_LEVEL_POOL(), - /*26*/ LOAD_AREA(/*area*/ 2), + FREE_LEVEL_POOL(), + LOAD_AREA(/*area*/ 2), - // sVisibleStars is set to 0 during FIXED_LOAD above on N64, but not on PC-port. - // lvl_init_act_selector_values_and_stars must be called here otherwise the - // previous value is retained and causes incorrect drawing during the 16 transition - // frames. - CALL(/*arg*/ 0, /*func*/ lvl_init_act_selector_values_and_stars), + // sVisibleStars is set to 0 during FIXED_LOAD above on N64, but not on PC-port. + // lvl_init_act_selector_values_and_stars must be called here otherwise the + // previous value is retained and causes incorrect drawing during the 10 transition + // frames. + CALL(/*arg*/ 0, /*func*/ lvl_init_act_selector_values_and_stars), - /*27*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF), - /*29*/ SLEEP(/*frames*/ 16), - /*30*/ SET_MENU_MUSIC(/*seq*/ 0x000D), - /*33*/ CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_act_button_actions), - /*35*/ GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_ACT_NUM), - /*36*/ STOP_MUSIC(/*fadeOutTime*/ 0x00BE), - /*37*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF), - /*39*/ SLEEP(/*frames*/ 16), - /*40*/ CLEAR_LEVEL(), - /*41*/ SLEEP_BEFORE_EXIT(/*frames*/ 1), + TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF), + SLEEP(/*frames*/ 8), // Was 16 frames + SET_MENU_MUSIC(/*seq*/ 0x000D), + CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_act_button_actions), + GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_ACT_NUM), + STOP_MUSIC(/*fadeOutTime*/ 0x00BE), + TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF), + SLEEP(/*frames*/ 10), // Was 16 frames + CLEAR_LEVEL(), + SLEEP_BEFORE_EXIT(/*frames*/ 1), // L1: - /*42*/ EXIT(), + EXIT(), }; diff --git a/levels/scripts.c b/levels/scripts.c index b5f8eb4a..516df72b 100644 --- a/levels/scripts.c +++ b/levels/scripts.c @@ -152,7 +152,7 @@ const LevelScript level_main_scripts_entry[] = { LOOP_BEGIN(), EXECUTE(/*seg*/ 0x14, _menuSegmentRomStart, _menuSegmentRomEnd, level_main_menu_entry_2), JUMP_LINK(script_exec_level_table), - SLEEP(/*frames*/ 1), + // SLEEP(/*frames*/ 1), LOOP_UNTIL(/*op*/ OP_LT, /*arg*/ 0), JUMP_IF(/*op*/ OP_EQ, /*arg*/ -1, script_L2), JUMP_IF(/*op*/ OP_EQ, /*arg*/ -2, goto_mario_head_regular), diff --git a/src/game/camera.c b/src/game/camera.c index 8ec1ed9a..6325b15f 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -3349,8 +3349,10 @@ void update_camera(struct Camera *c) { // Make sure the palette editor cutscene is properly reset struct MarioState *m = gMarioState; - if (c->paletteEditorCap && c->cutscene != CUTSCENE_PALETTE_EDITOR && !(m->flags & MARIO_CAP_ON_HEAD) && m->action != ACT_PUTTING_ON_CAP) { - cutscene_put_cap_on(m); + if (c->paletteEditorCap && c->cutscene != CUTSCENE_PALETTE_EDITOR && m->action != ACT_PUTTING_ON_CAP) { + if (!(m->flags & MARIO_CAP_ON_HEAD)) { + cutscene_put_cap_on(m); + } c->paletteEditorCap = false; } } @@ -10860,8 +10862,15 @@ void cutscene_palette_editor(struct Camera *c) { if (!gDjuiInPlayerMenu) { if (c->paletteEditorCap) { - if (m->action == ACT_IDLE && !(m->flags & MARIO_CAP_ON_HEAD)) { - set_mario_action(m, ACT_PUTTING_ON_CAP, 0); + if (m->flags & MARIO_CAP_ON_HEAD) { + gCamera->paletteEditorCap = false; + } else { + if (m->action == ACT_IDLE) { + set_mario_action(m, ACT_PUTTING_ON_CAP, 0); + } else { + cutscene_put_cap_on(m); + gCamera->paletteEditorCap = false; + } } } gCutsceneTimer = CUTSCENE_STOP; diff --git a/src/game/level_update.c b/src/game/level_update.c index a3298ac5..d11ec2ea 100644 --- a/src/game/level_update.c +++ b/src/game/level_update.c @@ -288,7 +288,7 @@ void fade_into_special_warp(u32 arg, u32 color) { fadeout_music(190); play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x10, color, color, color); - level_set_transition(30, NULL); + level_set_transition(16, NULL); warp_special(arg); }