diff --git a/librecomp/src/flash.cpp b/librecomp/src/flash.cpp index 1017484..f46261c 100644 --- a/librecomp/src/flash.cpp +++ b/librecomp/src/flash.cpp @@ -154,7 +154,7 @@ extern "C" void osFlashWriteBuffer_recomp(uint8_t * rdram, recomp_context * ctx) } // Send the message indicating write completion - ultramodern::enqueue_external_message_type(mq, 0, false, ultramodern::EventMessageSource::Pi); + ultramodern::enqueue_external_message_src(mq, 0, false, ultramodern::EventMessageSource::Pi); ctx->r2 = 0; } @@ -193,7 +193,7 @@ extern "C" void osFlashReadArray_recomp(uint8_t * rdram, recomp_context * ctx) { save_read(PASS_RDRAM dramAddr, offset, count); // Send the message indicating read completion - ultramodern::enqueue_external_message_type(mq, 0, false, ultramodern::EventMessageSource::Pi); + ultramodern::enqueue_external_message_src(mq, 0, false, ultramodern::EventMessageSource::Pi); ctx->r2 = 0; } diff --git a/librecomp/src/pi.cpp b/librecomp/src/pi.cpp index 6fd590b..43509ba 100644 --- a/librecomp/src/pi.cpp +++ b/librecomp/src/pi.cpp @@ -275,7 +275,7 @@ void do_dma(RDRAM_ARG PTR(OSMesgQueue) mq, gpr rdram_address, uint32_t physical_ recomp::do_rom_read(rdram, rdram_address, physical_addr, size); // Send a message to the mq to indicate that the transfer completed - ultramodern::enqueue_external_message_type(mq, 0, false, ultramodern::EventMessageSource::Pi); + ultramodern::enqueue_external_message_src(mq, 0, false, ultramodern::EventMessageSource::Pi); } else if (physical_addr >= recomp::sram_base) { if (!recomp::sram_allowed()) { ultramodern::error_handling::message_box("Attempted to use SRAM saving with other save type"); @@ -285,7 +285,7 @@ void do_dma(RDRAM_ARG PTR(OSMesgQueue) mq, gpr rdram_address, uint32_t physical_ save_read(rdram, rdram_address, physical_addr - recomp::sram_base, size); // Send a message to the mq to indicate that the transfer completed - ultramodern::enqueue_external_message_type(mq, 0, false, ultramodern::EventMessageSource::Pi); + ultramodern::enqueue_external_message_src(mq, 0, false, ultramodern::EventMessageSource::Pi); } else { fprintf(stderr, "[WARN] PI DMA read from unknown region, phys address 0x%08X\n", physical_addr); } @@ -302,7 +302,7 @@ void do_dma(RDRAM_ARG PTR(OSMesgQueue) mq, gpr rdram_address, uint32_t physical_ save_write(rdram, rdram_address, physical_addr - recomp::sram_base, size); // Send a message to the mq to indicate that the transfer completed - ultramodern::enqueue_external_message_type(mq, 0, false, ultramodern::EventMessageSource::Pi); + ultramodern::enqueue_external_message_src(mq, 0, false, ultramodern::EventMessageSource::Pi); } else { fprintf(stderr, "[WARN] PI DMA write to unknown region, phys address 0x%08X\n", physical_addr); } diff --git a/ultramodern/include/ultramodern/ultramodern.hpp b/ultramodern/include/ultramodern/ultramodern.hpp index 8eb9b9c..57db6f6 100644 --- a/ultramodern/include/ultramodern/ultramodern.hpp +++ b/ultramodern/include/ultramodern/ultramodern.hpp @@ -68,11 +68,11 @@ struct MessageQueueControl { bool requeue_si = true; bool requeue_ai = false; bool requeue_vi = false; - bool requeue_pi = true; + bool requeue_pi = false; bool requeue_dp = true; }; void set_message_queue_control(const MessageQueueControl& mqc); -void enqueue_external_message_type(PTR(OSMesgQueue) mq, OSMesg msg, bool jam, EventMessageSource src); +void enqueue_external_message_src(PTR(OSMesgQueue) mq, OSMesg msg, bool jam, EventMessageSource src); void enqueue_external_message(PTR(OSMesgQueue) mq, OSMesg msg, bool jam, bool requeue_if_blocked); void wait_for_external_message(RDRAM_ARG1); void wait_for_external_message_timed(RDRAM_ARG1, u32 millis); diff --git a/ultramodern/src/events.cpp b/ultramodern/src/events.cpp index 4111ecd..518529d 100644 --- a/ultramodern/src/events.cpp +++ b/ultramodern/src/events.cpp @@ -233,13 +233,13 @@ void vi_thread_func() { if (cur_state->mq != NULLPTR) { // Send a message to the VI queue, and do not set it to be requeued if the queue was full. // The worst case scenario is that the game misses a VI message and has to wait a little longer for the next. - ultramodern::enqueue_external_message_type(cur_state->mq, cur_state->msg, false, ultramodern::EventMessageSource::Vi); + ultramodern::enqueue_external_message_src(cur_state->mq, cur_state->msg, false, ultramodern::EventMessageSource::Vi); } remaining_retraces = cur_state->retrace_count; } if (events_context.ai.mq != NULLPTR) { // Send a message to the VI queue, and do not set it to be requeued if the queue was full for the same reason as the VI message above. - ultramodern::enqueue_external_message_type(events_context.ai.mq, events_context.ai.msg, false, ultramodern::EventMessageSource::Ai); + ultramodern::enqueue_external_message_src(events_context.ai.mq, events_context.ai.msg, false, ultramodern::EventMessageSource::Ai); } } @@ -252,13 +252,13 @@ void vi_thread_func() { void sp_complete() { uint8_t* rdram = events_context.rdram; std::lock_guard lock{ events_context.message_mutex }; - ultramodern::enqueue_external_message_type(events_context.sp.mq, events_context.sp.msg, false, ultramodern::EventMessageSource::Sp); + ultramodern::enqueue_external_message_src(events_context.sp.mq, events_context.sp.msg, false, ultramodern::EventMessageSource::Sp); } void dp_complete() { uint8_t* rdram = events_context.rdram; std::lock_guard lock{ events_context.message_mutex }; - ultramodern::enqueue_external_message_type(events_context.dp.mq, events_context.dp.msg, false, ultramodern::EventMessageSource::Dp); + ultramodern::enqueue_external_message_src(events_context.dp.mq, events_context.dp.msg, false, ultramodern::EventMessageSource::Dp); } void task_thread_func(uint8_t* rdram, moodycamel::LightweightSemaphore* thread_ready) { @@ -566,7 +566,7 @@ void ultramodern::submit_rsp_task(RDRAM_ARG PTR(OSTask) task_) { } void ultramodern::send_si_message() { - ultramodern::enqueue_external_message_type(events_context.si.mq, events_context.si.msg, false, ultramodern::EventMessageSource::Si); + ultramodern::enqueue_external_message_src(events_context.si.mq, events_context.si.msg, false, ultramodern::EventMessageSource::Si); } void ultramodern::init_events(RDRAM_ARG ultramodern::renderer::WindowHandle window_handle) { diff --git a/ultramodern/src/extensions.cpp b/ultramodern/src/extensions.cpp index ec31229..e18b276 100644 --- a/ultramodern/src/extensions.cpp +++ b/ultramodern/src/extensions.cpp @@ -38,7 +38,7 @@ void dispatch_displaylist_events(PTR(void) displaylist, u32 event_type) { for (auto iter = extension_state.dl_events.pending_events.begin(); iter != extension_state.dl_events.pending_events.end(); ) { if (iter->displaylist == displaylist && iter->event_type == event_type) { // Send the provided message to the corresponding message queue for this event, then remove this event from the queue. - ultramodern::enqueue_external_message_type(iter->mq, iter->mesg, false, ultramodern::EventMessageSource::Sp); + ultramodern::enqueue_external_message_src(iter->mq, iter->mesg, false, ultramodern::EventMessageSource::Sp); iter = extension_state.dl_events.pending_events.erase(iter); } else { diff --git a/ultramodern/src/mesgqueue.cpp b/ultramodern/src/mesgqueue.cpp index 64a6ca6..9944a02 100644 --- a/ultramodern/src/mesgqueue.cpp +++ b/ultramodern/src/mesgqueue.cpp @@ -27,7 +27,7 @@ void ultramodern::set_message_queue_control(const ultramodern::MessageQueueContr requeue_enabled.set(static_cast(EventMessageSource::Dp), mqc.requeue_dp); } -void ultramodern::enqueue_external_message_type(PTR(OSMesgQueue) mq, OSMesg msg, bool jam, EventMessageSource src) { +void ultramodern::enqueue_external_message_src(PTR(OSMesgQueue) mq, OSMesg msg, bool jam, EventMessageSource src) { external_messages.enqueue({mq, msg, jam, requeue_enabled[static_cast(src)]}); } diff --git a/ultramodern/src/timer.cpp b/ultramodern/src/timer.cpp index 9731827..ee26c45 100644 --- a/ultramodern/src/timer.cpp +++ b/ultramodern/src/timer.cpp @@ -130,7 +130,7 @@ void timer_thread(RDRAM_ARG1) { } else { // Waiting for the timer completed, so send the timer's message to its message queue - ultramodern::enqueue_external_message_type(cur_timer->mq, cur_timer->msg, false, ultramodern::EventMessageSource::Timer); + ultramodern::enqueue_external_message_src(cur_timer->mq, cur_timer->msg, false, ultramodern::EventMessageSource::Timer); // If the timer has a specified interval then reload it with that value if (cur_timer->interval != 0) { cur_timer->timestamp = cur_timer->interval + time_now();