mirror of
https://github.com/TASEmulators/desmume
synced 2025-10-06 00:32:43 +02:00
Compare commits
16 Commits
cf5153d02d
...
release_0_
Author | SHA1 | Date | |
---|---|---|---|
|
7b0b1e6c89 | ||
|
50d040a3a1 | ||
|
71231d8c24 | ||
|
cf7df1ad13 | ||
|
7291304b4e | ||
|
75cab45f6f | ||
|
199e35e3b8 | ||
|
6ba690f006 | ||
|
dfb72ae1b5 | ||
|
2d59aca05d | ||
|
ac986ff151 | ||
|
3a550d61e5 | ||
|
4cd260b679 | ||
|
00d37ad160 | ||
|
dfbedeaf8c | ||
|
5b7e1f4ba2 |
@@ -6,15 +6,15 @@ Current team
|
||||
------------
|
||||
Guillaume Duhamel
|
||||
Normmatt
|
||||
Bernat Mu<4D>oz (shash)
|
||||
Riccardo Magliocchetti
|
||||
Max Tabachenko (CrazyMax)
|
||||
CrazyMax
|
||||
zeromus
|
||||
rogerman
|
||||
Luigi__
|
||||
|
||||
Contributors
|
||||
------------
|
||||
Bernat Mu<4D>oz (shash)
|
||||
Allustar
|
||||
amponzi
|
||||
Anthony Molinaro
|
||||
@@ -40,9 +40,8 @@ WinterMute
|
||||
pengvado
|
||||
dormito
|
||||
ldesnogue
|
||||
|
||||
Thanks to our super testers for this release
|
||||
------------
|
||||
mtheall
|
||||
thelemonman
|
||||
nash679
|
||||
pokefan999
|
||||
dottorleo
|
||||
|
@@ -1,7 +1,40 @@
|
||||
0.9.9 -> 0.9.10 (r4623-)
|
||||
0.9.9 -> 0.9.10 (r4623-r4908)
|
||||
|
||||
In this version, we have focused on trying to clean up some complexities in the user experience and emulator internals. Pretty unglamorous stuff, but some games are newly compatible.
|
||||
|
||||
General/Core:
|
||||
enh: break savestate back-compatibility
|
||||
bug: improve save size autodetection for some games
|
||||
bug: cpu: fix many basic jit cpu bugs
|
||||
bug: 3d: tweak softrasterizer edge marking
|
||||
bug: 3d: fix stale 4x4 texture palettes
|
||||
bug: fix some GPU sprite blending scenarios
|
||||
bug: fix bios HLE BitUnPack, UnCompHuffman
|
||||
enh: modular slot-1 device system, emulate GC bus more faithfully
|
||||
enh: support NAND slot-1 device
|
||||
enh: auto-detect appropriate slot-1 and slot-2 device
|
||||
enh: many revisions to firmware boot process for more authenticity. iQue and FlashME versions function, .dfc rewritten.
|
||||
enh: support streaming NDS file from disk (like an ISO, to avoid long initial load time)
|
||||
enh: run .dsv directly on disk, to save long flushing times. should speed backup operations.
|
||||
enh: spu synch mode and method on commandline
|
||||
|
||||
Windows:
|
||||
bug: fixes to advanscene DB import
|
||||
|
||||
bug: save opengl display method filter option
|
||||
bug: general bugfixes to various screen layout modes
|
||||
enh: add option to stop non-integer scaling during fullscreen or maximize
|
||||
enh: improvements to save import dialog
|
||||
enh: improved memory viewer tool
|
||||
enh: operate better when run, against our advice, from a zipfile
|
||||
enh: add slot-1 Nitro Filesystem viewer tool
|
||||
|
||||
Cocoa:
|
||||
bug: fix slot1-R4 path saving
|
||||
bug: fix bug with mic samples < 16khz
|
||||
bug: fix bugs and enhancements in multi display windows
|
||||
bug: fix handling of some joystick analog inputs
|
||||
enh: save display windows configuration and emulation speed on app exit
|
||||
|
||||
0.9.8 -> 0.9.9 (r4228-r4623)
|
||||
|
||||
Yes, it's been a while since the last release, but we haven't been completely idle. There's a brand new jit cpu core which yields some impressive speedups!
|
||||
|
@@ -1,8 +1,8 @@
|
||||
DeSmuME
|
||||
_________________________________________
|
||||
Copyright (C) 2006 yopyop
|
||||
Copyright (C) 2006-2012 DeSmuME team
|
||||
Last Updated: March 31, 2012
|
||||
Copyright (C) 2006-2013 DeSmuME team
|
||||
Last Updated: November 23, 2013
|
||||
|
||||
Contents:
|
||||
1) About ................................................................... 14
|
||||
@@ -74,7 +74,7 @@ Special thanks go to:
|
||||
Official Website: http://desmume.org
|
||||
Public Forum: http://forums.desmume.org
|
||||
Developer Chat: irc://irc.freenode.net/desmume
|
||||
Bug Reports: http://sourceforge.net/tracker/?group_id=164579&atid=832291
|
||||
Bug Reports: http://sourceforge.net/p/desmume/bugs
|
||||
|
||||
Please don't ask for ROMs, BIOS files, or any other copyrighted stuff.
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
_________________________________________
|
||||
Copyright (C) 2006 yopyop
|
||||
Copyright (C) 2006-2013 DeSmuME team
|
||||
Last Updated: April 16, 2013
|
||||
Last Updated: December 17, 2013
|
||||
|
||||
Contents:
|
||||
1) System Requirements ..................................................... 15
|
||||
@@ -248,7 +248,7 @@ possible. The better your descriptions are, the faster we can test and fix
|
||||
bugs. For example, if you observed a bug in the game Golden Sun: Dark Dawn, then
|
||||
the bug report could look something like this:
|
||||
|
||||
App Version: v0.9.9
|
||||
App Version: v0.9.10b
|
||||
Operating System: OS X v10.8.3 (12D78)
|
||||
Mac Model Identifier: iMac11,2
|
||||
ROM Name: GOLDENSUN_DD
|
||||
|
@@ -1,7 +1,7 @@
|
||||
dnl --- Package name is first argument to AC_INIT
|
||||
dnl --- Release version is second argument to AC_INIT
|
||||
|
||||
AC_INIT(desmume, [svn])
|
||||
AC_INIT(desmume, [0.9.10])
|
||||
|
||||
dnl -- find host architecture for some os specific libraries
|
||||
AC_CANONICAL_HOST
|
||||
@@ -13,7 +13,7 @@ case $host in
|
||||
esac
|
||||
AC_SUBST(desmume_arch)
|
||||
|
||||
AM_INIT_AUTOMAKE([1.10 subdir-objects])
|
||||
AM_INIT_AUTOMAKE([1.10 subdir-objects tar-pax])
|
||||
|
||||
dnl -- make sure we have a c++ compiler
|
||||
AC_PROG_CXX
|
||||
|
@@ -179,61 +179,10 @@ void NDS_DeInit(void)
|
||||
|
||||
NDS_header * NDS_getROMHeader(void)
|
||||
{
|
||||
NDS_header * header = new NDS_header;
|
||||
|
||||
memcpy(header, &gameInfo.header, sizeof(gameInfo.header));
|
||||
|
||||
//endian swap necessary fields. It would be better if we made accessors for these. I wonder if you could make a macro for a field accessor that would take the bitsize and do the swap on the fly
|
||||
struct FieldSwap {
|
||||
size_t offset;
|
||||
int bytes;
|
||||
};
|
||||
|
||||
static const FieldSwap fieldSwaps[] = {
|
||||
{ offsetof(NDS_header,makerCode), 2},
|
||||
|
||||
{ offsetof(NDS_header,ARM9src), 4},
|
||||
{ offsetof(NDS_header,ARM9exe), 4},
|
||||
{ offsetof(NDS_header,ARM9cpy), 4},
|
||||
{ offsetof(NDS_header,ARM7src), 4},
|
||||
{ offsetof(NDS_header,ARM7exe), 4},
|
||||
{ offsetof(NDS_header,ARM7cpy), 4},
|
||||
{ offsetof(NDS_header,ARM7binSize), 4},
|
||||
{ offsetof(NDS_header,FNameTblOff), 4},
|
||||
{ offsetof(NDS_header,FNameTblSize), 4},
|
||||
{ offsetof(NDS_header,FATOff), 4},
|
||||
{ offsetof(NDS_header,FATSize), 4},
|
||||
{ offsetof(NDS_header,ARM9OverlayOff), 4},
|
||||
{ offsetof(NDS_header,ARM9OverlaySize), 4},
|
||||
{ offsetof(NDS_header,ARM7OverlayOff), 4},
|
||||
{ offsetof(NDS_header,ARM7OverlaySize), 4},
|
||||
{ offsetof(NDS_header,normalCmd), 4},
|
||||
{ offsetof(NDS_header,Key1Cmd), 4},
|
||||
{ offsetof(NDS_header,IconOff), 4},
|
||||
|
||||
{ offsetof(NDS_header,CRC16), 2},
|
||||
{ offsetof(NDS_header,ROMtimeout), 2},
|
||||
|
||||
{ offsetof(NDS_header,ARM9autoload), 4},
|
||||
{ offsetof(NDS_header,ARM7autoload), 4},
|
||||
{ offsetof(NDS_header,endROMoffset), 4},
|
||||
{ offsetof(NDS_header,HeaderSize), 4},
|
||||
|
||||
{ offsetof(NDS_header, ARM9module), 4},
|
||||
{ offsetof(NDS_header, ARM7module), 4},
|
||||
|
||||
{ offsetof(NDS_header,logoCRC16), 2},
|
||||
{ offsetof(NDS_header,headerCRC16), 2},
|
||||
};
|
||||
|
||||
for(int i=0;i<ARRAY_SIZE(fieldSwaps);i++)
|
||||
switch(fieldSwaps[i].bytes)
|
||||
{
|
||||
case 2: HostWriteWord((u8*)header,fieldSwaps[i].offset,T1ReadWord(header,fieldSwaps[i].offset));
|
||||
case 4: HostWriteLong((u8*)header,fieldSwaps[i].offset,T1ReadLong((u8*)header,fieldSwaps[i].offset));
|
||||
}
|
||||
|
||||
return header;
|
||||
NDS_header *newHeader = new NDS_header;
|
||||
memcpy(newHeader, &gameInfo.header, sizeof(NDS_header));
|
||||
|
||||
return newHeader;
|
||||
}
|
||||
|
||||
|
||||
@@ -332,11 +281,7 @@ void GameInfo::populate()
|
||||
"AUS", // U
|
||||
|
||||
};
|
||||
|
||||
NDS_header * _header = NDS_getROMHeader();
|
||||
header = *_header;
|
||||
delete _header;
|
||||
|
||||
|
||||
memset(ROMserial, 0, sizeof(ROMserial));
|
||||
memset(ROMname, 0, sizeof(ROMname));
|
||||
|
||||
@@ -376,8 +321,6 @@ void GameInfo::populate()
|
||||
trim(ROMfullName[i]);
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool GameInfo::loadROM(std::string fname, u32 type)
|
||||
@@ -398,6 +341,67 @@ bool GameInfo::loadROM(std::string fname, u32 type)
|
||||
|
||||
if (res)
|
||||
{
|
||||
#ifndef LOCAL_LE
|
||||
//endian swap necessary fields. It would be better if we made accessors for these. I wonder if you could make a macro for a field accessor that would take the bitsize and do the swap on the fly
|
||||
struct FieldSwap {
|
||||
const size_t offset;
|
||||
const size_t bytes;
|
||||
};
|
||||
|
||||
static const FieldSwap fieldSwaps[] = {
|
||||
{ offsetof(NDS_header,makerCode), 2},
|
||||
|
||||
{ offsetof(NDS_header,ARM9src), 4},
|
||||
{ offsetof(NDS_header,ARM9exe), 4},
|
||||
{ offsetof(NDS_header,ARM9cpy), 4},
|
||||
{ offsetof(NDS_header,ARM9binSize), 4},
|
||||
{ offsetof(NDS_header,ARM7src), 4},
|
||||
{ offsetof(NDS_header,ARM7exe), 4},
|
||||
{ offsetof(NDS_header,ARM7cpy), 4},
|
||||
{ offsetof(NDS_header,ARM7binSize), 4},
|
||||
{ offsetof(NDS_header,FNameTblOff), 4},
|
||||
{ offsetof(NDS_header,FNameTblSize), 4},
|
||||
{ offsetof(NDS_header,FATOff), 4},
|
||||
{ offsetof(NDS_header,FATSize), 4},
|
||||
{ offsetof(NDS_header,ARM9OverlayOff), 4},
|
||||
{ offsetof(NDS_header,ARM9OverlaySize), 4},
|
||||
{ offsetof(NDS_header,ARM7OverlayOff), 4},
|
||||
{ offsetof(NDS_header,ARM7OverlaySize), 4},
|
||||
{ offsetof(NDS_header,normalCmd), 4},
|
||||
{ offsetof(NDS_header,Key1Cmd), 4},
|
||||
{ offsetof(NDS_header,IconOff), 4},
|
||||
|
||||
{ offsetof(NDS_header,CRC16), 2},
|
||||
{ offsetof(NDS_header,ROMtimeout), 2},
|
||||
|
||||
{ offsetof(NDS_header,ARM9autoload), 4},
|
||||
{ offsetof(NDS_header,ARM7autoload), 4},
|
||||
{ offsetof(NDS_header,endROMoffset), 4},
|
||||
{ offsetof(NDS_header,HeaderSize), 4},
|
||||
|
||||
{ offsetof(NDS_header, ARM9module), 4},
|
||||
{ offsetof(NDS_header, ARM7module), 4},
|
||||
|
||||
{ offsetof(NDS_header,logoCRC16), 2},
|
||||
{ offsetof(NDS_header,headerCRC16), 2},
|
||||
};
|
||||
|
||||
for(size_t i = 0; i < ARRAY_SIZE(fieldSwaps); i++)
|
||||
{
|
||||
const u8 *fieldAddr = (u8 *)&header + fieldSwaps[i].offset;
|
||||
|
||||
switch(fieldSwaps[i].bytes)
|
||||
{
|
||||
case 2:
|
||||
*(u16 *)fieldAddr = LE_TO_LOCAL_16(*(u16 *)fieldAddr);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
*(u32 *)fieldAddr = LE_TO_LOCAL_32(*(u32 *)fieldAddr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
cardSize = (128 * 1024) << header.cardSize;
|
||||
mask = (cardSize - 1);
|
||||
mask |= (mask >>1);
|
||||
@@ -421,14 +425,24 @@ bool GameInfo::loadROM(std::string fname, u32 type)
|
||||
{
|
||||
delete [] romdata; romdata = NULL;
|
||||
romsize = 0;
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(hasRomBanner())
|
||||
{
|
||||
memcpy(&banner, romdata + header.IconOff, sizeof(RomBanner));
|
||||
|
||||
_isDSiEnhanced = ((*(u32*)(romdata + 0x180) == 0x8D898581U) && (*(u32*)(romdata + 0x184) == 0x8C888480U));
|
||||
|
||||
banner.version = LE_TO_LOCAL_16(banner.version);
|
||||
banner.crc16 = LE_TO_LOCAL_16(banner.crc16);
|
||||
|
||||
for(size_t i = 0; i < ARRAY_SIZE(banner.palette); i++)
|
||||
{
|
||||
banner.palette[i] = LE_TO_LOCAL_16(banner.palette[i]);
|
||||
}
|
||||
}
|
||||
|
||||
_isDSiEnhanced = (LE_TO_LOCAL_32(*(u32*)(romdata + 0x180) == 0x8D898581U) && LE_TO_LOCAL_32(*(u32*)(romdata + 0x184) == 0x8C888480U));
|
||||
fclose(fROM); fROM = NULL;
|
||||
return true;
|
||||
}
|
||||
@@ -437,6 +451,14 @@ bool GameInfo::loadROM(std::string fname, u32 type)
|
||||
{
|
||||
fseek(fROM, header.IconOff + headerOffset, SEEK_SET);
|
||||
fread(&banner, 1, sizeof(RomBanner), fROM);
|
||||
|
||||
banner.version = LE_TO_LOCAL_16(banner.version);
|
||||
banner.crc16 = LE_TO_LOCAL_16(banner.crc16);
|
||||
|
||||
for(size_t i = 0; i < ARRAY_SIZE(banner.palette); i++)
|
||||
{
|
||||
banner.palette[i] = LE_TO_LOCAL_16(banner.palette[i]);
|
||||
}
|
||||
}
|
||||
fseek(fROM, headerOffset, SEEK_SET);
|
||||
lastReadPos = 0;
|
||||
@@ -471,10 +493,10 @@ u32 GameInfo::readROM(u32 pos)
|
||||
fseek(fROM, pos + headerOffset, SEEK_SET);
|
||||
u32 num = fread(&data, 1, 4, fROM);
|
||||
lastReadPos = (pos + num);
|
||||
return data;
|
||||
return LE_TO_LOCAL_32(data);
|
||||
}
|
||||
else
|
||||
return *(u32*)(romdata + pos);
|
||||
return LE_TO_LOCAL_32(*(u32*)(romdata + pos));
|
||||
}
|
||||
|
||||
static int rom_init_path(const char *filename, const char *physicalName, const char *logicalFilename)
|
||||
@@ -1999,7 +2021,9 @@ static void PrepareBiosARM9()
|
||||
|
||||
//copy the logo content into the bios - Pokemon Platinum uses this in Pal Park trade
|
||||
//it compares the logo from the arm9 bios to the logo in the GBA header.
|
||||
//NOTE: we could MAYBE solve this by patching the rom of a mounted GBA game with whatever's here, even if its all zeroes.
|
||||
//NOTE: in the unlikely event that the valid header is missing from the gameInfo, we'd be doing wrong here.
|
||||
// however, its nice not to have the logo embedded here.
|
||||
// TODO - take a CRC of the logo, check vs logoCRC16, and a hardcoded value, to make sure all is in order--report error if not
|
||||
memcpy(&MMU.ARM9_BIOS[0x20], &gameInfo.header.logo[0], 0x9C);
|
||||
T1WriteWord(MMU.ARM9_BIOS, 0x20 + 0x9C, gameInfo.header.logoCRC16);
|
||||
//... and with that we are at 0xBC:
|
||||
@@ -2173,7 +2197,7 @@ bool NDS_FakeBoot()
|
||||
u32 dst = header->ARM9cpy;
|
||||
for(u32 i = 0; i < header->ARM9binSize; i+=4)
|
||||
{
|
||||
u32 tmp = (hasSecureArea && ((src >= 0x4000) && (src < 0x8000)))?*(u32*)(gameInfo.secureArea + (src - 0x4000)):gameInfo.readROM(src);
|
||||
u32 tmp = (hasSecureArea && ((src >= 0x4000) && (src < 0x8000)))?LE_TO_LOCAL_32(*(u32*)(gameInfo.secureArea + (src - 0x4000))):gameInfo.readROM(src);
|
||||
|
||||
_MMU_write32<ARMCPU_ARM9>(dst, tmp);
|
||||
|
||||
@@ -2213,12 +2237,12 @@ bool NDS_FakeBoot()
|
||||
{
|
||||
//dsi needs this copied later in memory. there are probably a number of things that get copied to a later location in memory.. thats where the NDS consoles tend to stash stuff.
|
||||
for (int i = 0; i < (0x170); i+=4)
|
||||
_MMU_write32<ARMCPU_ARM9>(0x027FFE00 + i, LE_TO_LOCAL_32(gameInfo.readROM(i)));
|
||||
_MMU_write32<ARMCPU_ARM9>(0x027FFE00 + i, gameInfo.readROM(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < (0x170); i+=4)
|
||||
_MMU_write32<ARMCPU_ARM9>(0x027FFE00 + i, LE_TO_LOCAL_32(gameInfo.readROM(i)));
|
||||
_MMU_write32<ARMCPU_ARM9>(0x027FFE00 + i, gameInfo.readROM(i));
|
||||
}
|
||||
|
||||
//the firmware will be booting to these entrypoint addresses via BX (well, the arm9 at least; is unverified for the arm7)
|
||||
|
@@ -500,7 +500,7 @@ extern struct TCommonSettings {
|
||||
, GFX3D_Zelda_Shadow_Depth_Hack(0)
|
||||
, GFX3D_Renderer_Multisample(false)
|
||||
, jit_max_block_size(100)
|
||||
, loadToMemory(true)
|
||||
, loadToMemory(false)
|
||||
, UseExtBIOS(false)
|
||||
, SWIFromBIOS(false)
|
||||
, PatchSWI3(false)
|
||||
|
@@ -95,7 +95,11 @@ void Slot1Comp_Protocol::write_command_KEY1(GC_Command command)
|
||||
|
||||
//TODO - more endian-safe way of doing this (theres examples in R4)
|
||||
{
|
||||
#ifdef LOCAL_LE
|
||||
u64 cmd64 = bswap64(*(u64*)command.bytes);
|
||||
#else
|
||||
u64 cmd64 = *(u64*)command.bytes;
|
||||
#endif
|
||||
//todo - parse into blocknumber
|
||||
address = (u32)((cmd64 >> 32) & 0xF000);
|
||||
}
|
||||
@@ -129,7 +133,12 @@ void Slot1Comp_Protocol::write_command_NORMAL(GC_Command command)
|
||||
operation = eSlot1Operation_B7_Read;
|
||||
|
||||
//TODO - more endian-safe way of doing this (theres examples in R4)
|
||||
#ifdef LOCAL_LE
|
||||
u64 cmd64 = bswap64(*(u64*)command.bytes);
|
||||
#else
|
||||
u64 cmd64 = *(u64*)command.bytes;
|
||||
#endif
|
||||
|
||||
address = (u32)((cmd64 >> 24));
|
||||
length = 0x200;
|
||||
|
||||
|
@@ -42,7 +42,7 @@ u32 Slot1Comp_Rom::read()
|
||||
{
|
||||
//see B7 for details
|
||||
address &= gameInfo.mask; //sanity check
|
||||
u32 ret = *(u32*)(gameInfo.secureArea + (address - 0x4000));
|
||||
u32 ret = LE_TO_LOCAL_32(*(u32*)(gameInfo.secureArea + (address - 0x4000)));
|
||||
address = (address&~0xFFF) + ((address+4)&0xFFF);
|
||||
return ret;
|
||||
}
|
||||
|
@@ -654,7 +654,7 @@ TEMPLATE static u32 RLUnCompWram()
|
||||
{
|
||||
//this routine is used by yoshi touch&go from the very beginning
|
||||
|
||||
printf("RLUnCompWram\n");
|
||||
//printf("RLUnCompWram\n");
|
||||
|
||||
int i;
|
||||
int len;
|
||||
|
@@ -536,6 +536,22 @@ u32 CHEATS::getSize()
|
||||
return list.size();
|
||||
}
|
||||
|
||||
size_t CHEATS::getActiveCount()
|
||||
{
|
||||
size_t activeCheatCount = 0;
|
||||
const size_t cheatListCount = this->getSize();
|
||||
|
||||
for (size_t i = 0; i < cheatListCount; i++)
|
||||
{
|
||||
if (list[i].enabled)
|
||||
{
|
||||
activeCheatCount++;
|
||||
}
|
||||
}
|
||||
|
||||
return activeCheatCount;
|
||||
}
|
||||
|
||||
void CHEATS::setDescription(const char *description, u32 pos)
|
||||
{
|
||||
strncpy(list[pos].description, description, sizeof(list[pos].description));
|
||||
|
@@ -82,6 +82,7 @@ public:
|
||||
BOOL get(CHEATS_LIST *cheat, u32 pos);
|
||||
CHEATS_LIST* getItemByIndex(const u32 pos);
|
||||
u32 getSize();
|
||||
size_t getActiveCount();
|
||||
void setDescription(const char *description, u32 pos);
|
||||
BOOL save();
|
||||
BOOL load();
|
||||
|
39
desmume/src/cocoa/DeleteUserDefaults.applescript
Normal file
39
desmume/src/cocoa/DeleteUserDefaults.applescript
Normal file
@@ -0,0 +1,39 @@
|
||||
(*
|
||||
Copyright (C) 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/>.
|
||||
*)
|
||||
|
||||
display dialog "Are you sure that you want to delete DeSmuME's preferences?" buttons {"Cancel", "Delete"} default button "Delete" cancel button "Cancel" with title "Delete DeSmuME Preferences"
|
||||
|
||||
try
|
||||
set userDefaultsPath to ((path to "pref" as text) & "org.desmume.DeSmuME.plist")
|
||||
set isUserDefaultsDeleted to false
|
||||
|
||||
tell application "Finder"
|
||||
if exists file userDefaultsPath then
|
||||
set isUserDefaultsDeleted to true
|
||||
delete file userDefaultsPath
|
||||
end if
|
||||
|
||||
if isUserDefaultsDeleted then
|
||||
display dialog "The preference files have been moved to the Trash." buttons {"OK"} default button {"OK"}
|
||||
else
|
||||
display dialog "No preference files were found." buttons {"OK"} default button {"OK"}
|
||||
end if
|
||||
end tell
|
||||
|
||||
on error errorMsg
|
||||
display dialog errorMsg
|
||||
end try
|
@@ -240,7 +240,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>v0.9.10 (Debug)</string>
|
||||
<string>v0.9.10b (Debug)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>DSmM</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
@@ -240,7 +240,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>v0.9.10</string>
|
||||
<string>v0.9.10b</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>DSmM</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
@@ -60,6 +60,8 @@
|
||||
- (void) hideGPUType:(const NSInteger)theGpuType;
|
||||
- (void) showGPUType:(const NSInteger)theGpuType;
|
||||
|
||||
- (NSString *) render3DRenderingEngineString;
|
||||
|
||||
@end
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -652,6 +652,26 @@ GPU3DInterface *core3DList[] = {
|
||||
[self setGpuStateFlags:flags];
|
||||
}
|
||||
|
||||
- (NSString *) render3DRenderingEngineString
|
||||
{
|
||||
NSString *theString = @"Uninitialized";
|
||||
|
||||
pthread_mutex_lock(self.mutexProducer);
|
||||
|
||||
if(gpu3D == NULL)
|
||||
{
|
||||
pthread_mutex_unlock(self.mutexProducer);
|
||||
return theString;
|
||||
}
|
||||
|
||||
const char *theName = gpu3D->name;
|
||||
theString = [NSString stringWithCString:theName encoding:NSUTF8StringEncoding];
|
||||
|
||||
pthread_mutex_unlock(self.mutexProducer);
|
||||
|
||||
return theString;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
void SetGPULayerState(const int gpuType, const unsigned int i, const bool state)
|
||||
|
@@ -111,6 +111,7 @@
|
||||
- (void) remove:(CocoaDSCheatItem *)cheatItem;
|
||||
- (BOOL) update:(CocoaDSCheatItem *)cheatItem;
|
||||
- (BOOL) save;
|
||||
- (NSUInteger) activeCount;
|
||||
- (NSMutableArray *) cheatListFromDatabase:(NSURL *)fileURL errorCode:(NSInteger *)error;
|
||||
- (void) applyInternalCheat:(CocoaDSCheatItem *)cheatItem;
|
||||
|
||||
|
@@ -888,6 +888,15 @@ static NSImage *iconCodeBreaker = nil;
|
||||
return result;
|
||||
}
|
||||
|
||||
- (NSUInteger) activeCount
|
||||
{
|
||||
pthread_mutex_lock(self.cdsCore.mutexCoreExecute);
|
||||
NSUInteger activeCheatsCount = self.listData->getActiveCount();
|
||||
pthread_mutex_unlock(self.cdsCore.mutexCoreExecute);
|
||||
|
||||
return activeCheatsCount;
|
||||
}
|
||||
|
||||
- (NSMutableArray *) cheatListFromDatabase:(NSURL *)fileURL errorCode:(NSInteger *)error
|
||||
{
|
||||
NSMutableArray *newDBList = nil;
|
||||
|
@@ -35,7 +35,7 @@ typedef struct
|
||||
int state;
|
||||
bool isFrameSkipEnabled;
|
||||
size_t frameCount;
|
||||
unsigned int framesToSkip;
|
||||
int framesToSkip;
|
||||
uint64_t timeBudgetMachAbsTime;
|
||||
bool exitThread;
|
||||
pthread_mutex_t mutexCoreExecute;
|
||||
@@ -138,7 +138,12 @@ typedef struct
|
||||
- (void) removeOutput:(CocoaDSOutput *)theOutput;
|
||||
- (void) removeAllOutputs;
|
||||
|
||||
- (NSString *) cpuEmulationEngineString;
|
||||
- (NSString *) slot1DeviceTypeString;
|
||||
- (NSString *) slot2DeviceTypeString;
|
||||
|
||||
@end
|
||||
|
||||
static void* RunCoreThread(void *arg);
|
||||
static void CoreFrameSkip(uint64_t timeBudgetMachAbsoluteTime, uint64_t frameStartMachAbsoluteTime, unsigned int *outFramesToSkip);
|
||||
static int CalculateFrameSkip(uint64_t timeBudgetMachAbsTime, uint64_t frameStartMachAbsTime);
|
||||
uint64_t GetFrameAbsoluteTime(const double frameTimeScalar);
|
||||
|
@@ -620,16 +620,9 @@ static BOOL isCoreStarted = NO;
|
||||
{
|
||||
if (self.isSpeedLimitEnabled)
|
||||
{
|
||||
CGFloat theSpeed = self.speedScalar;
|
||||
if(theSpeed <= SPEED_SCALAR_MIN)
|
||||
{
|
||||
theSpeed = SPEED_SCALAR_MIN;
|
||||
}
|
||||
|
||||
const CGFloat theSpeed = ([self speedScalar] > SPEED_SCALAR_MIN) ? [self speedScalar] : SPEED_SCALAR_MIN;
|
||||
pthread_mutex_lock(&threadParam.mutexThreadExecute);
|
||||
uint64_t timeBudgetNanoseconds = (uint64_t)(DS_SECONDS_PER_FRAME * 1000000000.0 / theSpeed);
|
||||
AbsoluteTime timeBudgetAbsTime = NanosecondsToAbsolute(*(Nanoseconds *)&timeBudgetNanoseconds);
|
||||
threadParam.timeBudgetMachAbsTime = *(uint64_t *)&timeBudgetAbsTime;
|
||||
threadParam.timeBudgetMachAbsTime = GetFrameAbsoluteTime(1.0/theSpeed);
|
||||
pthread_mutex_unlock(&threadParam.mutexThreadExecute);
|
||||
}
|
||||
else
|
||||
@@ -759,6 +752,67 @@ static BOOL isCoreStarted = NO;
|
||||
[CocoaDSCore shutdownCore];
|
||||
}
|
||||
|
||||
- (NSString *) cpuEmulationEngineString
|
||||
{
|
||||
NSString *theString = @"Uninitialized";
|
||||
|
||||
switch ([self cpuEmulationEngine])
|
||||
{
|
||||
case CPU_EMULATION_ENGINE_INTERPRETER:
|
||||
theString = @"Interpreter";
|
||||
break;
|
||||
|
||||
case CPU_EMULATION_ENGINE_DYNAMIC_RECOMPILER:
|
||||
theString = @"Dynamic Recompiler";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return theString;
|
||||
}
|
||||
|
||||
- (NSString *) slot1DeviceTypeString
|
||||
{
|
||||
NSString *theString = @"Uninitialized";
|
||||
|
||||
pthread_mutex_lock(&threadParam.mutexThreadExecute);
|
||||
|
||||
if(slot1_device == NULL)
|
||||
{
|
||||
pthread_mutex_unlock(&threadParam.mutexThreadExecute);
|
||||
return theString;
|
||||
}
|
||||
|
||||
const Slot1Info *info = slot1_device->info();
|
||||
theString = [NSString stringWithCString:info->name() encoding:NSUTF8StringEncoding];
|
||||
|
||||
pthread_mutex_unlock(&threadParam.mutexThreadExecute);
|
||||
|
||||
return theString;
|
||||
}
|
||||
|
||||
- (NSString *) slot2DeviceTypeString
|
||||
{
|
||||
NSString *theString = @"Uninitialized";
|
||||
|
||||
pthread_mutex_lock(&threadParam.mutexThreadExecute);
|
||||
|
||||
if(slot2_device == NULL)
|
||||
{
|
||||
pthread_mutex_unlock(&threadParam.mutexThreadExecute);
|
||||
return theString;
|
||||
}
|
||||
|
||||
const Slot2Info *info = slot2_device->info();
|
||||
theString = [NSString stringWithCString:info->name() encoding:NSUTF8StringEncoding];
|
||||
|
||||
pthread_mutex_unlock(&threadParam.mutexThreadExecute);
|
||||
|
||||
return theString;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
static void* RunCoreThread(void *arg)
|
||||
@@ -832,7 +886,15 @@ static void* RunCoreThread(void *arg)
|
||||
// we owe on timeBudget.
|
||||
if (param->isFrameSkipEnabled)
|
||||
{
|
||||
CoreFrameSkip(timeBudget, startTime, ¶m->framesToSkip);
|
||||
if (param->framesToSkip > 0)
|
||||
{
|
||||
NDS_SkipNextFrame();
|
||||
param->framesToSkip--;
|
||||
}
|
||||
else
|
||||
{
|
||||
param->framesToSkip = CalculateFrameSkip(timeBudget, startTime);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(¶m->mutexThreadExecute);
|
||||
@@ -845,52 +907,76 @@ static void* RunCoreThread(void *arg)
|
||||
return nil;
|
||||
}
|
||||
|
||||
static void CoreFrameSkip(uint64_t timeBudgetMachAbsTime, uint64_t frameStartMachAbsTime, unsigned int *outFramesToSkip)
|
||||
static int CalculateFrameSkip(uint64_t timeBudgetMachAbsTime, uint64_t frameStartMachAbsTime)
|
||||
{
|
||||
if (*outFramesToSkip > 0)
|
||||
static const double skipCurve[10] = {0.60, 0.58, 0.55, 0.51, 0.46, 0.40, 0.30, 0.20, 0.10, 0.00};
|
||||
static const double unskipCurve[10] = {0.75, 0.70, 0.65, 0.60, 0.50, 0.40, 0.30, 0.20, 0.10, 0.00};
|
||||
static size_t skipStep = 0;
|
||||
static size_t unskipStep = 0;
|
||||
static int lastSetFrameSkip = 0;
|
||||
|
||||
// Calculate the time remaining.
|
||||
const uint64_t elapsed = mach_absolute_time() - frameStartMachAbsTime;
|
||||
int framesToSkip = 0;
|
||||
|
||||
if (elapsed > timeBudgetMachAbsTime)
|
||||
{
|
||||
NDS_SkipNextFrame();
|
||||
(*outFramesToSkip)--;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Calculate the time remaining.
|
||||
uint64_t elapsed = mach_absolute_time() - frameStartMachAbsTime;
|
||||
|
||||
if (elapsed > timeBudgetMachAbsTime)
|
||||
if (timeBudgetMachAbsTime > 0)
|
||||
{
|
||||
static unsigned int lastSetFrameSkip = 0;
|
||||
unsigned int framesToSkip = 0;
|
||||
framesToSkip = (int)( (((double)(elapsed - timeBudgetMachAbsTime) * FRAME_SKIP_AGGRESSIVENESS) / (double)timeBudgetMachAbsTime) + FRAME_SKIP_BIAS );
|
||||
|
||||
if (timeBudgetMachAbsTime > 0)
|
||||
if (framesToSkip > lastSetFrameSkip)
|
||||
{
|
||||
framesToSkip = (unsigned int)( (((double)(elapsed - timeBudgetMachAbsTime) * FRAME_SKIP_AGGRESSIVENESS) / (double)timeBudgetMachAbsTime) + FRAME_SKIP_BIAS );
|
||||
if (framesToSkip < lastSetFrameSkip)
|
||||
framesToSkip -= (int)((double)(framesToSkip - lastSetFrameSkip) * skipCurve[skipStep]);
|
||||
if (skipStep < 9)
|
||||
{
|
||||
framesToSkip += (unsigned int)((double)(lastSetFrameSkip - framesToSkip) * FRAME_SKIP_SMOOTHNESS);
|
||||
skipStep++;
|
||||
}
|
||||
|
||||
lastSetFrameSkip = framesToSkip;
|
||||
}
|
||||
else
|
||||
{
|
||||
framesToSkip = (unsigned int)( (((double)(elapsed - timeBudgetMachAbsTime) * FRAME_SKIP_AGGRESSIVENESS * 100.0) / DS_SECONDS_PER_FRAME) + FRAME_SKIP_BIAS );
|
||||
// Don't need to save lastSetFrameSkip here since this code path assumes that
|
||||
// the frame limiter is disabled.
|
||||
framesToSkip += (int)((double)(lastSetFrameSkip - framesToSkip) * skipCurve[skipStep]);
|
||||
if (skipStep > 0)
|
||||
{
|
||||
skipStep--;
|
||||
}
|
||||
}
|
||||
|
||||
// Bound the frame skip.
|
||||
if (framesToSkip > (unsigned int)MAX_FRAME_SKIP)
|
||||
{
|
||||
framesToSkip = (unsigned int)MAX_FRAME_SKIP;
|
||||
lastSetFrameSkip = framesToSkip;
|
||||
}
|
||||
|
||||
*outFramesToSkip = framesToSkip;
|
||||
}
|
||||
else
|
||||
{
|
||||
*outFramesToSkip = 0;
|
||||
static const double frameRate100x = (double)FRAME_SKIP_AGGRESSIVENESS / (double)GetFrameAbsoluteTime(1.0/100.0);
|
||||
framesToSkip = (int)((double)elapsed * frameRate100x);
|
||||
}
|
||||
|
||||
unskipStep = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
framesToSkip = (int)((double)lastSetFrameSkip * unskipCurve[unskipStep]);
|
||||
if (unskipStep < 9)
|
||||
{
|
||||
unskipStep++;
|
||||
}
|
||||
|
||||
skipStep = 0;
|
||||
}
|
||||
|
||||
// Bound the frame skip.
|
||||
static const int kMaxFrameSkip = (int)MAX_FRAME_SKIP;
|
||||
if (framesToSkip > kMaxFrameSkip)
|
||||
{
|
||||
framesToSkip = kMaxFrameSkip;
|
||||
}
|
||||
|
||||
lastSetFrameSkip = framesToSkip;
|
||||
|
||||
return framesToSkip;
|
||||
}
|
||||
|
||||
uint64_t GetFrameAbsoluteTime(const double frameTimeScalar)
|
||||
{
|
||||
const uint64_t frameTimeNanoseconds = (uint64_t)(DS_SECONDS_PER_FRAME * 1000000000.0 * frameTimeScalar);
|
||||
const AbsoluteTime frameTimeAbsTime = NanosecondsToAbsolute(*(Nanoseconds *)&frameTimeNanoseconds);
|
||||
|
||||
return *(uint64_t *)&frameTimeAbsTime;
|
||||
}
|
||||
|
@@ -20,7 +20,7 @@
|
||||
#define STRING_DESMUME_SHORT_DESCRIPTION "Nintendo DS Emulator"
|
||||
#define STRING_DESMUME_FORUM_SITE "http://forums.desmume.org/index.php"
|
||||
#define STRING_DESMUME_TECH_SUPPORT_SITE "http://forums.desmume.org/viewforum.php?id=4"
|
||||
#define STRING_DESMUME_BUG_REPORT_SITE "http://sourceforge.net/tracker/?group_id=164579&atid=832291"
|
||||
#define STRING_DESMUME_BUG_REPORT_SITE "http://sourceforge.net/p/desmume/bugs"
|
||||
|
||||
// User Interface Localized Strings
|
||||
#define NSSTRING_TITLE_OPEN_ROM_PANEL NSLocalizedString(@"Open ROM", nil)
|
||||
@@ -194,12 +194,9 @@
|
||||
#define DS_FRAMES_PER_SECOND 59.8261 // Number of DS frames per second.
|
||||
#define DS_SECONDS_PER_FRAME (1.0 / DS_FRAMES_PER_SECOND) // The length of time in seconds that, ideally, a frame should be processed within.
|
||||
|
||||
#define FRAME_SKIP_AGGRESSIVENESS 10.0 // Must be a value between 0.0 (inclusive) and positive infinity.
|
||||
#define FRAME_SKIP_AGGRESSIVENESS 9.0 // Must be a value between 0.0 (inclusive) and positive infinity.
|
||||
// This value acts as a scalar multiple of the frame skip.
|
||||
#define FRAME_SKIP_SMOOTHNESS 0.90 // Must be a value between 0.00 (inclusive) and 1.00 (exclusive).
|
||||
// Values closer to 0.00 give better video smoothness, but makes the emulation timing more "jumpy."
|
||||
// Values closer to 1.00 makes the emulation timing more accurate, but makes the video look more "choppy."
|
||||
#define FRAME_SKIP_BIAS 0.5 // May be any real number. This value acts as a vector addition to the frame skip.
|
||||
#define FRAME_SKIP_BIAS 0.1 // May be any real number. This value acts as a vector addition to the frame skip.
|
||||
#define MAX_FRAME_SKIP (DS_FRAMES_PER_SECOND / 3.0)
|
||||
|
||||
#define SPU_SAMPLE_RATE 44100.0 // Samples per second
|
||||
|
@@ -101,6 +101,9 @@ typedef struct
|
||||
- (void) setMute:(BOOL)mute;
|
||||
- (NSInteger) filter;
|
||||
- (void) setFilter:(NSInteger)filter;
|
||||
- (NSString *) audioOutputEngineString;
|
||||
- (NSString *) spuInterpolationModeString;
|
||||
- (NSString *) spuSyncMethodString;
|
||||
- (void) handleSetVolume:(NSData *)volumeData;
|
||||
- (void) handleSetAudioOutputEngine:(NSData *)methodIdData;
|
||||
- (void) handleSetSpuAdvancedLogic:(NSData *)stateData;
|
||||
|
@@ -329,6 +329,87 @@
|
||||
[property setValue:[NSNumber numberWithInteger:filter] forKey:@"filter"];
|
||||
}
|
||||
|
||||
- (NSString *) audioOutputEngineString
|
||||
{
|
||||
NSString *theString = @"Uninitialized";
|
||||
|
||||
pthread_mutex_lock(self.mutexProducer);
|
||||
|
||||
SoundInterface_struct *soundCore = SPU_SoundCore();
|
||||
if(soundCore == NULL)
|
||||
{
|
||||
pthread_mutex_unlock(self.mutexProducer);
|
||||
return theString;
|
||||
}
|
||||
|
||||
const char *theName = soundCore->Name;
|
||||
theString = [NSString stringWithCString:theName encoding:NSUTF8StringEncoding];
|
||||
|
||||
pthread_mutex_unlock(self.mutexProducer);
|
||||
|
||||
return theString;
|
||||
}
|
||||
|
||||
- (NSString *) spuInterpolationModeString
|
||||
{
|
||||
NSString *theString = @"Unknown";
|
||||
NSInteger theMode = [self spuInterpolationMode];
|
||||
|
||||
switch (theMode)
|
||||
{
|
||||
case SPUInterpolation_None:
|
||||
theString = @"None";
|
||||
break;
|
||||
|
||||
case SPUInterpolation_Linear:
|
||||
theString = @"Linear";
|
||||
break;
|
||||
|
||||
case SPUInterpolation_Cosine:
|
||||
theString = @"Cosine";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return theString;
|
||||
}
|
||||
|
||||
- (NSString *) spuSyncMethodString
|
||||
{
|
||||
NSString *theString = @"Unknown";
|
||||
NSInteger theMode = [self spuSyncMode];
|
||||
NSInteger theMethod = [self spuSyncMethod];
|
||||
|
||||
if (theMode == ESynchMode_DualSynchAsynch)
|
||||
{
|
||||
theString = @"Dual SPU Sync/Async";
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (theMethod)
|
||||
{
|
||||
case ESynchMethod_N:
|
||||
theString = @"\"N\" Sync Method";
|
||||
break;
|
||||
|
||||
case ESynchMethod_Z:
|
||||
theString = @"\"Z\" Sync Method";
|
||||
break;
|
||||
|
||||
case ESynchMethod_P:
|
||||
theString = @"\"P\" Sync Method";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return theString;
|
||||
}
|
||||
|
||||
- (void)handlePortMessage:(NSPortMessage*)portMessage
|
||||
{
|
||||
NSInteger message = (NSInteger)[portMessage msgid];
|
||||
|
@@ -2,9 +2,9 @@
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</int>
|
||||
<string key="IBDocument.SystemVersion">12F37</string>
|
||||
<string key="IBDocument.SystemVersion">12F45</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">851</string>
|
||||
<string key="IBDocument.AppKitVersion">1187.39</string>
|
||||
<string key="IBDocument.AppKitVersion">1187.40</string>
|
||||
<string key="IBDocument.HIToolboxVersion">626.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@@ -12,7 +12,6 @@
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="1298"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -2679,11 +2678,9 @@
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<string key="NSWindowContentMaxSize">{1.7976931348623157e+308, 1.7976931348623157e+308}</string>
|
||||
<object class="NSView" key="NSWindowView" id="318805510">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{400, 100}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
|
||||
<string key="NSMaxSize">{1.7976931348623157e+308, 1.7976931348623157e+308}</string>
|
||||
@@ -2691,7 +2688,7 @@
|
||||
<bool key="NSWindowIsRestorable">YES</bool>
|
||||
</object>
|
||||
<object class="NSCustomView" id="773785227">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -3206,11 +3203,10 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{520, 422}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="842545935">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -3219,7 +3215,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{97, 463}, {96, 17}}</string>
|
||||
<reference key="NSSuperview" ref="842545935"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="858895078">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -3237,7 +3232,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{195, 457}, {265, 26}}</string>
|
||||
<reference key="NSSuperview" ref="842545935"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="813188155">
|
||||
<int key="NSCellFlags">-2076180416</int>
|
||||
@@ -3298,7 +3292,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{462, 457}, {116, 26}}</string>
|
||||
<reference key="NSSuperview" ref="842545935"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="909784582">
|
||||
<int key="NSCellFlags">-2076180416</int>
|
||||
@@ -3442,7 +3435,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{640, 394}</string>
|
||||
<reference key="NSSuperview" ref="7331472"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<bool key="NSControlAllowsExpansionToolTips">YES</bool>
|
||||
@@ -3451,7 +3443,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{640, 17}</string>
|
||||
<reference key="NSSuperview" ref="703692919"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSTableView" ref="66039540"/>
|
||||
</object>
|
||||
<object class="_NSCornerView" key="NSCornerView" id="753260230">
|
||||
@@ -3459,7 +3450,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{584, 0}, {16, 17}}</string>
|
||||
<reference key="NSSuperview" ref="908217942"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="NSTableColumns">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -3650,7 +3640,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 17}, {640, 394}}</string>
|
||||
<reference key="NSSuperview" ref="908217942"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="66039540"/>
|
||||
<reference key="NSDocView" ref="66039540"/>
|
||||
<reference key="NSBGColor" ref="856317944"/>
|
||||
@@ -3661,7 +3650,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{584, 17}, {15, 102}}</string>
|
||||
<reference key="NSSuperview" ref="908217942"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<reference key="NSTarget" ref="908217942"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
@@ -3672,7 +3660,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{1, 420}, {624, 15}}</string>
|
||||
<reference key="NSSuperview" ref="908217942"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<int key="NSsFlags">1</int>
|
||||
<reference key="NSTarget" ref="908217942"/>
|
||||
@@ -3688,7 +3675,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 0}, {640, 17}}</string>
|
||||
<reference key="NSSuperview" ref="908217942"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="23831683"/>
|
||||
<reference key="NSDocView" ref="23831683"/>
|
||||
<reference key="NSBGColor" ref="856317944"/>
|
||||
@@ -3698,14 +3684,12 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
</object>
|
||||
<string key="NSFrame">{{-1, 37}, {642, 412}}</string>
|
||||
<reference key="NSSuperview" ref="842545935"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="7331472"/>
|
||||
<int key="NSsFlags">133682</int>
|
||||
<reference key="NSVScroller" ref="1008919647"/>
|
||||
<reference key="NSHScroller" ref="656486530"/>
|
||||
<reference key="NSContentView" ref="7331472"/>
|
||||
<reference key="NSHeaderClipView" ref="703692919"/>
|
||||
<reference key="NSCornerView" ref="753260230"/>
|
||||
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
|
||||
<double key="NSMinMagnification">0.25</double>
|
||||
<double key="NSMaxMagnification">4</double>
|
||||
@@ -3715,7 +3699,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<reference key="NSNextResponder" ref="842545935"/>
|
||||
<string key="NSFrame">{{197, 12}, {247, 17}}</string>
|
||||
<reference key="NSSuperview" ref="842545935"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="223685874">
|
||||
<int key="NSCellFlags">605028416</int>
|
||||
@@ -3734,12 +3717,10 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{640, 495}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSClassName">InputPrefsView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="373257179">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -3748,7 +3729,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">12</int>
|
||||
<string key="NSFrame">{{13, 10}, {463, 401}}</string>
|
||||
<reference key="NSSuperview" ref="373257179"/>
|
||||
<reference key="NSWindow"/>
|
||||
<object class="NSMutableArray" key="NSTabViewItems">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTabViewItem" id="750316744">
|
||||
@@ -3773,7 +3753,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{72, 44}, {84, 17}}</string>
|
||||
<reference key="NSSuperview" ref="610612997"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1051872315">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -3791,7 +3770,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{44, 16}, {112, 17}}</string>
|
||||
<reference key="NSSuperview" ref="610612997"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="279286359">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -3809,7 +3787,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{158, 38}, {126, 26}}</string>
|
||||
<reference key="NSSuperview" ref="610612997"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="644484329">
|
||||
<int key="NSCellFlags">-2076180416</int>
|
||||
@@ -3902,7 +3879,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
</object>
|
||||
<string key="NSFrame">{{289, 14}, {72, 22}}</string>
|
||||
<reference key="NSSuperview" ref="610612997"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="689714106">
|
||||
<int key="NSCellFlags">-1804599231</int>
|
||||
@@ -3994,7 +3970,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{63, 72}, {93, 17}}</string>
|
||||
<reference key="NSSuperview" ref="610612997"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="86457779">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -4012,7 +3987,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{158, 66}, {126, 26}}</string>
|
||||
<reference key="NSSuperview" ref="610612997"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="977881385">
|
||||
<int key="NSCellFlags">-2076180416</int>
|
||||
@@ -4081,7 +4055,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{158, 11}, {126, 26}}</string>
|
||||
<reference key="NSSuperview" ref="610612997"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="729105354">
|
||||
<int key="NSCellFlags">-2076180416</int>
|
||||
@@ -4183,12 +4156,10 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {429, 100}}</string>
|
||||
<reference key="NSSuperview" ref="654619277"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 206}, {431, 116}}</string>
|
||||
<reference key="NSSuperview" ref="698863500"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -4232,7 +4203,6 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 14}, {100, 38}}</string>
|
||||
<reference key="NSSuperview" ref="713770080"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<int key="NSNumRows">2</int>
|
||||
@@ -4426,12 +4396,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {194, 62}}</string>
|
||||
<reference key="NSSuperview" ref="405894970"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{15, 53}, {196, 78}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -4465,7 +4433,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 14}, {150, 38}}</string>
|
||||
<reference key="NSSuperview" ref="533349872"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<int key="NSNumRows">2</int>
|
||||
@@ -4657,12 +4624,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {194, 62}}</string>
|
||||
<reference key="NSSuperview" ref="1057767226"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{218, 53}, {196, 78}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -4686,7 +4651,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 18}, {126, 17}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="418483299">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -4704,7 +4668,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{339, 16}, {72, 22}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="134325674">
|
||||
<int key="NSCellFlags">-1804599231</int>
|
||||
@@ -4787,7 +4750,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{144, 12}, {189, 26}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSSliderCell" key="NSCell" id="414720816">
|
||||
<int key="NSCellFlags">-2080112384</int>
|
||||
@@ -4810,7 +4772,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{305, 38}, {38, 11}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="494052588">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -4832,7 +4793,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{263, 38}, {38, 11}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="273276002">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -4850,7 +4810,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{220, 38}, {38, 11}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="647568442">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -4868,7 +4827,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{178, 38}, {38, 11}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="386451738">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -4886,7 +4844,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{137, 38}, {38, 11}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1069527907">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -4902,12 +4859,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {429, 141}}</string>
|
||||
<reference key="NSSuperview" ref="367271593"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 45}, {431, 157}}</string>
|
||||
<reference key="NSSuperview" ref="698863500"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -4929,7 +4884,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{10, 33}, {443, 355}}</string>
|
||||
<reference key="NSSuperview" ref="286093627"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<string key="NSLabel">Display Views</string>
|
||||
<reference key="NSColor" ref="266180242"/>
|
||||
@@ -5931,8 +5885,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{489, 425}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="704316683">
|
||||
@@ -6788,7 +6740,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="748902585">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -6797,7 +6749,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">12</int>
|
||||
<string key="NSFrame">{{13, 10}, {528, 349}}</string>
|
||||
<reference key="NSSuperview" ref="748902585"/>
|
||||
<reference key="NSWindow"/>
|
||||
<object class="NSMutableArray" key="NSTabViewItems">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTabViewItem" id="1008833987">
|
||||
@@ -6822,7 +6773,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 32}, {197, 18}}</string>
|
||||
<reference key="NSSuperview" ref="330186328"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="152711854">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
@@ -6846,7 +6796,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 12}, {217, 18}}</string>
|
||||
<reference key="NSSuperview" ref="330186328"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="683227590">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -6868,12 +6817,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 58}}</string>
|
||||
<reference key="NSSuperview" ref="699930286"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 229}, {496, 74}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -6907,7 +6854,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 14}, {165, 38}}</string>
|
||||
<reference key="NSSuperview" ref="16233"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<int key="NSNumRows">2</int>
|
||||
@@ -7101,7 +7047,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{243, 15}, {72, 17}}</string>
|
||||
<reference key="NSSuperview" ref="16233"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="206408938">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -7119,7 +7064,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{320, 13}, {50, 22}}</string>
|
||||
<reference key="NSSuperview" ref="16233"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1033938841">
|
||||
<int key="NSCellFlags">-1804599231</int>
|
||||
@@ -7196,7 +7140,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{371, 10}, {19, 27}}</string>
|
||||
<reference key="NSSuperview" ref="16233"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSStepperCell" key="NSCell" id="401365162">
|
||||
<int key="NSCellFlags">67895328</int>
|
||||
@@ -7214,12 +7157,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 62}}</string>
|
||||
<reference key="NSSuperview" ref="1034534989"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 147}, {496, 78}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -7253,7 +7194,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 32}, {145, 18}}</string>
|
||||
<reference key="NSSuperview" ref="808083999"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="340220192">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -7277,7 +7217,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 12}, {118, 18}}</string>
|
||||
<reference key="NSSuperview" ref="808083999"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="16571944">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -7299,12 +7238,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 58}}</string>
|
||||
<reference key="NSSuperview" ref="337932383"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 69}, {496, 74}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -7338,7 +7275,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 12}, {462, 18}}</string>
|
||||
<reference key="NSSuperview" ref="675831467"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="830122320">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
@@ -7360,12 +7296,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 38}}</string>
|
||||
<reference key="NSSuperview" ref="808054783"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 11}, {496, 54}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
@@ -7387,7 +7321,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<string key="NSFrame">{{10, 33}, {508, 303}}</string>
|
||||
<reference key="NSSuperview" ref="626099"/>
|
||||
<reference key="NSWindow"/>
|
||||
</object>
|
||||
<string key="NSLabel">General Settings</string>
|
||||
<reference key="NSColor" ref="266180242"/>
|
||||
@@ -7797,8 +7730,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{554, 373}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="660705428">
|
||||
@@ -23199,13 +23130,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<bool key="NSFilterRestrictsInsertion">YES</bool>
|
||||
</object>
|
||||
<object class="NSUserDefaultsController" id="178548672">
|
||||
<object class="NSMutableArray" key="NSDeclaredKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>General_LoadROMCompletelyInRAM</string>
|
||||
<string>General_LoadROMCompletelyIntoRAM</string>
|
||||
<string>General_StreamLoadRomFile</string>
|
||||
<string>General_StreamLoadRomData</string>
|
||||
</object>
|
||||
<bool key="NSSharedInstance">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
@@ -32938,6 +32862,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<int key="connectionID">8328</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">cdsCoreController</string>
|
||||
<reference key="source" ref="1057202244"/>
|
||||
<reference key="destination" ref="582168938"/>
|
||||
</object>
|
||||
<int key="connectionID">8329</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">emuControlController</string>
|
||||
<reference key="source" ref="1057202244"/>
|
||||
<reference key="destination" ref="258098641"/>
|
||||
</object>
|
||||
<int key="connectionID">8330</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
@@ -49594,7 +49534,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">8328</int>
|
||||
<int key="maxID">8330</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
@@ -51482,6 +51422,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>cdsCoreController</string>
|
||||
<string>emuControlController</string>
|
||||
<string>romInfoController</string>
|
||||
<string>troubleshootingWindowController</string>
|
||||
<string>viewBugReport</string>
|
||||
@@ -51493,6 +51435,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>NSObjectController</string>
|
||||
<string>NSObjectController</string>
|
||||
<string>NSObjectController</string>
|
||||
<string>NSObjectController</string>
|
||||
<string>NSView</string>
|
||||
<string>NSView</string>
|
||||
<string>NSView</string>
|
||||
@@ -51503,6 +51447,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>cdsCoreController</string>
|
||||
<string>emuControlController</string>
|
||||
<string>romInfoController</string>
|
||||
<string>troubleshootingWindowController</string>
|
||||
<string>viewBugReport</string>
|
||||
@@ -51512,6 +51458,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">cdsCoreController</string>
|
||||
<string key="candidateClassName">NSObjectController</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">emuControlController</string>
|
||||
<string key="candidateClassName">NSObjectController</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">romInfoController</string>
|
||||
<string key="candidateClassName">NSObjectController</string>
|
||||
|
@@ -34,6 +34,8 @@ enum TroubleshootingViewID
|
||||
NSWindow *window;
|
||||
NSObjectController *troubleshootingWindowController;
|
||||
NSObjectController *romInfoController;
|
||||
NSObjectController *emuControlController;
|
||||
NSObjectController *cdsCoreController;
|
||||
|
||||
NSView *viewSupportRequest;
|
||||
NSView *viewBugReport;
|
||||
@@ -48,6 +50,8 @@ enum TroubleshootingViewID
|
||||
@property (readonly) IBOutlet NSWindow *window;
|
||||
@property (readonly) IBOutlet NSObjectController *troubleshootingWindowController;
|
||||
@property (readonly) IBOutlet NSObjectController *romInfoController;
|
||||
@property (readonly) IBOutlet NSObjectController *emuControlController;
|
||||
@property (readonly) IBOutlet NSObjectController *cdsCoreController;
|
||||
@property (readonly) IBOutlet NSView *viewSupportRequest;
|
||||
@property (readonly) IBOutlet NSView *viewBugReport;
|
||||
@property (readonly) IBOutlet NSView *viewFinishedForm;
|
||||
|
@@ -16,9 +16,14 @@
|
||||
*/
|
||||
|
||||
#import "troubleshootingWindowDelegate.h"
|
||||
#import "EmuControllerDelegate.h"
|
||||
|
||||
#import "cocoa_util.h"
|
||||
#import "cocoa_globals.h"
|
||||
#import "cocoa_cheat.h"
|
||||
#import "cocoa_core.h"
|
||||
#import "cocoa_GPU.h"
|
||||
#import "cocoa_output.h"
|
||||
|
||||
@implementation TroubleshootingWindowDelegate
|
||||
|
||||
@@ -26,6 +31,8 @@
|
||||
@synthesize window;
|
||||
@synthesize troubleshootingWindowController;
|
||||
@synthesize romInfoController;
|
||||
@synthesize emuControlController;
|
||||
@synthesize cdsCoreController;
|
||||
@synthesize viewSupportRequest;
|
||||
@synthesize viewBugReport;
|
||||
@synthesize viewFinishedForm;
|
||||
@@ -68,6 +75,8 @@
|
||||
- (IBAction) continueToFinalForm:(id)sender
|
||||
{
|
||||
static NSString *unspecifiedStr = @"Unspecified"; // Do not expose localized version for this NSString -- we want this to be in English
|
||||
EmuControllerDelegate *emuControl = (EmuControllerDelegate *)[emuControlController content];
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
|
||||
// Force end of editing of any text fields.
|
||||
[window makeFirstResponder:nil];
|
||||
@@ -97,6 +106,53 @@
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nModel Identifier: "] stringByAppendingString:[CocoaDSUtil modelIdentifierString]];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nROM Name: "] stringByAppendingString:romNameStr];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nROM Serial: "] stringByAppendingString:romSerialStr];
|
||||
finalFormTextStr = [finalFormTextStr stringByAppendingString:@"\n-----------------------------------"];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nEmulation Speed: "] stringByAppendingString:([cdsCore isSpeedLimitEnabled] ? [NSString stringWithFormat:@"%1.2fx", [emuControl lastSetSpeedScalar]] : @"Unlimited")];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nAuto Frame Skip: "] stringByAppendingString:([cdsCore isFrameSkipEnabled] ? @"YES" : @"NO")];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nSLOT-1 Device Type: "] stringByAppendingString:[cdsCore slot1DeviceTypeString]];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nSLOT-2 Device Type: "] stringByAppendingString:[cdsCore slot2DeviceTypeString]];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nAdvanced Bus-Level Timing: "] stringByAppendingString:([cdsCore emuFlagAdvancedBusLevelTiming] ? @"YES" : @"NO")];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nRigorous 3D Rendering Timing: "] stringByAppendingString:([cdsCore emuFlagRigorousTiming] ? @"YES" : @"NO")];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nCPU Emulation Engine: "] stringByAppendingString:([cdsCore cpuEmulationEngine] == CPU_EMULATION_ENGINE_DYNAMIC_RECOMPILER ? [NSString stringWithFormat:@"%@ (BlockSize=%li)", [cdsCore cpuEmulationEngineString], (long)[cdsCore maxJITBlockSize]] : [cdsCore cpuEmulationEngineString])];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nExternal BIOS: "] stringByAppendingString:([cdsCore emuFlagUseExternalBios] ? @"YES" : @"NO")];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nExternal Firmware: "] stringByAppendingString:([cdsCore emuFlagUseExternalFirmware] ? @"YES" : @"NO")];
|
||||
|
||||
NSString *render3DEngineDetails = [[cdsCore cdsGPU] render3DRenderingEngineString];
|
||||
switch ([[cdsCore cdsGPU] render3DRenderingEngine])
|
||||
{
|
||||
case CORE3DLIST_NULL:
|
||||
break;
|
||||
|
||||
case CORE3DLIST_SWRASTERIZE:
|
||||
render3DEngineDetails = [NSString stringWithFormat:@"%@ (HighResColor=%@, EdgeMark=%@, Fog=%@, DepthCompare=%ld)",
|
||||
[[cdsCore cdsGPU] render3DRenderingEngineString],
|
||||
([[cdsCore cdsGPU] render3DHighPrecisionColorInterpolation] ? @"YES" : @"NO"),
|
||||
([[cdsCore cdsGPU] render3DEdgeMarking] ? @"YES" : @"NO"),
|
||||
([[cdsCore cdsGPU] render3DFog] ? @"YES" : @"NO"),
|
||||
(unsigned long)[[cdsCore cdsGPU] render3DDepthComparisonThreshold]];
|
||||
break;
|
||||
|
||||
case CORE3DLIST_OPENGL:
|
||||
render3DEngineDetails = [NSString stringWithFormat:@"%@ (MSAA=%@)",
|
||||
[[cdsCore cdsGPU] render3DRenderingEngineString],
|
||||
([[cdsCore cdsGPU] render3DMultisample] ? @"YES" : @"NO")];
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\n3D Renderer - Engine: "] stringByAppendingString:render3DEngineDetails];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\n3D Renderer - Line Hack: "] stringByAppendingString:([[cdsCore cdsGPU] render3DLineHack] ? @"YES" : @"NO")];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\n3D Renderer - Textures: "] stringByAppendingString:([[cdsCore cdsGPU] render3DTextures] ? @"YES" : @"NO")];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\n3D Renderer - Thread Count: "] stringByAppendingString:([[cdsCore cdsGPU] render3DThreads] == 0 ? @"Automatic" : [NSString stringWithFormat:@"%ld", (unsigned long)[[cdsCore cdsGPU] render3DThreads]])];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nAudio - Output Engine: "] stringByAppendingString:[[emuControl cdsSpeaker] audioOutputEngineString]];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nAudio - Advanced SPU Logic: "] stringByAppendingString:([[emuControl cdsSpeaker] spuAdvancedLogic] ? @"YES" : @"NO")];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nAudio - Sound Interpolation Method: "] stringByAppendingString:[[emuControl cdsSpeaker] spuInterpolationModeString]];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nAudio - Sound Synchronization Method: "] stringByAppendingString:[[emuControl cdsSpeaker] spuSyncMethodString]];
|
||||
finalFormTextStr = [finalFormTextStr stringByAppendingString:@"\n-----------------------------------"];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nCheats: "] stringByAppendingString:([cdsCore isCheatingEnabled] ? [NSString stringWithFormat:@"YES (ActiveCheatCount=%ld)", (unsigned long)[[emuControl cdsCheats] activeCount]] : @"NO")];
|
||||
finalFormTextStr = [finalFormTextStr stringByAppendingString:@"\n-----------------------------------"];
|
||||
|
||||
if ([window contentView] == viewSupportRequest)
|
||||
{
|
||||
@@ -106,7 +162,7 @@
|
||||
supportRequestTextStr = unspecifiedStr;
|
||||
}
|
||||
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\n\nSupport Request: "] stringByAppendingString:supportRequestTextStr];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nSupport Request: "] stringByAppendingString:supportRequestTextStr];
|
||||
[bindings setValue:NSSTRING_HELP_COPY_PASTE_TECH_SUPPORT forKey:@"copyPasteHelpText"];
|
||||
[bindings setValue:NSSTRING_TITLE_GO_TECH_SUPPORT_WEBPAGE_TITLE forKey:@"goWebpageButtonTitle"];
|
||||
}
|
||||
@@ -124,7 +180,7 @@
|
||||
bugReportExpectedTextStr = unspecifiedStr;
|
||||
}
|
||||
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\n\nObserved Behavior: "] stringByAppendingString:bugReportObservedTextStr];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\nObserved Behavior: "] stringByAppendingString:bugReportObservedTextStr];
|
||||
finalFormTextStr = [[finalFormTextStr stringByAppendingString:@"\n\nExpected Behavior: "] stringByAppendingString:bugReportExpectedTextStr];
|
||||
[bindings setValue:NSSTRING_HELP_COPY_PASTE_BUG_REPORT forKey:@"copyPasteHelpText"];
|
||||
[bindings setValue:NSSTRING_TITLE_GO_BUG_REPORT_WEBPAGE_TITLE forKey:@"goWebpageButtonTitle"];
|
||||
|
@@ -84,7 +84,7 @@ void CommandLine::loadCommonOptions()
|
||||
//but also see the gtk port for an example of how to combine this with other options
|
||||
//(you may need to use ifdefs to cause options to be entered in the desired order)
|
||||
static const GOptionEntry options[] = {
|
||||
{ "load-type", 0, 0, G_OPTION_ARG_INT, &_load_to_memory, "ROM loading method, 0 - stream from disk (like an iso), 1 - load entirely to RAM (default 1)", "LOAD_TYPE"},
|
||||
{ "load-type", 0, 0, G_OPTION_ARG_INT, &_load_to_memory, "ROM loading method, 0 - stream from disk (like an iso), 1 - load entirely to RAM (default 0)", "LOAD_TYPE"},
|
||||
{ "load-slot", 0, 0, G_OPTION_ARG_INT, &load_slot, "Loads savestate from slot NUM", "NUM"},
|
||||
{ "play-movie", 0, 0, G_OPTION_ARG_FILENAME, &_play_movie_file, "Specifies a dsm format movie to play", "PATH_TO_PLAY_MOVIE"},
|
||||
{ "record-movie", 0, 0, G_OPTION_ARG_FILENAME, &_record_movie_file, "Specifies a path to a new dsm format movie", "PATH_TO_RECORD_MOVIE"},
|
||||
|
@@ -601,8 +601,11 @@ std::string CFIRMWARE::GetExternalFilePath()
|
||||
{
|
||||
std::string fwPath = CommonSettings.Firmware;
|
||||
std::string fwFileName = Path::GetFileNameFromPathWithoutExt(fwPath);
|
||||
std::string configPath = path.pathToBattery;
|
||||
std::string finalPath = configPath + DIRECTORY_DELIMITER_CHAR + fwFileName + FILE_EXT_DELIMITER_CHAR + FW_CONFIG_FILE_EXT;
|
||||
char configPath[MAX_PATH] = {0};
|
||||
path.getpath(path.BATTERY, configPath);
|
||||
if (configPath[strlen(configPath)-1] == DIRECTORY_DELIMITER_CHAR)
|
||||
configPath[strlen(configPath)-1] = 0;
|
||||
std::string finalPath = std::string(configPath) + DIRECTORY_DELIMITER_CHAR + fwFileName + FILE_EXT_DELIMITER_CHAR + FW_CONFIG_FILE_EXT;
|
||||
|
||||
return finalPath;
|
||||
}
|
||||
|
@@ -28,25 +28,43 @@ static bool glx_beginOpenGL(void) { return 1; }
|
||||
static void glx_endOpenGL(void) { }
|
||||
static bool glx_init(void) { return true; }
|
||||
|
||||
static GLXContext ctx;
|
||||
static GLXPbuffer pbuf;
|
||||
|
||||
int deinit_glx_3Demu(void)
|
||||
{
|
||||
Display *dpy = glXGetCurrentDisplay();
|
||||
|
||||
if (dpy)
|
||||
{
|
||||
glXDestroyPbuffer(dpy, pbuf);
|
||||
glXDestroyContext(dpy, ctx);
|
||||
|
||||
XCloseDisplay(dpy);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int init_glx_3Demu(void)
|
||||
{
|
||||
Display *dpy = XOpenDisplay(NULL);
|
||||
XVisualInfo *vis;
|
||||
GLXContext ctx;
|
||||
GLXFBConfig *cfg;
|
||||
GLXPbuffer pbuf;
|
||||
int maj, min;
|
||||
|
||||
if (!dpy)
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
// Check if GLX is present
|
||||
if (!glXQueryVersion(dpy, &maj, &min))
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
// We need GLX 1.3 at least
|
||||
if (maj < 1 || (maj == 1 && min < 3))
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
const int vis_attr[] = {
|
||||
GLX_RGBA,
|
||||
@@ -62,7 +80,7 @@ int init_glx_3Demu(void)
|
||||
vis = glXChooseVisual(dpy, DefaultScreen(dpy), (int *)&vis_attr);
|
||||
|
||||
if (!vis)
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
const int fb_attr[] = {
|
||||
GLX_RENDER_TYPE, GLX_RGBA_BIT,
|
||||
@@ -82,7 +100,7 @@ int init_glx_3Demu(void)
|
||||
cfg = glXChooseFBConfig(dpy, DefaultScreen(dpy), (int *)&fb_attr, &configs);
|
||||
|
||||
if (!cfg)
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
const int pbuf_attr[] = {
|
||||
GLX_PBUFFER_WIDTH, 256,
|
||||
@@ -98,10 +116,10 @@ int init_glx_3Demu(void)
|
||||
ctx = glXCreateContext(dpy, vis, NULL, true);
|
||||
|
||||
if (!ctx)
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
if (!glXMakeContextCurrent(dpy, pbuf, pbuf, ctx))
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
printf("OGL/GLX Renderer has finished the initialization.\n");
|
||||
|
||||
@@ -109,7 +127,7 @@ int init_glx_3Demu(void)
|
||||
oglrender_beginOpenGL = glx_beginOpenGL;
|
||||
oglrender_endOpenGL = glx_endOpenGL;
|
||||
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // HAVE_GLX
|
||||
|
@@ -19,5 +19,6 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_GL_GLX
|
||||
int init_glx_3Demu(void);
|
||||
int init_glx_3Demu(void);
|
||||
int deinit_glx_3Demu(void);
|
||||
#endif
|
||||
|
@@ -2464,6 +2464,12 @@ common_gtk_main( class configured_features *my_config)
|
||||
|
||||
desmume_free();
|
||||
|
||||
#if defined(HAVE_LIBOSMESA)
|
||||
deinit_osmesa_3Demu();
|
||||
#elif defined(HAVE_GL_GLX)
|
||||
deinit_glx_3Demu();
|
||||
#endif
|
||||
|
||||
if ( !gtk_fps_limiter_disabled) {
|
||||
/* tidy up the FPS limiter timer and semaphore */
|
||||
SDL_RemoveTimer( limiter_timer);
|
||||
|
@@ -28,18 +28,41 @@ static bool osmesa_beginOpenGL(void) { return 1; }
|
||||
static void osmesa_endOpenGL(void) { }
|
||||
static bool osmesa_init(void) { return true; }
|
||||
|
||||
int init_osmesa_3Demu(void) {
|
||||
void * buffer;
|
||||
OSMesaContext ctx;
|
||||
static void * buffer = NULL;
|
||||
static OSMesaContext ctx;
|
||||
|
||||
ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);
|
||||
buffer = malloc(256 * 192 * 4);
|
||||
OSMesaMakeCurrent(ctx, buffer, GL_UNSIGNED_BYTE, 256, 192);
|
||||
void deinit_osmesa_3Demu (void)
|
||||
{
|
||||
free(buffer);
|
||||
OSMesaDestroyContext(ctx);
|
||||
}
|
||||
|
||||
oglrender_init = osmesa_init;
|
||||
oglrender_beginOpenGL = osmesa_beginOpenGL;
|
||||
oglrender_endOpenGL = osmesa_endOpenGL;
|
||||
int init_osmesa_3Demu(void)
|
||||
{
|
||||
if (!ctx)
|
||||
{
|
||||
printf("OSMesaCreateContext failed!\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
return 1;
|
||||
buffer = malloc(256 * 192 * 4);
|
||||
if (!buffer)
|
||||
{
|
||||
printf("Could not allocate enough memory!\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!OSMesaMakeCurrent(ctx, buffer, GL_UNSIGNED_BYTE, 256, 192))
|
||||
{
|
||||
printf("OSMesaMakeCurrent failed!\n");
|
||||
free(buffer);
|
||||
return false;
|
||||
}
|
||||
|
||||
oglrender_init = osmesa_init;
|
||||
oglrender_beginOpenGL = osmesa_beginOpenGL;
|
||||
oglrender_endOpenGL = osmesa_endOpenGL;
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
@@ -19,5 +19,6 @@
|
||||
*/
|
||||
|
||||
#ifdef HAVE_LIBOSMESA
|
||||
int init_osmesa_3Demu( void);
|
||||
int init_osmesa_3Demu(void);
|
||||
void deinit_osmesa_3Demu(void);
|
||||
#endif
|
||||
|
@@ -256,10 +256,10 @@ typedef int desmume_BOOL;
|
||||
#ifdef LOCAL_BE /* local arch is big endian */
|
||||
# define LE_TO_LOCAL_16(x) ((((x)&0xff)<<8)|(((x)>>8)&0xff))
|
||||
# define LE_TO_LOCAL_32(x) ((((x)&0xff)<<24)|(((x)&0xff00)<<8)|(((x)>>8)&0xff00)|(((x)>>24)&0xff))
|
||||
# define LE_TO_LOCAL_64(x) ((((x)&0xff)<<56)|(((x)&0xff00)<<40)|(((x)&0xff0000)<<24)|(((x)&0xff000000)<<8)|(((x)>>8)&0xff000000)|(((x)>>24)&0xff00)|(((x)>>40)&0xff00)|(((x)>>56)&0xff))
|
||||
# define LE_TO_LOCAL_64(x) ((((x)&0xff)<<56)|(((x)&0xff00)<<40)|(((x)&0xff0000)<<24)|(((x)&0xff000000)<<8)|(((x)>>8)&0xff000000)|(((x)>>24)&0xff0000)|(((x)>>40)&0xff00)|(((x)>>56)&0xff))
|
||||
# define LOCAL_TO_LE_16(x) ((((x)&0xff)<<8)|(((x)>>8)&0xff))
|
||||
# define LOCAL_TO_LE_32(x) ((((x)&0xff)<<24)|(((x)&0xff00)<<8)|(((x)>>8)&0xff00)|(((x)>>24)&0xff))
|
||||
# define LOCAL_TO_LE_64(x) ((((x)&0xff)<<56)|(((x)&0xff00)<<40)|(((x)&0xff0000)<<24)|(((x)&0xff000000)<<8)|(((x)>>8)&0xff000000)|(((x)>>24)&0xff00)|(((x)>>40)&0xff00)|(((x)>>56)&0xff))
|
||||
# define LOCAL_TO_LE_64(x) ((((x)&0xff)<<56)|(((x)&0xff00)<<40)|(((x)&0xff0000)<<24)|(((x)&0xff000000)<<8)|(((x)>>8)&0xff000000)|(((x)>>24)&0xff0000)|(((x)>>40)&0xff00)|(((x)>>56)&0xff))
|
||||
#else /* local arch is little endian */
|
||||
# define LE_TO_LOCAL_16(x) (x)
|
||||
# define LE_TO_LOCAL_32(x) (x)
|
||||
|
@@ -68,14 +68,14 @@
|
||||
*/
|
||||
int DetectRomType(const Header& header, char* secure)
|
||||
{
|
||||
unsigned int * data = (unsigned int*)(secure);
|
||||
|
||||
const u64 data = LE_TO_LOCAL_64(*(u64 *)secure);
|
||||
|
||||
//this is attempting to check for an utterly invalid nds header
|
||||
if(header.unitcode < 0 && header.unitcode > 3) return ROMTYPE_INVALID;
|
||||
|
||||
if(header.unitcode > 3) return ROMTYPE_INVALID;
|
||||
|
||||
if (header.arm9_rom_offset < 0x4000) return ROMTYPE_HOMEBREW;
|
||||
if (data[0] == 0x00000000 && data[1] == 0x00000000) return ROMTYPE_MULTIBOOT;
|
||||
if (data[0] == 0xE7FFDEFF && data[1] == 0xE7FFDEFF) return ROMTYPE_NDSDUMPED;
|
||||
else if (data == 0x0000000000000000ULL) return ROMTYPE_MULTIBOOT;
|
||||
else if (data == 0xE7FFDEFFE7FFDEFFULL) return ROMTYPE_NDSDUMPED;
|
||||
//TODO
|
||||
//for (int i=0x200; i<0x4000; i++)
|
||||
// if (romdata[i]) return ROMTYPE_MASKROM; // found something odd ;)
|
||||
|
@@ -32,12 +32,13 @@ const char *team[] = {
|
||||
"Guillaume Duhamel",
|
||||
"Normmatt",
|
||||
"Riccardo Magliocchetti",
|
||||
"Max Tabachenko (CrazyMax)",
|
||||
"CrazyMax",
|
||||
"zeromus",
|
||||
"rogerman",
|
||||
"Luigi__",
|
||||
"",
|
||||
"Contributors\1",
|
||||
"Bernat Mu<4D>oz (shash)",
|
||||
"Allustar",
|
||||
"amponzi",
|
||||
"Anthony Molinaro",
|
||||
@@ -52,7 +53,6 @@ const char *team[] = {
|
||||
"Pascal Giard (evilynux)",
|
||||
"Ben Jaques (masscat)",
|
||||
"Jeff Bland",
|
||||
"Bernat Mu<4D>oz (shash)",
|
||||
"matusz",
|
||||
"nitsuja",
|
||||
"gocha",
|
||||
|
@@ -2937,7 +2937,7 @@ int _main()
|
||||
|
||||
path.ReadPathSettings();
|
||||
|
||||
CommonSettings.loadToMemory = GetPrivateProfileBool("General", "loadType", true, IniName);
|
||||
CommonSettings.loadToMemory = GetPrivateProfileBool("General", "ROM Loading Mode", false, IniName);
|
||||
CommonSettings.cheatsDisable = GetPrivateProfileBool("General", "cheatsDisable", false, IniName);
|
||||
CommonSettings.autodetectBackupMethod = GetPrivateProfileInt("General", "autoDetectMethod", 0, IniName);
|
||||
CommonSettings.backupSave = GetPrivateProfileBool("General", "backupSave", false, IniName);
|
||||
@@ -3515,7 +3515,7 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
|
||||
static const bool defaultConsoleEnable = false;
|
||||
#endif
|
||||
|
||||
gShowConsole = GetPrivateProfileBool("Display", "Show Console", defaultConsoleEnable, IniName);
|
||||
gShowConsole = GetPrivateProfileBool("Console", "Show", defaultConsoleEnable, IniName);
|
||||
gConsoleTopmost = GetPrivateProfileBool("Console", "Always On Top", false, IniName);
|
||||
|
||||
if (gShowConsole)
|
||||
@@ -5826,12 +5826,12 @@ DOKEYDOWN:
|
||||
|
||||
case ID_STREAMFROMDISK:
|
||||
CommonSettings.loadToMemory = false;
|
||||
WritePrivateProfileBool("General", "loadType", CommonSettings.loadToMemory, IniName);
|
||||
WritePrivateProfileBool("General", "ROM Loading Mode", CommonSettings.loadToMemory, IniName);
|
||||
return 0;
|
||||
|
||||
case ID_LOADTORAM:
|
||||
CommonSettings.loadToMemory = true;
|
||||
WritePrivateProfileBool("General", "loadType", CommonSettings.loadToMemory, IniName);
|
||||
WritePrivateProfileBool("General", "ROM Loading Mode", CommonSettings.loadToMemory, IniName);
|
||||
return 0;
|
||||
|
||||
case IDM_3DCONFIG:
|
||||
|
Reference in New Issue
Block a user