diff options
author | gameblabla | 2019-07-18 01:59:35 +0200 |
---|---|---|
committer | gameblabla | 2019-07-18 01:59:35 +0200 |
commit | ba11675ca958088f3c5c1e60a5d437f0c1683514 (patch) | |
tree | fa6e5ff0789c4fc78435fa87870608ed6b548cd4 | |
parent | 324cec89343c216ad232fbcaf50faed6e528beef (diff) | |
download | pcsx_rearmed-ba11675ca958088f3c5c1e60a5d437f0c1683514.tar.gz pcsx_rearmed-ba11675ca958088f3c5c1e60a5d437f0c1683514.tar.bz2 pcsx_rearmed-ba11675ca958088f3c5c1e60a5d437f0c1683514.zip |
psxbios: Add todigit implementation
Based on CTRX's code : https://github.com/machinamentum/CTRX/blob/master/bios/source/libc.c#L152
I'm not aware of any games using it but it doesn't hurt to have it
and it should work fine.
-rw-r--r-- | libpcsxcore/psxbios.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c index b13874e..924996a 100644 --- a/libpcsxcore/psxbios.c +++ b/libpcsxcore/psxbios.c @@ -369,6 +369,33 @@ void psxBios_putc(void) // 0x09, 0x3B pc0 = ra; } +void psxBios_todigit(void) // 0x0a +{ + int c = a0; +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x0a]); +#endif + c &= 0xFF; + if (c >= 0x30 && c < 0x3A) { + c -= 0x30; + } + else if (c > 0x60 && c < 0x7B) { + c -= 0x20; + } + else if (c > 0x40 && c < 0x5B) { + c = c - 0x41 + 10; + } + else if (c >= 0x80) { + c = -1; + } + else + { + c = 0x0098967F; + } + v0 = c; + pc0 = ra; +} + void psxBios_abs() { // 0x0e if ((s32)a0 < 0) v0 = -(s32)a0; else v0 = a0; @@ -2432,7 +2459,7 @@ void psxBiosInit() { //biosA0[0x07] = psxBios_sys_a0_07; biosA0[0x08] = psxBios_getc; biosA0[0x09] = psxBios_putc; - //biosA0[0x0a] = psxBios_todigit; + biosA0[0x0a] = psxBios_todigit; //biosA0[0x0b] = psxBios_atof; //biosA0[0x0c] = psxBios_strtoul; //biosA0[0x0d] = psxBios_strtol; |