/* BFC06680 -- SCPH1001 */
void SetMem(int size)
{
      int cur = *_memsize & 0xFFFFF8FF;

      switch(size)
      {
            case 2:      
                  *_memsize = cur; 
                  break;
            case 8:
                  *_memsize = cur | 0x0300;
                  break;
            default:
                  printf("Effective memory must be 2/8 MBytes\n");
                  return;
      }

      printf("Change effective memory : %d MBytes\n");
      *_ramsize = size;
}


/*
some notes:
      you can think, that _memsize = 0x1F801060 (in HW)
      you can think, that _ramsize = 0x00000060 (in KERNEL RAM)
      allowed sizes of effective memory are 2 or 8 Mbytes
      *_memsize sets to 0x0B88 at software reset (so RAM size = 8 MB by default)
*/


/* HLE version -- printf's was cutted */
void HLE_SetMem()
{
      int size = GPR[_A0_];
      int current = MEM_Read32Unsigned(0x1F801060) & 0xFFFFF8FF;

      if(size == 2) MEM_Write32(0x1F801060, current);
      else if(size == 8) MEM_Write32(0x1F801060, current | 0x300);
      else return;

      MEM_Write32(0x60, size);      
}