aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Murphy <alec@checksum.fail>2017-03-19 13:29:44 -0400
committerAlec Murphy <alec@checksum.fail>2017-03-19 13:29:44 -0400
commit2372e744bbbcc1664a13f91e4ff5a8c5e4b5ee1f (patch)
tree52f4fffe5023b9f73f72609cd4bd460a2d1cabda
parentfc583a356e715b2cb7752603ed7f3ee01b8980a3 (diff)
Fixed CPU usage and screen flicker; added Pause screen stub, option to run sound on dedicated core.
-rw-r--r--ITEMS.GRbin0 -> 3184 bytes
-rw-r--r--Items.bmpbin0 -> 145274 bytes
-rw-r--r--MMFONT.HC2
-rw-r--r--MMGAME.HC90
-rw-r--r--MMSOUND.HC8
-rw-r--r--MMSPRITE.HC13
-rw-r--r--SFX_MMPAUSE.RAW1
-rw-r--r--SFX_MMSELECT.RAW1
8 files changed, 97 insertions, 18 deletions
diff --git a/ITEMS.GR b/ITEMS.GR
new file mode 100644
index 0000000..a15c816
--- /dev/null
+++ b/ITEMS.GR
Binary files differ
diff --git a/Items.bmp b/Items.bmp
new file mode 100644
index 0000000..d03974b
--- /dev/null
+++ b/Items.bmp
Binary files differ
diff --git a/MMFONT.HC b/MMFONT.HC
index 281551e..2c73e8f 100644
--- a/MMFONT.HC
+++ b/MMFONT.HC
@@ -15,6 +15,8 @@ U0 Text(U8 *_Text, I64 ScrOffsetX, I64 ScrOffsetY, I64 _Color) {
// Alpha
if(_Text[TextOffset]>0x40 && _Text[TextOffset]<0x5B) { MMFontOffsetX = 24*(_Text[TextOffset]-0x41); MMFontOffsetY = 27; };
if(_Text[TextOffset]>0x51 && _Text[TextOffset]<0x5B) { MMFontOffsetX += 2; };
+ // Selector
+ if(_Text[TextOffset]==0x3E) { MMFontOffsetX = 48; MMFontOffsetY = 159; };
FontClip = DCExt(MMFont, MMFontOffsetX, MMFontOffsetY, MMFontOffsetX+23, MMFontOffsetY+23);
GrBlot(Buffer, ScrOffsetX+ScrOffsetIncr, ScrOffsetY, FontClip);
DCDel(FontClip);
diff --git a/MMGAME.HC b/MMGAME.HC
index 3da4977..bab5a63 100644
--- a/MMGAME.HC
+++ b/MMGAME.HC
@@ -186,7 +186,6 @@ U0 ReadyMsg() {
if (RMFlop==0) { Text("READY", 262, 216, WHITE); }
RMFlop++;
if (RMFlop>1) { RMFlop = 0; };
- GrUpdateScrn;
Sleep(60);
};
};
@@ -195,25 +194,21 @@ U0 MMTeleportIn() {
UpdateBgr;
MMSprite(SPR_Megaman, MMInvFlop, MMX, TelY, ((32*3)*5), ((32*3)*0), ((32*3)*6)-1, ((32*3)*1)-1, MMDir);
DrawMMLifeMeter;
- GrUpdateScrn;
- Sleep(0);
+ Sleep(1);
};
Sfx(SFX_MMTELIN);
UpdateBgr;
MMSprite(SPR_Megaman, MMInvFlop, MMX, MMY-MMJumpY, ((32*3)*5), ((32*3)*1)+2, ((32*3)*6)-1, ((32*3)*2)-1, MMDir);
DrawMMLifeMeter;
- GrUpdateScrn;
- Sleep(0);
+ Sleep(1);
UpdateBgr;
MMSprite(SPR_Megaman, MMInvFlop, MMX, MMY-MMJumpY, ((32*3)*5), ((32*3)*2)+2, ((32*3)*6)-1, ((32*3)*3)-1, MMDir);
DrawMMLifeMeter;
- GrUpdateScrn;
- Sleep(0);
+ Sleep(1);
UpdateBgr;
MMSprite(SPR_Megaman, MMInvFlop, MMX, MMY-MMJumpY, ((32*3)*5), ((32*3)*0), ((32*3)*6)-1, ((32*3)*1)-1, MMDir);
DrawMMLifeMeter;
- GrUpdateScrn;
- Sleep(0);
+ Sleep(1);
};
U0 InitGameSettings() {
BgrIncrX=0;
@@ -262,6 +257,71 @@ U0 InitGameSettings() {
NewEnemy(MMX+(16*MMPixScale)+(48*MMPixScale), MMY, 15, 0, 10, 1, 0);
NewEnemy(MMX+(128*MMPixScale)+(48*MMPixScale), MMY, 15, 0, 10, 1, 0);
};
+
+U0 ItemSelect()
+{
+ Bool xblk=FALSE;
+ Bool xcur=FALSE;
+ I64 iSysTimerCnt;
+ I64 isx=36;
+ I64 isy=60;
+ I64 isxctr=0;
+ I64 isyctr=0;
+ Sfx(SFX_MMPAUSE);
+ while (isyctr<14) {
+ isx=36;
+ isxctr=0;
+ while (isxctr<10) {
+ iSysTimerCnt=SysTimerRead;
+ xblk=FALSE;
+ if (isyctr>0 && isyctr<13) {
+ if (isxctr>0 && isxctr<9) {
+ xblk=TRUE;
+ };
+ };
+ if (xblk) {
+ GrBlot(,258+isx,16+isy,IX_WND);
+ } else {
+ GrBlot(,252+isx,12+isy,IX_BORDER);
+ };
+ while (SysTimerRead<iSysTimerCnt+550) {
+ Sleep(1);
+ };
+ isx+=24;
+ isxctr++;
+ };
+ isy+=24;
+ isyctr++;
+ };
+ // 24
+
+ Text(" P", 319, 93+(24*1), WHITE);
+ Text(" EXIT", 319, 93+(24*10), WHITE);
+
+ while (ScanKey) { Sleep(1); };
+ iSysTimerCnt=SysTimerRead;
+ while (SysTimerRead<iSysTimerCnt+180000) {
+ Sleep(1);
+ };
+
+ while (InU8(0x60)!=0x1C) {
+ Sleep(100);
+ if (xcur) {
+ Text(">", 319, 93+(24*1), LTGRAY);
+ } else {
+ GrBlot(,319,93+(24*1),IX_WND);
+ };
+ if (!xcur) { xcur=TRUE; } else { xcur=FALSE; };
+ };
+
+ iSysTimerCnt=SysTimerRead;
+ while (SysTimerRead<iSysTimerCnt+180000) {
+ Sleep(1);
+ };
+ while (InU8(0x60)==0x1C) { Sleep(1); };
+ while (ScanKey) { Sleep(1); };
+}
+
U0 GameLoop() {
UpdateBgr;
ReadyMsg;
@@ -582,16 +642,18 @@ U0 GameLoop() {
if (MMInvFlop>1) { MMInvFlop = 0; };
};
if (MMInvCtr>48) { MMInvCtr = 0; MMInvFlop = 0; };
+ if (MMScanCode==0x1C && MMDeath==0) {
+ ItemSelect;
+ };
DrawMMLifeMeter;
DrawDebugText(FALSE);
- GrUpdateScrn;
while (SysTimerRead<SysTimerCnt+60000) {
- Sleep(0);
+ Sleep(1);
};
};
};
// Start Application.
-U0 MegaMan() {
+U0 MegaMan(I64 sfx_cpu=0) {
LoadSprites;
MMExit = 0;
SettingsPush;
@@ -610,9 +672,8 @@ U0 MegaMan() {
*gr.fp_draw_ms = &HideMs;
DCFill(Buffer,TRANSPARENT);
Sfx(MUS_DEMO);
- Spawn(&PCSP);
+ Spawn(&PCSP,,,sfx_cpu);
GameLoop;
- GrUpdateScrn;
};
// Exit game.
Sfx(MUS_STOP);
@@ -623,7 +684,6 @@ U0 MegaMan() {
DCFill(DCAlias(),TRANSPARENT);
*gr.fp_draw_grab_ms = PtrMsGrab;
*gr.fp_draw_ms = PtrMsStd;
- GrUpdateScrn;
DocClear;
SettingsPop;
};
diff --git a/MMSOUND.HC b/MMSOUND.HC
index 396264e..5b94568 100644
--- a/MMSOUND.HC
+++ b/MMSOUND.HC
@@ -21,7 +21,9 @@ Adam("I64 SFX_LEN[0x3F];");
#define SFX_MMJUMP 0x12
#define SFX_MMHIT 0x13
#define SFX_MMDEATH 0x14
-#define SFX_ENHIT 0x15
+#define SFX_MMPAUSE 0x15
+#define SFX_MMSELECT 0x16
+#define SFX_ENHIT 0x17
SFX_OFS[9]=0;
SFX_LEN[9]=0;
@@ -49,7 +51,7 @@ U0 PCSP()
PCSP_PLAY=FALSE;
};
};
- Sleep(0);
+ Sleep(1);
};
};
@@ -86,4 +88,6 @@ LoadSfx("SFX_MMSHOT.RAW");
LoadSfx("SFX_MMJUMP.RAW");
LoadSfx("SFX_MMHIT.RAW");
LoadSfx("SFX_MMDEATH.RAW");
+LoadSfx("SFX_MMPAUSE.RAW");
+LoadSfx("SFX_MMSELECT.RAW");
LoadSfx("SFX_ENHIT.RAW");
diff --git a/MMSPRITE.HC b/MMSPRITE.HC
index d8bce8f..4f65135 100644
--- a/MMSPRITE.HC
+++ b/MMSPRITE.HC
@@ -1,26 +1,37 @@
-CDC *SPR_Evilman;
+CDC *SPR_Evilman;
+CDC *SPR_Items;
CDC *SPR_Logo;
CDC *SPR_Megaman;
CDC *SPR_MegamanB;
CDC *SPR_Tiles;
CDC *SprClip;
+CDC *IX_WND;
+CDC *IX_BORDER;
+
U0 LoadSprites() {
SPR_Evilman = GRRead("MM");
+ SPR_Items = GRRead("ITEMS");
SPR_Logo = GRRead("LOGO");
SPR_Megaman = GRRead("MM");
SPR_MegamanB = GRRead("MMB");
SPR_Tiles = GRRead("TILES");
+ IX_BORDER = DCExt(SPR_Items,506,13,542,45);
+ IX_WND = DCExt(SPR_Items,72,18,96,44);
+ DCFill(IX_WND,BLACK);
DCColorChg(SPR_Evilman, BLUE, RED);
DCColorChg(SPR_Evilman, LTCYAN, LTRED);
};
U0 FreeSprites() {
DCDel(SPR_Evilman);
+ DCDel(SPR_Items);
DCDel(SPR_Logo);
DCDel(SPR_Megaman);
DCDel(SPR_MegamanB);
DCDel(SPR_Tiles);
+ DCDel(IX_WND);
+ DCDel(IX_BORDER);
};
U0 MMSprite(CDC *SprDC, I64 InvSpr, I64 ScrOffsetX, I64 ScrOffsetY, I64 SprOffsetX, I64 SprOffsetY, I64 SprClipX, I64 SprClipY, I64 SprDir) {
diff --git a/SFX_MMPAUSE.RAW b/SFX_MMPAUSE.RAW
new file mode 100644
index 0000000..d40a3e0
--- /dev/null
+++ b/SFX_MMPAUSE.RAW
@@ -0,0 +1 @@
+€€€€€€€€€€€€€€€€€€€€€€€€€okk]]]]^_]___^__a_hro…„„„„„„ƒ„…„…„„‚pqh`bacabacccbdcebptzŠ‡ˆˆ‰ˆ‰‡ˆ‡‡†ˆ†‰€srcddeefeffegfggggvw‡ŒŠŒ‹‹ŠŠ‰ŠŠ‹‰‹ˆ}vndifhgigihihiijhnxŒŽŒŒŒŒŒŒŒ|uhhiijikjkikkkkljs|ŒŽŽŽŽŽŽŽŠ{phkjkjjjllllmkmmlv†’ŽŠvlllllllmmmmmmnnon|’‘‘‘‘’‘‘‘‘‘†olmmmnlmnnoomnooopˆ“’“‘’’’’’‘’’‘“|knmonnmonooonooomw““““”’‘’“’’’’’‘‘’‘slnnnmooonpnpoqorm…˜’”’“’”’“’“’“‘””ˆkonooonoooopppoppr‘•“•”“““’“““““‘”“zlqnpopnpopoppporn}–“””””“““““““’“‘”Œqnooooppppppqpqqqq‡–”””””•“”““’““““’€ooopoppppppppqqqpxŽ–“”“•“””“”““““’”Œyooooppqppppqqqqpt€‘–””“”“”“”’”“““”‘vnooppppppppqrqqqz„“•””“””””•“”’“’–‰}unpopppoqprprprou~‡—”•”•””””“““““““€}pnpoqopppprpqqqo}€‹—“•”•“•“”““’”‘–‰}|nqoppqpqpqpqqrpu‚~‘—””•””•””“’““’’ynppqopoqoqqrprp}€‚”–”””“”””””“““•ˆ|€snpqqpoppqqqqpqu~‡•••””””“””“”’”‘~ropppppppprqrqq}‚~‹–”•”””•“”“’”’”‡}€|pnpqqoppqqqpqqv—””“•“•“”’”’”€~ynppqppppprprrr~ƒ“•“”””“•“”““’–…}vnqoqoqoqprpsox€…–”•“•””””“”“”~€~rnppppoppqrprp€‚~‹—“•“”“•””’”’”…}}nopppppppqpqow‚€‚~–“•””””““““•Ž}€€yopopppppqqrqr€€€’–””””””“”““”„}€~€unqpqppppqprox}…••””””“•“”’”}~€~v~~~€~€’“““’’‘“’’’’‘‘‘‘‘‘’‘‘‘‘ŽŽŽŽŽŽŽŽŽŒŒŒŒŽŒŒŒŒ‹ŒŒŒŒŒŒ‹Œ‹‹Š‹‹‹‹‹‹Š‰‹‹Š‹Š‰ŠŠŠŠ‰Šˆˆ‰‰‰ˆ‰ŠŠ‰Šˆˆ‡ˆˆˆ‰ˆˆ‰‰ˆˆˆˆ‡†ˆ‡‡‡‡‡‡‡†‡‡†‡ˆ††††††…‡††…‡‡†††††…†……„……†……„………………………„…„„„„ƒ„ƒ„„„ƒ„…„„„„„„„„„ƒ‚‚ƒƒƒƒ„‚ƒƒƒƒƒƒƒƒƒƒ‚„‚ƒ„‚ƒƒ„‚‚‚‚‚‚‚‚‚‚ƒ‚ƒ‚‚ƒ‚‚‚‚‚‚‚‚ƒ‚ƒ‚‚‚‚slpi^__^_````a```aabcbdbgurt„ˆ‡‡†ˆ‡‡†‡†††††‡††††‡vptgccccdcddeeeeeefffffflxt}ŒŠŠŠ‰Š‰‰Š‰Š‹ŠŠ‰‰‰‰ˆ‰‰wtsefffghghfhihhigiijijhp|x‡ŽŒŒŒŒŒŒŒ‹ŒŒ‹xxrgihihjiijjjkjjklklkmjt||ŽŽŽŽŽŽŽŒ‹yznijjjjlklkjklllklkllmjw|„“‘‘‘ŽŽŠ{xlkklmlllkllmmmmlmnomnlx~“‘’‘‘‘‘‘‘‘‘ŽŽ’‰{timklkmmllmmmnononnnoonyƒ“““’’’’’‘‘‘‘‘‘‘‘‘Šzpknlmmmmnnnnnmnooooopooz‹”’”’’‘’’’’’‘‘‘‘‘’‘‘‘’‰wnlmmmnnnnnnmnpooopoopop~’•““’““’’‘’’“‘‘‘‘‘’’‘’ˆplmmmnmonnnooooooopoqopp„–“““““““’’’‘’‘’’‘’‘“„mnmononnmoppoooooppppppqŒ–““““““’“’’‘“‘“‘“‘‘“”~jpmomnnnnpnnopnpppppopou“”””“““”“”’’’’‘‘’’‘’‘“xkonnmomnnpnononpoqorprn|—“•””“”’“”“‘“’’’’’‘‘’‘’qmnnonnnnppoooooppqpqoroƒ—“”“““”““““‘“’’’’’’‘‘“‡nnonnnnnoooonoooooppppppˆ—“•”“““’“““‘’’’’’’’‘‘‘’€mnnomnnnpoopnooppoppqqpv‹•“”““””“’““’‘‘’’“’’‘’Ž{omnnnmooooonoonopppoppq|Œ–“•““““““““’’““’’’‘‘“‡xnmononnnnoononpppppoqouŒ•’•““““““’’‘“’’’’‘’‘‘ymnnnnnnoopoooooppopoqoz€—’•’”’““”“’’’‘’‘“‘‘”‹}ylnmonnnopoooonpppppppq~•’”“”““’”’“’“‘’’“’‘”ƒ}wkolnnnnpoonpnopppppqov‘”””“““”““’’’‘’“‘’‘‘‘}}vlomomnnoopopopppopoqp{€“””““”““”“’’‘‘’‘’’‘‘‘‘‘‘‘ŽŽŽŽŽŽŽŽŽŽŽŒŽŒŒŒŒŒŒŒ‹‹‹‹‹‹‹‹Š‹ŒŠŠŠŠŠŠŠŠŠŠŠ‹Š‰‰‰‰‰‰‰‰‰‰‰‰‰ˆˆˆ‰ˆˆˆˆˆ‰ˆˆ‡ˆ‡‡ˆ†‡‡‡‡‡‡ˆ‡‡‡‡†††‡……†‡†††††††††…„„……„………„„…………†………„…„„„„„„„„„ƒ„„„„ƒ„„ƒ……„ƒƒƒƒƒ„ƒƒ‚ƒƒ‚„ƒƒƒƒƒƒ„‚‚ƒƒƒƒ‚ƒ‚ƒ‚‚ƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚€‚‚uh_^^^_^_^```_aa`aaababbccccdnw‡‡‡‡†ˆ‡ˆ‡‡‡‡†‡†††‡††††…‡†‡…undbdcccecddedfdfegffegggfhgiuz‹Œ‹‹‹ŒŠŒ‹‹‰‹‰‹ŠŠŠŠŠŠ‰ŠˆŠˆŠ†utgfffgggfghighhhhjiihiikikhnz{ŽŽŽŒŒŽŒŒŒŒ‹Œ‹‹Ž„uxihjijiiikjjjjjkjlklkmkmkmjs~{Ž‘ŽŽŽŽŽŽŽŽŽŽŽ‚w{liijkkkjkklkllmlmnmmnlmnolx}Ž“’‘’‘‘‘Žy{ojlkllllmmmmmlmmmnnmnnmooo|€}Ž“‘’‘’’’‘‘‘‘’’‘‘‘Ž~z|okllmnnmmmnnmnmonnnononooq~€~•’”’“’“’’’’’‘‘‘’‘‘‘‘‘’‹{|}qknlmmmmnnnnnnoooooooppqov€€~‹–‘“’“““’’‘“’’’’’‘‘’‘’ˆ{|~tlnmnnnmonnnoooopooqopoqox€~Š–’“’”““’”““’’’’’’‘’‘“„{~}uknnoonnmnpnooooopppppprn|€~‰•“•“““”’“”“‘“’’’’’’‘’‘€|}~vkomnmnnonpooooopppqppppq€~‡–”•””““““”“““’’’’“’’’‘’}||~wlomomoopooooooppppppppps€~‡–“”””““’“““““‘’‘“‘“‘’‘“Œ{~|~xmnnnnoooooooopqpqpppqqov‚~†•””””“’“”““““’’’‘‘“’’“ˆz~|~ymonnnnpoooooopqpppqppqpz‚‚~„•””•“”“”““’””’’’’’’‘’‘“„||~znmnnnopopopopppppppoqqp|~„””””””““’”““’’’“’’’’’’‘€|~|{omomoooooopoppppqpppqps~‚“”””””’““““”’“’’‘“‘“‘“Ž~~~}~}omnmnoonooonppppqopoqot€€€€€“•”””““”““’”’“’“’“‘’‘”‰{}}}}}pnnnpoooonooppqpqoqorpx€€€’•“”“”“““““““’‘’’’‘“‘”†|~|~}}pmnnnooooooooppqop}€€~–’”’“’“““‘’’“’’’‘‘‘’‘‘‘ŽŽŽŽŽŽŽŽŽŒŒŒ‹Œ‹‹ŒŒŒŒŠ‹ŠŠ‹‹‹‹‹‹‹ŠŠŠŠ‰ŠŠ‹Š‰ŠŠ‰ˆ‰‰ˆˆ‰‰‰‰‰‰Š‰ˆˆˆˆˆˆˆ‡ˆ‡ˆˆˆˆ‡ˆ‡‡†ˆ†‡ˆ‡†‡‡‡‡†…††††‡†††…‡†††‡†………†………†„…„„……………„…„„„ƒƒ„ƒ…„„„„„„„„„……„„ƒƒƒ„ƒ„„ƒƒ„ƒƒƒ„ƒƒƒƒƒƒƒƒ‚‚„„‚‚‚ƒ‚ƒƒƒ‚‚‚‚‚‚ƒ‚‚‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚€€‚‚‚‚‚onl^^^^_]ipo„‚……|npd^a_b_cqp}ˆ„†„††vpj_babc`krz‡‡…‡…ˆsndbdcfceow†‰‡‰‡‡‰}phcfeefdjuƒŒˆŠ‰ŠŠˆxkeefffefoŒŠ‹ŠŠŠ‹ƒpgfgggghiz‹Œ‹‹ŠŒŠ‹zgfhhhgjfp‰ŠŽ‹‹ˆmfjhiiiih€ŒŽŒŽ‹{fjiijikfsŽŽŽŒ‰lglhkijji…’ŒŽygkiljjlhvŽŒ†ljkjlklko†‘ŽwilklkllmzŽ‘okmlllllu„‘†xnkllmmlr|‹’‘’‹}tllnmnloy’‘‘€zqknlmmly}ˆ“‘‘‘’„|ylmmlokt~“’’‹|}skomomp~}„”‘‘’|{nmnnnmz|”‘’“…z€vmnnonu|‚’’“’“Œ}}}pmnomr~~|Š”’‘“|€yompmp{€|•‘““…{~tlponw|‡”“‘”‰|}{pnpnu€~Ž••~~xnpop}€~ƒ”’’“ƒ}~~rnony~|Š•‘”ˆ|€~€zopmt€~€€’””~€tnoq}~|‰””“‚}€~€|qooz‚~€~•“‰}€€wnov€€~…“–Ž€}~sns~€€~Œ—’ƒ~€~€znp{€€“–‡~€€umw€€ˆ—~€€€€~os€€€€‘“€€€‚wp}~†—‡}qx‚€}Ž}€€€‚ys€€‚~ƒ‚€u|~€Š‡~€€€€{y€€€‚‡€€€}€€€‚€€€€€€€€€€€€€€~€€€€€†€€€€z~€€ˆ‡~€€~‚{x€€‚}…t|‚€~‘Š}ƒ€€‚uu€€‚~Š•€‚|p|‚~ƒ–~€€€€€rr€€€€€€€‘—ƒ€€€€wnz€€€Š˜Ž€€€€€{or~~…•—‰€€‚~snv€€˜’ƒ€vqr{‚€€€~•–‹€€‚zqpu€‚~‡••”„~‚}rpqx‚“–•~€€€tpqr€~Ž—”–‡~‚woqpv‚~ˆ—•””””””““’““““’’’‘’‘’’‘‘‘‘‘ŽŽŽŽŽŽŽŽŽŒŒŒŒŒŒ‹Œ‹‹Œ‹‹Œ‹‹‹‹‹ŠŠ‰ŠŠŠ‰Š‹Š‹Š‰‰‰‰‰‰ˆ‰ŠŠ‰‰‰ˆˆˆˆˆˆ‡ˆˆˆˆˆˆ‡‡‡ˆ‡‡‡‡‡†‡‡‡††‡††††‡‡†‡†††††††……†…„…………………†…………………„„„„„„…„„ƒƒƒ„…„„„…„„ƒƒƒƒƒ„ƒƒƒƒƒƒƒ‚ƒƒƒƒƒƒ„ƒƒƒƒƒƒ‚‚‚‚‚‚‚ƒ‚‚‚‚‚‚‚ƒ‚‚‚‚‚‚‚‚€€‚€€‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~~€€€~€~~€~€~~~~~~~~~€€~€~€€€~€~~~~~€€~€€€€€€€~€~€€€€€~~€~~€~€~~~~€~€~€€~€€€€~€~~~~~~~€~~~€€~€€€~~€~€€€~€€€~~€€€~~€€€€€~€~~€€~€~~~€€~€~~~~~~~€€€€~~~€€~~€~€~~€€~€~€~€~~€~~~€~€€~€€€~€~~€€€~€~~€~~€~~€~€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ \ No newline at end of file
diff --git a/SFX_MMSELECT.RAW b/SFX_MMSELECT.RAW
new file mode 100644
index 0000000..cfa900b
--- /dev/null
+++ b/SFX_MMSELECT.RAW
@@ -0,0 +1 @@
+€€€€€€|lkmjblmlmmnlolplqjx{mnpfernpoppqoqoqpr†xnrmalsrrqsrsrrssr‚ˆvrrfdrusttttuttus}Œ…uvmbkuwuwuwuwuwt{ŠvrfgoyvyvwxxxxxvˆŒ€ukhitzxzwzx{wzw„|nijky{yzy{{zzy~Ž‹tiljp{z{{{{z{{|Œ‘Ž’„jllju|{||{{{}zˆ’‘winlny|~|~{zƒ’’“‡lnnmo|~|}}}|}~“’’ynnols}~}|‹”‘“‘ƒtonpmx~~~€|…”’’•ˆ}tmpnp{~€~€~‚‘”’”}popor€~€~€~•“““{oqoov~‚}ˆ•“””ˆ|‚vpopnz€‚””“•Ž~€€soqpr}€€Ž—’•’‚~}roqot~‚~Š–””•‡~€{oqqqv‚~~…•”“–}‚vprqq{‚‘–•–’€€spqqq€~‹˜”•”ˆ}‚~‚}rprpv‚‡•–”–Œ‚zpqppx‚‚’—”—’€€€€wprrr|ƒ~—•”•…~€€€sqrqr€ˆ—”••Œ}‚~~}rqsqw‚”–”—€€€‚zqqrpz€Ž˜•••„€wpsqszŠ–••—‰€€€€€€sqsqr‚•—”—~‚€€€‚}rqrqv‘—”–•ƒ€‚xppsn„™”–—‰~‚€€€€vpsqu‘˜“˜Ž€€€€€€€sqsp—•–”‚€€€}qrqxˆ—•–‡~‚ƒxqpv€—–}~€€€vqr~‚‘˜“ƒ€‚~tp{„•–†€€€€€}pvˆ™Œ~€€€~‚wr‚~Ž•€€€€€€€€s{ƒ’†‚~~~‚~‚|x‚~†‹~€€€€~€„‚€‚‚ƒ€€}‚‚€‚Š†~‚€y}‚€€‚€‚€‚€ƒ~…’‚‚{t‚€‚€‚€‚~”~€rwƒ€‚€‚‚Œ™‡‚wo}‚‚€€†–”ƒ€|pt‚€‚€‚€‚€’™€tpv‚€‚€‚€}——€wqrxƒ€~†–•–ˆypqr~‚€€€€€”–••psqt€€€€˜“˜tpspw€€~ˆ–”•–•••””••”“”’“”“““‘‘’’’’’‘‘‘‘‘ŽŽŽŽŽŽŽŽŽŒŒŒŒŒ‹ŒŒŒŒŠ‹‹‹‹‹‹ŠŒ‹‹‰ŠŠŠŠŠ‹ŠŠŠŠŠ‰ŠŠ‰‰‰‰‰‰‰‰‰Šˆˆˆˆ‡‰ˆˆˆ‰ˆ‰ˆˆ‡‡‡†‡‡‡‡ˆ†ˆˆˆ‡‡‡†††††††…††††††‡…‡†……………†……„…………†……†„„„ƒ…„„ƒ„„„„„„„„„„„„„„…„„ƒƒƒƒƒƒƒƒ‚„ƒƒ‚ƒƒƒƒƒ„ƒƒ‚ƒ‚ƒƒƒ‚‚‚ƒƒ‚‚‚‚‚ƒuk`_``_ep…‚…ƒ„ƒƒƒƒƒ„ƒƒƒƒƒ‚‚ƒ}ka`a`abpƒ…„„„„„…„…„„„…„…„ƒ„„ƒm``b`b`n………„…………„……†……………ƒ†‚‡p_baab`k‡††††‡†…………††………†„†ƒˆt_cbbbah‡‡†‡†††‡†‡†††††…†……„ˆxacaccagƒˆ†‡‡‡…‡†††††‡†……†††‡yebbccbi}‰†‡‡ˆ‡‡‡‡††††††††…††yibcccbkxˆ‰‡‡‡‡ˆ‡‡‡‡‡ˆ‡ˆ‡‡†‡…vndbddcnt‚Š‡‰†‡‡‡‡‡ˆ†‡‡‡†‡‡‡†trgcddcqr{‹†‰‡‰‡ˆˆ‡††ˆ†‡‡‡‡ˆ„rtlcedertwŠˆˆˆ‰ˆˆˆˆˆˆˆ†‡‡ˆ†ˆƒstqdddfsus„‰ˆˆˆˆˆˆ‰ˆˆ‰‡ˆ†ˆ‡ŠrstfddgsusŠˆ‰ˆˆ‡ˆˆˆˆˆˆˆ‡‰‡Š~rtukddiuusy‰‰ˆ‰‰‰ˆˆ‡‰ˆ‡‰‡‰‡Š}rtupddjuuuu†Šˆ‰ˆŠ‰‰ˆˆˆ‰ˆˆˆ‡Š{rutuhdlvtvtŒ‡ŠˆŠˆŠˆ‰‡ˆ‰ˆˆˆ‰zrutwlcnvuvtzŠ‰‰ˆ‰‰‰ˆ‰‰Šˆˆ‡ˆŠxsusvqdnvuuuu†Šˆ‰ˆ‰Š‰‰‰‰‰Šˆ‰‡vsuuvtgpwuvuu€Œˆ‰ˆ‰‰‰‰‰Š‰‰ˆŠ†utuutvmqvtvuuz‹‰Šˆ‰‰‰‰‰‰ˆŠˆŠ…ttuuuvrrwtuvuv‡ŠŠ‹‰‰ˆ‰ˆŠˆŠˆ‹„tuuuvuwwutvuvt‚Œ‰‹ŠŠŠ‰‰ŠˆŠ‡Œ‚tuvsws{}tvwvws|‹ŠŠ‰ŠŠ‰ˆ‰ˆŠ‡‹€tuutwt}„tvwwvuwˆ‹ˆ‹‰ŠŠŠ‰‰‰ˆ‹|tvuuvt}Šwuvvuwt‚ˆ‹‰ŠŠ‹Š‰‰‰Š|sutuvt~Ž|tvwuwu|‹‰‹ŠŠŠ‹ŠŠ‰‰‰ztvsvuu€‚uvvvuvw‰ŠŠŠŠ‰ŠŠŠŠŠˆysuuwvuƒˆxtvvvvuƒŒ‰ŠŠŠŠ‰ŠŠŠˆwuvvuvu†‹Š}twuvvu~ŒŠŠŠŠŠŠŠ‰Š†vuvvwuvˆ‹‹‚svvvvuwŠŠŠŠŠ‹‰‹ˆ‹„vvvvwuw‰Š‰‰vuuvuwu…Œ‰‹‰‹ˆ‹‰‹‚tvwvwtz‰Š‰‹{tvvvwt}ŠŠ‰Š‰‹‰Œ€tvvvvt|Š‹‰Œ‚uvvvvuy‰‹‰Š‹Š‹‰‹~twuuwu}ŒŠŠŠ‡vuvvwvv…Œ‰‹‰Š‰ŠŠ}twvvwt‰Š‰‹{twuvvu}Œ‰‹‰ŠŠŠŠ{twuvvu‰‹‰‹tvvwvuy‹ŠŠŠŠŠŠŠyuwvvwvƒ‰‹‰Œ‡vuvwvwu…ŒŠ‰ŠŠŠˆwuwwvvt…Œ‰‹‹Š‹ztwvvwtŒŠŠŠŠŠ‡vvvuuvw‡‹‰ŠŠ‰ŒswvvwvyŠ‹‰‹‰‹†vvvvwvx‰Š‰ŠŠŠŠ‡tuvvwwu†Œˆ‹‰‚vvvuwuyŠ‹ŠŠ‰‹‰‹yuvvvwuˆŒˆŒtwvuwu{‹Š‰Š‰‹‰Œ€twuuvuzŠŠŠ‰Œtvvuvu}‹‰ŠŠŠ‹ˆ‹…uvvvvvu†ŒŠŠŒ~txuvvtŠ‹‹ŠŠ‹Š‰ytvuvvt€ŒŠŠŠ{txvvvt€Œˆ‹ˆ‹Š‹ŠŒtvvvvuz‹ŠŠ‹yuvuvvt‚Œ‰‹‰‹‰‹‰Œ…tvuwvvuˆ‹‰Šxuvvvvv…Š‹‰Š‰‰‹ŠŠyuvwuwtŒŠ‰vwvvvvv†‹‰‹‰ŠŠŠŠŠŒtvuuwt|‹‹†vvvuvvw‡‹‰‹Š‹Š‹‹‰‹„tvwvwvw‡‚vuwuvuyŠ‹ŠŠŠ‹ŠŠ‰‹Š‰xuwwvwu€Žvuwvwu{Š‹‰‹ŠŠ‰Œ‰‹‰Œ}tvwvvuzŽuwvvwu|‹ŠŠ‹‰ŠŠ‹ŠŒ‰Œ„uvuvvvuŠ~twuvvu~‰‹ŠŠŠ‰ŠŠ‹‰Šˆxtwvuvt„~sxuwwuŒ‰Š‰Š‰‹ŠŠ‰Š‰‹}svvvwt{|uwvvwu‚‰‹ŠŠŠ‹‰ŠŠŠ‰‹„twuvvvwvuvvvvu„ŠŠ‰‹‰ŠŠŠ‰ŠŠŠ‰wvuwuxsqxvwvvu†Œ‰‹‰ŠŠ‹ŠŠŠ‰Š‰‹{uvvuxrkxvvvvwˆ‹‰Š‰‹ŠŠŠŠ‹‰‹‰‹ƒuuvvwqguvvvvx‰Œ‰ŠŠŠŠŠŠŠ‰‰ŠŠ‹‡wuuuxpeqxuwuzŠ‹ŠŠŠ‹Š‹Š‹Š‹‰Šˆ‹|svuwndmxuwu|‹ŠŠŠ‰‹‰‹‰‹‰‹‰Šˆ‹‚svuvmegvvvu}‹‰ŠŠŠŠ‹Š‰ŠŠŠˆŠˆ‹ˆvuuvkefqvvu~‰‹‰‹ŠŠŠŠŠŠŠ‰ˆ‰‰‹{uvvjfemwuuˆ‹‰‹ŠŠŠŠ‹‰‰ˆ‰ŠˆŠrvuhffgvvuƒ‰ŠŠŠŠŠ‰‰‰‰Šˆ‰‰‰‰‰ˆ‰‰‰‰‰‡‰ˆ‰ˆˆˆˆˆˆ‰ˆ‰ˆ‰‡‡‡‡ˆ‡‡‡‡‡‡‡‡‡†‡‡†††…†††‡††‡†††…†‡†††…†…††………„…………………………†…„„„……„„ƒ„ƒ„„„„„„„„„„ƒ…„„„ƒƒƒƒƒ„ƒ„„ƒƒƒƒƒƒƒƒƒƒƒƒƒ‚ƒƒƒƒƒƒƒƒ‚ƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚‚€€‚‚€€€€‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~€~€~~€~~€~~~€€~~€€~~~€~€~~€~~~~€~~~~€€€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ \ No newline at end of file