2022-03-21 22:34:43 +00:00
|
|
|
/**
|
|
|
|
* Furnace Tracker - multi-system chiptune tracker
|
|
|
|
* Copyright (C) 2021-2022 tildearrow and contributors
|
|
|
|
*
|
|
|
|
* This program 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 program 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 this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
2022-03-21 22:38:11 +00:00
|
|
|
#define _USE_MATH_DEFINES
|
2022-03-21 22:34:43 +00:00
|
|
|
#include "gui.h"
|
2022-03-21 22:38:11 +00:00
|
|
|
#include <math.h>
|
2022-03-21 22:34:43 +00:00
|
|
|
|
|
|
|
const char* aboutLine[]={
|
|
|
|
"tildearrow",
|
2022-09-22 09:13:26 +00:00
|
|
|
"is not so happy to present",
|
2022-03-21 22:34:43 +00:00
|
|
|
"",
|
2022-04-01 10:20:00 +00:00
|
|
|
("Furnace " DIV_VERSION),
|
2022-03-21 22:34:43 +00:00
|
|
|
"",
|
2022-07-23 23:53:42 +00:00
|
|
|
"the biggest multi-system chiptune tracker!",
|
|
|
|
"featuring DefleMask song compatibility.",
|
2022-04-01 10:20:00 +00:00
|
|
|
"",
|
2022-09-22 09:13:26 +00:00
|
|
|
"what a mess of a versioning scheme we have...",
|
|
|
|
"I mean it! these pre-releases are like normal releases",
|
|
|
|
"by now but only because I promised you to have SNES in",
|
|
|
|
"0.6pre2 I am doing this whole mess...",
|
2022-03-21 22:34:43 +00:00
|
|
|
"",
|
|
|
|
"> CREDITS <",
|
|
|
|
"",
|
|
|
|
"-- program --",
|
|
|
|
"tildearrow",
|
|
|
|
"akumanatt",
|
|
|
|
"cam900",
|
|
|
|
"djtuBIG-MaliceX",
|
|
|
|
"laoo",
|
2022-04-12 09:36:45 +00:00
|
|
|
"OPNA2608",
|
2022-03-21 22:34:43 +00:00
|
|
|
"superctr",
|
2022-10-12 20:14:28 +00:00
|
|
|
"System64",
|
2022-03-21 22:34:43 +00:00
|
|
|
"",
|
|
|
|
"-- graphics/UI design --",
|
|
|
|
"tildearrow",
|
|
|
|
"BlastBrothers",
|
2022-06-18 07:00:10 +00:00
|
|
|
"Mahbod Karamoozian",
|
2022-08-21 21:53:45 +00:00
|
|
|
"nicco1690",
|
2022-03-25 23:16:47 +00:00
|
|
|
"Raijin",
|
2022-03-21 22:34:43 +00:00
|
|
|
"",
|
|
|
|
"-- documentation --",
|
|
|
|
"tildearrow",
|
|
|
|
"freq-mod",
|
|
|
|
"nicco1690",
|
|
|
|
"DeMOSic",
|
|
|
|
"cam900",
|
|
|
|
"",
|
|
|
|
"-- demo songs --",
|
|
|
|
"0x5066",
|
2022-06-18 07:00:10 +00:00
|
|
|
"Abstract 64",
|
2022-03-21 22:34:43 +00:00
|
|
|
"ActualNK358",
|
2022-06-18 07:00:10 +00:00
|
|
|
"akumanatt",
|
|
|
|
"AmigaX",
|
|
|
|
"AURORA*FIELDS",
|
|
|
|
"BlueElectric05",
|
2022-03-21 22:34:43 +00:00
|
|
|
"breakthetargets",
|
2022-08-13 20:53:47 +00:00
|
|
|
"brickblock369",
|
2022-03-21 22:34:43 +00:00
|
|
|
"CaptainMalware",
|
2022-06-18 07:00:10 +00:00
|
|
|
"DeMOSic",
|
|
|
|
"DevEd",
|
|
|
|
"Dippy",
|
|
|
|
"Forte",
|
|
|
|
"Fragmare",
|
|
|
|
"freq-mod",
|
|
|
|
"iyatemu",
|
2022-03-21 22:34:43 +00:00
|
|
|
"kleeder",
|
2022-06-18 07:00:10 +00:00
|
|
|
"jaezu",
|
|
|
|
"Laggy",
|
2022-07-23 23:53:42 +00:00
|
|
|
"LovelyA72",
|
2022-06-18 07:00:10 +00:00
|
|
|
"LunaMoth",
|
2022-09-11 02:46:10 +00:00
|
|
|
"Lunathir",
|
2022-08-07 03:26:18 +00:00
|
|
|
"LVintageNerd",
|
2022-03-21 22:34:43 +00:00
|
|
|
"Mahbod Karamoozian",
|
2022-06-18 07:00:10 +00:00
|
|
|
"Miker",
|
2022-03-21 22:34:43 +00:00
|
|
|
"nicco1690",
|
|
|
|
"NikonTeen",
|
2022-09-11 02:21:08 +00:00
|
|
|
"psxdominator",
|
2022-08-21 21:53:45 +00:00
|
|
|
"Raijin",
|
2022-09-11 02:21:08 +00:00
|
|
|
"SnugglyBun",
|
2022-03-21 22:34:43 +00:00
|
|
|
"SuperJet Spade",
|
|
|
|
"TheDuccinator",
|
2022-06-18 07:00:10 +00:00
|
|
|
"theloredev",
|
2022-03-21 22:34:43 +00:00
|
|
|
"TheRealHedgehogSonic",
|
|
|
|
"tildearrow",
|
|
|
|
"Ultraprogramer",
|
2022-06-18 07:00:10 +00:00
|
|
|
"Weeppiko",
|
|
|
|
"ZoomTen (Zumi)",
|
2022-03-21 22:34:43 +00:00
|
|
|
"",
|
|
|
|
"-- additional feedback/fixes --",
|
|
|
|
"fd",
|
2022-04-13 05:37:48 +00:00
|
|
|
"GENATARi",
|
2022-07-24 02:19:43 +00:00
|
|
|
"host12prog",
|
2022-09-11 10:14:15 +00:00
|
|
|
"Lunathir",
|
2022-03-21 22:34:43 +00:00
|
|
|
"plane",
|
|
|
|
"TheEssem",
|
|
|
|
"",
|
|
|
|
"powered by:",
|
|
|
|
"Dear ImGui by Omar Cornut",
|
|
|
|
"SDL2 by Sam Lantinga",
|
|
|
|
"zlib by Jean-loup Gailly",
|
|
|
|
"and Mark Adler",
|
|
|
|
"libsndfile by Erik de Castro Lopo",
|
2022-04-12 09:36:45 +00:00
|
|
|
"Portable File Dialogs by Sam Hocevar",
|
2022-06-18 07:00:10 +00:00
|
|
|
"Native File Dialog by Frogtoss Games",
|
2022-04-12 09:36:45 +00:00
|
|
|
"RtMidi by Gary P. Scavone",
|
2022-06-29 09:57:05 +00:00
|
|
|
"FFTW by Matteo Frigo and Steven G. Johnson",
|
2022-06-18 07:00:10 +00:00
|
|
|
"backward-cpp by Google",
|
2022-04-12 09:36:45 +00:00
|
|
|
"adpcm by superctr",
|
2022-06-29 09:57:05 +00:00
|
|
|
"Nuked-OPL3/OPLL/OPM/OPN2/PSG by Nuke.YKT",
|
2022-03-21 22:34:43 +00:00
|
|
|
"ymfm by Aaron Giles",
|
|
|
|
"MAME SN76496 by Nicola Salmoria",
|
|
|
|
"MAME AY-3-8910 by Couriersud",
|
2022-05-15 07:37:39 +00:00
|
|
|
"with AY8930 fixes by Eulous, cam900 and Grauw",
|
2022-03-21 22:34:43 +00:00
|
|
|
"MAME SAA1099 by Juergen Buchmueller and Manuel Abadia",
|
2022-06-18 07:00:10 +00:00
|
|
|
"MAME Namco WSG by Nicola Salmoria and Aaron Giles",
|
|
|
|
"MAME RF5C68 core by Olivier Galibert and Aaron Giles",
|
2022-10-03 00:12:31 +00:00
|
|
|
"MAME MSM5232 core by Jarek Burczynski and Hiromitsu Shioya",
|
2022-06-18 07:00:10 +00:00
|
|
|
"MAME MSM6258 core by Barry Rodewald",
|
|
|
|
"MAME YMZ280B core by Aaron Giles",
|
2022-04-12 09:36:45 +00:00
|
|
|
"SAASound by Dave Hooper and Simon Owen",
|
2022-03-21 22:34:43 +00:00
|
|
|
"SameBoy by Lior Halphon",
|
2022-10-11 07:23:29 +00:00
|
|
|
"Mednafen PCE, WonderSwan, T6W28 and Virtual Boy audio cores",
|
2022-10-03 00:12:31 +00:00
|
|
|
"SNES DSP core by Blargg",
|
2022-04-12 09:36:45 +00:00
|
|
|
"puNES (NES, MMC5 and FDS) by FHorse",
|
2022-06-18 07:00:10 +00:00
|
|
|
"NSFPlay (NES and FDS) by Brad Smith and Brezza",
|
2022-03-21 22:34:43 +00:00
|
|
|
"reSID by Dag Lem",
|
2022-08-28 20:10:16 +00:00
|
|
|
"reSIDfp by Dag Lem, Antti Lankila",
|
|
|
|
"and Leandro Nini",
|
2022-03-21 22:34:43 +00:00
|
|
|
"Stella by Stella Team",
|
2022-06-18 07:00:10 +00:00
|
|
|
"QSound emulator by superctr and Valley Bell",
|
2022-04-12 09:36:45 +00:00
|
|
|
"VICE VIC-20 sound core by Rami Rasanen and viznut",
|
|
|
|
"VERA sound core by Frank van den Hoef",
|
|
|
|
"K005289 emulator by cam900",
|
2022-08-09 19:53:31 +00:00
|
|
|
"Namco 163 emulator by cam900",
|
2022-04-12 09:36:45 +00:00
|
|
|
"Seta X1-010 emulator by cam900",
|
|
|
|
"Konami VRC6 emulator by cam900",
|
2022-06-18 07:00:10 +00:00
|
|
|
"Konami SCC emulator by cam900",
|
|
|
|
"MSM6295 emulator by cam900",
|
2022-03-21 22:34:43 +00:00
|
|
|
"",
|
2022-06-18 07:00:10 +00:00
|
|
|
"greetings to:",
|
|
|
|
"Fractal Sound team",
|
|
|
|
"NEOART Costa Rica",
|
|
|
|
"all members of Deflers of Noice!",
|
2022-03-21 22:34:43 +00:00
|
|
|
"",
|
|
|
|
"copyright © 2021-2022 tildearrow",
|
|
|
|
"(and contributors).",
|
|
|
|
"licensed under GPLv2+! see",
|
|
|
|
"LICENSE for more information.",
|
|
|
|
"",
|
2022-04-01 10:20:00 +00:00
|
|
|
"help Furnace grow:",
|
2022-03-21 22:34:43 +00:00
|
|
|
"https://github.com/tildearrow/furnace",
|
|
|
|
"",
|
|
|
|
"contact tildearrow at:",
|
|
|
|
"https://tildearrow.org/?p=contact",
|
|
|
|
"",
|
|
|
|
"disclaimer:",
|
|
|
|
"despite the fact this program works",
|
|
|
|
"with the .dmf file format, it is NOT",
|
|
|
|
"affiliated with Delek or DefleMask in",
|
|
|
|
"any way, nor it is a replacement for",
|
|
|
|
"the original program.",
|
|
|
|
"",
|
|
|
|
"it also comes with ABSOLUTELY NO WARRANTY.",
|
|
|
|
"",
|
|
|
|
"thanks to all contributors/bug reporters!"
|
|
|
|
};
|
|
|
|
|
|
|
|
const size_t aboutCount=sizeof(aboutLine)/sizeof(aboutLine[0]);
|
|
|
|
|
|
|
|
void FurnaceGUI::drawAbout() {
|
|
|
|
// do stuff
|
|
|
|
if (ImGui::Begin("About Furnace",NULL,ImGuiWindowFlags_Modal|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoResize|ImGuiWindowFlags_NoDocking|ImGuiWindowFlags_NoTitleBar)) {
|
2022-04-01 10:20:00 +00:00
|
|
|
ImGui::SetWindowPos(ImVec2(0,0));
|
2022-03-21 22:34:43 +00:00
|
|
|
ImGui::SetWindowSize(ImVec2(scrW*dpiScale,scrH*dpiScale));
|
|
|
|
ImGui::PushFont(bigFont);
|
|
|
|
ImDrawList* dl=ImGui::GetWindowDrawList();
|
|
|
|
float r=0;
|
|
|
|
float g=0;
|
|
|
|
float b=0;
|
|
|
|
float peakMix=settings.partyTime?((peak[0]+peak[1])*0.5):0.3;
|
|
|
|
ImGui::ColorConvertHSVtoRGB(aboutHue,1.0,0.25+MIN(0.75f,peakMix*0.75f),r,g,b);
|
|
|
|
dl->AddRectFilled(ImVec2(0,0),ImVec2(scrW*dpiScale,scrH*dpiScale),0xff000000);
|
|
|
|
bool skip=false;
|
|
|
|
bool skip2=false;
|
|
|
|
for (int i=(-80-sin(double(aboutSin)*2*M_PI/120.0)*80.0)*2; i<scrW; i+=160) {
|
|
|
|
skip2=!skip2;
|
|
|
|
skip=skip2;
|
|
|
|
for (int j=(-80-cos(double(aboutSin)*2*M_PI/150.0)*80.0)*2; j<scrH; j+=160) {
|
|
|
|
skip=!skip;
|
|
|
|
if (skip) continue;
|
|
|
|
dl->AddRectFilled(ImVec2(i*dpiScale,j*dpiScale),ImVec2((i+160)*dpiScale,(j+160)*dpiScale),ImGui::GetColorU32(ImVec4(r*0.25,g*0.25,b*0.25,1.0)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
skip=false;
|
|
|
|
skip2=false;
|
|
|
|
for (int i=(-80-cos(double(aboutSin)*2*M_PI/120.0)*80.0)*2; i<scrW; i+=160) {
|
|
|
|
skip2=!skip2;
|
|
|
|
skip=skip2;
|
|
|
|
for (int j=(-80-sin(double(aboutSin)*2*M_PI/150.0)*80.0)*2; j<scrH; j+=160) {
|
|
|
|
skip=!skip;
|
|
|
|
if (skip) continue;
|
|
|
|
dl->AddRectFilled(ImVec2(i*dpiScale,j*dpiScale),ImVec2((i+160)*dpiScale,(j+160)*dpiScale),ImGui::GetColorU32(ImVec4(r*0.5,g*0.5,b*0.5,1.0)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
skip=false;
|
|
|
|
skip2=false;
|
|
|
|
for (int i=(-160+fmod(aboutSin*2,160))*2; i<scrW; i+=160) {
|
|
|
|
skip2=!skip2;
|
|
|
|
skip=skip2;
|
|
|
|
for (int j=(-240-cos(double(aboutSin*M_PI/300.0))*240.0)*2; j<scrH; j+=160) {
|
|
|
|
skip=!skip;
|
|
|
|
if (skip) continue;
|
|
|
|
dl->AddRectFilled(ImVec2(i*dpiScale,j*dpiScale),ImVec2((i+160)*dpiScale,(j+160)*dpiScale),ImGui::GetColorU32(ImVec4(r*0.75,g*0.75,b*0.75,1.0)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (size_t i=0; i<aboutCount; i++) {
|
|
|
|
double posX=(scrW*dpiScale/2.0)+(sin(double(i)*0.5+double(aboutScroll)/90.0)*120*dpiScale)-(ImGui::CalcTextSize(aboutLine[i]).x*0.5);
|
|
|
|
double posY=(scrH-aboutScroll+42*i)*dpiScale;
|
|
|
|
if (posY<-80*dpiScale || posY>scrH*dpiScale) continue;
|
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX+dpiScale,posY+dpiScale),
|
|
|
|
0xff000000,aboutLine[i]);
|
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX+dpiScale,posY-dpiScale),
|
|
|
|
0xff000000,aboutLine[i]);
|
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX-dpiScale,posY+dpiScale),
|
|
|
|
0xff000000,aboutLine[i]);
|
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX-dpiScale,posY-dpiScale),
|
|
|
|
0xff000000,aboutLine[i]);
|
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX,posY),
|
|
|
|
0xffffffff,aboutLine[i]);
|
|
|
|
}
|
|
|
|
ImGui::PopFont();
|
|
|
|
|
|
|
|
float timeScale=60.0f*ImGui::GetIO().DeltaTime;
|
|
|
|
|
|
|
|
aboutHue+=(0.001+peakMix*0.004)*timeScale;
|
|
|
|
aboutScroll+=(2+(peakMix>0.78)*3)*timeScale;
|
|
|
|
aboutSin+=(1+(peakMix>0.75)*2)*timeScale;
|
|
|
|
|
|
|
|
while (aboutHue>1) aboutHue--;
|
|
|
|
while (aboutSin>=2400) aboutSin-=2400;
|
|
|
|
if (aboutScroll>(42*aboutCount+scrH)) aboutScroll=-20;
|
2022-04-20 02:55:23 +00:00
|
|
|
|
|
|
|
WAKE_UP;
|
2022-03-21 22:34:43 +00:00
|
|
|
}
|
|
|
|
if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_ABOUT;
|
|
|
|
ImGui::End();
|
2022-03-21 22:38:11 +00:00
|
|
|
}
|