Ejemplo n.º 1
0
BOOL RomInfoGBA::OnInitDialog()
{
  CDialog::OnInitDialog();

  TCHAR buffer[13];

  CStringA bufferA((const char *)&rom[0xa0], 12);
  GetDlgItem(IDC_ROM_TITLE)->SetWindowText(CString(bufferA));

  bufferA = CStringA((const char *)&rom[0xac], 4);
  GetDlgItem(IDC_ROM_GAME_CODE)->SetWindowText(CString(bufferA));

  bufferA = CStringA((const char *)&rom[0xb0], 2);
  GetDlgItem(IDC_ROM_MAKER_CODE)->SetWindowText(CString(bufferA));

  GetDlgItem(IDC_ROM_MAKER_NAME)->SetWindowText(winGBARomInfoFindMakerCode(buffer));

  _stprintf(buffer, _T("%02x"), rom[0xb3]);
  GetDlgItem(IDC_ROM_UNIT_CODE)->SetWindowText(buffer);

  _stprintf(buffer, _T("%02x"), rom[0xb4]);
  if( rom[0xb4] & 0x80 ) {
	  _tcscat(buffer, _T(" (DACS)"));
  }
  GetDlgItem(IDC_ROM_DEVICE_TYPE)->SetWindowText(buffer);

  _stprintf(buffer, _T("%02x"), rom[0xbc]);
  GetDlgItem(IDC_ROM_VERSION)->SetWindowText(buffer);

  u8 crc = 0x19;
  for(int i = 0xa0; i < 0xbd; i++) {
    crc += rom[i];
  }

  crc = (-crc) & 255;

  _stprintf(buffer, _T("%02x (%02x)"), crc, rom[0xbd]);
  GetDlgItem(IDC_ROM_CRC)->SetWindowText(buffer);
  CenterWindow();

  return TRUE;  // return TRUE unless you set the focus to a control
                // EXCEPTION: OCX Property Pages should return FALSE
}
Ejemplo n.º 2
0
int main() {
    std::cout << "[INFO] Starting main function" << std::endl;
    try {
        // Retrieve platforms
        std::vector<cl::Platform> platforms;
        cl::Platform::get(&platforms);

        // Check number of platforms found
        if (platforms.size() == 0) {
            std::cerr   << "[ERROR] No platform found. Check OpenCL installation!" 
                        << std::endl;
            exit(1);
        } else {
            std::cout   << "[INFO] " << platforms.size() << " platforms found." 
                        << std::endl;
        }

        // TODO(disiok): Add parameters to choose platforms
        // Select default platform
        cl::Platform defaultPlatform = platforms[0];
        std::cout   << "[INFO] Using platform: " 
                    << defaultPlatform.getInfo<CL_PLATFORM_NAME>() 
                    << std::endl;

        // Retrieve devices
        std::vector<cl::Device> devices;
        defaultPlatform.getDevices(CL_DEVICE_TYPE_ALL, &devices);

        // Check number of devices found
        if (devices.size() == 0) {
            std::cerr   << "[ERROR] No devices found. Check OpenCL installation!" 
                        << std::endl;
            exit(2);
        } else {
            std::cout   << "[INFO] " << devices.size() << " devices found." 
                        << std::endl;
        }

        // TODO(disiok): Add parameters to choose devices
        // Select default device
        cl::Device defaultDevice = devices[1];
        std::cout   << "[INFO] Using device: " 
                    << defaultDevice.getInfo<CL_DEVICE_NAME>() 
                    << std::endl;

        // Create context
        cl::Context context({defaultDevice});

        // Define kernel code
        cl::Program::Sources sources;
        std::ifstream ifs("addvec.cl");
        std::string kernelCode(
                (std::istreambuf_iterator<char>(ifs)),
                (std::istreambuf_iterator<char>()));
        sources.push_back({kernelCode.c_str(), kernelCode.length()});

        // Build kernel code
        cl::Program program(context, sources);
        if (program.build({defaultDevice}) != CL_SUCCESS) {
            std::cerr   << "[ERROR] Error building: " 
                        << program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(defaultDevice) 
                        << std::endl;
            exit(4);
        } else {
            std::cout   << "[INFO] Successfully built kernel program" 
                        << std::endl;
        }

        // Create buffers on the devices
        cl::Buffer bufferA(context, CL_MEM_READ_WRITE, sizeof(int) * 10);
        cl::Buffer bufferB(context, CL_MEM_READ_WRITE, sizeof(int) * 10);
        cl::Buffer bufferC(context, CL_MEM_READ_WRITE, sizeof(int) * 10);

        // Hardcode some arrays for testing
        int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        int b[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

        // Create qeueue to push commands for the devices
        cl::CommandQueue queue(context, defaultDevice);
        
        // Write data to the device
        queue.enqueueWriteBuffer(bufferA, CL_TRUE, 0, sizeof(int) * 10, a);
        queue.enqueueWriteBuffer(bufferB, CL_TRUE, 0, sizeof(int) * 10, b);
        
        //  NOTE(disiok): KernelFunctor is removed from the API in v1.2
        //  cl::KernelFunctor simple_add(
        //         cl::Kernel(program, "simple_add"),
        //         queue,
        //         cl::NullRrange,
        //         cl::NDRange(10),
        //         cl::NullRange);
        
        // Run kernel with functor
        cl::Kernel kernel = cl::Kernel(program, "simple_add");
        kernel.setArg(0, bufferA);
        kernel.setArg(1, bufferB);
        kernel.setArg(2, bufferC);
        queue.enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(10), cl::NullRange);
        queue.finish();
    
        // Read results
        int c[10];
        queue.enqueueReadBuffer(bufferC, CL_TRUE, 0, sizeof(int) * 10, c);

        // Print results
        std::cout   << "The result is: "
                    << std::endl;

        for (int i = 0; i < 10; i ++) {
            std::cout   << c[i] << " ";
        }
        std::cout   << std::endl;
    } catch (cl::Error error) {
        std::cerr << error.what() << "(" << error.err() << ")" << std::endl;
    }
}
Ejemplo n.º 3
0
BOOL RomInfoGB::OnInitDialog()
{
  CDialog::OnInitDialog();

  TCHAR buffer[128];

  CStringA bufferA((const char *)&rom[0x134], 15);
  GetDlgItem(IDC_ROM_TITLE)->SetWindowText(CString(bufferA));

  _stprintf(buffer, _T("%02x"), rom[0x143]);
  GetDlgItem(IDC_ROM_COLOR)->SetWindowText(buffer);

  bufferA = CStringA((const char *)&rom[0x144], 2);
  GetDlgItem(IDC_ROM_MAKER_CODE)->SetWindowText(CString(bufferA));

  if(rom[0x14b] != 0x33) {
    _stprintf(buffer, _T("%02X"), rom[0x14b]);
    GetDlgItem(IDC_ROM_MAKER_CODE)->SetWindowText(buffer);
  }
  GetDlgItem(IDC_ROM_MAKER_NAME2)->SetWindowText(winGBARomInfoFindMakerCode(buffer));

  _stprintf(buffer, _T("%02x"), rom[0x146]);
  GetDlgItem(IDC_ROM_UNIT_CODE)->SetWindowText(buffer);

  CString type = winResLoadString(IDS_UNKNOWN);
  switch(rom[0x147]) {
  case 0x00:
    type = _T("ROM");
    break;
  case 0x01:
    type = _T("ROM+MBC1");
    break;
  case 0x02:
    type = _T("ROM+MBC1+RAM");
    break;
  case 0x03:
    type = _T("ROM+MBC1+RAM+BATT");
    break;
  case 0x05:
    type = _T("ROM+MBC2");
    break;
  case 0x06:
    type = _T("ROM+MBC2+BATT");
    break;
  case 0x0b:
    type = _T("ROM+MMM01");
    break;
  case 0x0c:
    type = _T("ROM+MMM01+RAM");
    break;
  case 0x0d:
    type = _T("ROM+MMM01+RAM+BATT");
    break;
  case 0x0f:
    type = _T("ROM+MBC3+TIMER+BATT");
    break;
  case 0x10:
    type = _T("ROM+MBC3+TIMER+RAM+BATT");
    break;
  case 0x11:
    type = _T("ROM+MBC3");
    break;
  case 0x12:
    type = _T("ROM+MBC3+RAM");
    break;
  case 0x13:
    type = _T("ROM+MBC3+RAM+BATT");
    break;
  case 0x19:
    type = _T("ROM+MBC5");
    break;
  case 0x1a:
    type = _T("ROM+MBC5+RAM");
    break;
  case 0x1b:
    type = _T("ROM+MBC5+RAM+BATT");
    break;
  case 0x1c:
    type = _T("ROM+MBC5+RUMBLE");
    break;
  case 0x1d:
    type = _T("ROM+MBC5+RUMBLE+RAM");
    break;
  case 0x1e:
    type = _T("ROM+MBC5+RUMBLE+RAM+BATT");
    break;
  case 0x22:
    type = _T("ROM+MBC7+BATT");
    break;
  case 0x55:
    type = _T("GameGenie");
    break;
  case 0x56:
    type = _T("GameShark V3.0");
    break;
  case 0xfc:
    type = _T("ROM+POCKET CAMERA");
    break;
  case 0xfd:
    type = _T("ROM+BANDAI TAMA5");
    break;
  case 0xfe:
    type = _T("ROM+HuC-3");
    break;
  case 0xff:
    type = _T("ROM+HuC-1");
    break;
  }
  _stprintf(buffer, _T("%02x (%s)"), rom[0x147], type);
  GetDlgItem(IDC_ROM_DEVICE_TYPE)->SetWindowText(buffer);

  type = winResLoadString(IDS_UNKNOWN);
  switch(rom[0x148]) {
  case 0:
    type = _T("32K");
    break;
  case 1:
    type = _T("64K");
    break;
  case 2:
    type = _T("128K");
    break;
  case 3:
    type = _T("256K");
    break;
  case 4:
    type = _T("512K");
    break;
  case 5:
    type = _T("1M");
    break;
  case 6:
    type = _T("2M");
    break;
  case 7:
    type = _T("4M");
    break;
  }

  _stprintf(buffer, _T("%02x (%s)"), rom[0x148], type);
  GetDlgItem(IDC_ROM_SIZE)->SetWindowText(buffer);

  type = winResLoadString(IDS_UNKNOWN);
  switch(rom[0x149]) {
  case 0:
    type = winResLoadString(IDS_NONE);
    break;
  case 1:
    type = _T("2K");
    break;
  case 2:
    type = _T("8K");
    break;
  case 3:
    type = _T("32K");
    break;
  case 4:
    type = _T("128K");
    break;
  case 5:
    type = _T("64K");
    break;
  }

  _stprintf(buffer, _T("%02x (%s)"), rom[0x149], type);
  GetDlgItem(IDC_ROM_RAM_SIZE)->SetWindowText(buffer);

  _stprintf(buffer, _T("%02x"), rom[0x14a]);
  GetDlgItem(IDC_ROM_DEST_CODE)->SetWindowText(buffer);

  _stprintf(buffer, _T("%02x"), rom[0x14b]);
  GetDlgItem(IDC_ROM_LIC_CODE)->SetWindowText(buffer);

  _stprintf(buffer, _T("%02x"), rom[0x14c]);
  GetDlgItem(IDC_ROM_VERSION)->SetWindowText(buffer);

  u8 crc = 25;
  int i;
  for(i = 0x134; i < 0x14d; i++) {
    crc += rom[i];
  }

  crc = 256 - crc;

  _stprintf(buffer, _T("%02x (%02x)"), crc, rom[0x14d]);
  GetDlgItem(IDC_ROM_CRC)->SetWindowText(buffer);

  u16 crc16 = 0;
  for(i = 0; i < gbRomSize; i++) {
    crc16 += rom[i];
  }

  crc16 -= rom[0x14e];
  crc16 -= rom[0x14f];
  _stprintf(buffer, _T("%04x (%04x)"), crc16, (rom[0x14e]<<8)|rom[0x14f]);
  GetDlgItem(IDC_ROM_CHECKSUM)->SetWindowText(buffer);

  CenterWindow();

  return TRUE;  // return TRUE unless you set the focus to a control
                // EXCEPTION: OCX Property Pages should return FALSE
}