diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/fceux.iml b/.idea/fceux.iml new file mode 100644 index 00000000..d0876a78 --- /dev/null +++ b/.idea/fceux.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..105ce2da --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..d56657ad --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..5cfee3ab --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/emugator/ROM_Carts/B-Wings (Japan).jpg b/emugator/ROM_Carts/B-Wings (Japan).jpg new file mode 100644 index 00000000..e9fde7d7 Binary files /dev/null and b/emugator/ROM_Carts/B-Wings (Japan).jpg differ diff --git a/emugator/ROM_Carts/Balloon Fight (Japan).jpg b/emugator/ROM_Carts/Balloon Fight (Japan).jpg new file mode 100644 index 00000000..b3a3d5b3 Binary files /dev/null and b/emugator/ROM_Carts/Balloon Fight (Japan).jpg differ diff --git a/emugator/ROM_Carts/Crisis Force (Japan).jpg b/emugator/ROM_Carts/Crisis Force (Japan).jpg new file mode 100644 index 00000000..aa59c096 Binary files /dev/null and b/emugator/ROM_Carts/Crisis Force (Japan).jpg differ diff --git a/emugator/ROM_Carts/Dig Dug (Japan).jpg b/emugator/ROM_Carts/Dig Dug (Japan).jpg new file mode 100644 index 00000000..d9034629 Binary files /dev/null and b/emugator/ROM_Carts/Dig Dug (Japan).jpg differ diff --git a/emugator/ROM_Carts/Dr. Mario (Japan, USA).jpg b/emugator/ROM_Carts/Dr. Mario (Japan, USA).jpg new file mode 100644 index 00000000..7f06870f Binary files /dev/null and b/emugator/ROM_Carts/Dr. Mario (Japan, USA).jpg differ diff --git a/emugator/ROM_Carts/Final Fantasy III (Japan).jpg b/emugator/ROM_Carts/Final Fantasy III (Japan).jpg new file mode 100644 index 00000000..f5252dc7 Binary files /dev/null and b/emugator/ROM_Carts/Final Fantasy III (Japan).jpg differ diff --git a/emugator/ROM_Carts/Gradius (Japan).jpg b/emugator/ROM_Carts/Gradius (Japan).jpg new file mode 100644 index 00000000..a1f066ec Binary files /dev/null and b/emugator/ROM_Carts/Gradius (Japan).jpg differ diff --git a/emugator/ROM_Carts/Gradius II (Japan).jpg b/emugator/ROM_Carts/Gradius II (Japan).jpg new file mode 100644 index 00000000..d891fbc9 Binary files /dev/null and b/emugator/ROM_Carts/Gradius II (Japan).jpg differ diff --git a/emugator/ROM_Carts/Ice Climber (Japan).jpg b/emugator/ROM_Carts/Ice Climber (Japan).jpg new file mode 100644 index 00000000..2cf7bdee Binary files /dev/null and b/emugator/ROM_Carts/Ice Climber (Japan).jpg differ diff --git a/emugator/ROM_Carts/LegendOfZelda2_JP.jpg b/emugator/ROM_Carts/LegendOfZelda2_JP.jpg new file mode 100644 index 00000000..90439851 Binary files /dev/null and b/emugator/ROM_Carts/LegendOfZelda2_JP.jpg differ diff --git a/emugator/ROM_Carts/Pac-Man (Japan).jpg b/emugator/ROM_Carts/Pac-Man (Japan).jpg new file mode 100644 index 00000000..babf1a75 Binary files /dev/null and b/emugator/ROM_Carts/Pac-Man (Japan).jpg differ diff --git a/emugator/ROM_Carts/Super Mario Bros. 3 (Japan).jpg b/emugator/ROM_Carts/Super Mario Bros. 3 (Japan).jpg new file mode 100644 index 00000000..e5fcd3fc Binary files /dev/null and b/emugator/ROM_Carts/Super Mario Bros. 3 (Japan).jpg differ diff --git a/emugator/ROM_Carts/superMarioBros.jpg b/emugator/ROM_Carts/superMarioBros.jpg new file mode 100644 index 00000000..64786fd8 Binary files /dev/null and b/emugator/ROM_Carts/superMarioBros.jpg differ diff --git a/emugator/ROMs/B-Wings (Japan).nes b/emugator/ROMs/B-Wings (Japan).nes new file mode 100644 index 00000000..b9f40751 Binary files /dev/null and b/emugator/ROMs/B-Wings (Japan).nes differ diff --git a/emugator/ROMs/Balloon Fight (Japan).nes b/emugator/ROMs/Balloon Fight (Japan).nes new file mode 100644 index 00000000..7ccdd4b9 Binary files /dev/null and b/emugator/ROMs/Balloon Fight (Japan).nes differ diff --git a/emugator/ROMs/Crisis Force (Japan).nes b/emugator/ROMs/Crisis Force (Japan).nes new file mode 100644 index 00000000..dcced7fd Binary files /dev/null and b/emugator/ROMs/Crisis Force (Japan).nes differ diff --git a/emugator/ROMs/Dig Dug (Japan).nes b/emugator/ROMs/Dig Dug (Japan).nes new file mode 100644 index 00000000..543a404b Binary files /dev/null and b/emugator/ROMs/Dig Dug (Japan).nes differ diff --git a/emugator/ROMs/Dr. Mario (Japan, USA).nes b/emugator/ROMs/Dr. Mario (Japan, USA).nes new file mode 100644 index 00000000..f0cf8a24 Binary files /dev/null and b/emugator/ROMs/Dr. Mario (Japan, USA).nes differ diff --git a/emugator/ROMs/Final Fantasy III (Japan).nes b/emugator/ROMs/Final Fantasy III (Japan).nes new file mode 100644 index 00000000..dae28bfc Binary files /dev/null and b/emugator/ROMs/Final Fantasy III (Japan).nes differ diff --git a/emugator/ROMs/Gradius (Japan).nes b/emugator/ROMs/Gradius (Japan).nes new file mode 100644 index 00000000..a28f2f24 Binary files /dev/null and b/emugator/ROMs/Gradius (Japan).nes differ diff --git a/emugator/ROMs/Gradius II (Japan).nes b/emugator/ROMs/Gradius II (Japan).nes new file mode 100644 index 00000000..b130b4aa Binary files /dev/null and b/emugator/ROMs/Gradius II (Japan).nes differ diff --git a/emugator/ROMs/Ice Climber (Japan).nes b/emugator/ROMs/Ice Climber (Japan).nes new file mode 100644 index 00000000..9461040e Binary files /dev/null and b/emugator/ROMs/Ice Climber (Japan).nes differ diff --git a/emugator/ROMs/LegendOfZelda2_JP.fds b/emugator/ROMs/LegendOfZelda2_JP.fds new file mode 100644 index 00000000..744e8124 Binary files /dev/null and b/emugator/ROMs/LegendOfZelda2_JP.fds differ diff --git a/emugator/ROMs/Pac-Man (Japan).nes b/emugator/ROMs/Pac-Man (Japan).nes new file mode 100644 index 00000000..3f783065 Binary files /dev/null and b/emugator/ROMs/Pac-Man (Japan).nes differ diff --git a/emugator/ROMs/Super Mario Bros. 3 (Japan).nes b/emugator/ROMs/Super Mario Bros. 3 (Japan).nes new file mode 100644 index 00000000..c1f26eb7 Binary files /dev/null and b/emugator/ROMs/Super Mario Bros. 3 (Japan).nes differ diff --git a/emugator/ROMs/Super Mario Brothers 2 (Japan) (Alt 1).fds b/emugator/ROMs/Super Mario Brothers 2 (Japan) (Alt 1).fds new file mode 100644 index 00000000..b848da7e Binary files /dev/null and b/emugator/ROMs/Super Mario Brothers 2 (Japan) (Alt 1).fds differ diff --git a/output/luaScripts/emugator/superMario.nes b/emugator/ROMs/superMarioBros.nes similarity index 100% rename from output/luaScripts/emugator/superMario.nes rename to emugator/ROMs/superMarioBros.nes diff --git a/output/luaScripts/emugator/cartridgeFormatter.py b/output/luaScripts/emugator/cartridgeFormatter.py new file mode 100644 index 00000000..e69de29b diff --git a/output/luaScripts/emugator/emugators_demo.lua b/output/luaScripts/emugator/emugators_demo.lua index 9247f33b..fc80721f 100644 --- a/output/luaScripts/emugator/emugators_demo.lua +++ b/output/luaScripts/emugator/emugators_demo.lua @@ -1,40 +1,179 @@ - emu.print("Go Gators!") - local cart = {x1=50, y1=50, x2=100, y2=100} - local console = {x1=150, y1=50, x2=200, y2=100} - local unloadButton = {x1 = 220, y1 = 220, x2 = 250, y2 = 230} - local ejectInsertButton = {x1 = 5, y1 = 220, x2 = 64, y2 = 230} - local switchButton = {x1 = 180, y1 = 220, x2 = 210, y2 = 230} - local isDrag = false - local wasClicked = false - --local gd = require("gd") +--TODO: Fix color pallet issue... the color pallet should be set to a known (maybe default) value for the GUI every time so it does not change depending on the previously +--loaded game. i.e. fix the cream not white issue observed with loz2/smb setup!! -while(true) do - --need gd for this - --local gdstr = gd.createFromPng("C:\Users\Super\Emugators\fceux\output\luaScripts\emugator\nesRomGeneric.png"):gdStr() - --gui.gdoverlay(gdstr) +local gd = require("gd") + +emu.print("Go Gators!") +MAX_SCREEN_WIDTH = 256 +MAX_SCREEN_HEIGHT = 240 +MAX_PER_PAGE = 6 +CART_WIDTH = 30 +CART_HEIGHT = 30 +DRAWER_OFFSET_X = 20 +DRAWER_OFFSET_Y = 75 +DRAWER_BUFFER_X = 10 +DRAWER_BUFFER_Y = 10 +DRAWER_WIDTH = 3*DRAWER_BUFFER_X + 2*CART_WIDTH +DRAWER_HEIGHT = 4*DRAWER_BUFFER_Y + 3*CART_HEIGHT +PAGE_LEFT = {x = DRAWER_OFFSET_X + CART_WIDTH + DRAWER_BUFFER_X - 10, y = DRAWER_OFFSET_Y + DRAWER_HEIGHT - 4} +PAGE_RIGHT = {x = DRAWER_OFFSET_X + CART_WIDTH + DRAWER_BUFFER_X + 16, y = DRAWER_OFFSET_Y + DRAWER_HEIGHT - 4} + +local currPage = 1 +local cart = {x1=50, y1=50, x2=100, y2=100} +local console = {x1=DRAWER_WIDTH + 2*DRAWER_OFFSET_X, y1=DRAWER_OFFSET_Y, x2=MAX_SCREEN_WIDTH - DRAWER_OFFSET_X, y2=DRAWER_OFFSET_Y + DRAWER_HEIGHT/2} +local unloadButton = {x1 = 220, y1 = 220, x2 = 250, y2 = 230} +local ejectInsertButton = {x1 = 5, y1 = 220, x2 = 64, y2 = 230} +local switchButton = {x1 = 180, y1 = 220, x2 = 210, y2 = 230} +local selectedRom = {selected = nil, x = 0, y = 0} +local wasClicked = false +local lmbWasPressed = false + +local FAMICOM_Roms = {} +FAMICOM_Roms[1] = {} +local romDir = [[../../../emugator/ROMs/]] +local romCartDir = [[../../../emugator/ROM_Carts/]] + +--Find ROMS +local totalRoms = 0 +local pageNumber = 1 +local pageSlot = 1 + +for rom in io.popen([[dir "]] ..romDir.. [[" /b]]):lines() do + local dot = nil + local dotPos = 0 + while(true) do + dotPos = string.find(rom, "%.", dotPos + 1) + if(dotPos == nil) then break end + dot = dotPos + end + ext = nil + if(dot ~= nil) then + ext = string.sub(rom, dot, -1) + end + + if(ext == ".nes" or ext == ".fds") then + print("found: " ..rom) + if(FAMICOM_Roms[pageNumber] == nil) then + FAMICOM_Roms[pageNumber] = {} + end + + local xpos = DRAWER_OFFSET_X + DRAWER_BUFFER_X*(math.floor(((pageSlot-1)%2)) + 1) + math.floor(((pageSlot-1)%2))*CART_WIDTH + local ypos = DRAWER_OFFSET_Y + DRAWER_BUFFER_Y*(math.floor(((pageSlot-1)/2)) + 1) + math.floor(((pageSlot-1)/2))*CART_HEIGHT + local name = string.sub(rom, 1, dot-1) + local dstImg = gd.create(CART_WIDTH, CART_HEIGHT) + local srcImg = gd.createFromJpeg(romCartDir ..name.. [[.jpg]]) + + if(srcImg == nil) then + srcImg = gd.createFromJpeg(romCartDir ..name.. [[.jpeg]]) + end + + if(srcImg == nil) then + srcImg = gd.createFromPng(romCartDir ..name.. [[.png]]) + end + + if(srcImg == nil) then + dstImg:filledRectangle(0, 0, CART_WIDTH-1, CART_HEIGHT-1, 255) + else + dstImg:copyResized(srcImg, 0, 0, 0, 0, CART_WIDTH, CART_HEIGHT, srcImg:sizeX(), srcImg:sizeY()) + end + + FAMICOM_Roms[pageNumber][pageSlot] = {rom = rom, image = dstImg, name = name, x = xpos, y = ypos, slot = pageSlot, isSelected = false} + pageSlot = pageSlot + 1 + if(pageSlot > MAX_PER_PAGE) then + pageSlot = 1 + pageNumber = pageNumber + 1 + end + totalRoms = totalRoms + 1 + end +end + +if(pageSlot == 1) then + pageNumber = pageNumber - 1 +end + +--Main Loop +while(true) do local inpt = input.read() - if(emu.emulating() == false) then + if(emu.emulating() == false) then --should be changed to allow gui to be swaped to while emulating. maybe check if paused? wasClicked = false + + --draw gui background + gui.rect(0, 0, MAX_SCREEN_WIDTH-1, MAX_SCREEN_HEIGHT-1,"grey") + local srcImg = gd.createFromPng("gui/DrJMicroMuseum.png"):gdStr() + gui.gdoverlay(20, 20, srcImg) + + gui.rect(DRAWER_OFFSET_X, DRAWER_OFFSET_Y, DRAWER_OFFSET_X + DRAWER_WIDTH, DRAWER_OFFSET_Y + DRAWER_HEIGHT + 5,"blue", "white") + gui.text(DRAWER_OFFSET_X + CART_WIDTH + DRAWER_BUFFER_X - 3, DRAWER_OFFSET_Y + DRAWER_HEIGHT - 5, currPage.. "/" ..pageNumber, "white", "blue") + + local leftArrow = gd.createFromPng("gui/arrow.png") + local rightArrow = gd.create(leftArrow:sizeX(), leftArrow:sizeY()) + + rightArrow:copyRotated(leftArrow, rightArrow:sizeX()/2, rightArrow:sizeY()/2, 0, 0, leftArrow:sizeX(), leftArrow:sizeY(), 180) + gui.gdoverlay(PAGE_RIGHT.x, PAGE_RIGHT.y, rightArrow:gdStr()) + gui.gdoverlay(PAGE_LEFT.x, PAGE_LEFT.y, leftArrow:gdStr()) + + --Draw console + --gui.rect(console.x1, console.y1, console.x2, console.y2, "blue", "white") + --gui.text(console.x1 + 9, console.y1 + 16, "Famicom\n/NES") + local im = gd.createFromPng("gui/famicom.png") + gui.rect(console.x1 + 10, console.y1 + 30, console.x1 + 10 + im:sizeX(), console.y1 + 30 + im:sizeY(), "grey", "white") + gui.gdoverlay(console.x1 + 10, console.y1 + 30, im:gdStr()) --doesnt actually line up quite right with hitbox, needs to be adjusted when image is finalized + + --Load Cartridge if dropped on Console if (inpt.leftclick == nil) then - if ((inpt.xmouse > console.x1) and (inpt.xmouse < console.x2) and (inpt.ymouse > console.y1) and (inpt.ymouse < console.y2) and isDrag) then - emu.loadrom("LegendOfZelda2_JP.fds") + if((inpt.xmouse > console.x1) and (inpt.xmouse < console.x2) and (inpt.ymouse > console.y1) and (inpt.ymouse < console.y2) and selectedRom.selected ~= nil) then + emu.loadrom(romDir ..FAMICOM_Roms[currPage][selectedRom.selected].rom) + elseif((inpt.xmouse > PAGE_LEFT.x) and (inpt.xmouse < PAGE_LEFT.x + leftArrow:sizeX()) and (inpt.ymouse > PAGE_LEFT.y) and (inpt.ymouse < PAGE_LEFT.y + leftArrow:sizeY()) and selectedRom.selected == nil and lmbWasPressed) then + if(currPage > 1) then + currPage = currPage - 1 + end + elseif((inpt.xmouse > PAGE_RIGHT.x) and (inpt.xmouse < PAGE_RIGHT.x + rightArrow:sizeX()) and (inpt.ymouse > PAGE_RIGHT.y) and (inpt.ymouse < PAGE_RIGHT.y + rightArrow:sizeY()) and selectedRom.selected == nil and lmbWasPressed) then + if(currPage < pageNumber) then + currPage = currPage + 1 + end + end + + if(selectedRom.selected ~= nil) then + FAMICOM_Roms[currPage][selectedRom.selected].isSelected = false + selectedRom.selected = nil end - isDrag = false end - if isDrag then - gui.rect(inpt.xmouse, inpt.ymouse, inpt.xmouse+50, inpt.ymouse+50, "red", "white") - gui.text(inpt.xmouse + 12, inpt.ymouse+12, "Legend\nOf\nZelda\n2") - elseif ((inpt.xmouse > cart.x1) and (inpt.xmouse < cart.x2) and (inpt.ymouse > cart.y1) and (inpt.ymouse < cart.y2) and inpt.leftclick) then - isDrag = true + --Draw Cartridges + for _, rom in pairs(FAMICOM_Roms[currPage]) do + if(rom.isSelected == false) then + local gdstr = rom.image:gdStr() + gui.gdoverlay(rom.x, rom.y, gdstr) + end + end + + if (selectedRom.selected == nil) then + local index = 0 + for _, rom in pairs(FAMICOM_Roms[currPage]) do + if ((inpt.xmouse > rom.x) and (inpt.xmouse < (rom.x+CART_WIDTH)) and (inpt.ymouse > rom.y) and (inpt.ymouse < (rom.y+CART_HEIGHT))) then + gui.text(inpt.xmouse, inpt.ymouse, rom.name) + if(inpt.leftclick and lmbWasPressed == false) then + selectedRom.selected = rom.slot + selectedRom.x = inpt.xmouse + selectedRom.y = inpt.ymouse + rom.isSelected = true + break + end + end + end else - gui.rect(cart.x1, cart.y1, cart.x2, cart.y2, "gray", "white") - gui.text(cart.x1 + 12, cart.y1 + 12, "Legend\nof\nZelda\n2") + --gui.rect(inpt.xmouse, inpt.ymouse, inpt.xmouse+50, inpt.ymouse+50, "red", "white") + --gui.text(inpt.xmouse + 12, inpt.ymouse+12, "Legend\nOf\nZelda\nII") + local gdstr = FAMICOM_Roms[currPage][selectedRom.selected].image:gdStr() + gui.gdoverlay(inpt.xmouse + (FAMICOM_Roms[currPage][selectedRom.selected].x - selectedRom.x), inpt.ymouse + (FAMICOM_Roms[currPage][selectedRom.selected].y - selectedRom.y), gdstr) end - gui.rect(console.x1, console.y1, console.x2, console.y2, "blue", "white") - gui.text(console.x1 + 9, console.y1 + 16, "Famicom\n/NES") + if(selectedRom.selected ~= nil) then + gui.text(inpt.xmouse, inpt.ymouse, FAMICOM_Roms[currPage][selectedRom.selected].name) + end + + lmbWasPressed = inpt.leftclick ~= nil emugator.yieldwithflag() -- call this if you want the script to run without emulation (game running) else diff --git a/output/luaScripts/emugator/gui/DrJMicroMuseum.png b/output/luaScripts/emugator/gui/DrJMicroMuseum.png new file mode 100644 index 00000000..67b9768e Binary files /dev/null and b/output/luaScripts/emugator/gui/DrJMicroMuseum.png differ diff --git a/output/luaScripts/emugator/gui/arrow.png b/output/luaScripts/emugator/gui/arrow.png new file mode 100644 index 00000000..e65cbf29 Binary files /dev/null and b/output/luaScripts/emugator/gui/arrow.png differ diff --git a/output/luaScripts/emugator/gui/famicom.jpg b/output/luaScripts/emugator/gui/famicom.jpg new file mode 100644 index 00000000..af3d97f7 Binary files /dev/null and b/output/luaScripts/emugator/gui/famicom.jpg differ diff --git a/output/luaScripts/emugator/gui/famicom.png b/output/luaScripts/emugator/gui/famicom.png new file mode 100644 index 00000000..3978b223 Binary files /dev/null and b/output/luaScripts/emugator/gui/famicom.png differ diff --git a/output/luaScripts/emugator/nesRomGeneric.png b/output/luaScripts/emugator/nesRomGeneric.png deleted file mode 100644 index d31c400d..00000000 Binary files a/output/luaScripts/emugator/nesRomGeneric.png and /dev/null differ diff --git a/output/luaScripts/emugator/out.png b/output/luaScripts/emugator/out.png new file mode 100644 index 00000000..427adc0e Binary files /dev/null and b/output/luaScripts/emugator/out.png differ diff --git a/output/luaScripts/emugator/scratch.lua b/output/luaScripts/emugator/scratch.lua new file mode 100644 index 00000000..14b3fb85 --- /dev/null +++ b/output/luaScripts/emugator/scratch.lua @@ -0,0 +1,8 @@ +local gd = require("gd") + +while(true) do + + local im = gd.createFromPng("gui/famicom.png") + gui.gdoverlay(0, 3, im:gdStr()) + emugator.yieldwithflag() +end \ No newline at end of file diff --git a/vc/vc14_fceux.sln b/vc/vc14_fceux.sln index 87a0b3db..4c12f59f 100644 --- a/vc/vc14_fceux.sln +++ b/vc/vc14_fceux.sln @@ -1,6 +1,8 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32825.248 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fceux", "vc14_fceux.vcxproj", "{6893EF44-FEA3-46DF-B236-C4C200F54294}" EndProject Global @@ -15,8 +17,8 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|Win32.ActiveCfg = Debug|Win32 {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|Win32.Build.0 = Debug|Win32 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|x64.ActiveCfg = Debug|x64 - {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|x64.Build.0 = Debug|x64 + {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|x64.ActiveCfg = Debug|Win32 + {6893EF44-FEA3-46DF-B236-C4C200F54294}.Debug|x64.Build.0 = Debug|Win32 {6893EF44-FEA3-46DF-B236-C4C200F54294}.PublicRelease|Win32.ActiveCfg = PublicRelease|Win32 {6893EF44-FEA3-46DF-B236-C4C200F54294}.PublicRelease|Win32.Build.0 = PublicRelease|Win32 {6893EF44-FEA3-46DF-B236-C4C200F54294}.PublicRelease|x64.ActiveCfg = PublicRelease|x64 @@ -29,4 +31,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {88B51FA7-225E-47B0-AE28-52E983BCFC27} + EndGlobalSection EndGlobal