From 0ce61d3e757b49e5cc9d4c5cf504a5eb7be012ff Mon Sep 17 00:00:00 2001 From: angie Date: Wed, 5 Jun 2024 13:30:15 -0400 Subject: [PATCH] Implement osContStartQuery, osContSetCh --- librecomp/src/cont.cpp | 22 +++++++++++++++++++--- ultramodern/src/cont.cpp | 25 ++++++++++++++++--------- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/librecomp/src/cont.cpp b/librecomp/src/cont.cpp index e036127..51a595d 100644 --- a/librecomp/src/cont.cpp +++ b/librecomp/src/cont.cpp @@ -37,6 +37,15 @@ extern "C" void osContInit_recomp(uint8_t* rdram, recomp_context* ctx) { _return(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(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(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(ctx, 0); + u8 ch = _arg<0, u8>(rdram, ctx); + + s32 ret = osContSetCh(PASS_RDRAM ch); + + _return(ctx, ret); } extern "C" void __osMotorAccess_recomp(uint8_t* rdram, recomp_context* ctx) { diff --git a/ultramodern/src/cont.cpp b/ultramodern/src/cont.cpp index 636ef62..fe31c43 100644 --- a/ultramodern/src/cont.cpp +++ b/ultramodern/src/cont.cpp @@ -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); }