Skip to content

Commit d5e4ed5

Browse files
committed
GPU: Major refactor that simplifies the code and moves all GPU settings changes (except for 3D-related settings) to occur right before the beginning of line zero. All ports have been significantly affected by this change.
- GPU core: GPU engine class instantiations are now allocated with new and delete operators, rather than using static Allocate() and FinalizeAndDeallocate() methods. - GPU core: GPU engines now reference an assigned GPUSubsystem object, rather than referencing the GPU global variable. - Cocoa Port: Move all CGL context creation code to its own appropriate file. This now follows the same code pattern as WGL, GLX, EGL, and SDL. - Windows Port: Reduce host memory usage for video framebuffers by using the framebuffer page system in GPUSubsystem directly instead of copying to separate DisplayBuffer structs. - WIndows Port: Slightly improve overall video performance for both DirectDraw and OpenGL by eliminating one framebuffer copy. - Windows Port: Significantly improve OpenGL video performance further (when running without video magnification filters) through better texture management, and also by eliminating one additional framebuffer copy. - Windows Port: Virtually eliminate all CPU usage when the emulation is idle by eliminating periodic video redrawing. - Windows Port: Greatly improve HUD redrawing when the emulation is idle. Window redrawing can now be up to the refresh rate of the host monitor. - Windows Port: Fix a bug where changing the video magnification filter would cause a memory leak. - GTK2 Port Only: Now supports vector fonts for HUD drawing via AGG2D_USE_VECTORFONTS, just like how the GTK3 port does it. - GTK2 / GTK3 Ports: The Code::Blocks project file now defines AGG2D_USE_VECTORFONTS for both ports. - GTK2 / GTK3 Ports: Maximum GPU Scaling Factor increased from 10.0 to 16.0. This now matches the maximum GPU Scaling Factor for the Cocoa and Windows ports. - GTK2 / GTK3 Ports: The default color format is now 18-bit RGB666 instead of 15-bit RGB555. This is the actual color format for the NDS, and now matches the default color format for the Cocoa and Windows ports. - GTK2 / GTK3 Ports: For anyone who cares to implement this -- it is now possible to set the video output color format, as the code is now ready for it. (Just set up some UI to call gtk*Event->SetColorFormat(), passing in an NDSColorFormat enum value to set the color format.) - GTK2 / GTK3 Ports: Fix a bug where taking screenshots would fail.
1 parent 815a70c commit d5e4ed5

File tree

33 files changed

+3003
-1860
lines changed

33 files changed

+3003
-1860
lines changed

desmume/src/GPU.cpp

Lines changed: 259 additions & 231 deletions
Large diffs are not rendered by default.

desmume/src/GPU.h

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,6 +1359,8 @@ typedef struct
13591359
GPUEngineTargetState target;
13601360
} GPUEngineCompositorInfo;
13611361

1362+
class GPUSubsystem;
1363+
13621364
class GPUEngineBase
13631365
{
13641366
protected:
@@ -1399,6 +1401,8 @@ class GPUEngineBase
13991401
CACHE_ALIGN u8 _deferredIndexNative[GPU_FRAMEBUFFER_NATIVE_WIDTH * 4];
14001402
CACHE_ALIGN u16 _deferredColorNative[GPU_FRAMEBUFFER_NATIVE_WIDTH * 4];
14011403

1404+
GPUSubsystem *_gpuSystem;
1405+
14021406
bool _needExpandSprColorCustom;
14031407
u16 *_sprColorCustom;
14041408
u8 *_sprAlphaCustom;
@@ -1536,6 +1540,9 @@ class GPUEngineBase
15361540
GPUEngineBase();
15371541
virtual ~GPUEngineBase();
15381542

1543+
GPUSubsystem* GetGPUSystem();
1544+
void SetGPUSystem(GPUSubsystem *theGPU);
1545+
15391546
virtual void Reset();
15401547

15411548
void SetupBuffers();
@@ -1609,10 +1616,6 @@ class GPUEngineBase
16091616

16101617
class GPUEngineA : public GPUEngineBase
16111618
{
1612-
private:
1613-
GPUEngineA();
1614-
~GPUEngineA();
1615-
16161619
protected:
16171620
CACHE_ALIGN u16 _fifoLine16[GPU_FRAMEBUFFER_NATIVE_WIDTH];
16181621
CACHE_ALIGN Color4u8 _fifoLine32[GPU_FRAMEBUFFER_NATIVE_WIDTH];
@@ -1671,8 +1674,10 @@ class GPUEngineA : public GPUEngineBase
16711674
void _HandleDisplayModeMainMemory(const GPUEngineLineInfo &lineInfo);
16721675

16731676
public:
1674-
static GPUEngineA* Allocate();
1675-
void FinalizeAndDeallocate();
1677+
static void* operator new(size_t size);
1678+
static void operator delete(void *p);
1679+
GPUEngineA();
1680+
virtual ~GPUEngineA();
16761681

16771682
void ParseReg_DISPCAPCNT();
16781683
bool IsLineCaptureNative(const size_t blockID, const size_t blockLine);
@@ -1697,13 +1702,11 @@ class GPUEngineA : public GPUEngineBase
16971702

16981703
class GPUEngineB : public GPUEngineBase
16991704
{
1700-
private:
1701-
GPUEngineB();
1702-
~GPUEngineB();
1703-
17041705
public:
1705-
static GPUEngineB* Allocate();
1706-
void FinalizeAndDeallocate();
1706+
static void* operator new(size_t size);
1707+
static void operator delete(void *p);
1708+
GPUEngineB();
1709+
virtual ~GPUEngineB();
17071710

17081711
virtual void Reset();
17091712

@@ -1714,6 +1717,7 @@ class NDSDisplay
17141717
{
17151718
private:
17161719
NDSDisplayID _ID;
1720+
GPUSubsystem *_gpuSystem;
17171721
GPUEngineBase *_gpuEngine;
17181722

17191723
// Native line tracking must be handled at the display level in order to account for
@@ -1855,13 +1859,18 @@ class GPUSubsystem
18551859
void *_customVRAM;
18561860
void *_customVRAMBlank;
18571861

1862+
NDSColorFormat _framebufferColorFormatPending;
1863+
size_t _framebufferWidthPending;
1864+
size_t _framebufferHeightPending;
1865+
size_t _framebufferPageCountPending;
18581866
void *_masterFramebuffer;
18591867
u32 *_masterWorkingNativeBuffer32;
18601868

18611869
NDSDisplayInfo _displayInfo;
18621870

18631871
void _UpdateFPSRender3D();
18641872
void _AllocateFramebuffers(NDSColorFormat outputFormat, size_t w, size_t h, size_t pageCount);
1873+
void _ApplyFramebufferSettings();
18651874

18661875
void _DownscaleAndConvertForSavestate(const NDSDisplayID displayID, const void *srcBuffer, u16 *dstBuffer);
18671876
void _ConvertAndUpscaleForLoadstate(const NDSDisplayID displayID, const u16 *srcBuffer, void *dstBuffer);

desmume/src/frontend/cocoa/ClientAudioOutput.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,11 @@ ClientAudioOutput::ClientAudioOutput()
191191
_spuCallbackStruct.FetchSamples = &SPUFetchSamplesCallback;
192192
_spuCallbackStruct.PostProcessSamples = &SPUPostProcessSamples;
193193

194+
if (SNDCoreList[1] == NULL)
195+
{
196+
SNDCoreList[1] = &_spuCallbackStruct;
197+
}
198+
194199
_volume = MAX_VOLUME;
195200
_spuAdvancedLogic = true;
196201
_interpolationModeID = SPUInterpolation_Cosine;

desmume/src/frontend/cocoa/ClientVideoOutput.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,28 @@ void ClientDisplayViewOutputManager::SetNDSFrameInfoToAll(const NDSFrameInfo &fr
913913
pthread_mutex_unlock(&this->_pendingUnregisterListMutex);
914914
}
915915

916+
void ClientDisplayViewOutputManager::GenerateViewListAll(std::vector<ClientDisplayViewInterface *> &outFinalizeList)
917+
{
918+
// Add all pending outputs to be registered.
919+
pthread_mutex_lock(&this->_pendingRegisterListMutex);
920+
this->_RegisterPending();
921+
pthread_mutex_unlock(&this->_pendingRegisterListMutex);
922+
923+
// Remove all pending outputs to be unregistered.
924+
pthread_mutex_lock(&this->_pendingUnregisterListMutex);
925+
this->_UnregisterPending();
926+
927+
// Finally, run the outputs.
928+
for (size_t i = 0; i < this->_runList.size(); i++)
929+
{
930+
ClientDisplayViewOutput *runningOutput = (ClientDisplayViewOutput *)this->_runList[i];
931+
ClientDisplayViewInterface *cdv = (ClientDisplayViewInterface *)runningOutput->GetClientDisplayView();
932+
outFinalizeList.push_back(cdv);
933+
}
934+
935+
pthread_mutex_unlock(&this->_pendingUnregisterListMutex);
936+
}
937+
916938
void ClientDisplayViewOutputManager::GenerateFlushListForDisplay(int32_t displayID, std::vector<ClientDisplayViewInterface *> &outFlushList)
917939
{
918940
// Add all pending outputs to be registered.
@@ -1033,3 +1055,16 @@ void ClientGPUFetchObjectMultiDisplayView::FlushMultipleViews(const std::vector<
10331055
cdv->FinalizeFlush(NULL, timeStampOutput);
10341056
}
10351057
}
1058+
1059+
void ClientGPUFetchObjectMultiDisplayView::FinalizeAllViews()
1060+
{
1061+
std::vector<ClientDisplayViewInterface *> cdvList;
1062+
this->_outputManager->GenerateViewListAll(cdvList);
1063+
1064+
const size_t listSize = cdvList.size();
1065+
for (size_t i = 0; i < listSize; i++)
1066+
{
1067+
ClientDisplayViewInterface *cdv = cdvList[i];
1068+
cdv->FinalizeFlush(NULL, 0);
1069+
}
1070+
}

desmume/src/frontend/cocoa/ClientVideoOutput.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ class ClientDisplayViewOutputManager : public ClientEmulationOutputManager
224224

225225
void TakeFrameCountAll();
226226
void SetNDSFrameInfoToAll(const NDSFrameInfo &frameInfo);
227+
void GenerateViewListAll(std::vector<ClientDisplayViewInterface *> &outFinalizeList);
227228
void GenerateFlushListForDisplay(int32_t displayID, std::vector<ClientDisplayViewInterface *> &outFlushList);
228229
};
229230

@@ -255,6 +256,7 @@ class ClientGPUFetchObjectMultiDisplayView
255256
void PushVideoDataToAllDisplayViews();
256257
virtual void FlushAllViewsOnDisplay(int32_t displayID, uint64_t timeStampNow, uint64_t timeStampOutput);
257258
virtual void FlushMultipleViews(const std::vector<ClientDisplayViewInterface *> &cdvFlushList, uint64_t timeStampNow, uint64_t timeStampOutput);
259+
virtual void FinalizeAllViews();
258260
};
259261

260262
#endif // _CLIENT_OUTPUT_DISPLAY_H_

desmume/src/frontend/cocoa/DeSmuME (Latest).xcodeproj/project.pbxproj

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,6 +1534,17 @@
15341534
AB5B1D4C21D1F31E00BF0E0F /* MetalRendererCommonShaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = AB5B1D4921D1F31E00BF0E0F /* MetalRendererCommonShaders.metal */; };
15351535
AB5B1D4D21D1F31E00BF0E0F /* MetalRendererCommonShaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = AB5B1D4921D1F31E00BF0E0F /* MetalRendererCommonShaders.metal */; };
15361536
AB5FDDAC1D62C89E0094617C /* colorspacehandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBFFF6F1D5F9C52003CD598 /* colorspacehandler.cpp */; };
1537+
AB64DC462E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1538+
AB64DC472E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1539+
AB64DC482E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1540+
AB64DC492E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1541+
AB64DC4A2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1542+
AB64DC4B2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1543+
AB64DC4C2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1544+
AB64DC4D2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1545+
AB64DC4E2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1546+
AB64DC4F2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
1547+
AB64DC502E78E3710092D8FC /* cgl_3Demu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */; };
15371548
AB68101B187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Blue_512x512.png in Resources */ = {isa = PBXBuildFile; fileRef = AB681013187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Blue_512x512.png */; };
15381549
AB68101D187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Green_512x512.png in Resources */ = {isa = PBXBuildFile; fileRef = AB681014187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Green_512x512.png */; };
15391550
AB68101F187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Red_512x512.png in Resources */ = {isa = PBXBuildFile; fileRef = AB681015187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Red_512x512.png */; };
@@ -4092,6 +4103,8 @@
40924103
AB5B1D4821D1F31D00BF0E0F /* MetalRendererCommonShaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MetalRendererCommonShaders.h; sourceTree = "<group>"; };
40934104
AB5B1D4921D1F31E00BF0E0F /* MetalRendererCommonShaders.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = MetalRendererCommonShaders.metal; sourceTree = "<group>"; };
40944105
AB64987B13ECC73800EE7DD2 /* FileTypeInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = FileTypeInfo.plist; sourceTree = "<group>"; };
4106+
AB64DC442E78E3710092D8FC /* cgl_3Demu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cgl_3Demu.h; sourceTree = "<group>"; };
4107+
AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cgl_3Demu.cpp; sourceTree = "<group>"; };
40954108
AB681013187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Blue_512x512.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon_GuitarGrip_Button_Blue_512x512.png; path = images/Icon_GuitarGrip_Button_Blue_512x512.png; sourceTree = "<group>"; };
40964109
AB681014187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Green_512x512.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon_GuitarGrip_Button_Green_512x512.png; path = images/Icon_GuitarGrip_Button_Green_512x512.png; sourceTree = "<group>"; };
40974110
AB681015187D4AEF0049F2C2 /* Icon_GuitarGrip_Button_Red_512x512.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon_GuitarGrip_Button_Red_512x512.png; path = images/Icon_GuitarGrip_Button_Red_512x512.png; sourceTree = "<group>"; };
@@ -4909,6 +4922,7 @@
49094922
AB6E3B452E7385710088075E /* ClientFirmwareControl.cpp */,
49104923
AB11AD871F6757F800CB298E /* ClientInputHandler.cpp */,
49114924
ABDB1BEE2E66486E002AD9AF /* ClientVideoOutput.cpp */,
4925+
AB64DC452E78E3710092D8FC /* cgl_3Demu.cpp */,
49124926
AB1B9E5F1501A78000464647 /* coreaudiosound.cpp */,
49134927
AB28625320AE3E9E00EAED43 /* macOS_driver.cpp */,
49144928
AB23567216C2F6F400DA782E /* macosx_10_5_compat.cpp */,
@@ -4926,6 +4940,7 @@
49264940
AB6E3B442E7385710088075E /* ClientFirmwareControl.h */,
49274941
AB11AD881F6757F800CB298E /* ClientInputHandler.h */,
49284942
ABDB1BED2E66486E002AD9AF /* ClientVideoOutput.h */,
4943+
AB64DC442E78E3710092D8FC /* cgl_3Demu.h */,
49294944
ABA6574914511EC90077E5E9 /* cocoa_cheat.h */,
49304945
ABD103FE1346652500AF11D1 /* cocoa_core.h */,
49314946
AB58F32B1364F44B0074C376 /* cocoa_file.h */,
@@ -8008,6 +8023,7 @@
80088023
8C43E7B227E3CD0100A35F65 /* cache.cpp in Sources */,
80098024
8C43E7B327E3CD0100A35F65 /* fsnitro.cpp in Sources */,
80108025
8C43E7B427E3CD0100A35F65 /* fttype1.c in Sources */,
8026+
AB64DC492E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
80118027
8C43E7B527E3CD0100A35F65 /* cheatSystem.cpp in Sources */,
80128028
8C43E7B627E3CD0100A35F65 /* common.cpp in Sources */,
80138029
8C43E7B727E3CD0100A35F65 /* slot1comp_mc.cpp in Sources */,
@@ -8212,6 +8228,7 @@
82128228
8C43E90E27E3CD4C00A35F65 /* ftpatent.c in Sources */,
82138229
8C43E90F27E3CD4C00A35F65 /* sfnt.c in Sources */,
82148230
8C43E91027E3CD4C00A35F65 /* ftfntfmt.c in Sources */,
8231+
AB64DC4D2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
82158232
8C43E91127E3CD4C00A35F65 /* fttype1.c in Sources */,
82168233
8C43E91227E3CD4C00A35F65 /* ftmm.c in Sources */,
82178234
8C43E91327E3CD4C00A35F65 /* ftfstype.c in Sources */,
@@ -8421,6 +8438,7 @@
84218438
8CCD842327E40B730024BDD5 /* armcpu.cpp in Sources */,
84228439
8CCD842427E40B730024BDD5 /* bios.cpp in Sources */,
84238440
8CCD842527E40B730024BDD5 /* cache.cpp in Sources */,
8441+
AB64DC4E2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
84248442
8CCD842627E40B730024BDD5 /* cheatSystem.cpp in Sources */,
84258443
8CCD842727E40B730024BDD5 /* slot2_auto.cpp in Sources */,
84268444
8CCD842827E40B730024BDD5 /* ftsystem.c in Sources */,
@@ -8783,6 +8801,7 @@
87838801
AB36C83D27F2C8AE00C763C8 /* ftdebug.c in Sources */,
87848802
AB36C83E27F2C8AE00C763C8 /* fttype1.c in Sources */,
87858803
AB36C83F27F2C8AE00C763C8 /* arm_jit.cpp in Sources */,
8804+
AB64DC4B2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
87868805
AB36C84027F2C8AE00C763C8 /* troubleshootingWindowDelegate.mm in Sources */,
87878806
AB36C84127F2C8AE00C763C8 /* assembler.cpp in Sources */,
87888807
AB36C84227F2C8AE00C763C8 /* assert.cpp in Sources */,
@@ -8947,6 +8966,7 @@
89478966
AB7900A4215B84E50082AE82 /* slot1_retail_mcrom_debug.cpp in Sources */,
89488967
AB7900A5215B84E50082AE82 /* cocoa_slot2.mm in Sources */,
89498968
AB7900A6215B84E50082AE82 /* slot1_r4.cpp in Sources */,
8969+
AB64DC462E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
89508970
AB7900A7215B84E50082AE82 /* MacMetalDisplayView.mm in Sources */,
89518971
AB7900A8215B84E50082AE82 /* slot1_retail_nand.cpp in Sources */,
89528972
AB7900A9215B84E50082AE82 /* encoding_utf.c in Sources */,
@@ -9207,6 +9227,7 @@
92079227
AB790216215B84F20082AE82 /* SndOut.cpp in Sources */,
92089228
AB790217215B84F20082AE82 /* psnames.c in Sources */,
92099229
AB790218215B84F20082AE82 /* Slot2WindowDelegate.mm in Sources */,
9230+
AB64DC472E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
92109231
AB790219215B84F20082AE82 /* truetype.c in Sources */,
92119232
AB79021A215B84F20082AE82 /* SoundTouch.cpp in Sources */,
92129233
AB79021B215B84F20082AE82 /* slot1_retail_auto.cpp in Sources */,
@@ -9418,6 +9439,7 @@
94189439
AB2EE12C17D57ED500F68622 /* slot1_retail_mcrom_debug.cpp in Sources */,
94199440
AB5648FF186E6EA8002740F4 /* cocoa_slot2.mm in Sources */,
94209441
AB796D2A15CDCBA200C59155 /* slot1_r4.cpp in Sources */,
9442+
AB64DC4C2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
94219443
AB78B5C41E384F4F00297FED /* MacMetalDisplayView.mm in Sources */,
94229444
AB796D2C15CDCBA200C59155 /* slot1_retail_nand.cpp in Sources */,
94239445
AB35BD8F1DEBF40800844310 /* encoding_utf.c in Sources */,
@@ -9678,6 +9700,7 @@
96789700
AB8F3CBE1A53AC2600A80BF6 /* SndOut.cpp in Sources */,
96799701
ABA7315C1BB51A8D00B26147 /* psnames.c in Sources */,
96809702
AB8F3CBF1A53AC2600A80BF6 /* Slot2WindowDelegate.mm in Sources */,
9703+
AB64DC4A2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
96819704
ABFEA8EA1BB4FB3200B08C25 /* truetype.c in Sources */,
96829705
AB8F3CC01A53AC2600A80BF6 /* SoundTouch.cpp in Sources */,
96839706
AB8F3CC11A53AC2600A80BF6 /* slot1_retail_auto.cpp in Sources */,
@@ -9959,6 +9982,7 @@
99599982
AB9038B717C5ED2200F410BD /* slot1comp_mc.cpp in Sources */,
99609983
AB3A656316CC5438001F5D4A /* cocoa_GPU.mm in Sources */,
99619984
AB82445D1704AE9A00B8EE20 /* utilities.c in Sources */,
9985+
AB64DC4F2E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
99629986
AB49B556281707590069F1D7 /* OGLDisplayOutput.cpp in Sources */,
99639987
ABD10AE91715FCDD00B5729D /* audiosamplegenerator.cpp in Sources */,
99649988
ABD10AEC1715FCDD00B5729D /* mic_ext.cpp in Sources */,
@@ -10067,6 +10091,7 @@
1006710091
ABC858F528273FEE00A03EA9 /* slot2_rumblepak.cpp in Sources */,
1006810092
ABC858F728273FEE00A03EA9 /* SndOut.cpp in Sources */,
1006910093
ABC858F828273FEE00A03EA9 /* ftpfr.c in Sources */,
10094+
AB64DC482E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
1007010095
ABC858F928273FEE00A03EA9 /* Slot2WindowDelegate.mm in Sources */,
1007110096
ABC858FA28273FEE00A03EA9 /* SoundTouch.cpp in Sources */,
1007210097
ABC858FB28273FEE00A03EA9 /* ftfstype.c in Sources */,
@@ -10302,6 +10327,7 @@
1030210327
ABD2CDA926E05CB000FB15F7 /* slot2_rumblepak.cpp in Sources */,
1030310328
ABD2CDAB26E05CB000FB15F7 /* SndOut.cpp in Sources */,
1030410329
ABD2CDAC26E05CB000FB15F7 /* ftpfr.c in Sources */,
10330+
AB64DC502E78E3710092D8FC /* cgl_3Demu.cpp in Sources */,
1030510331
ABD2CDAD26E05CB000FB15F7 /* Slot2WindowDelegate.mm in Sources */,
1030610332
ABD2CDAE26E05CB000FB15F7 /* SoundTouch.cpp in Sources */,
1030710333
ABD2CDAF26E05CB000FB15F7 /* ftfstype.c in Sources */,

0 commit comments

Comments
 (0)