/***************************************************************************
- * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team *
+ * Copyright (C) 2019 Ryan Schultz, PCSX-df Team, PCSX team, gameblabla, *
+ * dmitrysmagin, senquack *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. *
***************************************************************************/
+/* Gameblabla 2018-2019 :
+ * Numerous changes to bios calls as well as improvements in order to conform to nocash's findings
+ * for the PSX bios calls. Thanks senquack for helping out with some of the changes
+ * and helping to spot issues and refine my patches.
+ * */
+
/*
* Internal simulated HLE BIOS.
*/
void psxBios_memcpy() { // 0x2a
char *p1 = (char *)Ra0, *p2 = (char *)Ra1;
- s32 n=0;
v0 = a0;
if (a0 == 0 || a2 > 0x7FFFFFFF)
{
return;
}
while ((s32)a2-- > 0) {
- n++;
*p1++ = *p2++;
}
a2 = 0;
size &= 0xfffffffc;
heap_addr = (u32 *)Ra0;
- heap_end = (u32 *)((u8 *)heap_addr + size);
- *heap_addr = SWAP32(size | 1);
+ heap_size = size;
+ heap_end = (u32 *)((u8 *)heap_addr + heap_size);
+ /* HACKFIX: Commenting out this line fixes GTA2 crash */
+ //*heap_addr = SWAP32(size | 1);
SysPrintf("InitHeap %x,%x : %x %x\n",a0,a1, (int)((uptr)heap_addr-(uptr)psxM), size);
PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x14]);
#endif
pad_stopped = 1;
- if (pad_buf == 0){
pad_buf1 = NULL;
pad_buf2 = NULL;
- }
pc0 = ra;
}
pc0 = ra;
}
-char ffile[64], *pfile;
-int nfile;
-
/* To avoid any issues with different behaviour when using the libc's own strlen instead.
* We want to mimic the PSX's behaviour in this case for bufile. */