Creeper: The MPEG decoder returns 1 upon completion, not 0

This commit is contained in:
Gabriel Correia 2024-06-07 11:28:35 -03:00
parent 18cab712ba
commit 373745c2f8
4 changed files with 6 additions and 6 deletions

View File

@ -147,7 +147,7 @@ namespace cosmic::creeper {
cpu->chPc(jumpAddress); cpu->chPc(jumpAddress);
cpu->delaySlot = 1; cpu->delaySlot = 1;
// https://github.com/PSI-Rockin/DobieStation/blob/68dd073e751960fd01c839ac34ce6e056d70024a/src/core/ee/emotion.cpp#L591 // https://github.com/PSI-Rockin/DobieStation/blob/master/src/core/ee/emotion.cpp#L591
// https://forums.pcsx2.net/Thread-Patch-Making-For-Dummies-SceMpegIsEnd // https://forums.pcsx2.net/Thread-Patch-Making-For-Dummies-SceMpegIsEnd
// jr $ra = 0x03e00008; // jr $ra = 0x03e00008;
[[likely]] if (cpu->mipsRead<u32>(*cpu->eePc + 4) != 0x03e00008) { [[likely]] if (cpu->mipsRead<u32>(*cpu->eePc + 4) != 0x03e00008) {
@ -166,13 +166,13 @@ namespace cosmic::creeper {
return; return;
cpu->isABranch = {}; cpu->isABranch = {};
cpu->delaySlot = {}; cpu->delaySlot = {};
cpu->GPRs[engine::$v0].qw = {}; cpu->GPRs[engine::$v0].qw = {1};
} }
void MipsIvInterpreter::addi(Operands ops) { void MipsIvInterpreter::addi(Operands ops) {
doReg(ops.rt) = ops.pa16[0] + doReg(ops.rs); doReg(ops.rt) = ops.pa16[0] + doReg(ops.rs);
} }
void MipsIvInterpreter::lui(Operands ops) { void MipsIvInterpreter::lui(Operands ops) {
do64Reg(ops.rt) = static_cast<u64>((ops.sins & 0xffff) << 16); do64Reg(ops.rt) = static_cast<u64>(signedGetOffset(ops) << 16);
} }
void MipsIvInterpreter::slti(Operands ops) { void MipsIvInterpreter::slti(Operands ops) {

View File

@ -13,7 +13,7 @@ namespace cosmic::fishron {
Arm64Scaled{Str, 0xb8000fe0}, // str w0, [sp, #-4]! Arm64Scaled{Str, 0xb8000fe0}, // str w0, [sp, #-4]!
Arm64Scaled{Stp, 0x29000000} // stp w0, w1, [sp, #-8]! Arm64Scaled{Stp, 0x29000000} // stp w0, w1, [sp, #-8]!
}; };
std::array<const char*, 2> emitterFormats { std::array<std::string, 2> emitterFormats {
"str w%u, [sp, #03u]!", "str w%u, [sp, #03u]!",
"stp w%u, w%u, [sp, #3u]!" "stp w%u, w%u, [sp, #3u]!"
}; };

View File

@ -1,7 +1,7 @@
#include <common/global.h> #include <common/global.h>
#include <mio/dma_ctrl.h> #include <mio/dma_ctrl.h>
namespace cosmic::mio { namespace cosmic::mio {
static const std::array<const char*, 10> channelsName{ static const std::array<std::string, 10> channelsName{
"Vif0", "Vif1", "Gif", "IpuFrom", "IpuTo", "Vif0", "Vif1", "Gif", "IpuFrom", "IpuTo",
"Sif0", "Sif1", "Sif2", "SprFrom", "SprTo" "Sif0", "Sif1", "Sif2", "SprFrom", "SprTo"
}; };

View File

@ -4,7 +4,7 @@
#include <vm/emu_vm.h> #include <vm/emu_vm.h>
#include <console/backdoor.h> #include <console/backdoor.h>
#include <common/global.h> #include <common/global.h>
#include "cosmic/creeper/vector_codes.h" #include <cosmic/creeper/vector_codes.h>
namespace cosmic::vu { namespace cosmic::vu {
VuIntPipeline::VuIntPipeline() { VuIntPipeline::VuIntPipeline() {
pipeline[0].clearEntry(); pipeline[0].clearEntry();