New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cho Aniki Zero hangs on loading #7737
Comments
uh, Excuse me , Could you make this PSP Video trailer game like JPCSP , PPSSPP not have this @sum2012 |
@daniel229 Select easy level,use idaten then use adon 1: In the real psp,there are these enemy http://postimg.org/image/mobnn5rdn/ |
@zminhquanz I would not |
@sum2012 |
Hmm, pretty sure we fixed jpcsp/jpcsp@bd345a4 a while back for Final Fantasy 3. We did have the same glitch once upon a time. Hmm, from the log all it looks like is that it's waiting for a button press or something. Not sure. I'm not seeing anything obvious... -[Unknown] |
v1.1.1-161-g69fa588 same problem |
@unknownbrackets We don't specifically handle these cases to get perfect values, but we did some accuracy improvements. If the game really needs sin=1.00000000 for a 90-degree input, we will have to add specific checks as we can't match that perfectly with a regular sinf() and a floating point scale factor. |
Okay, then, to validate @sum2012 can you try.. find: https://github.com/hrydgard/ppsspp/blob/master/Core/MIPS/MIPSVFPUUtils.h#L36-L61 inline float vfpu_sin(float angle) {
angle -= floorf(angle * 0.25f) * 4.f;
angle *= (float)M_PI_2;
return sinf(angle);
}
inline float vfpu_cos(float angle) {
angle -= floorf(angle * 0.25f) * 4.f;
angle *= (float)M_PI_2;
return cosf(angle);
}
inline float vfpu_asin(float angle) {
return asinf(angle) / M_PI_2;
}
inline void vfpu_sincos(float angle, float &sine, float &cosine) {
angle -= floorf(angle * 0.25f) * 4.f;
angle *= (float)M_PI_2;
#if defined(__linux__)
sincosf(angle, &sine, &cosine);
#else
sine = sinf(angle);
cosine = cosf(angle);
#endif
} Replace: inline float vfpu_sin(float angle) {
if (angle == 1.0f) {
return 1.0f;
} else if (angle == -1.0f) {
return -1.0f;
}
angle -= floorf(angle * 0.25f) * 4.f;
angle *= (float)M_PI_2;
return sinf(angle);
}
inline float vfpu_cos(float angle) {
if (angle == 1.0f || angle == -1.0f) {
return -0.0f;
}
angle -= floorf(angle * 0.25f) * 4.f;
angle *= (float)M_PI_2;
return cosf(angle);
}
inline float vfpu_asin(float angle) {
return asinf(angle) / M_PI_2;
}
inline void vfpu_sincos(float angle, float &sine, float &cosine) {
if (angle == 1.0f) {
sine = 1.0f;
cosine = 0.0f;
return;
} else if (angle == -1.0f) {
sine = -1.0f;
cosine = 0.0f;
return;
}
angle -= floorf(angle * 0.25f) * 4.f;
angle *= (float)M_PI_2;
#if defined(__linux__)
sincosf(angle, &sine, &cosine);
#else
sine = sinf(angle);
cosine = cosf(angle);
#endif
} Does that make it work? -[Unknown] |
@unknownbrackets |
If we're going to special case 1/-1, it seems like we ought to special case everything between 0 and 4. Might fix some other game too, since those are all special values. Can we trust that What if you use this instead (kinda gnarly): inline float vfpu_sin(float angle) {
angle -= floorf(angle * 0.25f) * 4.f;
if (angle == 0.0f || angle == 2.0f) {
return 0.0f;
} else if (angle == 1.0f) {
return 1.0f;
} else if (angle == 3.0f) {
return -1.0f;
}
angle *= (float)M_PI_2;
return sinf(angle);
}
inline float vfpu_cos(float angle) {
angle -= floorf(angle * 0.25f) * 4.f;
if (angle == 1.0f || angle == 3.0f) {
return 0.0f;
} else if (angle == 0.0f) {
return 1.0f;
} else if (angle == 2.0f) {
return -1.0f;
}
angle *= (float)M_PI_2;
return cosf(angle);
}
inline float vfpu_asin(float angle) {
return asinf(angle) / M_PI_2;
}
inline void vfpu_sincos(float angle, float &sine, float &cosine) {
angle -= floorf(angle * 0.25f) * 4.f;
if (angle == 0.0f) {
sine = 0.0f;
cosine = 1.0f;
} else if (angle == 1.0f) {
sine = 1.0f;
cosine = 0.0f;
} else if (angle == 2.0f) {
sine = 0.0f;
cosine = -1.0f;
} else if (angle == 3.0f) {
sine = -1.0f;
cosine = 0.0f;
} else {
angle *= (float)M_PI_2;
#if defined(__linux__)
sincosf(angle, &sine, &cosine);
#else
sine = sinf(angle);
cosine = cosf(angle);
#endif
}
} -[Unknown] |
still works. |
Fixes hrydgard#7737, thanks go to gid15 from Jpcsp for finding and daniel229 for reporting.
Does that mean "1: In the real psp,there are these enemy http://postimg.org/image/mobnn5rdn/" is an issue in PPSSPP still? -[Unknown] |
@unknownbrackets |
JPCSP fixed it in jpcsp/jpcsp@bd345a4
Debug log(rename jpg to 7z)
The text was updated successfully, but these errors were encountered: