diff options
| author | Prakxo <87568477+Prakxo@users.noreply.github.com> | 2023-08-14 18:20:27 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-14 10:20:27 -0700 |
| commit | bdb8ef6d5b33c24580d7861c4ccf8d937caac8fb (patch) | |
| tree | 441ff7c143fe25abd08d24d94fd2122f5b79a4f6 /src | |
| parent | 8aa8fb893a2258a27e77b2872c189a93dc427a2e (diff) | |
m_controller OK (#48)
* m_pause OK
* yeah now it's OK lol
* refactor
* refactor 2
* m_controller OK
* format
* fix size comment in game
* refactor 3
* refactor 4
* refactor 5
* add unused macro
Diffstat (limited to 'src')
| -rw-r--r-- | src/code/m_controller.c | 111 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl__00743CD0/_00743CD0.h | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h | 1 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_first_game/first_game.h | 1 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_play/m_play.h | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_player_select/player_select.h | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_prenmi/m_prenmi.h | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_save_menu/save_menu.h | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_second_game/second_game.h | 1 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_select/m_select.h | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_trademark/m_trademark.h | 2 |
11 files changed, 118 insertions, 10 deletions
diff --git a/src/code/m_controller.c b/src/code/m_controller.c new file mode 100644 index 0000000..1c108f5 --- /dev/null +++ b/src/code/m_controller.c @@ -0,0 +1,111 @@ +#include "m_controller.h" +#include "game.h" +#include "m_event.h" +#include "m_lib.h" +#include "sys_math_atan.h" +#include "attributes.h" + +void mCon_ct(UNUSED GameState* game) { +} + +void mCon_dt(UNUSED GameState* game) { +} + +void mCon_calc(Controller* controller, f32 x, f32 y) { + controller->lastMoveX = controller->moveX; + controller->lastMoveY = controller->moveY; + controller->lastMoveR = controller->moveR; + + controller->lastMoveAngle = controller->moveAngle; + + controller->lastAdjustedX = controller->adjustedX; + controller->lastAdjustedY = controller->adjustedY; + controller->lastAdjustedR = controller->adjustedR; + + { + f32 r = sqrtf((x * x) + (y * y)); + + if (r <= STICK_MIN) { + controller->moveX = 0.0f; + controller->moveY = 0.0f; + controller->moveR = 0.0f; + controller->adjustedX = 0.0f; + controller->adjustedY = 0.0f; + controller->adjustedR = 0.0f; + } else { + s16 theta = atans_table(x, y); + + if (r > STICK_MAX) { + x = cos_s(theta) * STICK_MAX; + y = sin_s(theta) * STICK_MAX; + r = STICK_MAX; + } + + controller->moveAngle = theta; + { UNUSED s32 requiredScopeTemp; } + controller->moveX = check_percent_abs(x, STICK_MIN, STICK_MAX, STICK_UNCORRECTED_SCALE, 0); + controller->moveY = check_percent_abs(y, STICK_MIN, STICK_MAX, STICK_UNCORRECTED_SCALE, 0); + controller->moveR = check_percent_abs(r, STICK_MIN, STICK_MAX, STICK_UNCORRECTED_SCALE, 0); + + controller->adjustedX = check_percent_abs(x, STICK_MIN, STICK_MAX, STICK_CORRECTED_SCALE, 1); + controller->adjustedY = check_percent_abs(y, STICK_MIN, STICK_MAX, STICK_CORRECTED_SCALE, 1); + controller->adjustedR = check_percent_abs(r, STICK_MIN, STICK_MAX, STICK_CORRECTED_SCALE, 1); + } + } +} + +void mCon_main(GameState* game) { + Controller* controller = &game->controller; + f32 x = getJoystick_X(); + f32 y = getJoystick_Y(); + + mCon_calc(controller, x, y); +} + +s32 chkButton(u16 mask) { + if (mEv_CheckTitleDemo() > 0) { + return 0; + } else { + return mask == (CONTROLLER1(gamePT)->cur.button & mask); + } +} + +u16 getButton(void) { + if (mEv_CheckTitleDemo() > 0) { + return 0; + } else { + return CONTROLLER1(gamePT)->cur.button; + } +} + +s32 chkTrigger(u16 mask) { + if (mEv_CheckTitleDemo() > 0) { + return 0; + } else { + return mask == (CONTROLLER1(gamePT)->press.button & mask); + } +} + +u16 getTrigger(void) { + if (mEv_CheckTitleDemo() > 0) { + return 0; + } else { + return CONTROLLER1(gamePT)->press.button; + } +} + +s32 getJoystick_X(void) { + if (mEv_CheckTitleDemo() > 0) { + return 0; + } else { + return CONTROLLER1(gamePT)->cur.stick_x; + } +} + +s32 getJoystick_Y(void) { + if (mEv_CheckTitleDemo() > 0) { + return 0; + } else { + return CONTROLLER1(gamePT)->cur.stick_y; + } +} diff --git a/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h b/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h index d91180b..f4d7127 100644 --- a/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h +++ b/src/overlays/gamestates/ovl__00743CD0/_00743CD0.h @@ -7,7 +7,7 @@ typedef struct _00743CD0State { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0x1B20-0xA4]; + /* 0xE0 */ UNK_TYPE1 unk_00[0x1B20-0xE0]; } _00743CD0State; // size = 0x1B20 void _00743CD0_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h b/src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h index 60d71a0..13bda30 100644 --- a/src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h +++ b/src/overlays/gamestates/ovl_famicom_emu/famicom_emu.h @@ -7,7 +7,6 @@ typedef struct FamicomEmuState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0x3C]; } FamicomEmuState; // size = 0xE0 void famicom_emu_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_first_game/first_game.h b/src/overlays/gamestates/ovl_first_game/first_game.h index 35c7228..f258e78 100644 --- a/src/overlays/gamestates/ovl_first_game/first_game.h +++ b/src/overlays/gamestates/ovl_first_game/first_game.h @@ -7,7 +7,6 @@ typedef struct FirstGameState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0x3C]; } FirstGameState; // size = 0xE0 void first_game_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_play/m_play.h b/src/overlays/gamestates/ovl_play/m_play.h index d832411..9cc4c11 100644 --- a/src/overlays/gamestates/ovl_play/m_play.h +++ b/src/overlays/gamestates/ovl_play/m_play.h @@ -7,7 +7,7 @@ typedef struct PlayState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0x236C]; + /* 0xE0 */ UNK_TYPE1 unk_00[0x2410 - 0xE0]; } PlayState; // size = 0x2410 void play_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_player_select/player_select.h b/src/overlays/gamestates/ovl_player_select/player_select.h index 0ae08b3..dc5f3ff 100644 --- a/src/overlays/gamestates/ovl_player_select/player_select.h +++ b/src/overlays/gamestates/ovl_player_select/player_select.h @@ -7,7 +7,7 @@ typedef struct PlayerSelectState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0x288-0xA4]; + /* 0xE0 */ UNK_TYPE1 unk_00[0x288-0xE0]; } PlayerSelectState; // size = 0x288 void player_select_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_prenmi/m_prenmi.h b/src/overlays/gamestates/ovl_prenmi/m_prenmi.h index a55cfc4..4f7622e 100644 --- a/src/overlays/gamestates/ovl_prenmi/m_prenmi.h +++ b/src/overlays/gamestates/ovl_prenmi/m_prenmi.h @@ -7,7 +7,7 @@ typedef struct PrenmiState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0xE8-0xA4]; + /* 0xE0 */ UNK_TYPE1 unk00[0xE8 - 0xE0]; } PrenmiState; // size = 0xE8 void prenmi_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_save_menu/save_menu.h b/src/overlays/gamestates/ovl_save_menu/save_menu.h index 57ef8f9..92b4d67 100644 --- a/src/overlays/gamestates/ovl_save_menu/save_menu.h +++ b/src/overlays/gamestates/ovl_save_menu/save_menu.h @@ -7,7 +7,7 @@ typedef struct SaveMenuState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0x230-0xA4]; + /* 0xE0 */ UNK_TYPE1 unk_00[0x230-0xE0]; } SaveMenuState; // size = 0x230 void save_menu_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_second_game/second_game.h b/src/overlays/gamestates/ovl_second_game/second_game.h index b3f7689..50478ff 100644 --- a/src/overlays/gamestates/ovl_second_game/second_game.h +++ b/src/overlays/gamestates/ovl_second_game/second_game.h @@ -7,7 +7,6 @@ typedef struct SecondGameState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0xE0-0xA4]; } SecondGameState; // size = 0xE0 void second_game_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_select/m_select.h b/src/overlays/gamestates/ovl_select/m_select.h index 94dc534..1f4c713 100644 --- a/src/overlays/gamestates/ovl_select/m_select.h +++ b/src/overlays/gamestates/ovl_select/m_select.h @@ -7,7 +7,7 @@ typedef struct MapSelectState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0x240-0xA4]; + /* 0xE0 */ UNK_TYPE1 unk_00[0x240-0xE0]; } MapSelectState; // size = 0x240 void select_init(GameState *thisx); diff --git a/src/overlays/gamestates/ovl_trademark/m_trademark.h b/src/overlays/gamestates/ovl_trademark/m_trademark.h index 38abf24..708c98a 100644 --- a/src/overlays/gamestates/ovl_trademark/m_trademark.h +++ b/src/overlays/gamestates/ovl_trademark/m_trademark.h @@ -7,7 +7,7 @@ typedef struct TrademarkState { /* 0x00 */ GameState state; - /* 0xA4 */ UNK_TYPE1 unk_00[0x25A78-0xA4]; + /* 0xE0 */ UNK_TYPE1 unk_00[0x25A78-0xE0]; } TrademarkState; // size = 0x25A78 void trademark_init(GameState *thisx); |
