X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=libpcsxcore%2Fpsxbios.c;h=9e3f13fe68c67e3cececf47f6962138a858b1609;hb=12742a5c7b839a9fad2ef87c1bd681b09ab86906;hp=d2c7793d4a39a876a2b815930ce273425029b7c0;hpb=de6bb5342b1ffd8698431831e3b8ee7b385174c2;p=pcsx_rearmed.git diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c index d2c7793d..9e3f13fe 100644 --- a/libpcsxcore/psxbios.c +++ b/libpcsxcore/psxbios.c @@ -935,8 +935,23 @@ static void do_memcpy(u32 dst, u32 src, s32 len) static void psxBios_memcpy(); -static void psxBios_bcopy() { // 0x27 - psxBios_memcpy(); // identical +static void psxBios_bcopy() { // 0x27 - memcpy with args swapped + //PSXBIOS_LOG("psxBios_%s %x %x %x\n", biosA0n[0x27], a0, a1, a2); + u32 ret = a0, cycles = 0; + if (a0 == 0) // ...but it checks src this time + { + mips_return_c(0, 4); + return; + } + v1 = a0; + if ((s32)a2 > 0) { + do_memcpy(a1, a0, a2); + cycles = a2 * 6; + a0 += a2; + a1 += a2; + a2 = 0; + } + mips_return_c(ret, cycles + 5); } static void psxBios_bzero() { // 0x28