mirror of https://github.com/sm64pc/sm64pc.git
unfuck keyboard API; actually use seconds for rumble time
This commit is contained in:
parent
3954f7d1d3
commit
aff081080b
|
@ -15,5 +15,6 @@ extern void func_sh_8024CA04(void);
|
||||||
extern void cancel_rumble(void);
|
extern void cancel_rumble(void);
|
||||||
extern void create_thread_6(void);
|
extern void create_thread_6(void);
|
||||||
extern void rumble_thread_update_vi(void);
|
extern void rumble_thread_update_vi(void);
|
||||||
|
extern void thread6_rumble_loop(void *a0);
|
||||||
|
|
||||||
#endif // _THREAD_6_H
|
#endif // _THREAD_6_H
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "lib/src/libultra_internal.h"
|
#include "lib/src/libultra_internal.h"
|
||||||
#include "lib/src/osContInternal.h"
|
#include "lib/src/osContInternal.h"
|
||||||
|
#include "macros.h"
|
||||||
|
|
||||||
#include "../configfile.h"
|
#include "../configfile.h"
|
||||||
|
|
||||||
|
@ -21,7 +22,7 @@ static struct ControllerAPI *controller_implementations[] = {
|
||||||
&controller_keyboard,
|
&controller_keyboard,
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 osContInit(OSMesgQueue *mq, u8 *controllerBits, OSContStatus *status) {
|
s32 osContInit(UNUSED OSMesgQueue *mq, u8 *controllerBits, UNUSED OSContStatus *status) {
|
||||||
for (size_t i = 0; i < sizeof(controller_implementations) / sizeof(struct ControllerAPI *); i++) {
|
for (size_t i = 0; i < sizeof(controller_implementations) / sizeof(struct ControllerAPI *); i++) {
|
||||||
controller_implementations[i]->init();
|
controller_implementations[i]->init();
|
||||||
}
|
}
|
||||||
|
@ -29,23 +30,23 @@ s32 osContInit(OSMesgQueue *mq, u8 *controllerBits, OSContStatus *status) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 osMotorStart(void *pfs) {
|
s32 osMotorStart(UNUSED void *pfs) {
|
||||||
// Since rumble stops by osMotorStop, its duration is not nessecary.
|
// Since rumble stops by osMotorStop, its duration is not nessecary.
|
||||||
// Set it to 5 seconds and hope osMotorStop() is called in time.
|
// Set it to 5 seconds and hope osMotorStop() is called in time.
|
||||||
controller_rumble_play(configRumbleStrength / 100.0f, 5.0f);
|
controller_rumble_play(configRumbleStrength / 100.0f, 5.0f);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 osMotorStop(void *pfs) {
|
s32 osMotorStop(UNUSED void *pfs) {
|
||||||
controller_rumble_stop();
|
controller_rumble_stop();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 osMotorInit(OSMesgQueue *mq, void *pfs, s32 port) {
|
u32 osMotorInit(UNUSED OSMesgQueue *mq, UNUSED void *pfs, UNUSED s32 port) {
|
||||||
return 0; // rumble is initialized in the specific backend's init function
|
return 0; // rumble is initialized in the specific backend's init function
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 osContStartReadData(OSMesgQueue *mesg) {
|
s32 osContStartReadData(UNUSED OSMesgQueue *mesg) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -113,6 +113,8 @@ struct ControllerAPI controller_keyboard = {
|
||||||
keyboard_init,
|
keyboard_init,
|
||||||
keyboard_read,
|
keyboard_read,
|
||||||
keyboard_rawkey,
|
keyboard_rawkey,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
keyboard_bindkeys,
|
keyboard_bindkeys,
|
||||||
keyboard_shutdown
|
keyboard_shutdown
|
||||||
};
|
};
|
||||||
|
|
|
@ -241,9 +241,9 @@ static void controller_sdl_read(OSContPad *pad) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void controller_sdl_rumble_play(f32 strength, u32 length) {
|
static void controller_sdl_rumble_play(f32 strength, f32 length) {
|
||||||
if (sdl_haptic)
|
if (sdl_haptic)
|
||||||
SDL_HapticRumblePlay(sdl_haptic, strength, length);
|
SDL_HapticRumblePlay(sdl_haptic, strength, (u32)(length * 1000.0f));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void controller_sdl_rumble_stop(void) {
|
static void controller_sdl_rumble_stop(void) {
|
||||||
|
|
|
@ -67,7 +67,7 @@ void send_display_list(struct SPTask *spTask) {
|
||||||
void produce_one_frame(void) {
|
void produce_one_frame(void) {
|
||||||
gfx_start_frame();
|
gfx_start_frame();
|
||||||
game_loop_one_iteration();
|
game_loop_one_iteration();
|
||||||
thread6_rumble_loop();
|
thread6_rumble_loop(NULL);
|
||||||
|
|
||||||
int samples_left = audio_api->buffered();
|
int samples_left = audio_api->buffered();
|
||||||
u32 num_audio_samples = samples_left < audio_api->get_desired_buffered() ? 544 : 528;
|
u32 num_audio_samples = samples_left < audio_api->get_desired_buffered() ? 544 : 528;
|
||||||
|
|
Loading…
Reference in New Issue