parent
65af9c2df5
commit
822cf3d289
|
@ -19,7 +19,7 @@ libdesmume_a_SOURCES = \
|
||||||
common.cpp common.h \
|
common.cpp common.h \
|
||||||
debug.cpp debug.h \
|
debug.cpp debug.h \
|
||||||
Disassembler.cpp Disassembler.h \
|
Disassembler.cpp Disassembler.h \
|
||||||
emufile.h emufile.cpp emufile_types.h FIFO.cpp FIFO.h \
|
emufile.h emufile.cpp emufile_types.h encrypt.h encrypt.cpp FIFO.cpp FIFO.h \
|
||||||
firmware.cpp firmware.h GPU.cpp GPU.h \
|
firmware.cpp firmware.h GPU.cpp GPU.h \
|
||||||
fs.h \
|
fs.h \
|
||||||
GPU_osd.h \
|
GPU_osd.h \
|
||||||
|
|
|
@ -0,0 +1,111 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 2009-2013 DeSmuME team
|
||||||
|
|
||||||
|
This file is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This file is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with the this software. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "encrypt.h"
|
||||||
|
#include "MMU.h"
|
||||||
|
|
||||||
|
//================================================================================== KEY1
|
||||||
|
#define bswap32(val) (((val & 0x000000FF) << 24) | ((val & 0x0000FF00) << 8) | ((val & 0x00FF0000) >> 8) | ((val & 0xFF000000) >> 24))
|
||||||
|
#define DWNUM(i) ((i) >> 2)
|
||||||
|
|
||||||
|
void _KEY1::init(u32 idcode, u8 level, u8 modulo)
|
||||||
|
{
|
||||||
|
memcpy(keyBuf, keyBufPtr, 0x1048);
|
||||||
|
keyCode[0] = idcode;
|
||||||
|
keyCode[1] = idcode >> 1;
|
||||||
|
keyCode[2] = idcode << 1;
|
||||||
|
if (level >= 1) // first apply (always)
|
||||||
|
applyKeycode(modulo);
|
||||||
|
if (level >= 2) // second apply (optional)
|
||||||
|
applyKeycode(modulo);
|
||||||
|
keyCode[1] <<= 1;
|
||||||
|
keyCode[2] >>= 1;
|
||||||
|
if (level >= 3) // third apply (optional)
|
||||||
|
applyKeycode(modulo);
|
||||||
|
|
||||||
|
printf("keycode1: %08X%08X%08X\n", keyCode[2], keyCode[1], keyCode[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _KEY1::applyKeycode(u8 modulo)
|
||||||
|
{
|
||||||
|
encrypt(&keyCode[1]);
|
||||||
|
encrypt(&keyCode[0]);
|
||||||
|
|
||||||
|
u32 scratch[2] = {0};
|
||||||
|
|
||||||
|
for (u32 i = 0; i <= 0x44; i += 4) // xor with reversed byte-order (bswap)
|
||||||
|
keyBuf[DWNUM(i)] ^= bswap32(keyCode[DWNUM(i % modulo)]);
|
||||||
|
|
||||||
|
for (u32 i = 0; i <= 0x1040; i += 8)
|
||||||
|
{
|
||||||
|
encrypt(scratch); // encrypt S (64bit) by keybuf
|
||||||
|
keyBuf[DWNUM(i)] = scratch[1]; // write S to keybuf (first upper 32bit)
|
||||||
|
keyBuf[DWNUM(i+4)] = scratch[0]; // write S to keybuf (then lower 32bit)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _KEY1::decrypt(u32 *ptr)
|
||||||
|
{
|
||||||
|
u32 y = ptr[0];
|
||||||
|
u32 x = ptr[1];
|
||||||
|
|
||||||
|
for (u32 i = 0x11; i >= 0x02; i--)
|
||||||
|
{
|
||||||
|
u32 z = keyBuf[i] ^ x;
|
||||||
|
x = keyBuf[DWNUM(0x048 + (((z >> 24) & 0xFF) << 2))];
|
||||||
|
x = keyBuf[DWNUM(0x448 + (((z >> 16) & 0xFF) << 2))] + x;
|
||||||
|
x = keyBuf[DWNUM(0x848 + (((z >> 8) & 0xFF) << 2))] ^ x;
|
||||||
|
x = keyBuf[DWNUM(0xC48 + (((z >> 0) & 0xFF) << 2))] + x;
|
||||||
|
x = y ^ x;
|
||||||
|
y = z;
|
||||||
|
}
|
||||||
|
ptr[0] = x ^ keyBuf[DWNUM(0x04)];
|
||||||
|
ptr[1] = y ^ keyBuf[DWNUM(0x00)];
|
||||||
|
}
|
||||||
|
|
||||||
|
void _KEY1::encrypt(u32 *ptr)
|
||||||
|
{
|
||||||
|
u32 y = ptr[0];
|
||||||
|
u32 x = ptr[1];
|
||||||
|
|
||||||
|
for (u32 i = 0x00; i <= 0x0F; i++)
|
||||||
|
{
|
||||||
|
u32 z = keyBuf[i] ^ x;
|
||||||
|
x = keyBuf[DWNUM(0x048 + (((z >> 24) & 0xFF) << 2))];
|
||||||
|
x = keyBuf[DWNUM(0x448 + (((z >> 16) & 0xFF) << 2))] + x;
|
||||||
|
x = keyBuf[DWNUM(0x848 + (((z >> 8) & 0xFF) << 2))] ^ x;
|
||||||
|
x = keyBuf[DWNUM(0xC48 + (((z >> 0) & 0xFF) << 2))] + x;
|
||||||
|
x = y ^ x;
|
||||||
|
y = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
ptr[0] = x ^ keyBuf[DWNUM(0x40)];
|
||||||
|
ptr[1] = y ^ keyBuf[DWNUM(0x44)];
|
||||||
|
}
|
||||||
|
#undef DWNUM
|
||||||
|
#undef bswap32
|
||||||
|
|
||||||
|
//================================================================================== KEY2
|
||||||
|
void _KEY2::applySeed(u8 PROCNUM)
|
||||||
|
{
|
||||||
|
u64 tmp = (MMU_read8(PROCNUM, REG_ENCSEED0H) & 0xFF);
|
||||||
|
seed0 = MMU_read32(PROCNUM, REG_ENCSEED0L) | (tmp << 32);
|
||||||
|
tmp = (MMU_read8(PROCNUM, REG_ENCSEED1H) & 0xFF);
|
||||||
|
seed1 = MMU_read32(PROCNUM, REG_ENCSEED1L) | (tmp << 32);
|
||||||
|
printf("ARM%c: set KEY2 seed0 to %010llX\n", PROCNUM?'7':'9', seed0);
|
||||||
|
printf("ARM%c: set KEY2 seed1 to %010llX\n", PROCNUM?'7':'9', seed1);
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 2009-2013 DeSmuME team
|
||||||
|
|
||||||
|
This file is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This file is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with the this software. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ENCRYPT_H_
|
||||||
|
#define _ENCRYPT_H_
|
||||||
|
#include "types.h"
|
||||||
|
|
||||||
|
struct _KEY1
|
||||||
|
{
|
||||||
|
_KEY1(u8 *keyBufPtr)
|
||||||
|
{
|
||||||
|
if (keyBuf) delete keyBuf;
|
||||||
|
keyBuf = new u32 [0x1048 / sizeof(u32)];
|
||||||
|
memset(keyBuf, 0x00, 0x1048);
|
||||||
|
memset(&keyCode[0], 0, sizeof(keyCode));
|
||||||
|
this->keyBufPtr = keyBufPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
~_KEY1()
|
||||||
|
{
|
||||||
|
if (keyBuf)
|
||||||
|
{
|
||||||
|
delete keyBuf;
|
||||||
|
keyBuf = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 *keyBuf;
|
||||||
|
u32 keyCode[3];
|
||||||
|
u8 *keyBufPtr;
|
||||||
|
|
||||||
|
void init(u32 idcode, u8 level, u8 modulo);
|
||||||
|
void applyKeycode(u8 modulo);
|
||||||
|
void decrypt(u32 *ptr);
|
||||||
|
void encrypt(u32 *ptr);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _KEY2
|
||||||
|
{
|
||||||
|
_KEY2() : seed0(0x58C56DE0E8U),
|
||||||
|
seed1(0x5C879B9B05U)
|
||||||
|
{}
|
||||||
|
|
||||||
|
u64 seed0;
|
||||||
|
u64 seed1;
|
||||||
|
|
||||||
|
void applySeed(u8 PROCNUM);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -18,101 +18,9 @@
|
||||||
#include "firmware.h"
|
#include "firmware.h"
|
||||||
#include "NDSSystem.h"
|
#include "NDSSystem.h"
|
||||||
#include "path.h"
|
#include "path.h"
|
||||||
|
#include "encrypt.h"
|
||||||
|
|
||||||
#define DWNUM(i) ((i) >> 2)
|
static _KEY1 enc(&MMU.ARM7_BIOS[0x0030]);
|
||||||
|
|
||||||
bool CFIRMWARE::getKeyBuf()
|
|
||||||
{
|
|
||||||
FILE *file = fopen(CommonSettings.ARM7BIOS, "rb");
|
|
||||||
if (!file) return false;
|
|
||||||
|
|
||||||
fseek(file, 0x30, SEEK_SET);
|
|
||||||
size_t res = fread(keyBuf, 4, 0x412, file);
|
|
||||||
fclose(file);
|
|
||||||
return (res == 0x412);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CFIRMWARE::crypt64BitUp(u32 *ptr)
|
|
||||||
{
|
|
||||||
u32 Y = ptr[0];
|
|
||||||
u32 X = ptr[1];
|
|
||||||
|
|
||||||
for(u32 i = 0x00; i <= 0x0F; i++)
|
|
||||||
{
|
|
||||||
u32 Z = (keyBuf[i] ^ X);
|
|
||||||
X = keyBuf[DWNUM(0x048 + (((Z >> 24) & 0xFF) << 2))];
|
|
||||||
X = (keyBuf[DWNUM(0x448 + (((Z >> 16) & 0xFF) << 2))] + X);
|
|
||||||
X = (keyBuf[DWNUM(0x848 + (((Z >> 8) & 0xFF) << 2))] ^ X);
|
|
||||||
X = (keyBuf[DWNUM(0xC48 + ((Z & 0xFF) << 2))] + X);
|
|
||||||
X = (Y ^ X);
|
|
||||||
Y = Z;
|
|
||||||
}
|
|
||||||
|
|
||||||
ptr[0] = (X ^ keyBuf[DWNUM(0x40)]);
|
|
||||||
ptr[1] = (Y ^ keyBuf[DWNUM(0x44)]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CFIRMWARE::crypt64BitDown(u32 *ptr)
|
|
||||||
{
|
|
||||||
u32 Y = ptr[0];
|
|
||||||
u32 X = ptr[1];
|
|
||||||
|
|
||||||
for(u32 i = 0x11; i >= 0x02; i--)
|
|
||||||
{
|
|
||||||
u32 Z = (keyBuf[i] ^ X);
|
|
||||||
X = keyBuf[DWNUM(0x048 + (((Z >> 24) & 0xFF) << 2))];
|
|
||||||
X = (keyBuf[DWNUM(0x448 + (((Z >> 16) & 0xFF) << 2))] + X);
|
|
||||||
X = (keyBuf[DWNUM(0x848 + (((Z >> 8) & 0xFF) << 2))] ^ X);
|
|
||||||
X = (keyBuf[DWNUM(0xC48 + ((Z & 0xFF) << 2))] + X);
|
|
||||||
X = (Y ^ X);
|
|
||||||
Y = Z;
|
|
||||||
}
|
|
||||||
|
|
||||||
ptr[0] = (X ^ keyBuf[DWNUM(0x04)]);
|
|
||||||
ptr[1] = (Y ^ keyBuf[DWNUM(0x00)]);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define bswap32(val) (((val & 0x000000FF) << 24) | ((val & 0x0000FF00) << 8) | ((val & 0x00FF0000) >> 8) | ((val & 0xFF000000) >> 24))
|
|
||||||
void CFIRMWARE::applyKeycode(u32 modulo)
|
|
||||||
{
|
|
||||||
crypt64BitUp(&keyCode[1]);
|
|
||||||
crypt64BitUp(&keyCode[0]);
|
|
||||||
|
|
||||||
u32 scratch[2] = {0x00000000, 0x00000000};
|
|
||||||
|
|
||||||
for(u32 i = 0; i <= 0x44; i += 4)
|
|
||||||
{
|
|
||||||
keyBuf[DWNUM(i)] = (keyBuf[DWNUM(i)] ^ bswap32(keyCode[DWNUM(i % modulo)]));
|
|
||||||
}
|
|
||||||
|
|
||||||
for(u32 i = 0; i <= 0x1040; i += 8)
|
|
||||||
{
|
|
||||||
crypt64BitUp(scratch);
|
|
||||||
keyBuf[DWNUM(i)] = scratch[1];
|
|
||||||
keyBuf[DWNUM(i+4)] = scratch[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#undef bswap32
|
|
||||||
|
|
||||||
bool CFIRMWARE::initKeycode(u32 idCode, int level, u32 modulo)
|
|
||||||
{
|
|
||||||
if(getKeyBuf() == FALSE)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
keyCode[0] = idCode;
|
|
||||||
keyCode[1] = (idCode >> 1);
|
|
||||||
keyCode[2] = (idCode << 1);
|
|
||||||
|
|
||||||
if(level >= 1) applyKeycode(modulo);
|
|
||||||
if(level >= 2) applyKeycode(modulo);
|
|
||||||
|
|
||||||
keyCode[1] <<= 1;
|
|
||||||
keyCode[2] >>= 1;
|
|
||||||
|
|
||||||
if(level >= 3) applyKeycode(modulo);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
u16 CFIRMWARE::getBootCodeCRC16()
|
u16 CFIRMWARE::getBootCodeCRC16()
|
||||||
{
|
{
|
||||||
|
@ -164,7 +72,7 @@ u32 CFIRMWARE::decrypt(const u8 *in, u8* &out)
|
||||||
u16 data = 0;
|
u16 data = 0;
|
||||||
|
|
||||||
memcpy(curBlock, in, 8);
|
memcpy(curBlock, in, 8);
|
||||||
crypt64BitDown(curBlock);
|
enc.decrypt(curBlock);
|
||||||
blockSize = (curBlock[0] >> 8);
|
blockSize = (curBlock[0] >> 8);
|
||||||
|
|
||||||
if (blockSize == 0) return (0);
|
if (blockSize == 0) return (0);
|
||||||
|
@ -181,7 +89,7 @@ u32 CFIRMWARE::decrypt(const u8 *in, u8* &out)
|
||||||
if((xIn % 8) == 0)
|
if((xIn % 8) == 0)
|
||||||
{
|
{
|
||||||
memcpy(curBlock, in + xIn, 8);
|
memcpy(curBlock, in + xIn, 8);
|
||||||
crypt64BitDown(curBlock);
|
enc.decrypt(curBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < 8; i++)
|
for(i = 0; i < 8; i++)
|
||||||
|
@ -193,14 +101,14 @@ u32 CFIRMWARE::decrypt(const u8 *in, u8* &out)
|
||||||
if((xIn % 8) == 0)
|
if((xIn % 8) == 0)
|
||||||
{
|
{
|
||||||
memcpy(curBlock, in + xIn, 8);
|
memcpy(curBlock, in + xIn, 8);
|
||||||
crypt64BitDown(curBlock);
|
enc.decrypt(curBlock);
|
||||||
}
|
}
|
||||||
data |= T1ReadByte((u8*)curBlock, (xIn % 8));
|
data |= T1ReadByte((u8*)curBlock, (xIn % 8));
|
||||||
xIn++;
|
xIn++;
|
||||||
if((xIn % 8) == 0)
|
if((xIn % 8) == 0)
|
||||||
{
|
{
|
||||||
memcpy(curBlock, in + xIn, 8);
|
memcpy(curBlock, in + xIn, 8);
|
||||||
crypt64BitDown(curBlock);
|
enc.decrypt(curBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
len = (data >> 12) + 3;
|
len = (data >> 12) + 3;
|
||||||
|
@ -225,7 +133,7 @@ u32 CFIRMWARE::decrypt(const u8 *in, u8* &out)
|
||||||
if((xIn % 8) == 0)
|
if((xIn % 8) == 0)
|
||||||
{
|
{
|
||||||
memcpy(curBlock, in + xIn, 8);
|
memcpy(curBlock, in + xIn, 8);
|
||||||
crypt64BitDown(curBlock);
|
enc.decrypt(curBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
xLen--;
|
xLen--;
|
||||||
|
@ -383,6 +291,15 @@ bool CFIRMWARE::load()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _NEW_BOOT
|
||||||
|
if (CommonSettings.BootFromFirmware)
|
||||||
|
{
|
||||||
|
memcpy(MMU.fw.data, data, size);
|
||||||
|
MMU.fw.size = size;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
shift1 = ((header.shift_amounts >> 0) & 0x07);
|
shift1 = ((header.shift_amounts >> 0) & 0x07);
|
||||||
shift2 = ((header.shift_amounts >> 3) & 0x07);
|
shift2 = ((header.shift_amounts >> 3) & 0x07);
|
||||||
shift3 = ((header.shift_amounts >> 6) & 0x07);
|
shift3 = ((header.shift_amounts >> 6) & 0x07);
|
||||||
|
@ -400,15 +317,10 @@ bool CFIRMWARE::load()
|
||||||
ARM9bootAddr = part1ram;
|
ARM9bootAddr = part1ram;
|
||||||
ARM7bootAddr = part2ram;
|
ARM7bootAddr = part2ram;
|
||||||
|
|
||||||
if(initKeycode(header.fw_identifier, 1, 0xC) == FALSE)
|
enc.init(header.fw_identifier, 1, 0xC);
|
||||||
{
|
|
||||||
delete [] data;
|
|
||||||
fclose(fp);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
crypt64BitDown((u32*)&data[0x18]);
|
enc.applyKeycode((u32*)&data[0x18]);
|
||||||
#else
|
#else
|
||||||
// fix touch coords
|
// fix touch coords
|
||||||
data[0x18] = 0x00;
|
data[0x18] = 0x00;
|
||||||
|
@ -422,12 +334,7 @@ bool CFIRMWARE::load()
|
||||||
data[0x1F] = 0x00;
|
data[0x1F] = 0x00;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(initKeycode(header.fw_identifier, 2, 0xC) == FALSE)
|
enc.init(header.fw_identifier, 2, 0xC);
|
||||||
{
|
|
||||||
delete [] data;
|
|
||||||
fclose(fp);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
size9 = decrypt(data + part1addr, tmp_data9);
|
size9 = decrypt(data + part1addr, tmp_data9);
|
||||||
if (!tmp_data9)
|
if (!tmp_data9)
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
|
|
||||||
// the count of bytes copied from the firmware into memory
|
// the count of bytes copied from the firmware into memory
|
||||||
#define NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT 0x70
|
#define NDS_FW_USER_SETTINGS_MEM_BYTE_COUNT 0x70
|
||||||
|
|
||||||
#define FW_CONFIG_FILE_EXT "dfc"
|
#define FW_CONFIG_FILE_EXT "dfc"
|
||||||
|
|
||||||
class CFIRMWARE
|
class CFIRMWARE
|
||||||
|
@ -31,14 +30,6 @@ private:
|
||||||
u8 *tmp_data7;
|
u8 *tmp_data7;
|
||||||
u32 size9, size7;
|
u32 size9, size7;
|
||||||
|
|
||||||
u32 keyBuf[0x412];
|
|
||||||
u32 keyCode[3];
|
|
||||||
|
|
||||||
bool getKeyBuf();
|
|
||||||
void crypt64BitUp(u32 *ptr);
|
|
||||||
void crypt64BitDown(u32 *ptr);
|
|
||||||
void applyKeycode(u32 modulo);
|
|
||||||
bool initKeycode(u32 idCode, int level, u32 modulo);
|
|
||||||
u16 getBootCodeCRC16();
|
u16 getBootCodeCRC16();
|
||||||
u32 decrypt(const u8 *in, u8* &out);
|
u32 decrypt(const u8 *in, u8* &out);
|
||||||
u32 decompress(const u8 *in, u8* &out);
|
u32 decompress(const u8 *in, u8* &out);
|
||||||
|
|
|
@ -2608,6 +2608,14 @@
|
||||||
RelativePath="..\emufile.h"
|
RelativePath="..\emufile.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\encrypt.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\encrypt.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\FIFO.cpp"
|
RelativePath="..\FIFO.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -730,6 +730,14 @@
|
||||||
RelativePath="..\emufile.h"
|
RelativePath="..\emufile.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\encrypt.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\encrypt.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\fat.h"
|
RelativePath="..\fat.h"
|
||||||
>
|
>
|
||||||
|
|
|
@ -394,6 +394,7 @@
|
||||||
<ClCompile Include="..\Disassembler.cpp" />
|
<ClCompile Include="..\Disassembler.cpp" />
|
||||||
<ClCompile Include="..\driver.cpp" />
|
<ClCompile Include="..\driver.cpp" />
|
||||||
<ClCompile Include="..\emufile.cpp" />
|
<ClCompile Include="..\emufile.cpp" />
|
||||||
|
<ClCompile Include="..\encrypt.cpp" />
|
||||||
<ClCompile Include="..\FIFO.cpp" />
|
<ClCompile Include="..\FIFO.cpp" />
|
||||||
<ClCompile Include="..\filter\2xsai.cpp" />
|
<ClCompile Include="..\filter\2xsai.cpp" />
|
||||||
<ClCompile Include="..\filter\bilinear.cpp" />
|
<ClCompile Include="..\filter\bilinear.cpp" />
|
||||||
|
@ -660,6 +661,7 @@
|
||||||
<ClInclude Include="..\driver.h" />
|
<ClInclude Include="..\driver.h" />
|
||||||
<ClInclude Include="..\emufat_types.h" />
|
<ClInclude Include="..\emufat_types.h" />
|
||||||
<ClInclude Include="..\emufile.h" />
|
<ClInclude Include="..\emufile.h" />
|
||||||
|
<ClInclude Include="..\encrypt.h" />
|
||||||
<ClInclude Include="..\fat.h" />
|
<ClInclude Include="..\fat.h" />
|
||||||
<ClInclude Include="..\FIFO.h" />
|
<ClInclude Include="..\FIFO.h" />
|
||||||
<ClInclude Include="..\filter\filter.h" />
|
<ClInclude Include="..\filter\filter.h" />
|
||||||
|
|
|
@ -780,6 +780,9 @@
|
||||||
<ClCompile Include="sndxa2.cpp">
|
<ClCompile Include="sndxa2.cpp">
|
||||||
<Filter>Windows</Filter>
|
<Filter>Windows</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\encrypt.cpp">
|
||||||
|
<Filter>Core</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\addons.h">
|
<ClInclude Include="..\addons.h">
|
||||||
|
@ -1506,6 +1509,9 @@
|
||||||
<ClInclude Include="sndxa2.h">
|
<ClInclude Include="sndxa2.h">
|
||||||
<Filter>Windows</Filter>
|
<Filter>Windows</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\encrypt.h">
|
||||||
|
<Filter>Core</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\instruction_tabdef.inc">
|
<None Include="..\instruction_tabdef.inc">
|
||||||
|
|
|
@ -405,6 +405,7 @@
|
||||||
<ClCompile Include="..\Disassembler.cpp" />
|
<ClCompile Include="..\Disassembler.cpp" />
|
||||||
<ClCompile Include="..\driver.cpp" />
|
<ClCompile Include="..\driver.cpp" />
|
||||||
<ClCompile Include="..\emufile.cpp" />
|
<ClCompile Include="..\emufile.cpp" />
|
||||||
|
<ClCompile Include="..\encrypt.cpp" />
|
||||||
<ClCompile Include="..\FIFO.cpp" />
|
<ClCompile Include="..\FIFO.cpp" />
|
||||||
<ClCompile Include="..\filter\2xsai.cpp" />
|
<ClCompile Include="..\filter\2xsai.cpp" />
|
||||||
<ClCompile Include="..\filter\bilinear.cpp" />
|
<ClCompile Include="..\filter\bilinear.cpp" />
|
||||||
|
@ -671,6 +672,7 @@
|
||||||
<ClInclude Include="..\driver.h" />
|
<ClInclude Include="..\driver.h" />
|
||||||
<ClInclude Include="..\emufat_types.h" />
|
<ClInclude Include="..\emufat_types.h" />
|
||||||
<ClInclude Include="..\emufile.h" />
|
<ClInclude Include="..\emufile.h" />
|
||||||
|
<ClInclude Include="..\encrypt.h" />
|
||||||
<ClInclude Include="..\fat.h" />
|
<ClInclude Include="..\fat.h" />
|
||||||
<ClInclude Include="..\FIFO.h" />
|
<ClInclude Include="..\FIFO.h" />
|
||||||
<ClInclude Include="..\filter\filter.h" />
|
<ClInclude Include="..\filter\filter.h" />
|
||||||
|
|
|
@ -768,6 +768,13 @@
|
||||||
<ClCompile Include="sndxa2.cpp">
|
<ClCompile Include="sndxa2.cpp">
|
||||||
<Filter>Windows</Filter>
|
<Filter>Windows</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="File_Extractor\7z_C\7zDecode.c" />
|
||||||
|
<ClCompile Include="File_Extractor\7z_C\7zExtract.c" />
|
||||||
|
<ClCompile Include="File_Extractor\7z_C\7zHeader.c" />
|
||||||
|
<ClCompile Include="File_Extractor\7z_C\7zItem.c" />
|
||||||
|
<ClCompile Include="..\encrypt.cpp">
|
||||||
|
<Filter>Core</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\addons.h">
|
<ClInclude Include="..\addons.h">
|
||||||
|
@ -1295,6 +1302,78 @@
|
||||||
<ClInclude Include="sndxa2.h">
|
<ClInclude Include="sndxa2.h">
|
||||||
<Filter>Windows</Filter>
|
<Filter>Windows</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\emufat_types.h" />
|
||||||
|
<ClInclude Include="..\utils\emufat_types.h" />
|
||||||
|
<ClInclude Include="FEX_Interface.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7z.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zAlloc.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zBuf.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zCrc.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zDecode.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zExtract.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zFile.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zHeader.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zIn.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zItem.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zTypes.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\7zVersion.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Alloc.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Bcj2.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Bra.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\CpuArch.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Delta.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\LzFind.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\LzFindMt.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\LzHash.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Lzma2Dec.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Lzma2Enc.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Lzma86.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\LzmaDec.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\LzmaEnc.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\LzmaLib.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\LzmaTypes.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\MtCoder.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Ppmd.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Ppmd7.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\RotateDefs.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Threads.h" />
|
||||||
|
<ClInclude Include="File_Extractor\7z_C\Types.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\Binary_Extractor.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\blargg_common.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\blargg_config.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\blargg_endian.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\blargg_errors.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\blargg_source.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\Data_Reader.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\fex.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\File_Extractor.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\Gzip_Extractor.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\Gzip_Reader.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\Rar_Extractor.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\Zip7_Extractor.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\Zip_Extractor.h" />
|
||||||
|
<ClInclude Include="File_Extractor\fex\Zlib_Inflater.h" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\archive.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\array.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\coder.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\compress.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\encname.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\getbits.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\headers.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\model.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\rar.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\rarvm.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\rawread.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\suballoc.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\unicode.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\unpack.hpp" />
|
||||||
|
<ClInclude Include="File_Extractor\unrar\unrar.h" />
|
||||||
|
<ClInclude Include="filter\hq2x.h" />
|
||||||
|
<ClInclude Include="filter\interp.h" />
|
||||||
|
<ClInclude Include="filter\lq2x.h" />
|
||||||
|
<ClInclude Include="..\encrypt.h">
|
||||||
|
<Filter>Core</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\instruction_tabdef.inc">
|
<None Include="..\instruction_tabdef.inc">
|
||||||
|
@ -1306,27 +1385,18 @@
|
||||||
<None Include="..\filter\hq4x.dat">
|
<None Include="..\filter\hq4x.dat">
|
||||||
<Filter>Core\filter</Filter>
|
<Filter>Core\filter</Filter>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
<None Include="..\utils\AsmJit\COPYING.txt" />
|
||||||
<ItemGroup>
|
<None Include="bitmap1.bmp" />
|
||||||
<Text Include="..\utils\AsmJit\COPYING.txt">
|
<None Include="DeSmuME.ico" />
|
||||||
<Filter>Core\utils\AsmJit</Filter>
|
<None Include="File_Extractor\7z_C\7zC.txt" />
|
||||||
</Text>
|
<None Include="File_Extractor\7z_C\changes.txt" />
|
||||||
</ItemGroup>
|
<None Include="File_Extractor\7z_C\lzma.txt" />
|
||||||
<ItemGroup>
|
<None Include="File_Extractor\7z_C\readme.txt" />
|
||||||
<Image Include="bitmap1.bmp">
|
<None Include="File_Extractor\unrar\changes.txt" />
|
||||||
<Filter>Windows\resources</Filter>
|
<None Include="File_Extractor\unrar\license.txt" />
|
||||||
</Image>
|
<None Include="File_Extractor\unrar\readme.txt" />
|
||||||
<Image Include="DeSmuME.ico">
|
<None Include="File_Extractor\unrar\technote.txt" />
|
||||||
<Filter>Windows\resources</Filter>
|
<None Include="File_Extractor\unrar\whatsnew.txt" />
|
||||||
</Image>
|
|
||||||
<Image Include="bitmaps\IDB_FRAMEADVANCE.bmp" />
|
|
||||||
<Image Include="bitmaps\IDB_OPEN.bmp" />
|
|
||||||
<Image Include="bitmaps\IDB_PAUSE.bmp" />
|
|
||||||
<Image Include="bitmaps\IDB_PLAY.bmp" />
|
|
||||||
<Image Include="bitmaps\IDB_RESET.bmp" />
|
|
||||||
<Image Include="bitmaps\IDB_ROTATECCW.bmp" />
|
|
||||||
<Image Include="bitmaps\IDB_ROTATECW.bmp" />
|
|
||||||
<Image Include="bitmaps\IDB_STOP.bmp" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="resources.rc">
|
<ResourceCompile Include="resources.rc">
|
||||||
|
@ -1340,9 +1410,6 @@
|
||||||
<CustomBuild Include="glib-2.20.1\glib-2.20.1.7z">
|
<CustomBuild Include="glib-2.20.1\glib-2.20.1.7z">
|
||||||
<Filter>Windows\libs</Filter>
|
<Filter>Windows\libs</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<CustomBuild Include="libelf_libdwarf\libelf_libdwarf.7z">
|
|
||||||
<Filter>Windows\libs</Filter>
|
|
||||||
</CustomBuild>
|
|
||||||
<CustomBuild Include="lua\lua.7z">
|
<CustomBuild Include="lua\lua.7z">
|
||||||
<Filter>Windows\libs</Filter>
|
<Filter>Windows\libs</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
|
Loading…
Reference in New Issue