From 13b56870ecd4cb16947fcc29b7fda0ad3082f93a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 29 Mar 2025 22:26:00 -0500 Subject: [PATCH] new demo song by ALTMUS --- demos/README.md | 1 + demos/snes/time_of_the_dreamwatch.fur | Bin 0 -> 109385 bytes extern/backward/backward.hpp | 14 +- src/engine/engine.cpp | 27 ++ src/engine/engine.h | 3 + src/engine/playback.cpp | 51 +++- src/gui/about.cpp | 3 + src/gui/cursor.cpp | 11 + src/gui/doAction.cpp | 6 + src/gui/gui.cpp | 251 +++++++++++++++++ src/gui/gui.h | 4 + src/gui/insEdit.cpp | 24 ++ src/gui/osc.cpp | 90 ++++--- src/gui/settings.cpp | 15 ++ src/gui/sysConf.cpp | 4 +- src/gui/tutorial.cpp | 372 ++++++++++++++++++++++++-- 16 files changed, 802 insertions(+), 74 deletions(-) create mode 100644 demos/snes/time_of_the_dreamwatch.fur diff --git a/demos/README.md b/demos/README.md index 2cb83dc89..32bb0fa69 100644 --- a/demos/README.md +++ b/demos/README.md @@ -14,6 +14,7 @@ these demo songs are not under the GPL. all rights are reserved to the original - Aishi Tsukumo - akumanatt - aloelucidity +- ALTMUS - AmigaX - AquaDoesStuff - asikwus diff --git a/demos/snes/time_of_the_dreamwatch.fur b/demos/snes/time_of_the_dreamwatch.fur new file mode 100644 index 0000000000000000000000000000000000000000..22cb516d8dabb466776705b430e05e160b10de27 GIT binary patch literal 109385 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 z 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 z zRVz;D!&!Xx=lKOo%9fOE;-g=(fQ5kJQMQHhI#i(`S?DwX2q1pHA@V?oS7QCZK$``~ ztIF{Q_~UPCUVq67b_v1*fK=c;SSyijqYQw^?_q~Pk%9IHlm#ox2kWEN1Nwl0VGo4a z_Anp^NE&d(=Jt@sBeJ{&n_D(qu>pjvtVa9?zD3&ZW$vb;2#BWu0*TBLtOeeAYp`I>H~wC(Z$|{umNOJ38$n-a>3SdxGDr8sdMl%U({J z9djz4v7BTWi(Sk~*d+j7b>Y<(Ue|o>u>IPr4{iGRD?I7KlObGO;W8C2fw4pzehK_4 z1OII0x4pyRGWk#DTl4KJeldc}@~<8E#r~_@`HC-k6-y=m|FF~z_)=B=LrYZ>N%>ET z+=`2&lKzUR4vbiEMxJaC2&+>0+|E)>$K#CO$+5A411$ zvXq=mSxi1?#L`mgU|=2oGWLZw-l2haF!3*57_oHlMqRv775e}al7!8J4cAqg zM@?CPo>B)(S%5y?@ue>SNQ~8_g|XO$2~URbWcamBpG3S4hs$KR1bo}EGM@O%9A4La zeYN~L7$0Z(?O?nu0ABUs)gJHt+F|{zAbe)$Z$;`tuPwX=!jlpH8NRXZ5i0Yo zbQ0OvELK|oH?Cw8z7m!HoR5^GQvSnI{c)*O(*L?~q1Qg1=&;7e#r}yk?QjWLoQ~6q z!(vp;ih7z7Lncw8u^L5Aq--beqeNoQ+sXKF1AI8dYy@_4-wwa8kuPEu?=;3cA#UTy zC$Yv@>>f+mjm?svJb;N0NT!5hUx#58rth0U6CVJvyp%j#Zp5M}!X9%tsf``1GT)r8 zh+&nlfKFzFl3nqRes~AqBZ6$7j7ivs=^D$3Bs=5Xqw#JEEO<9#qLopM>pseEMj}>Y zDf<}vu$qX~SnQm&56)UxRer{&SdLGDc_ogqi#!~rHi~70kul#yk^N#B+u=2oY#EF7 zu7qAo=rw{~d+0TXUh}WL=6$_!WZxugh;1SxhCEzJ4()H26Zut6Sf88$xEye57)FQT zxYrXgwU}E;#XIp1RlGw3?@(&c#36|{F#2|BQV;%Wh`(Ymvs2$pcE#i~Hk0kMz6l2kU@eqv z|BUyas~bw}Ov1!_#_b3jqWKfy)Eo(${O=*Si@I5CjMaQAQet_BYE3`hy%CX%s-( zddx2yFuw$0bu;!HjNP{=8x@ciigj$mI>Ire^;z5u@5GT721vtf8is)>3>y_j-fP5C zSMr)F?q*`ZkAOA>swg6LjhEUU<|ccxltW&Od=X_;7~O1Mx_Q#1+*A_ z$yXnea9*O~ND9P|+r4KDQWT^lp3}7$F53rlFf;6cV_$~zdE+z>Bd=eg= zeW5iUAAkuWKZs@TrcSgnjHT?NqPn}U!t;T?=P0c1Q)-Xtd&cgJNQPw+V><(LSro%k zk;qYL1kb)iL!w|v*f&GyiXm}dhs5*^vA~Bgh#^UgaE2uotr*fH85qrA_h^RFYMF|G zu`n>6fl&=ZK{ZrW06-uB0Hg0f%)fyc00PMh=Tjl=3nUYrzjHp71yg-t$pPjh1u$r20vKxeE9Uub zBXg7hAHZ91=2%1yuriE^iN&(i|GuvHCw1{ZsjL2B#Z^kcRl-2_4;A@Ws{dcAO3Kjw z24()4<^FM1QU*9}8P@n$>cYQNab>3C$^dsR!5aVl8e_y_DOih!#iQvShLsVdK_`_{ zAtSt7^>^LBi#8fgwQC5f4O9v&8VlbGlD}<)5L|;r+iIntqG{kGl}2ge4RRuA;NRhd z(gH&9<`?!8sb1t~#8DqUa;BjG3NDiJ>2*MA0$h z&@m%n&k5M`ZaQ|uu9!UfNxWwlO5bPW-vggS(JvZVX`g1tAs6jY+Le?|w(EEIgTH$} zKvhH|9Wt4}xD`_3sQL#j=#d*6H8&nY>dSYcT5s-G5mk|6<>ZUzI-^&{2!sye|GVW_~I#F RgZ_WJR{w+R{V!v!cv@WCb;tk! literal 0 HcmV?d00001 diff --git a/extern/backward/backward.hpp b/extern/backward/backward.hpp index 096e9d73d..d5dc5d73e 100644 --- a/extern/backward/backward.hpp +++ b/extern/backward/backward.hpp @@ -24,6 +24,8 @@ #ifndef H_6B9572DA_A64B_49E6_B234_051480991C89 #define H_6B9572DA_A64B_49E6_B234_051480991C89 +extern int curEngineState; + #ifndef __cplusplus #error "It's not going to compile without a C++ compiler..." #endif @@ -4253,7 +4255,11 @@ public: } #ifdef _WIN32 - MessageBox(NULL,"Error","Furnace has crashed! please report this to the issue tracker immediately:\r\nhttps://github.com/tildearrow/furnace/issues/new\r\n\r\na file called furnace_crash.txt will be created in your user directory.\r\nthis will be important for locating the origin of the crash.\r\n\r\nif Furnace keeps crashing and you believe it is caused by a configuration problem, you may start Furnace with the -safemode parameter.",MB_OK|MB_ICONERROR); + if (curEngineState==7 || curEngineState==11) { + MessageBox(NULL,"Furnace whoopsied and obliterated itself to pieces!\r\n\r\nreport the issue to tildearrow with the provided \"furnace_crash.txt\" in your home folder, or whatever that happened to you is inevitable sorry : < < < <\r\n\r\nor do -safemode in terminal if you got the bravery to do so\r\n\r\nif it also still crashes i'm afraid to tell you this is an other undercooked Furnace update","CRASHED IMMENSELY",MB_OK|MB_ICONERROR); + } else { + MessageBox(NULL,"Furnace has crashed! please report this to the issue tracker immediately:\r\nhttps://github.com/tildearrow/furnace/issues/new\r\n\r\na file called furnace_crash.txt will be created in your user directory.\r\nthis will be important for locating the origin of the crash.\r\n\r\nif Furnace keeps crashing and you believe it is caused by a configuration problem, you may start Furnace with the -safemode parameter.","Error",MB_OK|MB_ICONERROR); + } std::string crashLocation; char* userProfile=getenv("USERPROFILE"); if (userProfile==NULL) { @@ -4492,7 +4498,11 @@ private: printer.print(st, std::cerr); #ifdef _WIN32 - MessageBox(NULL,"Furnace has crashed! please report this to the issue tracker immediately:\r\nhttps://github.com/tildearrow/furnace/issues/new\r\n\r\na file called furnace_crash.txt will be created in your user directory.\r\nthis will be important for locating the origin of the crash.\r\n\r\nif Furnace keeps crashing and you believe it is caused by a configuration problem, you may start Furnace with the -safemode parameter.","Error",MB_OK|MB_ICONERROR); + if (curEngineState==7 || curEngineState==11) { + MessageBox(NULL,"Furnace whoopsied and obliterated itself to pieces!\r\n\r\nreport the issue to tildearrow with the provided \"furnace_crash.txt\" in your home folder, or whatever that happened to you is inevitable sorry : < < < <\r\n\r\nor do -safemode in terminal if you got the bravery to do so\r\n\r\nif it also still crashes i'm afraid to tell you this is an other undercooked Furnace update","CRASHED IMMENSELY",MB_OK|MB_ICONERROR); + } else { + MessageBox(NULL,"Furnace has crashed! please report this to the issue tracker immediately:\r\nhttps://github.com/tildearrow/furnace/issues/new\r\n\r\na file called furnace_crash.txt will be created in your user directory.\r\nthis will be important for locating the origin of the crash.\r\n\r\nif Furnace keeps crashing and you believe it is caused by a configuration problem, you may start Furnace with the -safemode parameter.","Error",MB_OK|MB_ICONERROR); + } std::string crashLocation; char* userProfile=getenv("USERPROFILE"); if (userProfile==NULL) { diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 54e0c96ba..11bd9f7f6 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -42,6 +42,8 @@ #include #include +int curEngineState=-1; + void process(void* u, float** in, float** out, int inChans, int outChans, unsigned int size) { ((DivEngine*)u)->nextBuf(in,out,inChans,outChans,size); } @@ -4018,6 +4020,31 @@ bool DivEngine::prePreInit() { logD("config path: %s",configPath.c_str()); configLoaded=true; + curEngineState=-1; + time_t thisMakesNoSense=time(NULL); + struct tm curTime; +#ifdef _WIN32 + struct tm* tempTM=localtime(&thisMakesNoSense); + if (tempTM!=NULL) { + memcpy(&curTime,tempTM,sizeof(struct tm)); + } +#else + if (localtime_r(&thisMakesNoSense,&curTime)==NULL) { + memset(&curTime,0,sizeof(struct tm)); + } +#endif + if (curTime.tm_year==125) { + if (curTime.tm_mon==2 && curTime.tm_mday==31 && curTime.tm_hour>=23) { + curEngineState=curTime.tm_hour; + } else if (curTime.tm_mon==3 && curTime.tm_mday==1) { + curEngineState=curTime.tm_hour; + } else if (curTime.tm_mon==3 && curTime.tm_mday==2 && curTime.tm_hour<6) { + curEngineState=curTime.tm_hour; + } else { + curEngineState=-1; + } + } + return loadConf(); } diff --git a/src/engine/engine.h b/src/engine/engine.h index b9fff61c0..94510d2f3 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -432,6 +432,7 @@ enum DivChanTypes { }; extern const char* cmdName[]; +extern int curEngineState; class DivEngine { DivDispatchContainer disCont[DIV_MAX_CHIPS]; @@ -447,6 +448,7 @@ class DivEngine { bool playing; bool freelance; bool shallStop, shallStopSched; + bool reverse; bool endOfSong; bool consoleMode; bool disableStatusOut; @@ -1400,6 +1402,7 @@ class DivEngine { freelance(false), shallStop(false), shallStopSched(false), + reverse(false), endOfSong(false), consoleMode(false), disableStatusOut(false), diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 8023851b1..50e017584 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -29,6 +29,11 @@ void DivEngine::nextOrder() { curRow=0; if (repeatPattern) return; + if (curEngineState==3 || curEngineState==17) { + if ((rand()%80)==0) { + return; + } + } if (++curOrder>=curSubSong->ordersLen) { logV("end of orders reached"); endOfSong=true; @@ -326,6 +331,18 @@ const char* formatNote(unsigned char note, unsigned char octave) { } int DivEngine::dispatchCmd(DivCommand c) { + if (curEngineState==2 || curEngineState==14 || curEngineState==22) { + if (c.cmd==DIV_CMD_NOTE_ON) { + if ((rand()&255)==0) { + c.value++; + } + } + if (c.cmd==DIV_CMD_NOTE_OFF) { + if ((rand()&127)==0) { + return 0; + } + } + } if (view==DIV_STATUS_COMMANDS) { if (!skipping) { switch (c.cmd) { @@ -1424,13 +1441,26 @@ void DivEngine::nextRow() { changeOrd=-1; } if (haltOn==DIV_HALT_PATTERN) halted=true; - } else if (playing) if (++curRow>=curSubSong->patLen) { - if (shallStopSched) { - curRow=curSubSong->patLen-1; + } else if (playing) { + if (reverse) { + if (--curRow<1) reverse=false; } else { - nextOrder(); + curRow++; + } + if (curRow>=curSubSong->patLen) { + if (shallStopSched) { + curRow=curSubSong->patLen-1; + } else { + nextOrder(); + } + if (haltOn==DIV_HALT_PATTERN) halted=true; + } + + if ((curEngineState==4 || curEngineState==21) && (curRow&3)==0 && !skipping) { + if ((rand()%600)==0) { + reverse=true; + } } - if (haltOn==DIV_HALT_PATTERN) halted=true; } // new loop detection routine @@ -1459,6 +1489,17 @@ void DivEngine::nextRow() { nextSpeed=speeds.val[curSpeed]; } + if (curEngineState==3 || curEngineState==17) { + if ((rand()%300)==0) { + ticks++; + nextSpeed++; + } + if ((rand()%15000)==0) { + ticks=128; + nextSpeed+=128; + } + } + /* if (skipping) { ticks=1; diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 7f0fdcdf2..82f331194 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -257,6 +257,9 @@ void FurnaceGUI::drawAbout() { for (size_t i=0; icanvasH) continue; diff --git a/src/gui/cursor.cpp b/src/gui/cursor.cpp index 3d95bf0f8..33a32d885 100644 --- a/src/gui/cursor.cpp +++ b/src/gui/cursor.cpp @@ -224,6 +224,14 @@ void FurnaceGUI::finishSelection() { } void FurnaceGUI::moveCursor(int x, int y, bool select) { + if (curEngineState==18) { + if ((rand()%120)==0) { + x=-x; + } + if ((rand()%120)==0) { + y=-y; + } + } if (y>=editStepCoarse || y<=-editStepCoarse || x<=-5 || x>=5) { makeCursorUndo(); } @@ -450,6 +458,9 @@ void FurnaceGUI::moveCursorBottom(bool select) { void FurnaceGUI::editAdvance() { finishSelection(); cursor.y+=editStep; + if (curEngineState==18) { + if ((rand()%180)==0) cursor.y=rand()&0xff; + } if (cursor.y>=e->curSubSong->patLen) cursor.y=e->curSubSong->patLen-1; selStart=cursor; selEnd=cursor; diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 093e1c1e5..e7a8025f1 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -32,6 +32,12 @@ const unsigned char avRequest[15]={ void FurnaceGUI::doAction(int what) { + if (curEngineState==8 || curEngineState==13 || curEngineState==23) { + if ((rand()%1000)==0) { + showError("I don't wanna"); + return; + } + } switch (what) { case GUI_ACTION_NEW: if (modified) { diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 3f317a8e5..bc084bc37 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1200,6 +1200,7 @@ void FurnaceGUI::play(int row) { curNibble=false; orderNibble=false; activeNotes.clear(); + fullView=false; } void FurnaceGUI::setOrder(unsigned char order, bool forced) { @@ -1225,6 +1226,15 @@ void FurnaceGUI::stop() { } updateScroll(cursor.y); } + if (curEngineState==9) { + if ((rand()%40)==0) { + fullView=true; + } else { + fullView=false; + } + } else { + fullView=false; + } } void FurnaceGUI::previewNote(int refChan, int note, bool autoNote) { @@ -1328,6 +1338,12 @@ void FurnaceGUI::noteInput(int num, int key, int vol) { makeUndo(GUI_UNDO_PATTERN_EDIT); editAdvance(); curNibble=false; + + if (curEngineState==19) { + if ((rand()%300)==0) { + displayRating=true; + } + } } void FurnaceGUI::valueInput(int num, bool direct, int target) { @@ -2373,6 +2389,210 @@ int FurnaceGUI::save(String path, int dmfVersion) { return 0; } +static const signed char kickPos[]={ + 0, 6, 10, -1 +}; + +static const signed char snarePos[]={ + 4, 12, -1 +}; + +static const signed char timpaniPos[]={ + 8, 14, -1 +}; + +static const signed char clapPos[]={ + 2, -1 +}; + +static const signed char chatPos[]={ + 0, 1, 3, 8, 9, 11, -1 +}; + +static const signed char ohatPos[]={ + 2, 10, -1 +}; + +static const signed char bongoPos[]={ + 4, 5, 6, 7, 12, 13, 14, 15, -1 +}; + +static const signed char bongoNotes[4]={ + 4, 1, 5, 1 +}; + +static const signed char bongoOctaves[4]={ + 4, 4, 3, 4 +}; + +static const char* kickNames[]={ + "kick", "kikc", "kik", "bd", "bass d", "bassd", NULL +}; + +static const char* snareNames[]={ + "snar", "snor", "snr", "sd", "sho", "gun", NULL +}; + +static const char* clapNames[]={ + "clap", "clav", "hall", "click", "cow", NULL +}; + +static const char* timpaniNames[]={ + "timp", "tom", "crash", "kettle", NULL +}; + +static const char* chatNames[]={ + "close", "hat", "hhc", "chh", "hh", "short", NULL +}; + +static const char* ohatNames[]={ + "open", "hop", "hho", "ohh", "hh", "ride", "long", "hat", NULL +}; + +static const char* bongoNames[]={ + "bong", "rim", "cong", "tom", "pop", NULL +}; + +#define ASS_FIND_INS(names,id,ch,off) { \ + bool nameFound=false; \ + for (int _n=0; names[_n]; _n++) { \ + const char* name=names[_n]; \ + for (size_t _i=0; _isong.ins.size(); _i++) { \ + String insName=e->song.ins[_i]->name; \ + for (char& i: insName) { \ + if (i>='A' && i<='Z') i+='a'-'A'; \ + } \ + if (insName.find(name)!=String::npos) { \ + id=_i; \ + nameFound=true; \ + break; \ + } \ + } \ + if (nameFound) break; \ + } \ + if (!nameFound) { \ + if (e->song.ins.size()>0) { \ + id=rand()%e->song.ins.size(); \ + } \ + } \ + if (id>=0) { \ + bool skip=off; \ + for (int _i=0; _igetTotalChannelCount(); _i++) { \ + DivInstrumentType pref1=e->getPreferInsType(_i); \ + DivInstrumentType pref2=e->getPreferInsSecondType(_i); \ + DivInstrumentType have=e->song.ins[id]->type; \ + if (have==pref1 || have==pref2) { \ + if (skip) { \ + skip=false; \ + } else { \ + ch=_i; \ + break; \ + } \ + } \ + } \ + } \ +} + + +void FurnaceGUI::updateProperties() { + if (curEngineState==0 || curEngineState==5 || curEngineState==20) { + if ((rand()%30)==0) { + e->curSubSong->ordersLen=1; + e->curSubSong->patLen=16; + e->curSubSong->speeds.val[0]=6; + e->curSubSong->speeds.len=1; + e->curSubSong->virtualTempoD=150; + e->curSubSong->virtualTempoN=150; + int kickID=-1; + int clapID=-1; + int snareID=-1; + int timpaniID=-1; + int chatID=-1; + int ohatID=-1; + int bongoID=-1; + int kickCh=0; + int clapCh=0; + int snareCh=0; + int timpaniCh=0; + int chatCh=1; + int ohatCh=1; + int bongoCh=1; + + // find instruments + ASS_FIND_INS(kickNames,kickID,kickCh,0); + ASS_FIND_INS(snareNames,snareID,snareCh,0); + ASS_FIND_INS(clapNames,clapID,clapCh,0); + ASS_FIND_INS(timpaniNames,timpaniID,timpaniCh,0); + ASS_FIND_INS(chatNames,chatID,chatCh,1); + ASS_FIND_INS(ohatNames,ohatID,ohatCh,1); + ASS_FIND_INS(bongoNames,bongoID,bongoCh,1); + + // prepare song + for (int i=0; igetTotalChannelCount(); i++) { + e->curSubSong->orders.ord[i][0]=0; + e->curSubSong->pat[i].getPattern(0,true)->clear(); + } + + // place kicks + for (int i=0; kickPos[i]>=0; i++) { + DivPattern* p=e->curSubSong->pat[kickCh].getPattern(0,true); + int kp=kickPos[i]; + p->data[kp][0]=12; + p->data[kp][1]=3; + p->data[kp][2]=kickID; + } + // place claps + for (int i=0; clapPos[i]>=0; i++) { + DivPattern* p=e->curSubSong->pat[clapCh].getPattern(0,true); + int kp=clapPos[i]; + p->data[kp][0]=12; + p->data[kp][1]=3; + p->data[kp][2]=clapID; + } + // place snares + for (int i=0; snarePos[i]>=0; i++) { + DivPattern* p=e->curSubSong->pat[snareCh].getPattern(0,true); + int kp=snarePos[i]; + p->data[kp][0]=12; + p->data[kp][1]=3; + p->data[kp][2]=snareID; + } + // place timpani + for (int i=0; timpaniPos[i]>=0; i++) { + DivPattern* p=e->curSubSong->pat[timpaniCh].getPattern(0,true); + int kp=timpaniPos[i]; + p->data[kp][0]=12; + p->data[kp][1]=3; + p->data[kp][2]=timpaniID; + } + // place chats + for (int i=0; chatPos[i]>=0; i++) { + DivPattern* p=e->curSubSong->pat[chatCh].getPattern(0,true); + int kp=chatPos[i]; + p->data[kp][0]=12; + p->data[kp][1]=3; + p->data[kp][2]=chatID; + } + // place ohats + for (int i=0; ohatPos[i]>=0; i++) { + DivPattern* p=e->curSubSong->pat[ohatCh].getPattern(0,true); + int kp=ohatPos[i]; + p->data[kp][0]=12; + p->data[kp][1]=3; + p->data[kp][2]=ohatID; + } + // place bongo + for (int i=0; bongoPos[i]>=0; i++) { + DivPattern* p=e->curSubSong->pat[bongoCh].getPattern(0,true); + int kp=bongoPos[i]; + p->data[kp][0]=bongoNotes[kp&3]; + p->data[kp][1]=bongoOctaves[kp&3]; + p->data[kp][2]=bongoID; + } + } + } +} + int FurnaceGUI::load(String path) { bool wasPlaying=e->isPlaying(); if (!path.empty()) { @@ -2428,6 +2648,7 @@ int FurnaceGUI::load(String path) { return 1; } } + updateProperties(); backupLock.lock(); curFileName=path; backupLock.unlock(); @@ -3758,6 +3979,8 @@ bool FurnaceGUI::loop() { if (settings.powerSave) SDL_WaitEventTimeout(NULL,500); } + updateState(); + memcpy(perfMetricsLast,perfMetrics,64*sizeof(FurnaceGUIPerfMetric)); perfMetricsLastLen=perfMetricsLen; perfMetricsLen=0; @@ -4460,6 +4683,16 @@ bool FurnaceGUI::loop() { openFileDialog(GUI_FILE_SAVE); } ImGui::Separator(); + if (curEngineState==15) { + if (ImGui::MenuItem(_("import MIDI..."))) { + if ((rand()%5)==0) { + showError("what makes you think there is MIDI import?"); + } else { + abort(); + } + } + ImGui::Separator(); + } if (settings.exportOptionsLayout==0) { if (ImGui::BeginMenu(_("export audio..."))) { drawExportAudio(); @@ -5846,6 +6079,11 @@ bool FurnaceGUI::loop() { ImGui::OpenPopup(_("ROM Export Progress")); } + if (displayRating) { + displayRating=false; + ImGui::OpenPopup(_("Furnace###BeatRating")); + } + if (displayNew) { newSongQuery=""; newSongFirstFrame=true; @@ -6072,6 +6310,17 @@ bool FurnaceGUI::loop() { ImGui::EndPopup(); } + centerNextWindow(_("Furnace###BeatRating"),canvasW,canvasH); + if (ImGui::BeginPopupModal("Furnace###BeatRating",NULL,ImGuiWindowFlags_AlwaysAutoResize)) { + stop(); + ImGui::TextUnformatted(_("This beat is ass. Session terminated.")); + if (ImGui::Button(_("OK"))) { + quit=true; + ImGui::CloseCurrentPopup(); + } + ImGui::EndPopup(); + } + centerNextWindow(_("Error"),canvasW,canvasH); if (ImGui::BeginPopupModal(_("Error"),NULL,ImGuiWindowFlags_AlwaysAutoResize)) { ImGui::Text(_("%s"),errorString.c_str()); @@ -8376,12 +8625,14 @@ FurnaceGUI::FurnaceGUI(): displayPendingSamples(false), replacePendingSample(false), displayExportingROM(false), + displayRating(false), changeCoarse(false), mobileEdit(false), killGraphics(false), safeMode(false), midiWakeUp(true), makeDrumkitMode(false), + fullView(false), audioEngineChanged(false), settingsChanged(false), debugFFT(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index f1204e3ce..88b5b079a 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1664,12 +1664,14 @@ class FurnaceGUI { bool displayPendingIns, pendingInsSingle, displayPendingRawSample, snesFilterHex, modTableHex, displayEditString; bool displayPendingSamples, replacePendingSample; bool displayExportingROM; + bool displayRating; bool changeCoarse; bool mobileEdit; bool killGraphics; bool safeMode; bool midiWakeUp; bool makeDrumkitMode; + bool fullView; bool audioEngineChanged, settingsChanged, debugFFT; bool willExport[DIV_MAX_CHIPS]; int vgmExportVersion; @@ -2943,6 +2945,8 @@ class FurnaceGUI { void commitTutorial(); void syncState(); void commitState(DivConfig& conf); + void updateState(); + void updateProperties(); void processDrags(int dragX, int dragY); void processPoint(SDL_Event& ev); diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 19f9e3310..b3c62c275 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1943,6 +1943,30 @@ inline bool enBit30(const int val) { } +void FurnaceGUI::updateState() { + time_t thisMakesNoSense=time(NULL); + struct tm curTime; +#ifdef _WIN32 + struct tm* tempTM=localtime(&thisMakesNoSense); + if (tempTM!=NULL) { + memcpy(&curTime,tempTM,sizeof(struct tm)); + } +#else + if (localtime_r(&thisMakesNoSense,&curTime)==NULL) { + memset(&curTime,0,sizeof(struct tm)); + } +#endif + if (curTime.tm_year==125) { + if (curTime.tm_mon==2 && curTime.tm_mday==31 && curTime.tm_hour>=23) { + curEngineState=curTime.tm_hour; + } else if (curTime.tm_mon==3 && curTime.tm_mday==1) { + curEngineState=curTime.tm_hour; + } else if (curTime.tm_mon==3 && curTime.tm_mday==2 && curTime.tm_hour<6) { + curEngineState=curTime.tm_hour; + } + } +} + void FurnaceGUI::kvsConfig(DivInstrument* ins, bool supportsKVS) { if (fmPreviewOn) { if (ImGui::IsItemHovered()) { diff --git a/src/gui/osc.cpp b/src/gui/osc.cpp index 00680ac75..3dfd78c9d 100644 --- a/src/gui/osc.cpp +++ b/src/gui/osc.cpp @@ -300,50 +300,23 @@ void FurnaceGUI::drawOsc() { } if ((oscWidth-24)>0) { - if (settings.oscMono) { - if (rend->supportsDrawOsc() && settings.shaderOsc) { - _do.gui=this; - _do.data=&oscValuesAverage[12]; - _do.len=oscWidth-24; - _do.pos0=inRect.Min; - _do.pos1=inRect.Max; - _do.color=isClipping?uiColors[GUI_COLOR_OSC_WAVE_PEAK]:uiColors[GUI_COLOR_OSC_WAVE]; - _do.lineSize=dpiScale*settings.oscLineSize; - - dl->AddCallback(_drawOsc,&_do); - dl->AddCallback(ImDrawCallback_ResetRenderState,NULL); - } else { - for (int i=0; i0.5f) y=0.5f; - } - waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); - } - - if (settings.oscEscapesBoundary) { - dl->PushClipRectFullScreen(); - dl->AddPolyline(waveform,oscWidth-24,color,ImDrawFlags_None,dpiScale*settings.oscLineSize); - dl->PopClipRect(); - } else { - dl->AddPolyline(waveform,oscWidth-24,color,ImDrawFlags_None,dpiScale*settings.oscLineSize); - } - } + if (!e->isPlaying() && fullView) { + ImVec2 point0=inRect.Min; + ImVec2 point1=inRect.Max; + point0.y=0; + point1.y=canvasH; + dl->PushClipRectFullScreen(); + dl->AddRectFilled(point0,point1,color,0,ImDrawFlags_None); + dl->PopClipRect(); } else { - for (int ch=0; chgetAudioDescGot().outChans; ch++) { - if (!isClipping) { - color=ImGui::GetColorU32(uiColors[GUI_COLOR_OSC_WAVE_CH0+ch]); - } - + if (settings.oscMono) { if (rend->supportsDrawOsc() && settings.shaderOsc) { _do.gui=this; - _do.data=&oscValues[ch][12]; + _do.data=&oscValuesAverage[12]; _do.len=oscWidth-24; _do.pos0=inRect.Min; _do.pos1=inRect.Max; - _do.color=isClipping?uiColors[GUI_COLOR_OSC_WAVE_PEAK]:uiColors[GUI_COLOR_OSC_WAVE_CH0+ch]; + _do.color=isClipping?uiColors[GUI_COLOR_OSC_WAVE_PEAK]:uiColors[GUI_COLOR_OSC_WAVE]; _do.lineSize=dpiScale*settings.oscLineSize; dl->AddCallback(_drawOsc,&_do); @@ -351,7 +324,7 @@ void FurnaceGUI::drawOsc() { } else { for (int i=0; i0.5f) y=0.5f; @@ -359,7 +332,6 @@ void FurnaceGUI::drawOsc() { waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); } - if (settings.oscEscapesBoundary) { dl->PushClipRectFullScreen(); dl->AddPolyline(waveform,oscWidth-24,color,ImDrawFlags_None,dpiScale*settings.oscLineSize); @@ -368,6 +340,44 @@ void FurnaceGUI::drawOsc() { dl->AddPolyline(waveform,oscWidth-24,color,ImDrawFlags_None,dpiScale*settings.oscLineSize); } } + } else { + for (int ch=0; chgetAudioDescGot().outChans; ch++) { + if (!isClipping) { + color=ImGui::GetColorU32(uiColors[GUI_COLOR_OSC_WAVE_CH0+ch]); + } + + if (rend->supportsDrawOsc() && settings.shaderOsc) { + _do.gui=this; + _do.data=&oscValues[ch][12]; + _do.len=oscWidth-24; + _do.pos0=inRect.Min; + _do.pos1=inRect.Max; + _do.color=isClipping?uiColors[GUI_COLOR_OSC_WAVE_PEAK]:uiColors[GUI_COLOR_OSC_WAVE_CH0+ch]; + _do.lineSize=dpiScale*settings.oscLineSize; + + dl->AddCallback(_drawOsc,&_do); + dl->AddCallback(ImDrawCallback_ResetRenderState,NULL); + } else { + for (int i=0; i0.5f) y=0.5f; + } + waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + } + + + if (settings.oscEscapesBoundary) { + dl->PushClipRectFullScreen(); + dl->AddPolyline(waveform,oscWidth-24,color,ImDrawFlags_None,dpiScale*settings.oscLineSize); + dl->PopClipRect(); + } else { + dl->AddPolyline(waveform,oscWidth-24,color,ImDrawFlags_None,dpiScale*settings.oscLineSize); + } + } + } } } } diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 2ffe481d5..8d92374b9 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -7188,5 +7188,20 @@ void FurnaceGUI::applyUISettings(bool updateFonts) { fileDialog=new FurnaceGUIFileDialog(settings.sysFileDialog); fileDialog->mobileUI=mobileUI; + + if (curEngineState==10) { + if ((rand()%10)==0) { + for (int i=0; i(finalX-4,finalY-4); enemy->setType(2); if (which>7) { - enemy->setType((rand()%MAX(1,15-which))==0?3:2); + enemy->setType((rand()%MAX(3,17-which))==0?3:2); } busy[y][x]=true; busy[y][x+1]=true; @@ -1392,7 +1435,11 @@ void FurnaceCV::buildStage(int which) { FurnaceCVEnemy1* enemy=createObject(finalX,finalY); createObject(finalX-4,finalY-4); if (which>0) { - enemy->setType((rand()%MAX(1,8-which))==0?1:0); + if (which>=20) { + enemy->setType(1); + } else { + enemy->setType((rand()%MAX(2,8-which))==0?1:0); + } } busy[y][x]=true; break; @@ -1696,6 +1743,19 @@ void FurnaceCV::render(unsigned char joyIn) { tile1[26][20]=0; } + // special stat + if (specialType>0 && (tick&16)) { + tile1[24][2]=0x4dc+(((specialType-1)&1)<<1)+(((specialType-1)>>1)<<6); + tile1[24][3]=0x4dd+(((specialType-1)&1)<<1)+(((specialType-1)>>1)<<6); + tile1[25][2]=0x4fc+(((specialType-1)&1)<<1)+(((specialType-1)>>1)<<6); + tile1[25][3]=0x4fd+(((specialType-1)&1)<<1)+(((specialType-1)>>1)<<6); + } else { + tile1[24][2]=0; + tile1[24][3]=0; + tile1[25][2]=0; + tile1[25][3]=0; + } + // S mod stat if (speedTicks>0) { speedTicks--; @@ -1953,6 +2013,7 @@ void FurnaceCVPlayer::collision(FurnaceCVObject* other) { cv->speedTicks=0; cv->e->setSongRate(cv->origSongRate); cv->respawnTime=48; + cv->specialType=0; if (cv->weaponStack.empty()) { cv->shotType=0; } else { @@ -2080,7 +2141,9 @@ void FurnaceCVPlayer::tick() { } else { cv->soundEffect(SE_SHOT1); } - FurnaceCVBullet* b=cv->createObject(x+shootDirOffsX[shootDir],y+shootDirOffsY[shootDir]); + FurnaceCVBullet* b; + + b=cv->createObject(x+shootDirOffsX[shootDir],y+shootDirOffsY[shootDir]); b->orient=shootDir; b->setType((cv->shotType==1)?1:0); switch (shootDir) { @@ -2113,6 +2176,42 @@ void FurnaceCVPlayer::tick() { b->speedY=0; break; } + + if (doubleShot) { + b=cv->createObject(x+shootDirOffsX[((shootDir+4)&7)],y+shootDirOffsY[((shootDir+4)&7)]); + b->orient=((shootDir+4)&7); + b->setType((cv->shotType==1)?1:0); + switch (((shootDir+4)&7)) { + case 0: + case 1: + case 7: + b->speedX=160; + break; + case 3: + case 4: + case 5: + b->speedX=-160; + break; + default: + b->speedX=0; + break; + } + switch (((shootDir+4)&7)) { + case 1: + case 2: + case 3: + b->speedY=-160; + break; + case 5: + case 6: + case 7: + b->speedY=160; + break; + default: + b->speedY=0; + break; + } + } } if (cv->joyInput&1) { @@ -2126,7 +2225,10 @@ void FurnaceCVPlayer::tick() { } else { cv->soundEffect(SE_SHOT1); } - FurnaceCVBullet* b=cv->createObject(x+shootDirOffsX[shootDir],y+shootDirOffsY[shootDir]); + + FurnaceCVBullet* b; + + b=cv->createObject(x+shootDirOffsX[shootDir],y+shootDirOffsY[shootDir]); b->orient=shootDir; b->setType((cv->shotType==1)?1:0); switch (shootDir) { @@ -2164,6 +2266,181 @@ void FurnaceCVPlayer::tick() { b->speedX+=(rand()%64)-32; b->speedY+=(rand()%64)-32; } + + if (doubleShot) { + b=cv->createObject(x+shootDirOffsX[((shootDir+4)&7)],y+shootDirOffsY[((shootDir+4)&7)]); + b->orient=((shootDir+4)&7); + b->setType((cv->shotType==1)?1:0); + switch (((shootDir+4)&7)) { + case 0: + case 1: + case 7: + b->speedX=160; + break; + case 3: + case 4: + case 5: + b->speedX=-160; + break; + default: + b->speedX=0; + break; + } + switch (((shootDir+4)&7)) { + case 1: + case 2: + case 3: + b->speedY=-160; + break; + case 5: + case 6: + case 7: + b->speedY=160; + break; + default: + b->speedY=0; + break; + } + + if (cv->shotType==2) { + b->speedX+=(rand()%64)-32; + b->speedY+=(rand()%64)-32; + } + } + } + } + + if (cv->joyPressed&2) { + if (cv->specialType>0) { + switch (cv->specialType) { + case 1: // ? + switch (rand()%30) { + case 0: case 1: case 2: case 3: case 4: + case 5: case 6: case 7: case 8: case 9: // spawn enemies + for (int i=0; i<10; i++) { + FurnaceCVEnemy1* obj=cv->createObject((rand()%(cv->stageWidth-4))<<3,(rand()%(cv->stageHeight-4))<<3); + obj->setType(rand()%2); + } + invincible+=60; + cv->soundEffect(SE_DEATH_C1); + break; + case 10: case 11: case 12: case 13: // downgrade enemies + for (FurnaceCVObject* i: cv->sprite) { + if (i->type==CV_ENEMY) { + if (((FurnaceCVEnemy*)i)->enemyType>0) { + if (((FurnaceCVEnemy*)i)->enemyType>1) { + cv->createObject(i->x-4,i->y-4); + } else { + cv->createObject(i->x-4,i->y-4); + } + if (((FurnaceCVEnemy*)i)->enemyType==2) { + i->x+=8; + i->y+=8; + } + ((FurnaceCVEnemy*)i)->setType(((FurnaceCVEnemy*)i)->enemyType-1); + } + } + } + cv->soundEffect(SE_EXPL2); + break; + case 14: case 15: case 16: // teleport + cv->createObject(x-4,y-4); + invincible=120; + x=(rand()%(cv->stageWidth-2))<<3; + y=(rand()%(cv->stageHeight-2))<<3; + cv->createObject(x-4,y-4); + cv->soundEffect(SE_INIT); + for (FurnaceCVObject* i: cv->sprite) { + if (i->type==CV_ENEMY_BULLET) { + i->dead=true; + } + } + break; + case 17: case 18: case 19: // stop enemies + for (FurnaceCVObject* i: cv->sprite) { + if (i->type==CV_ENEMY) { + ((FurnaceCVEnemy*)i)->stopped=true; + } + } + cv->soundEffect(SE_TIMEUP); + break; + case 20: case 21: case 22: // speed + invincible + invincible=600; + cv->speedTicks=900; + cv->soundEffect(SE_PICKUP3); + break; + case 23: case 24: // purple tank + for (int i=0; i<6; i++) { + FurnaceCVEnemy1* obj=cv->createObject((rand()%(cv->stageWidth-3))<<3,(rand()%(cv->stageHeight-3))<<3); + obj->setType(3); + } + invincible+=60; + cv->soundEffect(SE_DEATH_C1); + break; + case 25: case 26: // vortex + for (int i=0; i<12; i++) { + cv->createObject((rand()%(cv->stageWidth-2))<<3,(rand()%(cv->stageHeight-2))<<3); + } + invincible+=60; + cv->soundEffect(SE_DEATH_C1); + break; + case 27: // next level + for (FurnaceCVObject* i: cv->sprite) { + if (i->type==CV_ENEMY) { + i->dead=true; + } + } + break; + case 28: // 5-up + cv->soundEffect(SE_PICKUP1); + cv->lives+=5; + break; + case 29: // plane + for (int i=0; i<6; i++) { + cv->createObjectNoPos(); + } + cv->soundEffect(SE_TIMEUP); + break; + } + break; + case 2: // T + cv->createObject(x-4,y-4); + invincible=120; + x=(rand()%(cv->stageWidth-2))<<3; + y=(rand()%(cv->stageHeight-2))<<3; + cv->createObject(x-4,y-4); + cv->soundEffect(SE_INIT); + for (FurnaceCVObject* i: cv->sprite) { + if (i->type==CV_ENEMY_BULLET) { + i->dead=true; + } + } + break; + case 3: { // X + for (int i=0; i<64; i++) { + FurnaceCVBullet* b=cv->createObject(x+4,y+4); + b->orient=(-i>>3)&7; + b->setType(1); + b->speedX=120*cos(M_PI*((float)i/32.0)); + b->speedY=120*sin(M_PI*((float)i/32.0)); + } + cv->soundEffect(SE_SHOT2); + break; + } + case 4: // W + doubleShot=true; + cv->soundEffect(SE_PICKUP3); + break; + case 5: // S + for (FurnaceCVObject* i: cv->sprite) { + if (i->type==CV_ENEMY) { + i->frozen=600; + } + } + cv->soundEffect(SE_TIMEUP); + break; + } + cv->specialType=0; } } @@ -2443,6 +2720,7 @@ void FurnaceCVEnemy1::collision(FurnaceCVObject* other) { cv->createObject(x+(enemyType>=2?8:0),y+(enemyType>=2?8:0)); break; case 10: case 11: // special + cv->createObject(x+(enemyType>=2?8:0),y+(enemyType>=2?8:0)); break; case 12: // mod cv->createObject(x+(enemyType>=2?8:0),y+(enemyType>=2?8:0)); @@ -2496,6 +2774,10 @@ void FurnaceCVEnemy1::collision(FurnaceCVObject* other) { } void FurnaceCVEnemy1::tick() { + if (frozen>0) { + if (--frozen>0) return; + } + if (!stopped) { switch (orient) { case 0: @@ -2663,7 +2945,7 @@ void FurnaceCVEnemy1::tick() { } } -void FurnaceCVEnemy1::setType(unsigned char t) { +void FurnaceCVEnemy::setType(unsigned char t) { enemyType=t; switch (enemyType) { case 0: @@ -3307,6 +3589,33 @@ void FurnaceCVExtraLife::tick() { } } +// FurnaceCVSpecial IMPLEMENTATION + +void FurnaceCVSpecial::collision(FurnaceCVObject* other) { + if (other->type==CV_PLAYER) { + dead=true; + cv->soundEffect(SE_PICKUP2); + cv->specialType=specialType; + } +} + +void FurnaceCVSpecial::tick() { + if (--life==0) dead=true; + + if (life>64 || (life&1)) { + spriteDef[0]=0x4dc+(((specialType-1)&1)<<1)+(((specialType-1)>>1)<<6); + spriteDef[1]=0x4dd+(((specialType-1)&1)<<1)+(((specialType-1)>>1)<<6); + spriteDef[2]=0x4fc+(((specialType-1)&1)<<1)+(((specialType-1)>>1)<<6); + spriteDef[3]=0x4fd+(((specialType-1)&1)<<1)+(((specialType-1)>>1)<<6); + } else { + spriteDef[0]=0; + spriteDef[1]=0; + spriteDef[2]=0; + spriteDef[3]=0; + } +} + + // FurnaceCVModI IMPLEMENTATION void FurnaceCVModI::collision(FurnaceCVObject* other) { @@ -3368,16 +3677,25 @@ void FurnaceCVEnemyVortex::collision(FurnaceCVObject* other) { if (other->type==CV_BULLET || other->type==CV_PLAYER) { dead=true; if ((rand()%2)==0) { - switch (rand()%10) { - case 0: + switch (rand()%14) { + case 0: // extra life cv->createObject(x,y); break; - case 1: case 2: case 3: case 4: + case 1: case 2: case 3: case 4: // powerup cv->createObject(x,y); break; - case 5: case 6: case 7: case 8: case 9: + case 5: case 6: case 7: case 8: case 9: // powerup cv->createObject(x,y); break; + case 10: case 11: // special + cv->createObject(x,y); + break; + case 12: // mod + cv->createObject(x,y); + break; + case 13: // mod + cv->createObject(x,y); + break; } } cv->soundEffect(SE_EXPL1); @@ -3387,6 +3705,10 @@ void FurnaceCVEnemyVortex::collision(FurnaceCVObject* other) { } void FurnaceCVEnemyVortex::tick() { + if (frozen>0) { + if (--frozen>0) return; + } + x+=speedX; y+=speedY; animFrame+=0x08; @@ -3470,12 +3792,12 @@ void FurnaceCVEnemyPlane::tick() { if (--shootTime<=0) { shootTime=28-(speed*2); cv->soundEffect(SE_EXPL2); - cv->createObject(x+(spriteWidth<<2),y+(spriteHeight<<2)); + cv->createObject(x+(spriteWidth<<2)-16,y+(spriteHeight<<2)-16); for (int i=0; i<14; i++) { float fraction=(float)i/13.0f; float xs=cos(fraction*M_PI*2.0)*28; float ys=sin(fraction*M_PI*2.0)*28; - FurnaceCVEnemyBullet* b=cv->createObject(x+(spriteWidth<<2),y+(spriteHeight<<2)); + FurnaceCVEnemyBullet* b=cv->createObject(x+(spriteWidth<<2)-4,y+(spriteHeight<<2)-4); b->speedX=xs; b->speedY=ys; }