mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-08-10 02:35:20 -04:00
Match JUTException
This commit is contained in:
@@ -128,8 +128,9 @@ public:
|
||||
};
|
||||
|
||||
JKRArchive(s32, EMountMode);
|
||||
|
||||
virtual ~JKRArchive(); // _08
|
||||
private:
|
||||
~JKRArchive();
|
||||
public: // _08
|
||||
virtual bool becomeCurrent(const char*); // _10
|
||||
virtual void* getResource(const char* path); // _14
|
||||
virtual void* getResource(u32 type, const char* name); // _18
|
||||
@@ -161,12 +162,11 @@ public:
|
||||
static JKRArchive* mount(void*, JKRHeap*, EMountDirection);
|
||||
static JKRArchive* mount(s32, EMountMode, JKRHeap*, EMountDirection);
|
||||
static void* getGlbResource(u32 type, const char* name, JKRArchive* archive);
|
||||
|
||||
// Unused/inlined:
|
||||
JKRArchive();
|
||||
JKRArchive(const char* p1, EMountMode mountMode);
|
||||
static JKRArchive* check_mount_already(s32);
|
||||
static JKRArchive* check_mount_already(s32, JKRHeap*);
|
||||
|
||||
JKRArchive();
|
||||
JKRArchive(const char* p1, EMountMode mountMode);
|
||||
SDIDirEntry* findResType(u32) const;
|
||||
SDIFileEntry* findTypeResource(u32, u32) const;
|
||||
|
||||
|
||||
@@ -17,11 +17,9 @@ enum ExPrintFlags
|
||||
{
|
||||
EXPRINTFLAG_GPR = 0x1,
|
||||
EXPRINTFLAG_GPRMap = 0x2,
|
||||
EXPRINTFLAG_SRR0Map = 0x4,
|
||||
EXPRINTFLAG_Float = 0x8,
|
||||
EXPRINTFLAG_Stack = 0x10,
|
||||
|
||||
EXPRINTFLAG_All = 0x1F,
|
||||
EXPRINTFLAG_Float = 0x4,
|
||||
EXPRINTFLAG_Stack = 0x8,
|
||||
EXPRINTFLAG_All = 0xF,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -35,7 +33,7 @@ struct JUTException : public JKRThread
|
||||
INFOPAGE_Float = 2,
|
||||
INFOPAGE_Stack = 3,
|
||||
INFOPAGE_GPRMap = 4,
|
||||
INFOPAGE_SRR0Map = 5,
|
||||
|
||||
};
|
||||
|
||||
// size: 0x14
|
||||
@@ -102,7 +100,7 @@ struct JUTException : public JKRThread
|
||||
void showGPR(OSContext *);
|
||||
void showSRR0Map(OSContext *);
|
||||
bool isEnablePad() const;
|
||||
u32 getFpscr();
|
||||
static u32 getFpscr();
|
||||
void setFpscr(u32);
|
||||
void enableFpuException();
|
||||
void disableFpuException();
|
||||
@@ -129,7 +127,7 @@ struct JUTException : public JKRThread
|
||||
static JUTErrorHandler sPostUserCallback;
|
||||
static u32 msr;
|
||||
static u32 fpscr;
|
||||
static const char *sCpuExpName[32];
|
||||
static const char *sCpuExpName[16];
|
||||
static JSUList<JUTExMapFile> sMapFileList;
|
||||
|
||||
// _00 = VTBL
|
||||
@@ -143,7 +141,6 @@ struct JUTException : public JKRThread
|
||||
u32 mTraceSuppress; // _94
|
||||
u32 _98; // _98
|
||||
u32 mPrintFlags; // _9C, see ExPrintFlags enum
|
||||
u32 mStackPointer; // _A0
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -93,7 +93,7 @@ public:
|
||||
void clearForReset();
|
||||
static void init();
|
||||
void initList();
|
||||
void read();
|
||||
static void read();
|
||||
static bool recalibrate(u32);
|
||||
void setButtonRepeat(u32, u32, u32);
|
||||
void update();
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
#ifndef _MSL_COMMON_FLOAT_H
|
||||
#define _MSL_COMMON_FLOAT_H
|
||||
|
||||
#include "MSL_C/MSL_Common_Embedded/Math/fdlibm.h"
|
||||
|
||||
#define FP_SNAN 0
|
||||
#define FP_QNAN 1
|
||||
#define FP_INFINITE 2
|
||||
#define FP_ZERO 3
|
||||
#define FP_NORMAL 4
|
||||
#define FP_SUBNORMAL 5
|
||||
|
||||
#define FP_NAN FP_QNAN
|
||||
|
||||
#define fpclassify(x) \
|
||||
((sizeof(x) == sizeof(float)) ? __fpclassifyf(x) : __fpclassifyd(x))
|
||||
#define signbit(x) \
|
||||
((sizeof(x) == sizeof(float)) ? __signbitf(x) : __signbitd(x))
|
||||
#define isfinite(x) ((fpclassify(x) > 2))
|
||||
#define isnan(x) ((fpclassify(x) == FP_NAN))
|
||||
#define isinf(x) ((fpclassify(x) == FP_INFINITE))
|
||||
|
||||
#define __signbitf(x) ((int)(__HI(x) & 0x80000000))
|
||||
|
||||
// TODO: OK?
|
||||
#define __signbitd(x) ((int)(__HI(x) & 0x80000000))
|
||||
|
||||
extern unsigned long __float_nan[];
|
||||
extern unsigned long __float_huge[];
|
||||
extern unsigned long __float_max[];
|
||||
extern unsigned long __float_epsilon[];
|
||||
|
||||
inline int __fpclassifyf(float __value)
|
||||
{
|
||||
unsigned long integer = *(unsigned long*)&__value;
|
||||
|
||||
switch (integer & 0x7f800000) {
|
||||
case 0x7f800000:
|
||||
if ((integer & 0x7fffff) != 0) {
|
||||
return FP_QNAN;
|
||||
}
|
||||
return FP_INFINITE;
|
||||
|
||||
case 0:
|
||||
if ((integer & 0x7fffff) != 0) {
|
||||
return FP_SUBNORMAL;
|
||||
}
|
||||
return FP_ZERO;
|
||||
}
|
||||
|
||||
return FP_NORMAL;
|
||||
}
|
||||
|
||||
inline int __fpclassifyd(double __value)
|
||||
{
|
||||
switch (__HI(__value) & 0x7ff00000) {
|
||||
case 0x7ff00000: {
|
||||
if ((__HI(__value) & 0x000fffff) || (__LO(__value) & 0xffffffff))
|
||||
return FP_QNAN;
|
||||
else
|
||||
return FP_INFINITE;
|
||||
break;
|
||||
}
|
||||
case 0: {
|
||||
if ((__HI(__value) & 0x000fffff) || (__LO(__value) & 0xffffffff))
|
||||
return FP_SUBNORMAL;
|
||||
else
|
||||
return FP_ZERO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return FP_NORMAL;
|
||||
}
|
||||
|
||||
#define FLT_MANT_DIG 24
|
||||
#define FLT_DIG 6
|
||||
#define FLT_MIN_EXP (-125)
|
||||
#define FLT_MIN_10_EXP (-37)
|
||||
#define FLT_MAX_EXP 128
|
||||
#define FLT_MAX_10_EXP 38
|
||||
|
||||
//#define FLT_MAX 3.40282346638528860e+38f
|
||||
#define FLT_EPSILON 1.1920928955078125e-07f
|
||||
|
||||
#define DBL_MANT_DIG 53
|
||||
#define DBL_DIG 15
|
||||
#define DBL_MIN_EXP (-1021)
|
||||
#define DBL_MIN_10_EXP (-308)
|
||||
#define DBL_MAX_EXP 1024
|
||||
#define DBL_MAX_10_EXP 308
|
||||
|
||||
#endif /* _MSL_COMMON_FLOAT_H */
|
||||
@@ -0,0 +1,234 @@
|
||||
#ifndef _FDLIBM_H
|
||||
#define _FDLIBM_H
|
||||
|
||||
/* @(#)fdlibm.h 1.5 04/04/22 */
|
||||
/**
|
||||
* ====================================================
|
||||
* Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // ifdef __cplusplus
|
||||
|
||||
/* Sometimes it's necessary to define __LITTLE_ENDIAN explicitly
|
||||
but these catch some common cases. */
|
||||
|
||||
#if defined(i386) || defined(i486) || defined(intel) || defined(x86) \
|
||||
|| defined(i86pc) || defined(__alpha) || defined(__osf__)
|
||||
#define __LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __LITTLE_ENDIAN
|
||||
#define __HI(x) *(1 + (int*)&x)
|
||||
#define __LO(x) *(int*)&x
|
||||
#define __HIp(x) *(1 + (int*)x)
|
||||
#define __LOp(x) *(int*)x
|
||||
#else
|
||||
#define __HI(x) *(int*)&x
|
||||
#define __LO(x) *(1 + (int*)&x)
|
||||
#define __HIp(x) *(int*)x
|
||||
#define __LOp(x) *(1 + (int*)x)
|
||||
#endif
|
||||
|
||||
// NOTE: should be enabled according to w_atan2.c
|
||||
#define _IEEE_LIBM
|
||||
|
||||
// TODO: should __STDC__ actually be defined?
|
||||
// #ifdef __STDC__
|
||||
#define __P(p) p
|
||||
// #else
|
||||
// #define __P(p) ()
|
||||
// #endif
|
||||
|
||||
/**
|
||||
* ANSI/POSIX
|
||||
*/
|
||||
|
||||
extern int signgam;
|
||||
|
||||
#define MAXFLOAT ((f32)3.40282346638528860e+38)
|
||||
|
||||
enum fdversion { fdlibm_ieee = -1, fdlibm_svid, fdlibm_xopen, fdlibm_posix };
|
||||
|
||||
#define _LIB_VERSION_TYPE enum fdversion
|
||||
#define _LIB_VERSION _fdlib_version
|
||||
|
||||
/* if global variable _LIB_VERSION is not desirable, one may
|
||||
* change the following to be a constant by:
|
||||
* #define _LIB_VERSION_TYPE const enum version
|
||||
* In that case, after one initializes the value _LIB_VERSION (see
|
||||
* s_lib_version.c) during compile time, it cannot be modified
|
||||
* in the middle of a program
|
||||
*/
|
||||
extern _LIB_VERSION_TYPE _LIB_VERSION;
|
||||
|
||||
#define _IEEE_ fdlibm_ieee
|
||||
#define _SVID_ fdlibm_svid
|
||||
#define _XOPEN_ fdlibm_xopen
|
||||
#define _POSIX_ fdlibm_posix
|
||||
|
||||
struct exception {
|
||||
int type;
|
||||
char* name;
|
||||
double arg1;
|
||||
double arg2;
|
||||
double retval;
|
||||
};
|
||||
|
||||
#define HUGE MAXFLOAT
|
||||
|
||||
/**
|
||||
* set X_TLOSS = pi*2**52, which is possibly defined in <values.h>
|
||||
* (one may replace the following line by "#include <values.h>")
|
||||
*/
|
||||
|
||||
#define X_TLOSS 1.41484755040568800000e+16
|
||||
|
||||
#define DOMAIN 1
|
||||
#define SING 2
|
||||
#define OVERFLOW 3
|
||||
#define UNDERFLOW 4
|
||||
#define TLOSS 5
|
||||
#define PLOSS 6
|
||||
|
||||
/**
|
||||
* ANSI/POSIX
|
||||
*/
|
||||
extern double acos __P((double));
|
||||
extern double asin __P((double));
|
||||
extern double atan __P((double));
|
||||
extern double atan2 __P((double, double));
|
||||
extern double cos __P((double));
|
||||
extern double sin __P((double));
|
||||
extern double tan __P((double));
|
||||
|
||||
extern double cosh __P((double));
|
||||
extern double sinh __P((double));
|
||||
extern double tanh __P((double));
|
||||
|
||||
extern double exp __P((double));
|
||||
extern double frexp __P((double, int*));
|
||||
extern double ldexp __P((double, int));
|
||||
extern double scalbn __P((double, int));
|
||||
extern double log __P((double));
|
||||
extern double log10 __P((double));
|
||||
extern double modf __P((double, double*));
|
||||
|
||||
extern double pow __P((double, double));
|
||||
extern double sqrt __P((double));
|
||||
|
||||
extern double ceil __P((double));
|
||||
extern double fabs __P((double));
|
||||
// NOTE: I have no idea how they got it to mangle like this
|
||||
extern double fabs__Fd(double);
|
||||
extern double floor __P((double));
|
||||
extern double fmod __P((double, double));
|
||||
|
||||
extern double erf __P((double));
|
||||
extern double erfc __P((double));
|
||||
extern double gamma __P((double));
|
||||
extern double hypot __P((double, double));
|
||||
extern int isnan __P((double));
|
||||
extern int finite __P((double));
|
||||
extern double j0 __P((double));
|
||||
extern double j1 __P((double));
|
||||
extern double jn __P((int, double));
|
||||
extern double lgamma __P((double));
|
||||
extern double y0 __P((double));
|
||||
extern double y1 __P((double));
|
||||
extern double yn __P((int, double));
|
||||
|
||||
extern double acosh __P((double));
|
||||
extern double asinh __P((double));
|
||||
extern double atanh __P((double));
|
||||
extern double cbrt __P((double));
|
||||
extern double logb __P((double));
|
||||
extern double nextafter __P((double, double));
|
||||
extern double remainder __P((double, double));
|
||||
#ifdef _SCALB_INT
|
||||
extern double scalb __P((double, int));
|
||||
#else
|
||||
extern double scalb __P((double, double));
|
||||
#endif
|
||||
|
||||
extern int matherr __P((struct exception*));
|
||||
|
||||
/**
|
||||
* IEEE Test Vector
|
||||
*/
|
||||
extern double significand __P((double));
|
||||
|
||||
/**
|
||||
* Functions callable from C, intended to support IEEE arithmetic.
|
||||
*/
|
||||
extern double copysign __P((double, double));
|
||||
extern int ilogb __P((double));
|
||||
extern double rint __P((double));
|
||||
extern double scalbn __P((double, int));
|
||||
|
||||
/**
|
||||
* BSD math library entry points
|
||||
*/
|
||||
extern double expm1 __P((double));
|
||||
extern double log1p __P((double));
|
||||
|
||||
/**
|
||||
* Reentrant version of gamma & lgamma; passes signgam back by reference
|
||||
* as the second argument; user must allocate space for signgam.
|
||||
*/
|
||||
#ifdef _REENTRANT
|
||||
extern double gamma_r __P((double, int*));
|
||||
extern double lgamma_r __P((double, int*));
|
||||
#endif /* _REENTRANT */
|
||||
|
||||
/* ieee style elementary functions */
|
||||
extern double __ieee754_sqrt __P((double));
|
||||
extern double __ieee754_acos __P((double));
|
||||
extern double __ieee754_acosh __P((double));
|
||||
extern double __ieee754_log __P((double));
|
||||
extern double __ieee754_atanh __P((double));
|
||||
extern double __ieee754_asin __P((double));
|
||||
extern double __ieee754_atan2 __P((double, double));
|
||||
extern double __ieee754_exp __P((double));
|
||||
extern double __ieee754_cosh __P((double));
|
||||
extern double __ieee754_fmod __P((double, double));
|
||||
extern double __ieee754_pow __P((double, double));
|
||||
extern double __ieee754_lgamma_r __P((double, int*));
|
||||
extern double __ieee754_gamma_r __P((double, int*));
|
||||
extern double __ieee754_lgamma __P((double));
|
||||
extern double __ieee754_gamma __P((double));
|
||||
extern double __ieee754_log10 __P((double));
|
||||
extern double __ieee754_sinh __P((double));
|
||||
extern double __ieee754_hypot __P((double, double));
|
||||
extern double __ieee754_j0 __P((double));
|
||||
extern double __ieee754_j1 __P((double));
|
||||
extern double __ieee754_y0 __P((double));
|
||||
extern double __ieee754_y1 __P((double));
|
||||
extern double __ieee754_jn __P((int, double));
|
||||
extern double __ieee754_yn __P((int, double));
|
||||
extern double __ieee754_remainder __P((double, double));
|
||||
extern int __ieee754_rem_pio2 __P((double, double*));
|
||||
#ifdef _SCALB_INT
|
||||
extern double __ieee754_scalb __P((double, int));
|
||||
#else
|
||||
extern double __ieee754_scalb __P((double, double));
|
||||
#endif
|
||||
|
||||
/* fdlibm kernel function */
|
||||
extern double __kernel_standard __P((double, double, int));
|
||||
extern double __kernel_sin __P((double, double, int));
|
||||
extern double __kernel_cos __P((double, double));
|
||||
extern double __kernel_tan __P((double, double, int));
|
||||
extern int __kernel_rem_pio2 __P((double*, double*, int, int, int, const int*));
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif // ifdef __cplusplus
|
||||
|
||||
#endif
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef W_MATH_H
|
||||
#define W_MATH_H
|
||||
|
||||
#include "MSL_C/MSL_Common/float.h"
|
||||
|
||||
#ifndef BUGFIXES
|
||||
#define SQRTF_LINKAGE extern
|
||||
#else
|
||||
@@ -47,11 +49,6 @@ inline float fabsf(float x) {
|
||||
return (float)fabs((double)x);
|
||||
}
|
||||
|
||||
int __float_huge[];
|
||||
int __float_nan[];
|
||||
int __double_huge[];
|
||||
int __extended_huge[];
|
||||
|
||||
#define INFINITY (*(float*)__float_huge)
|
||||
#define NAN (*(float*)__float_nan)
|
||||
#define HUGE_VALF (*(float*)__float_huge)
|
||||
@@ -76,8 +73,8 @@ extern inline double sqrt(double x) {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
double atan2(double, double);
|
||||
double acos(float);
|
||||
//double atan2(double, double);
|
||||
//double acos(float);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user