Implement osContStartQuery, osContSetCh

This commit is contained in:
angie 2024-06-05 13:30:15 -04:00
parent d994b1cd57
commit 0ce61d3e75
2 changed files with 35 additions and 12 deletions

View file

@ -37,6 +37,15 @@ extern "C" void osContInit_recomp(uint8_t* rdram, recomp_context* ctx) {
_return<s32>(ctx, ret);
}
extern "C" void osContReset_recomp(uint8_t* rdram, recomp_context* ctx) {
PTR(OSMesgQueue) mq = _arg<0, PTR(OSMesgQueue)>(rdram, ctx);
PTR(OSContStatus) data = _arg<1, PTR(OSContStatus)>(rdram, ctx);
s32 ret = osContReset(PASS_RDRAM mq, data);
_return<s32>(ctx, ret);
}
extern "C" void osContStartReadData_recomp(uint8_t* rdram, recomp_context* ctx) {
if (input_callbacks.poll_input) {
input_callbacks.poll_input();
@ -73,7 +82,11 @@ extern "C" void osContGetReadData_recomp(uint8_t* rdram, recomp_context* ctx) {
}
extern "C" void osContStartQuery_recomp(uint8_t * rdram, recomp_context * ctx) {
ultramodern::send_si_message(rdram);
PTR(OSMesgQueue) mq = _arg<0, PTR(OSMesgQueue)>(rdram, ctx);
s32 ret = osContStartQuery(PASS_RDRAM mq);
_return<s32>(ctx, ret);
}
extern "C" void osContGetQuery_recomp(uint8_t * rdram, recomp_context * ctx) {
@ -83,8 +96,11 @@ extern "C" void osContGetQuery_recomp(uint8_t * rdram, recomp_context * ctx) {
}
extern "C" void osContSetCh_recomp(uint8_t* rdram, recomp_context* ctx) {
max_controllers = (std::min)(_arg<0, u8>(rdram, ctx), u8(4));
_return<s32>(ctx, 0);
u8 ch = _arg<0, u8>(rdram, ctx);
s32 ret = osContSetCh(PASS_RDRAM ch);
_return<s32>(ctx, ret);
}
extern "C" void __osMotorAccess_recomp(uint8_t* rdram, recomp_context* ctx) {

View file

@ -2,6 +2,7 @@
#include "ultramodern/input.hpp"
#include "ultramodern/ultra64.h"
#include "ultramodern/ultramodern.hpp"
static ultramodern::input::callbacks_t input_callbacks {};
@ -9,6 +10,8 @@ void ultramodern::input::set_callbacks(const callbacks_t& callbacks) {
input_callbacks = callbacks;
}
#define MAXCONTROLLERS 4
static int max_controllers = 0;
static void __osContGetInitData(u8* pattern, OSContStatus *data) {
@ -31,27 +34,31 @@ extern "C" s32 osContInit(RDRAM_ARG PTR(OSMesgQueue) mq, PTR(u8) bitpattern_, PT
u8 *bitpattern = TO_PTR(u8, bitpattern_);
OSContStatus *data = TO_PTR(OSContStatus, data_);
max_controllers = 4;
max_controllers = MAXCONTROLLERS;
__osContGetInitData(bitpattern, data);
return 0;
}
extern "C" s32 osContResetRDRAM_ARG (PTR(OSMesgQueue) , PTR(OSContStatus) ) {
extern "C" s32 osContReset(RDRAM_ARG PTR(OSMesgQueue) mq, PTR(OSContStatus) data) {
assert(false);
}
extern "C" s32 osContStartQuery(RDRAM_ARG PTR(OSMesgQueue) ) {
extern "C" s32 osContStartQuery(RDRAM_ARG PTR(OSMesgQueue) mq) {
ultramodern::send_si_message(PASS_RDRAM1);
return 0;
}
extern "C" s32 osContStartReadData(RDRAM_ARG PTR(OSMesgQueue) mq) {
assert(false);
}
extern "C" s32 osContStartReadData(RDRAM_ARG PTR(OSMesgQueue) ) {
assert(false);
}
extern "C" s32 osContSetCh(RDRAM_ARG u8 ch) {
max_controllers = (std::min)(ch, u8(MAXCONTROLLERS));
extern "C" s32 osContSetCh(RDRAM_ARG u8) {
assert(false);
return 0;
}
extern "C" void osContGetQuery(RDRAM_ARG PTR(OSContStatus) data_) {
@ -61,6 +68,6 @@ extern "C" void osContGetQuery(RDRAM_ARG PTR(OSContStatus) data_) {
__osContGetInitData(&pattern, data);
}
extern "C" void osContGetReadData(RDRAM_ARG PTR(OSContPad) ) {
extern "C" void osContGetReadData(RDRAM_ARG PTR(OSContPad) data) {
assert(false);
}