Files
Microtransactions64/enhancements/reonu_cam.patch

184 lines
6.5 KiB
Diff
Raw Normal View History

diff --git a/src/game/camera.c b/src/game/camera.c
index 13d3fe2..be49880 100644
--- a/src/game/camera.c
+++ b/src/game/camera.c
@@ -259,6 +259,7 @@ s16 sCameraSoundFlags;
* Stores what C-Buttons are pressed this frame.
*/
u16 sCButtonsPressed;
+u16 stoppedMovingCamera;
/**
* A copy of gDialogID, the dialog displayed during the cutscene.
*/
@@ -433,6 +434,9 @@ u8 sFramesSinceCutsceneEnded = 0;
* 3 = Dialog doesn't have a response
*/
u8 sCutsceneDialogResponse = 0;
+u8 stickReset = 1;
+u8 cButtonCounter;
+u8 lastCameraMove;
struct PlayerCameraState *sMarioCamState = &gPlayerCameraState[0];
struct PlayerCameraState *sLuigiCamState = &gPlayerCameraState[1];
u32 unused8032D008 = 0;
@@ -442,6 +446,9 @@ Vec3f sUnusedModeBasePosition_3 = { 646.0f, 143.0f, -1513.0f };
Vec3f sUnusedModeBasePosition_4 = { 646.0f, 143.0f, -1513.0f };
Vec3f sUnusedModeBasePosition_5 = { 646.0f, 143.0f, -1513.0f };
+#define MOVED_LEFT 1
+#define MOVED_RIGHT 2
+
s32 update_radial_camera(struct Camera *c, Vec3f, Vec3f);
s32 update_outward_radial_camera(struct Camera *c, Vec3f, Vec3f);
s32 update_behind_mario_camera(struct Camera *c, Vec3f, Vec3f);
@@ -1176,14 +1183,39 @@ void mode_8_directions_camera(struct Camera *c) {
radial_camera_input(c, 0.f);
- if (gPlayer1Controller->buttonPressed & R_CBUTTONS) {
- s8DirModeYawOffset += DEGREES(45);
- play_sound_cbutton_side();
- }
- if (gPlayer1Controller->buttonPressed & L_CBUTTONS) {
- s8DirModeYawOffset -= DEGREES(45);
- play_sound_cbutton_side();
+ if (gPlayer1Controller->buttonDown & L_CBUTTONS) {
+ s8DirModeYawOffset -= DEGREES(4);
+ cButtonCounter++;
+ stoppedMovingCamera = 0;
+ lastCameraMove = MOVED_LEFT;
+
+ }
+ else if (gPlayer1Controller->buttonDown & R_CBUTTONS) {
+ s8DirModeYawOffset += DEGREES(4);
+ cButtonCounter++;
+ stoppedMovingCamera = 0;
+ lastCameraMove = MOVED_RIGHT;
+ }
+ else if (gPlayer2Controller->rawStickX) {
+ s8DirModeYawOffset += DEGREES(gPlayer2Controller->rawStickX * 4 / 64);
+ } else {
+ stoppedMovingCamera = 1;
+ }
+
+ if (stoppedMovingCamera == 1) {
+ if ((cButtonCounter < 5) && (cButtonCounter > 0)) {
+ if (lastCameraMove == MOVED_RIGHT) {
+ s8DirModeYawOffset += DEGREES(45);
+ cButtonCounter = 0;
+ } else {
+ s8DirModeYawOffset -= DEGREES(45);
+ cButtonCounter = 0;
+ }
+ } else {
+ cButtonCounter = 0;
+ }
}
+
lakitu_zoom(400.f, 0x900);
c->nextYaw = update_8_directions_camera(c, c->focus, pos);
@@ -2760,7 +2792,7 @@ s32 mode_c_up_camera(struct Camera *c) {
sPanDistance = 0.f;
// Exit C-Up mode
- if (gPlayer1Controller->buttonPressed & (A_BUTTON | B_BUTTON | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS)) {
+ if ((gPlayer1Controller->buttonPressed & (A_BUTTON | B_BUTTON | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS)) || (gPlayer2Controller->rawStickY < -10)) {
exit_c_up(c);
}
return 0;
@@ -3015,14 +3047,11 @@ void update_camera(struct Camera *c) {
// Only process R_TRIG if 'fixed' is not selected in the menu
if (cam_select_alt_mode(0) == CAM_SELECTION_MARIO) {
if (gPlayer1Controller->buttonPressed & R_TRIG) {
- if (set_cam_angle(0) == CAM_ANGLE_LAKITU) {
- set_cam_angle(CAM_ANGLE_MARIO);
- } else {
- set_cam_angle(CAM_ANGLE_LAKITU);
- }
+ s8DirModeYawOffset = gMarioState->faceAngle[1]-0x8000;
+ play_sound_rbutton_changed();
}
}
- play_sound_if_cam_switched_to_lakitu_or_mario();
+ //play_sound_if_cam_switched_to_lakitu_or_mario();
}
// Initialize the camera
@@ -3865,7 +3894,7 @@ s32 find_c_buttons_pressed(u16 currentState, u16 buttonsPressed, u16 buttonsDown
currentState &= ~R_CBUTTONS;
}
- if (buttonsPressed & U_CBUTTONS) {
+ if ((buttonsPressed & U_CBUTTONS)) {
currentState |= U_CBUTTONS;
currentState &= ~D_CBUTTONS;
}
@@ -4816,19 +4845,19 @@ void play_camera_buzz_if_c_sideways(void) {
}
void play_sound_cbutton_up(void) {
- play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);
+ //play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);
}
void play_sound_cbutton_down(void) {
- play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);
+ //play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);
}
void play_sound_cbutton_side(void) {
- play_sound(SOUND_MENU_CAMERA_TURN, gGlobalSoundSource);
+ //play_sound(SOUND_MENU_CAMERA_TURN, gGlobalSoundSource);
}
void play_sound_button_change_blocked(void) {
- play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);
+ //play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);
}
void play_sound_rbutton_changed(void) {
@@ -4925,7 +4954,7 @@ s32 radial_camera_input(struct Camera *c, UNUSED f32 unused) {
}
// Zoom in / enter C-Up
- if (gPlayer1Controller->buttonPressed & U_CBUTTONS) {
+ if (((gPlayer1Controller->buttonPressed & U_CBUTTONS) || (gPlayer2Controller->rawStickY > 40)) && (stickReset)) {
if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {
gCameraMovementFlags &= ~CAM_MOVE_ZOOMED_OUT;
play_sound_cbutton_up();
@@ -4935,7 +4964,7 @@ s32 radial_camera_input(struct Camera *c, UNUSED f32 unused) {
}
// Zoom out
- if (gPlayer1Controller->buttonPressed & D_CBUTTONS) {
+ if ((gPlayer1Controller->buttonPressed & D_CBUTTONS) || (gPlayer2Controller->rawStickY < -40)) {
if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {
gCameraMovementFlags |= CAM_MOVE_ALREADY_ZOOMED_OUT;
#ifndef VERSION_JP
@@ -4946,7 +4975,11 @@ s32 radial_camera_input(struct Camera *c, UNUSED f32 unused) {
play_sound_cbutton_down();
}
}
-
+ if ((gPlayer2Controller->rawStickY > 40) || (gPlayer2Controller->rawStickY < -40)) {
+ stickReset = 0;
+ } else {
+ stickReset = 1;
+ }
//! returning uninitialized variable
return dummy;
}
diff --git a/src/game/hud.c b/src/game/hud.c
index f11b626..003a634 100644
--- a/src/game/hud.c
+++ b/src/game/hud.c
@@ -506,7 +506,7 @@ void render_hud(void) {
if (hudDisplayFlags & HUD_DISPLAY_FLAG_CAMERA_AND_POWER) {
render_hud_power_meter();
- render_hud_camera_status();
+ //render_hud_camera_status();
}
if (hudDisplayFlags & HUD_DISPLAY_FLAG_TIMER) {