SHARE
TWEET

Alice in Pasta Crocket (PSP)

240-185 Sep 12th, 2014 289 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * main.c
  3.  *
  4.  * Copyright © 2013-2014 by 240-185
  5.  *
  6.  * All rights reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
  9.  *
  10.  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  11.  *
  12.  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation
  13.  * and/or other materials provided with the distribution.
  14.  *
  15.  * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
  16.  *
  17.  *
  18.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  19.  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
  20.  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
  21.  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  22.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  23.  * DAMAGE.
  24.  *
  25.  */
  26.  
  27. //La librairie principale OSLib
  28.  
  29. #define VERSION "v1.2"
  30. #define DATE "09/03/2014"
  31.  
  32. // v0.99 RC1 first release
  33. // v1.00 First release: refined ball detection
  34. // v1.01 Added compatibility with PPSSPP - Corrected a small graphical bug
  35. // v1.011 Corrected a bug in which the ball could be stuck after a mini-game
  36. // v1.012 Testing a mini-game under PPSSPP
  37. // v1.013 Reverted to previous state
  38. // v1.02  Fixed a graphical bug on enemy's latest ults in 2 player mode
  39. //        Fixed a bug where the psi sound could be heard after dying
  40. //                Fixed a confusing issue where the lightning sound was played even if shielded
  41. // v1.021 Now, the ults won't trigger if the screen is black
  42. //                Improved stability with PPSSPP
  43. // v1.03  Fixed a flaw in the gameplay in which the player had to stick near the pie to win.
  44. //                Improved PPSSPP compatibility
  45. // v1.04  The scene becomes more and more red as the pie's HP decreases
  46. //                Fixed a case where the psi sound could be continued to play during ShootDaWhoop's sequence
  47. //                The poles won't hurt the player if a mini-game is being launched or if the mad hatter is on screen
  48. //                Game can't be paused any more when the pie is dying
  49. // v1.041 Sonic.exe pic from Sammi-Psycho removed due to DeviantART account closing. Replaced by another pic, credited as such.
  50. // v1.2   Final version.
  51. //                      - When Kim Jong Eun's face appears, the game does something now.
  52. //                      - Shoop da Whoop's sequence has been changed. Instead of mashing buttons, you must now protect the planet by moving left or right.
  53. //                      - New mini-game added.
  54. //                      - New defeat animation.
  55. //                Fixed a glitch where you could still send stars after the pie had died.
  56. //                SONIC.EXE mini-game made harder.
  57. //                The source code is now provided with the game! Try to understand it and make your own mod!
  58.  
  59. #define _16bit OSL_PF_8888
  60. #define spr_draw oslDrawImageXY
  61.  
  62. #define STALLMAN Stupid_Toe_Cheese_Eater_Hippie
  63. #define GPL Shitty_Confusing_License
  64. #define BSD3CLAUSE Actual_License_Of_This_Program
  65.  
  66. #define ESPAC_HORIZ 64
  67. #define HAUT_FIELD 138
  68. #define GRAVITY -0.05
  69.  
  70. #define DEBUG 0
  71.  
  72. //#include <libc/stdio.h>
  73. #include <oslib/oslib.h>
  74. #include <psputils.h>
  75. #include <pspkernel.h>
  76. #include <pspdebug.h>
  77. #include <pspmpeg.h>
  78. //#include <libc/string.h>
  79. //#include <libc/time.h>
  80.  
  81. //les callbacks
  82. PSP_MODULE_INFO("PastaSquash", 0, 1, 1);
  83. PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
  84.  
  85. struct ball {
  86.         float speed_h;
  87.         float speed_v;
  88.         float speed_z;
  89.         int angle;
  90.         int x2d;
  91.         int y2d;
  92.         int z3d;
  93.         short poisoned;
  94. };
  95.  
  96. struct pie_entity {
  97.         int pie_hp;
  98.         int pie_facemode; //mode sarko-JLM-autre?
  99.         int pie_direction;
  100.         int pie_x;
  101.         int pie_y;
  102. };
  103.  
  104. SceKernelUtilsMt19937Context ctx;
  105.  
  106.  
  107. OSL_IMAGE *court, *benj;
  108. OSL_FONT *gothic;
  109.  
  110. unsigned long int counter=0;
  111.  
  112.  
  113. int exit_callback(int arg1, int arg2, void *common) {
  114.           sceKernelExitGame();
  115.           return 0;
  116. }
  117.  
  118. /* Callback thread */
  119. int CallbackThread(SceSize args, void *argp) {
  120.           int cbid;
  121.  
  122.           cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
  123.           sceKernelRegisterExitCallback(cbid);
  124.  
  125.           sceKernelSleepThreadCB();
  126.  
  127.           return 0;
  128. }
  129.  
  130. /* Sets up the callback thread and returns its thread id */
  131. int SetupCallbacks(void) {
  132.           int thid = 0;
  133.  
  134.           thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
  135.           if(thid >= 0) {
  136.                     sceKernelStartThread(thid, 0, 0);
  137.           }
  138.  
  139.           return thid;
  140. }
  141. // End Callback functs
  142.  
  143. int random(int max)
  144. {
  145.         //return (int)oslRandf(0,max);
  146.  
  147.            u32 rand_val = sceKernelUtilsMt19937UInt(&ctx);
  148.            rand_val = rand_val % (max);
  149.            return (int)rand_val;
  150. }
  151.  
  152. int swirl_collide(int px, int py, int gudule, int mgsy)
  153. {
  154.         if ((px-(gudule))*(px-(gudule))+(py-(mgsy))*(py-(mgsy)) <= 512) return 1; else return 0;
  155. }
  156.  
  157.  
  158.  
  159.  
  160. struct ball initball(struct ball ball_arg)
  161. {
  162.         struct ball abadgh = ball_arg;
  163.  
  164.          abadgh.x2d=random(320)+80; //x
  165.          abadgh.y2d=170;     //y
  166.          abadgh.speed_v=-1;  //vy
  167.          abadgh.speed_h=0;   //vx
  168.          abadgh.speed_z=2;  //vz
  169.          abadgh.angle=0;        //
  170.          abadgh.z3d=2;          //z
  171.          abadgh.poisoned=0;
  172.  
  173.          return abadgh;
  174. }
  175.  
  176. struct pie_entity initpie(struct pie_entity pie_arg)
  177. {
  178.         struct pie_entity abadgh = pie_arg;
  179.     abadgh.pie_facemode=0;
  180.     abadgh.pie_direction=0;
  181.     abadgh.pie_x=128;
  182.     abadgh.pie_y=136;
  183.         return abadgh;
  184. }
  185.  
  186. struct ball apply_impulse(struct ball ball_arg, float v, float v2, float angle)
  187. {
  188.         struct ball this = ball_arg;
  189.  
  190.         this.speed_h = v;
  191.         this.speed_v = -v2;
  192.  
  193.         return this;
  194. }
  195.  
  196.  
  197.  
  198. void mackey()
  199. {
  200.         int i=0,j;
  201.         OSL_IMAGE *mackey = oslLoadImageFilePNG("./gfx/mackey.png",OSL_IN_RAM, OSL_PF_5551);
  202.         OSL_SOUND *mkayyy = oslLoadSoundFile("./sfx/mackey.wav", OSL_FMT_NONE);;
  203.         oslSetSoundLoop(mkayyy, 1);
  204.         oslPlaySound(mkayyy, 0);
  205.  
  206.         while(1<2)
  207.         {
  208.                 j=random(9)+1;
  209.                 oslStartDrawing();
  210.                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  211.                 while(i<272)
  212.                 {
  213.                         oslDrawFillRect(0,i,480,i+j, RGB(random(255),random(255),255));
  214.                         i += j;
  215.                 }
  216.                 i=0;
  217.                 spr_draw(mackey,0,0);
  218.                 oslEndDrawing();
  219.                 oslSwapBuffers();
  220.                 oslWaitVSync();
  221.         }
  222. }
  223.  
  224. void noppsspp()
  225. {
  226.         int check=0;
  227.  
  228.         if (((long int)oslGetRamStatus().maxAvailable) > 21117447)
  229.         {
  230.                 check=1;
  231.         }
  232.  
  233.         if (check==1)
  234.         {
  235.                 mackey();
  236.         }
  237. }
  238.  
  239. void cleanbuffer()
  240. {
  241.         oslDisableTransparentColor();
  242.         oslStartDrawing();
  243.     oslDrawFillRect(0,0,480,272, RGB(255,0,255));
  244.     oslEndDrawing();
  245.     oslSetTransparentColor(RGB(255,0,255));
  246. }
  247.  
  248. void cleanbuffer2(int color)
  249. {
  250.         oslStartDrawing();
  251.     oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
  252.     oslDrawFillRect(0,0,480,272, color);
  253.  
  254.     oslSetTransparentColor(RGB(255,0,255));
  255. }
  256.  
  257. void frame_debug(int frame)
  258. {
  259.         char buffer[20];
  260.         oslStartDrawing();
  261.         oslSetTransparentColor(RGB(255,0,255));
  262.         oslSetBkColor(RGB(255,0,255));
  263.         oslSetTextColor(RGB(255, 255, 0));
  264.  
  265.         sprintf(buffer,"Frm %d",frame);
  266.  
  267.         oslDrawString(0, 0, buffer);
  268.         oslEndDrawing();
  269. }
  270.  
  271. void fadein(OSL_IMAGE *image)
  272. {
  273.         int i;
  274.         OSL_IMAGE *temp;
  275.  
  276.         temp=oslCreateImage(480, 272, OSL_IN_RAM, OSL_PF_5551);
  277.         oslCopyImageTo(temp, image);
  278.  
  279.         for (i=0; i<400; i++)
  280.         {
  281.                     oslStartDrawing();
  282.                     oslSetDrawBuffer(OSL_SECONDARY_BUFFER);
  283.                     oslSetAlpha(OSL_FX_ALPHA,i/2);
  284.                     oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  285.                     oslEndDrawing();
  286.                     oslWaitVSync();
  287.         }
  288.  
  289.         oslSetAlpha(OSL_FX_DEFAULT,0);
  290.         spr_draw(temp,0,0);
  291.         oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
  292.  
  293.         oslDeleteImage(temp);
  294. }
  295.  
  296. void fadeout(OSL_COLOR u)
  297. {
  298.         int i;
  299.         for (i=0; i<80; i++)
  300.         {
  301.                     oslStartDrawing();
  302.                         oslSetDrawBuffer(OSL_SECONDARY_BUFFER);
  303.                         oslSetAlpha(OSL_FX_ALPHA,i*2);
  304.                         oslDrawFillRect(0,0,480,272, u);
  305.                     oslEndDrawing();
  306.                     oslWaitVSync();
  307.         }
  308.         oslSetAlpha(OSL_FX_DEFAULT,0);
  309.         oslDrawFillRect(0,0,480,272, u);
  310.         oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
  311. }
  312.  
  313. void rndsft()
  314. {
  315.         int frame=0, i=0, j=0, k=0, l=0, m=0, n=0;
  316.         OSL_IMAGE *rndsft, *px;
  317.         OSL_SOUND *rndtheme;
  318.  
  319.         rndsft = oslLoadImageFilePNG("./gfx/rndsft.png",OSL_IN_RAM, OSL_PF_5551);
  320.         px = oslLoadImageFilePNG("./gfx/pixel.png", OSL_IN_VRAM, OSL_PF_5551);
  321.         rndtheme = oslLoadSoundFileMOD("./muzaxx/rndsft.xm", OSL_FMT_NONE);
  322.  
  323.  
  324.         oslSetImageRotCenter(rndsft);
  325.  
  326.         oslPlaySound(rndtheme, 5);
  327.  
  328.         while(frame<470)
  329.         {
  330.                 oslStartDrawing();
  331.                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  332.  
  333.                 if (frame >= 161)
  334.                 {
  335.                         if (frame-160 < 35)     oslSetImageTile(rndsft,0,0,282,frame-160); else oslSetImageTile(rndsft,0,0,282,35);
  336.                         spr_draw(rndsft,240,138);
  337.                 }
  338.  
  339.                 if ((frame >= 200) && (frame <= 220))
  340.                 {
  341.                         if (frame==200) i=random(360);
  342.  
  343.                         if (!(frame%2))
  344.                         {
  345.                                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  346.  
  347.                                 for (j=0; j<13; j++)
  348.                                 {
  349.                                         oslDrawFillRect(i+j*16, 60, i+j*16+8, 272, RGB(255,127,0));
  350.                                 }
  351.                         }
  352.                 }
  353.  
  354.                 if ((frame >= 259) && (frame <= 295))
  355.                 {
  356.  
  357.                         if (frame == 259)
  358.                         {
  359.                                 i=random(32)+24;
  360.                                 k=random(9)+6;
  361.                                 oslSetTextColor(RGB(0, 224, 0));
  362.                                 m=random(127);
  363.                                 n=random(44);
  364.                         }
  365.  
  366.                         oslSetTransparentColor(RGB(255,0,255));
  367.                         oslSetBkColor(RGB(255,0,255));
  368.  
  369.                         for(j=0; j<k; j++)
  370.                         {
  371.                                 for (l=0; l<i; l++)
  372.                                 {
  373.  
  374.                                         oslDrawString(m+l*6, n+j*12, "@");
  375.                                 }
  376.                         }
  377.                 }
  378.  
  379.                 if ((frame >= 336) && (frame <= 345))
  380.                 {
  381.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  382.                         spr_draw(rndsft,random(480),random(272));
  383.                 }
  384.  
  385.                 if (frame >= 369)
  386.                 {
  387.  
  388.                                 for(i=0; i<48; i++)
  389.                                 {
  390.                                         for (j=0; j<17;  j++)
  391.                                         {
  392.                                                 oslSetAlpha(OSL_FX_TINT, RGB(random(255), random(255), random(255)));
  393.                                                 spr_draw(px, i*10, j*16);
  394.                                         }
  395.                                 }
  396.  
  397.                         if ((frame == 369) || (!(frame%4))) k=random(360);
  398.                         oslDrawFillRect(k,0,k+32,272, RGB(0,254,255));
  399.  
  400.  
  401.                 }
  402.  
  403.             oslEndDrawing();
  404.             oslSwapBuffers();
  405.                 frame++;
  406.             oslWaitVSync();
  407.  
  408.         }
  409.  
  410.     oslDeleteImage(rndsft);
  411.     oslDeleteImage(px);
  412.     oslDeleteSound(rndtheme);
  413.  
  414.     oslSetAlpha(OSL_FX_DEFAULT,0);
  415.     fadeout(RGB(0,0,0));
  416.  
  417. }
  418.  
  419. void ben()
  420. {
  421.         OSL_IMAGE *noise[9];
  422.         OSL_SOUND *ben_mzx =  oslLoadSoundFile("./sfx/ben.wav", OSL_FMT_NONE);;
  423.         char buffer[20];
  424.         int i, j, frame=0;
  425.  
  426.         noise[0]=oslLoadImageFilePNG("./gfx/ben.png",OSL_IN_RAM, OSL_PF_5551);
  427.  
  428.         for (i=1; i<9; i++)
  429.         {
  430.                 sprintf(buffer,"./gfx/gfx-0%d.png",i+661);
  431.                 noise[i]=oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  432.                 noise[i]->stretchX = 480;
  433.                 noise[i]->stretchY = 272;
  434.         }
  435.  
  436.         oslPlaySound(ben_mzx, 0);
  437.  
  438.         while(frame<704)
  439.         {
  440.                 oslStartDrawing();
  441.                 oslSetAlpha(OSL_FX_DEFAULT,0);
  442.                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  443.                 spr_draw(noise[(frame%8)+1],0,0);
  444.  
  445.                 if (frame<192)
  446.                 {
  447.                         oslSetAlpha(OSL_FX_ALPHA, frame);
  448.                 }
  449.                 else if (frame>512) oslSetAlpha(OSL_FX_ALPHA,704-frame);
  450.                 else oslSetAlpha(OSL_FX_ALPHA,192);
  451.  
  452.                 i=0;
  453.                 while(i<272)
  454.                 {
  455.                         j=random(27)+13;
  456.                         oslSetImageTile(noise[0],0,i,425,i+j);
  457.                         spr_draw(noise[0],random(55),i);
  458.                         i += j;
  459.                 }
  460.  
  461.                 oslEndDrawing();
  462.                 oslSwapBuffers();
  463.                 oslWaitVSync();
  464.                 frame++;
  465.         }
  466.  
  467.         for(i=0; i<9; i++)
  468.         {
  469.             oslDeleteImage(noise[i]);
  470.         }
  471.     oslDeleteSound(ben_mzx);
  472. }
  473.  
  474. void creepypasta(int cpn)
  475. {
  476.         int i, j, k, l, frame=0;
  477.         char buffer[20];
  478.         OSL_IMAGE *suicidemouse[18];
  479.         OSL_SOUND *creepysfx, *w4c;
  480.         OSL_SOUND *sfx =  oslLoadSoundFile("./sfx/dummy.wav", OSL_FMT_NONE);
  481.         int bok[4][16];
  482.         const char *text[7]={"y wud u do dis","acually is dolan","fak u","FAGGT","u litl SHIZNIT", "gooby pls", "i wuz ins al a long"};
  483.  
  484.  
  485.         w4c = oslLoadSoundFile("./sfx/sfx-0005.wav", OSL_FMT_NONE);
  486.         oslSetSoundLoop(w4c, 1);
  487.         w4c -> volumeLeft = w4c -> volumeRight = 0x2000;
  488.  
  489.         if ((cpn != 5) && (cpn < 17)) oslPlaySound(w4c, 0);
  490.  
  491.         switch(cpn)
  492.         {
  493.  
  494.         case 0:
  495.  
  496.                 for (i=0; i<18; i++)
  497.                 {
  498.                         sprintf(buffer,"./gfx/gfx-%d.png",i+1160);
  499.                         suicidemouse[i]=oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  500.  
  501.                         suicidemouse[i]->stretchX = 363;
  502.                         suicidemouse[i]->stretchY = 272;
  503.                         oslSetImageRotCenter(suicidemouse[i]);
  504.                 }
  505.  
  506.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0065.wav", OSL_FMT_NONE);
  507.                 oslSetSoundLoop(creepysfx, 1);
  508.                 oslPlaySound(creepysfx, 0);
  509.  
  510.                 i=0;
  511.  
  512.                 cleanbuffer2(RGB(0,0,0));
  513.  
  514.                 while (frame < 620)
  515.                 {
  516.  
  517.                         if (!(frame%6)) i++;
  518.                         oslStartDrawing();
  519.  
  520.                         spr_draw(suicidemouse[i%18],240,138);
  521.                     oslDrawFillRect(0,0,480,272, RGB(255,0,255));
  522.                         oslEndDrawing();
  523.                         //frame_debug((int)oslGetRamStatus().maxAvailable);
  524.                     oslSwapBuffers();
  525.  
  526.                         oslWaitVSync();
  527.                     frame++;
  528.                 }
  529.  
  530.                 for (i=0; i<18; i++)
  531.                 {
  532.                         if (suicidemouse[i]) oslDeleteImage(suicidemouse[i]);
  533.                 }
  534.  
  535.                 oslDeleteSound(creepysfx);
  536.                 oslDeleteSound(sfx);
  537.                 break;
  538.  
  539.  
  540.  
  541.         case 1:
  542.                 suicidemouse[0]=oslLoadImageFilePNG("./gfx/gfx-1038.png",OSL_IN_RAM, OSL_PF_5551);
  543.                 suicidemouse[1]=oslLoadImageFilePNG("./gfx/gfx-1039.png",OSL_IN_RAM, OSL_PF_5551);
  544.  
  545.                 oslSetImageRotCenter(suicidemouse[0]);
  546.  
  547.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0058.wav", OSL_FMT_NONE);
  548.  
  549.                 oslSetSoundLoop(creepysfx, 0);
  550.                 oslPlaySound(creepysfx, 0);
  551.  
  552.                 while (frame < 45)
  553.                 {
  554.                         oslStartDrawing();
  555.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  556.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  557.                          oslSetAlpha(OSL_FX_ALPHA, frame*4);
  558.                         spr_draw(suicidemouse[0],240,271);
  559.                         oslEndDrawing();
  560.                         //frame_debug(frame);
  561.                         oslSwapBuffers();
  562.  
  563.                         suicidemouse[0]->stretchX +=2;
  564.                         suicidemouse[0]->stretchY +=2;
  565.  
  566.                         oslSetImageRotCenter(suicidemouse[0]);
  567.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  568.                         frame++;
  569.                         oslWaitVSync();
  570.                 }
  571.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  572.                 for (i=0; i<10; i++) oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  573.                 oslClearImage(OSL_SECONDARY_BUFFER, RGB(0,0,0));
  574.  
  575.                 for (i=0; i<4; i++)
  576.                 {
  577.                 oslStartDrawing();
  578.                 spr_draw(suicidemouse[1],0,0);
  579.                 oslEndDrawing();
  580.                 oslSwapBuffers();
  581.                 }
  582.                 fadeout(RGB(0,0,0));
  583.                 while (oslGetSoundChannel(creepysfx) == 0);
  584.  
  585.                 oslDeleteSound(creepysfx);
  586.                 oslDeleteImage(suicidemouse[0]);
  587.                 oslDeleteImage(suicidemouse[1]);
  588.                 oslDeleteSound(sfx);
  589.  
  590.  
  591.         break;
  592.  
  593.         case 2:
  594.  
  595.                 j = random(2);
  596.  
  597.                 if (!j) suicidemouse[0] = oslLoadImageFilePNG("./gfx/endisneigh.png",OSL_IN_RAM, OSL_PF_5551);
  598.                 else suicidemouse[0] = oslLoadImageFilePNG("./gfx/endisneigh2.png",OSL_IN_RAM, OSL_PF_5551);
  599.  
  600.                 if (!j) creepysfx = oslLoadSoundFile("./sfx/sfx-0083.wav", OSL_FMT_NONE);
  601.                 else creepysfx = oslLoadSoundFile("./sfx/sfx-0109.wav", OSL_FMT_NONE);
  602.  
  603.                 oslSetSoundLoop(creepysfx, 0);
  604.                 oslPlaySound(creepysfx, 0);
  605.  
  606.                 for (i=0; i<10; i++)
  607.                 {
  608.                         oslStartDrawing();
  609.                         spr_draw(suicidemouse[0],0,0);
  610.                         oslEndDrawing();
  611.                         oslSwapBuffers();
  612.                         oslWaitVSync();
  613.                 }
  614.                 fadeout(RGB(0,0,0));
  615.                 oslDeleteSound(creepysfx);
  616.                 oslDeleteImage(suicidemouse[0]);
  617.                 oslDeleteSound(sfx);
  618.                 break;
  619.  
  620.  
  621.         case 3:
  622.                 suicidemouse[0] = oslLoadImageFilePNG("./gfx/safe.png",OSL_IN_RAM, OSL_PF_5551);
  623.                 oslSetImageRotCenter(suicidemouse[0]);
  624.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0026.wav", OSL_FMT_NONE);
  625.  
  626.                 oslSetSoundLoop(creepysfx, 0);
  627.                 oslPlaySound(creepysfx, 0);
  628.  
  629.                 for (i=0; i<3; i++)
  630.                 {
  631.                         oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  632.                         oslWaitVSync();
  633.                 }
  634.  
  635.                 oslClearImage(OSL_SECONDARY_BUFFER, RGB(0,0,0));
  636.  
  637.  
  638.  
  639.                 for (i=0; i<200; i++)
  640.                         {
  641.                         oslStartDrawing();
  642.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  643.                         spr_draw(suicidemouse[0],239,135);
  644.                         oslEndDrawing();
  645.                         oslSwapBuffers();
  646.                         oslWaitVSync();
  647.                         }
  648.  
  649.                 fadeout(RGB(0,0,0));
  650.                 oslDeleteSound(creepysfx);
  651.                 oslDeleteImage(suicidemouse[0]);
  652.                 oslDeleteSound(sfx);
  653.                 break;
  654.  
  655.         case 4:
  656.                 for (i=0; i<4; i++)
  657.                 {
  658.                         sprintf(buffer,"./gfx/bnours%d.png",i+1);
  659.                         suicidemouse[i]=oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  660.                 }
  661.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0149.wav", OSL_FMT_NONE);
  662.  
  663.                 oslSetSoundLoop(creepysfx, 0);
  664.                 oslPlaySound(creepysfx, 0);
  665.  
  666.                 i=0;
  667.  
  668.                 while (frame < 600)
  669.                                 {
  670.  
  671.                                         if (!(frame%4)) i++;
  672.                                         oslStartDrawing();
  673.  
  674.                                         spr_draw(suicidemouse[i%4],0,0);
  675.  
  676.                                         oslEndDrawing();
  677.  
  678.                                     oslSwapBuffers();
  679.  
  680.                                     cleanbuffer();
  681.  
  682.  
  683.                                     frame++;
  684.                                         oslWaitVSync();
  685.                                 }
  686.  
  687.                                 fadeout(RGB(0,0,0));
  688.                                 oslDeleteSound(creepysfx);
  689.                                 for (i=0; i<4; i++)
  690.                                 {
  691.                                         if (suicidemouse[i]) oslDeleteImage(suicidemouse[i]);
  692.                                 }
  693.                                 oslDeleteSound(sfx);
  694.                 break;
  695.  
  696.         case 5:
  697.                 suicidemouse[0] = oslLoadImageFilePNG("./gfx/court_joy.png",OSL_IN_RAM, OSL_PF_5551);
  698.                 suicidemouse[1] = oslLoadImageFilePNG("./gfx/gfx-0717.png",OSL_IN_RAM, OSL_PF_5551);
  699.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0147.wav", OSL_FMT_NONE);
  700.                 oslDeleteSound(sfx);
  701.                 sfx=oslLoadSoundFile("./sfx/sfx-0011.wav", OSL_FMT_NONE);
  702.  
  703.                 oslPlaySound(sfx, 6);
  704.  
  705.                 for (j=0; j<256; j+=3)
  706.                 {
  707.                         oslStartDrawing();
  708.                         oslDrawFillRect(0,0,480,272, RGB(255,255,255));
  709.  
  710.                         oslSetAlpha(OSL_FX_ALPHA, j);
  711.                         spr_draw(suicidemouse[0],0,0);
  712.                         spr_draw(suicidemouse[1],177,215);
  713.  
  714.                         oslEndDrawing();
  715.                         oslSwapBuffers();
  716.                         oslWaitVSync();
  717.                 }
  718.  
  719.                 oslSetAlpha(OSL_FX_DEFAULT,0);
  720.  
  721.                 oslSetSoundLoop(creepysfx, 0);
  722.                 oslPlaySound(creepysfx, 0);
  723.  
  724.                 while (frame < 292)
  725.                 {
  726.                         oslStartDrawing();
  727.                         spr_draw(suicidemouse[0],0,0);
  728.                         spr_draw(suicidemouse[1],177,215);
  729.                         oslEndDrawing();
  730.  
  731.                         oslSwapBuffers();
  732.  
  733.                         frame++;
  734.                         oslWaitVSync();
  735.                 }
  736.  
  737.                 fadeout(RGB(0,0,0));
  738.                 oslDeleteSound(creepysfx);
  739.                 oslDeleteSound(sfx);
  740.                 oslDeleteImage(suicidemouse[0]);
  741.                 oslDeleteImage(suicidemouse[1]);
  742.                 break;
  743.  
  744.         case 6:
  745.                 oslStopSound(w4c);
  746.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0060.wav", OSL_FMT_NONE);
  747.                 suicidemouse[0] = oslLoadImageFilePNG("./gfx/oag1.png",OSL_IN_RAM, OSL_PF_5551);
  748.                 suicidemouse[1] = oslLoadImageFilePNG("./gfx/oag2.png",OSL_IN_RAM, OSL_PF_5551);
  749.  
  750.                 oslStartDrawing();
  751.                 spr_draw(suicidemouse[0],0,0);
  752.                 oslEndDrawing();
  753.  
  754.                 oslSwapBuffers();
  755.  
  756.                 while (frame < 5000)
  757.                 {
  758.                         if (frame==3000)
  759.                         {
  760.                                 oslSetSoundLoop(creepysfx, 0);
  761.                                 oslPlaySound(creepysfx, 0);
  762.                         }
  763.  
  764.                         if (frame >= 3000)
  765.                         {
  766.  
  767.                                 oslStartDrawing();
  768.                             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  769.                                 spr_draw(suicidemouse[1],173,26);
  770.                                 oslEndDrawing();
  771.                                 //frame_debug(frame);
  772.                                 oslSwapBuffers();
  773.                         }
  774.                         else if (frame < 3000)
  775.                         {
  776.                                 oslStartDrawing();
  777.                                 spr_draw(suicidemouse[0],0,0);
  778.                                 oslEndDrawing();
  779.                                 //frame_debug(frame);
  780.                                 oslSwapBuffers();
  781.                         }
  782.  
  783.  
  784.                         frame++;
  785.                 }
  786.  
  787.                 fadeout(RGB(0,0,0));
  788.                 cleanbuffer();
  789.                 oslDeleteSound(creepysfx);
  790.                 oslDeleteImage(suicidemouse[0]);
  791.                 oslDeleteImage(suicidemouse[1]);
  792.                 oslDeleteSound(sfx);
  793.                 break;
  794.  
  795.         case 7:
  796.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0148.wav", OSL_FMT_NONE);
  797.                 suicidemouse[0] = oslLoadImageFilePNG("./gfx/smurf_village.png",OSL_IN_RAM, OSL_PF_5551);
  798.                 suicidemouse[1] = oslLoadImageFilePNG("./gfx/smurf_sprite.png",OSL_IN_RAM, OSL_PF_5551);
  799.                 suicidemouse[2] = oslLoadImageFilePNG("./gfx/smurf_papazombie.png",OSL_IN_RAM, OSL_PF_5551);
  800.  
  801.                 oslStartDrawing();
  802.             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  803.             spr_draw(suicidemouse[0],0,0);
  804.                 oslEndDrawing();
  805.  
  806.  
  807.  
  808.                 i=0;
  809.                 j=-32;
  810.                 frame=0;
  811.  
  812.                 oslSetSoundLoop(creepysfx, 0);
  813.                 oslPlaySound(creepysfx, 0);
  814.                 oslSetImageRotCenter(suicidemouse[2]);
  815.                 oslSetBilinearFilter(1);
  816.                 //fadein(suicidemouse[0]);
  817.  
  818.                 while (frame < 400)
  819.                 {
  820.  
  821.                         if (!(frame%2))
  822.                         {
  823.                                 if (j < 222) j+=4;
  824.                         }
  825.                         if (!(frame%3))
  826.                         {
  827.                                 i++;
  828.                         }
  829.  
  830.                                 oslStartDrawing();
  831.                                 spr_draw(suicidemouse[0],0,0);
  832.                                 oslSetImageTileSize(suicidemouse[1],(i%8)*32,0,32,42);
  833.                                 suicidemouse[1]->stretchX = 64;
  834.                                 suicidemouse[1]->stretchY = 84;
  835.                                 spr_draw(suicidemouse[1], j, 181);
  836.                                 oslEndDrawing();
  837.  
  838.                         if (j >= 222)
  839.                         {
  840.                                 oslStartDrawing();
  841.                                 spr_draw(suicidemouse[0],0,0);
  842.                                 oslSetImageTileSize(suicidemouse[1],256,0,32,42);
  843.                                 suicidemouse[1]->stretchX = 64;
  844.                                 suicidemouse[1]->stretchY = 84;
  845.                                 spr_draw(suicidemouse[1], j, 181);
  846.  
  847.                                 oslEndDrawing();
  848.  
  849.  
  850.                                 if (frame > 248)
  851.                                 {
  852.                                         oslStartDrawing();
  853.                                     oslSetAlpha(OSL_FX_ALPHA,155);
  854.                                     oslDrawFillRect(0,0,480,272, RGB(255,0,0));
  855.                                         oslSetAlpha(OSL_FX_DEFAULT,0);
  856.                                     spr_draw(suicidemouse[2],238,136);
  857.                                         if (!(frame%2))
  858.                                                 {
  859.                                                         suicidemouse[2]->stretchX+=16;
  860.                                                         suicidemouse[2]->stretchY+=16;
  861.                                                 }
  862.                                         oslEndDrawing();
  863.                                 }
  864.                         }
  865.  
  866.                         //frame_debug(frame);
  867.  
  868.                         oslSwapBuffers();
  869.                         frame++;
  870.                         oslWaitVSync();
  871.                 }
  872.  
  873.                 oslSetBilinearFilter(1);
  874.                 oslDeleteSound(creepysfx);
  875.                 oslDeleteImage(suicidemouse[0]);
  876.                 oslDeleteImage(suicidemouse[1]);
  877.                 oslDeleteImage(suicidemouse[2]);
  878.                 oslDeleteSound(sfx);
  879.  
  880.                 break;
  881.  
  882.         case 8:
  883.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0151.wav", OSL_FMT_NONE);
  884.                 suicidemouse[0] = oslLoadImageFilePNG("./gfx/squiward_suicide.png",OSL_IN_RAM, OSL_PF_5551);
  885.                 suicidemouse[1] = oslLoadImageFilePNG("./gfx/bikini_hell.png",OSL_IN_RAM, OSL_PF_5551);
  886.  
  887.                 oslStartDrawing();
  888.             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  889.             spr_draw(suicidemouse[1],0,0);
  890.                 oslEndDrawing();
  891.  
  892.  
  893.                 oslSetSoundLoop(creepysfx, 0);
  894.                 oslPlaySound(creepysfx, 0);
  895.                 oslSetImageRotCenter(suicidemouse[0]);
  896.                 oslSetImageRotCenter(suicidemouse[1]);
  897.  
  898.  
  899.  
  900.                 frame=0;
  901.  
  902.                 while((suicidemouse[0]->stretchX) >= 0)
  903.                 {
  904.                         if (!(frame%2))
  905.                         {
  906.                         oslStartDrawing();
  907.                         spr_draw(suicidemouse[0],240,136);
  908.                         if (!(frame%4) && (frame < 282))
  909.                                 {
  910.                                         suicidemouse[0]->stretchX++;
  911.                                         suicidemouse[0]->stretchY++;
  912.                                         suicidemouse[0]->angle += 6;
  913.                                 }
  914.                         if (frame >= 282)
  915.                                 {
  916.                                         suicidemouse[0]->stretchX-=3;
  917.                                         suicidemouse[0]->stretchY-=3;
  918.                                         suicidemouse[0]->angle -= 11;
  919.                                 }
  920.                         oslEndDrawing();
  921.                         //frame_debug(frame);
  922.                         oslSwapBuffers();
  923.                         }
  924.                         else
  925.                         {
  926.                                 oslStartDrawing();
  927.                                         spr_draw(suicidemouse[1],240,136);
  928.                                 oslEndDrawing();
  929.                         }
  930.                         oslWaitVSync();
  931.                         frame++;
  932.                 }
  933.  
  934.                 oslStartDrawing();
  935.                 spr_draw(suicidemouse[1],240,136);
  936.                 oslEndDrawing();
  937.                 oslSwapBuffers();
  938.  
  939.                 oslDeleteSound(creepysfx);
  940.                 oslDeleteImage(suicidemouse[0]);
  941.                 oslDeleteImage(suicidemouse[1]);
  942.             oslSetTransparentColor(RGB(255,0,255));
  943.                 oslDeleteSound(sfx);
  944.                 break;
  945.  
  946.  
  947.         case 9:
  948.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0152.wav", OSL_FMT_NONE);
  949.  
  950.                 j=0;
  951.                 i=0;
  952.  
  953.                 frame=0;
  954.  
  955.                 oslStartDrawing();
  956.             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  957.                 oslEndDrawing();
  958.  
  959.                 for (k=0; k<16; k++)
  960.                 {
  961.                         suicidemouse[k] = oslLoadImageFilePNG("./gfx/creepycircle.png",OSL_IN_RAM, OSL_PF_5551);
  962.                         oslSetImageRotCenter(suicidemouse[k]);
  963.                 }
  964.  
  965.                 while (frame<16*2)
  966.                 {
  967.                         if (!(frame%2))
  968.                         {
  969.                         bok[0][i]=(2*(random(24)+1))-24;
  970.  
  971.  
  972.                         bok[1][i]= random(128)+127;
  973.                         bok[2][i]= random(128)+127;
  974.                         bok[3][i]= random(128)+127;
  975.  
  976.  
  977.  
  978.  
  979.                         oslStartDrawing();
  980.                         if (bok[0][i] > 0) suicidemouse[i]->stretchX = bok[0][i]; else suicidemouse[i]->stretchX = 1;
  981.                         if (bok[0][i] > 0) suicidemouse[i]->stretchY = bok[0][i]; else suicidemouse[i]->stretchY = 1;
  982.  
  983.                         spr_draw(suicidemouse[i],(i%4)*40+172, (i/4)*40+64);
  984.  
  985.                         oslEndDrawing();
  986.                         i++;
  987.                         }
  988.                         else
  989.                         {
  990.                                 oslWaitVSync();
  991.                         }
  992.                         frame++;
  993.                 }
  994.  
  995.                 oslSwapBuffers();
  996.                 //oslWaitKey();
  997.  
  998.  
  999.                 i=0;
  1000.                 j=0;
  1001.                 k=0;
  1002.                 frame=0;
  1003.  
  1004.                 while(k < 100)
  1005.                 {
  1006.  
  1007.                         if (!(frame%4))
  1008.                         {
  1009.  
  1010.  
  1011.  
  1012.                                         oslStartDrawing();
  1013.                                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1014.  
  1015.                                         for (j=0; j<16; j++)
  1016.                                         {
  1017.  
  1018.                                                 if (bok[0][j] > -24) bok[0][j]--;
  1019.  
  1020.                                                 if (bok[0][j] <= -24)
  1021.                                                         {
  1022.                                                                 k++;
  1023.                                                                 bok[0][j]=24;
  1024.                                                                 i=0;
  1025.                                                                 while (oslGetSoundChannel(creepysfx) == i)
  1026.                                                                 {
  1027.                                                                         i++;
  1028.                                                                 }
  1029.                                                                 if (i < 8) oslPlaySound(creepysfx, i); else oslPlaySound(creepysfx, 7);
  1030.  
  1031.                                                                 bok[1][j]= random(128)+127;
  1032.                                                                 bok[2][j]= random(128)+127;
  1033.                                                                 bok[3][j]= random(128)+127;
  1034.                                                         }
  1035.  
  1036.                                                 if (bok[0][j] > 1) suicidemouse[j]->stretchX = suicidemouse[j]->stretchY = bok[0][j];
  1037.  
  1038.                                             oslSetAlpha(OSL_FX_TINT, RGB(bok[2][j], bok[3][j], bok[1][j]));
  1039.                                                 if (bok[0][j] > 21)  oslSetAlpha(OSL_FX_TINT, RGB(255, 255, 255));
  1040.  
  1041.                                                 spr_draw(suicidemouse[j],(j%4)*40+172, (j/4)*40+64);
  1042.                                         }
  1043.                                         oslEndDrawing();
  1044.                                         //frame_debug(frame);
  1045.                                         oslSwapBuffers();
  1046.                                         //oslWaitKey();
  1047.  
  1048.  
  1049.  
  1050.                         }
  1051.                         else
  1052.                         {
  1053.                                 oslWaitVSync();
  1054.                         }
  1055.  
  1056.                         frame++;
  1057.                 }
  1058.  
  1059.                 for(i=0; i<16; i++) oslDeleteImage(suicidemouse[i]);
  1060.                 oslDeleteSound(creepysfx);
  1061.                 oslDeleteSound(sfx);
  1062.                 break;
  1063.  
  1064.  
  1065.         case 10:
  1066.         case 15:
  1067.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0057.wav", OSL_FMT_NONE);
  1068.  
  1069.                 if (cpn == 15)
  1070.                 {
  1071.                         oslDeleteSound(sfx);
  1072.                         sfx = oslLoadSoundFile("./sfx/bark.wav", OSL_FMT_NONE);
  1073.                 }
  1074.  
  1075.                 suicidemouse[0] = oslLoadImageFilePNG("./gfx/gfx-0253.png",OSL_IN_RAM, OSL_PF_5551);
  1076.             oslSetImageRotCenter(suicidemouse[0]);
  1077.  
  1078.  
  1079.  
  1080.                 for (i=1; i<9; i++)
  1081.                 {
  1082.                         sprintf(buffer,"./gfx/gfx-0%d.png",i+661);
  1083.                         suicidemouse[i]=oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  1084.                         suicidemouse[i]->stretchX = 480;
  1085.                         suicidemouse[i]->stretchY = 272;
  1086.                 }
  1087.  
  1088.                 frame=0;
  1089.                 j=0;
  1090.                 oslStopSound(w4c);
  1091.  
  1092.                 oslSetSoundLoop(creepysfx, 1);
  1093.                 oslPlaySound(creepysfx, 0);
  1094.  
  1095.                 while (frame < 750)
  1096.                 {
  1097.  
  1098.                         if (!(frame%16))
  1099.                         {
  1100.                                 suicidemouse[0]->stretchX++;
  1101.                                 suicidemouse[0]->stretchY = (int)(1.27*(suicidemouse[0]->stretchX));
  1102.                         }
  1103.  
  1104.                         if (!(frame%4))
  1105.                         {
  1106.                                 oslStartDrawing();
  1107.                             oslSetAlpha(OSL_FX_DEFAULT,0);
  1108.                             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1109.                             spr_draw(suicidemouse[(j%8)+1],0,0);
  1110.                             oslSetAlpha(OSL_FX_ALPHA,75);
  1111.                             spr_draw(suicidemouse[0],240,136);
  1112.                             oslEndDrawing();
  1113.                             oslSwapBuffers();
  1114.                         }
  1115.                         else
  1116.                         {
  1117.                                 oslWaitVSync();
  1118.                                 j++;
  1119.                         }
  1120.  
  1121.                         frame++;
  1122.                 }
  1123.  
  1124.                 if (cpn == 15)
  1125.                 {
  1126.                         suicidemouse[0]->stretchX = 480;
  1127.                         suicidemouse[0]->stretchY = 610;
  1128.                         oslStartDrawing();
  1129.                     oslSetAlpha(OSL_FX_DEFAULT,0);
  1130.                     spr_draw(suicidemouse[0],240,136);
  1131.                     oslEndDrawing();
  1132.                     oslSwapBuffers();
  1133.                     oslPlaySound(sfx, 1);
  1134.                     while (oslGetSoundChannel(sfx) == 1);
  1135.                 }
  1136.  
  1137.                 oslDeleteSound(creepysfx);
  1138.                 for (i=0; i<9; i++)
  1139.                 {
  1140.                         oslDeleteImage(suicidemouse[i]);
  1141.                 }
  1142.                 oslDeleteSound(sfx);
  1143.                 fadeout(RGB(0,0,0));
  1144.                 break;
  1145.  
  1146.  
  1147.         case 11:
  1148.         case 16:
  1149.                 oslStopSound(w4c);
  1150.                 suicidemouse[0] =  oslLoadImageFilePNG("./gfx/dolan.png",OSL_IN_RAM, OSL_PF_5551);
  1151.                 creepysfx = oslLoadSoundFile("./sfx/dolan.wav", OSL_FMT_NONE);
  1152.  
  1153.                 oslSetSoundLoop(creepysfx, 0);
  1154.                 i=272;
  1155.                 frame=0;
  1156.                 j=random(7);
  1157.  
  1158.                 while(frame < 1200)
  1159.                 {
  1160.                         if (!(frame%2))
  1161.                         {
  1162.                                 if (i>72)
  1163.                                 {
  1164.                                 oslStartDrawing();
  1165.                             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1166.                             spr_draw(suicidemouse[0], 332, i);
  1167.                                 oslEndDrawing();
  1168.                                 oslSwapBuffers();
  1169.                                 i--;
  1170.                                 }
  1171.                                 if ((frame > 800) && (i<73))
  1172.                                 {
  1173.                                         if (cpn == 16)
  1174.                                         {
  1175.                                                 oslSetImageRotCenter(suicidemouse[0]);
  1176.                                                 suicidemouse[0]->stretchX = 480;
  1177.                                                 suicidemouse[0]->stretchY = 648;
  1178.                                                 oslStartDrawing();
  1179.                                             oslSetAlpha(OSL_FX_DEFAULT,0);
  1180.                                             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1181.                                             spr_draw(suicidemouse[0],240,136);
  1182.                                             oslEndDrawing();
  1183.                                             oslSwapBuffers();
  1184.                                             if (frame == 812) oslPlaySound(creepysfx, 1);
  1185.                                         }
  1186.                                         else
  1187.                                         {
  1188.                                                 oslStartDrawing();
  1189.                                                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1190.                                                 spr_draw(suicidemouse[0], 332, i+1);
  1191.                                                 oslSetTransparentColor(RGB(255,0,255));
  1192.                                                 oslSetBkColor(RGB(255,0,255));
  1193.                                                 oslSetTextColor(RGB(255, 255, 255));
  1194.                                                 k = oslGetStringWidth(text[j]);
  1195.                                                 oslDrawString((480 - k)/2, 32, text[j]);
  1196.                                                 oslEndDrawing();
  1197.                                                 oslSwapBuffers();
  1198.                                         }
  1199.                                 }
  1200.  
  1201.                         }
  1202.                         else
  1203.                         {
  1204.                                 oslWaitVSync();
  1205.                         }
  1206.                         frame++;
  1207.                 }
  1208.  
  1209.             while (oslGetSoundChannel(creepysfx) == 1);
  1210.                 oslDeleteSound(creepysfx);
  1211.                 oslDeleteImage(suicidemouse[0]);
  1212.                 oslDeleteSound(sfx);
  1213.  
  1214.                 break;
  1215.  
  1216.  
  1217.         case 12:
  1218.                 oslStopSound(w4c);
  1219.                 k=random(42);
  1220.                 j=random(25);
  1221.  
  1222.                 sprintf(buffer,"./sfx/sfx-0%d.wav",j+121);
  1223.                 creepysfx = oslLoadSoundFile(buffer, OSL_FMT_NONE);
  1224.  
  1225.                 j=random(25);
  1226.                 oslDeleteSound(sfx);
  1227.                 sprintf(buffer,"./sfx/sfx-0%d.wav",j+121);
  1228.                 sfx = oslLoadSoundFile(buffer, OSL_FMT_NONE);
  1229.  
  1230.                 sprintf(buffer,"./gfx/pasta%d.png",k+1);
  1231.                 suicidemouse[0] =  oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  1232.  
  1233.                 oslSetSoundLoop(creepysfx, 0);
  1234.                 oslPlaySound(creepysfx, 1);
  1235.                 oslSetImageRotCenter(suicidemouse[0]);
  1236.  
  1237.                 frame=0;
  1238.  
  1239.                 oslSetBilinearFilter(1);
  1240.  
  1241.                 while (oslGetSoundChannel(creepysfx) == 1)
  1242.                 {
  1243.                         oslStartDrawing();
  1244.                     oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1245.                     spr_draw(suicidemouse[0], 240, 136);
  1246.                         oslEndDrawing();
  1247.                         oslSwapBuffers();
  1248.                         oslWaitVSync();
  1249.                         if (!(frame%4)) suicidemouse[0] -> stretchX++;
  1250.                         suicidemouse[0] -> stretchY = (int)((float)(suicidemouse[0] -> sizeY)/(suicidemouse[0] -> sizeX)*suicidemouse[0]->stretchX);
  1251.                         frame++;
  1252.                 }
  1253.  
  1254.                 oslSetSoundLoop(sfx, 0);
  1255.                 oslPlaySound(sfx, 1);
  1256.                 while (oslGetSoundChannel(sfx) == 1)
  1257.                 {
  1258.                                 oslStartDrawing();
  1259.                             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1260.                             spr_draw(suicidemouse[0], 240, 136);
  1261.                                 oslEndDrawing();
  1262.                                 oslSwapBuffers();
  1263.                                 oslWaitVSync();
  1264.                                 if (!(frame%4)) suicidemouse[0] -> stretchX++;
  1265.                                 suicidemouse[0] -> stretchY = (int)((float)(suicidemouse[0] -> sizeY)/(suicidemouse[0] -> sizeX)*suicidemouse[0]->stretchX);
  1266.                                 frame++;
  1267.                 }
  1268.  
  1269.                 oslSetBilinearFilter(0);
  1270.  
  1271.                 oslDeleteSound(creepysfx);
  1272.                 oslDeleteImage(suicidemouse[0]);
  1273.                 oslDeleteSound(sfx);
  1274.  
  1275.                 break;
  1276.  
  1277.         case 13:
  1278.                 oslStopSound(w4c);
  1279.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0150.wav", OSL_FMT_NONE);
  1280.  
  1281.                 oslSetSoundLoop(creepysfx, 0);
  1282.                 oslPlaySound(creepysfx, 1);
  1283.                 creepysfx -> volumeLeft = creepysfx -> volumeRight = 0xFFFF;
  1284.  
  1285.                 oslStartDrawing();
  1286.                 oslDrawFillRect(0,0,480,272, RGB(0,0,255));
  1287.                 oslSetTextColor(RGB(255, 255, 255));
  1288.                 oslMoveTo(0,0);
  1289.                 oslConsolePrint("I regret to inform you your psp has just crashed\n");
  1290.                 oslConsolePrint(" \n");
  1291.                 oslConsolePrint("Shit happens... :-(\n");
  1292.                 oslConsolePrint("Exception Details:\n");
  1293.                 oslConsolePrint("Exception - Bus error (death)\n");
  1294.                 oslConsolePrint("EPC       - 08A1C208\n");
  1295.                 oslConsolePrint("Cause     - 07H30P13\n");
  1296.                 oslConsolePrint("Status    - D34D0L0L\n");
  1297.                 oslConsolePrint("BadVAddr  - 0012AC40\n");
  1298.                 oslConsolePrint("zr:000Y0000 at:0008OF00 v0:000U0000 v1:00000012\n");
  1299.                 oslConsolePrint("a0:0000A001 a1:000R002E a2:09FFE768 a3:09FF06BC\n");
  1300.                 oslConsolePrint("t0:00D0E6BC t1:000E07D4 t2:0000A032 t3:8804D000\n");
  1301.                 oslConsolePrint("t4:09FFY5F8 t5:000O0E00 t6:08A2U658 t7:00008600\n");
  1302.                 oslConsolePrint("t8:000S0000 t9:000U8368 s0:08AC0000 s1:08AFK53C\n");
  1303.                 oslConsolePrint("s2:08BA0C20 s3:08BT453C s4:08A30000 s5:08A30000\n");
  1304.                 oslConsolePrint("s6:000T00EC s7:0000H0F9 k0:09FFIF00 k1:0000S000\n");
  1305.                 oslConsolePrint("gp:08AGD390 sp:000AFF00 fp:08A3M000 ra:0896E4BC\n");
  1306.                 oslConsolePrint(" \n");
  1307.                 oslConsolePrint("Will exit to PSP menu in 10 seconds\n\n\n");
  1308.                 oslEndDrawing();
  1309.                 oslSwapBuffers();
  1310.                 while (oslGetSoundChannel(creepysfx) == 1);
  1311.                 oslDeleteSound(creepysfx);
  1312.                 oslSetDrawBuffer(OSL_SECONDARY_BUFFER);
  1313.                 oslStartDrawing();
  1314.                 oslConsolePrint("Admit it: this blue screen is almost plausible, eh?");
  1315.                 oslEndDrawing();
  1316.                 oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
  1317.                 oslDeleteSound(sfx);
  1318.  
  1319.         break;
  1320.  
  1321.  
  1322.         case 14:
  1323.                 oslStopSound(w4c);
  1324.                 if (random(2)) suicidemouse[0] =  oslLoadImageFilePNG("./gfx/smilechu.png",OSL_IN_RAM, OSL_PF_5551); else suicidemouse[0] =  oslLoadImageFilePNG("./gfx/smilechu2.png",OSL_IN_RAM, OSL_PF_5551);
  1325.                 oslSetImageRotCenter(suicidemouse[0]);
  1326.  
  1327.                 i=0;
  1328.                 j=0;
  1329.                 frame=0;
  1330.  
  1331.                         while (i < 12)
  1332.                         {
  1333.                                 if (!(frame%3))
  1334.                                 {
  1335.                                         if (!j)
  1336.                                         {
  1337.                                                 k=random(70);
  1338.                                                 suicidemouse[0] -> stretchX = 10+random(150);
  1339.                                                 l=82+random(36);
  1340.                                         }
  1341.                                         else k++;
  1342.                                         oslStartDrawing();
  1343.                                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1344.                                         if (k>44)
  1345.                                         {
  1346.                                                 j=1;
  1347.  
  1348.                                                 if (k < 74)
  1349.                                                 {
  1350.                                                         suicidemouse[0] -> stretchX += 13;
  1351.                                                         suicidemouse[0] -> stretchY = (int)(1.18 * (suicidemouse[0] -> stretchX));
  1352.  
  1353.                                                         spr_draw(suicidemouse[0],240,138);
  1354.                                                 }
  1355.  
  1356.                                                 if (k==l)
  1357.                                                 {
  1358.                                                         i++;
  1359.                                                         j=0;
  1360.                                                 }
  1361.                                         }
  1362.                                         //frame_debug(k);
  1363.                                         oslEndDrawing();
  1364.                                         oslSwapBuffers();
  1365.                                 }
  1366.                                 else
  1367.                                 {
  1368.                                         oslWaitVSync();
  1369.                                 }
  1370.                                 frame++;
  1371.                         }
  1372.  
  1373.                 oslDeleteImage(suicidemouse[0]);
  1374.                 oslDeleteSound(sfx);
  1375.         break;
  1376.  
  1377.  
  1378.         case 17:
  1379.                 suicidemouse[0] =  oslLoadImageFilePNG("./gfx/nigel.png",OSL_IN_RAM, OSL_PF_8888);
  1380.                 oslSetImageRotCenter(suicidemouse[0]);
  1381.  
  1382.                 creepysfx = oslLoadSoundFile("./sfx/smashing.wav", OSL_FMT_NONE);
  1383.  
  1384.                 frame=0;
  1385.  
  1386.                 oslPlaySound(creepysfx, 1);
  1387.  
  1388.                 while (frame<512)
  1389.                 {
  1390.                                 oslStartDrawing();
  1391.                             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1392.  
  1393.                             for(i=0; i<8; i++)
  1394.                             {
  1395.                                         j=random(10)-20;
  1396.                                             oslDrawFillRect(i*60,120+j,(i*60)+60,152+(-1*j), RGB(96,96,0));
  1397.                                         oslDrawFillRect(i*60,128+j,(i*60)+60,144+(-1*j), RGB(128,128,0));
  1398.                                         oslDrawFillRect(i*60,136+j,(i*60)+60,136+(-1*j), RGB(160,160,0));
  1399.                             }
  1400.  
  1401.                             if (frame >= 480)
  1402.                             {
  1403.  
  1404.                                     spr_draw(suicidemouse[0],240,138);
  1405.  
  1406.                                         suicidemouse[0] -> stretchX += 16;
  1407.                                         suicidemouse[0] -> stretchY = (int)(1.33*(suicidemouse[0] -> stretchX));
  1408.                             }
  1409.                                 oslEndDrawing();
  1410.                                 oslSwapBuffers();
  1411.                                 oslWaitVSync();
  1412.                                 frame++;
  1413.                 }
  1414.  
  1415.                 oslDeleteSound(creepysfx);
  1416.                 oslDeleteImage(suicidemouse[0]);
  1417.                 oslDeleteSound(sfx);
  1418.  
  1419.         break;
  1420.  
  1421.         case 18:
  1422.                 suicidemouse[0] =  oslLoadImageFilePNG("./gfx/caaat.png",OSL_IN_RAM, OSL_PF_5551);
  1423.                 suicidemouse[1] =  oslLoadImageFilePNG("./gfx/caaat_ns.png",OSL_IN_RAM, OSL_PF_5551);
  1424.                 creepysfx = oslLoadSoundFile("./sfx/caaat.wav", OSL_FMT_NONE);
  1425.                 oslSetImageRotCenter(suicidemouse[0]);
  1426.                 oslSetImageRotCenter(suicidemouse[1]);
  1427.  
  1428.                 oslPlaySound(creepysfx, 1);
  1429.  
  1430.                 frame=0;
  1431.  
  1432.                 while(oslGetSoundChannel(creepysfx) == 1)
  1433.                 {
  1434.                         oslStartDrawing();
  1435.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1436.  
  1437.                         if (frame<150)
  1438.                         {
  1439.                                 spr_draw(suicidemouse[1],240,138);
  1440.                         }
  1441.                         else
  1442.                         {
  1443.                                 spr_draw(suicidemouse[0],240,138);
  1444.                         }
  1445.  
  1446.                         oslEndDrawing();
  1447.                         oslSwapBuffers();
  1448.                         oslWaitVSync();
  1449.                         frame++;
  1450.                 }
  1451.                 oslDeleteSound(creepysfx);
  1452.                 oslDeleteImage(suicidemouse[0]);
  1453.                 oslDeleteImage(suicidemouse[1]);
  1454.                 oslDeleteSound(sfx);
  1455.         break;
  1456.  
  1457.         case 19:
  1458.                 for (i=0; i<9; i++)
  1459.                                 {
  1460.                                         sprintf(buffer,"./gfx/pona0%d.png",i);
  1461.                                         suicidemouse[i]=oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  1462.  
  1463.                                         suicidemouse[i]->stretchX = 480;
  1464.                                         suicidemouse[i]->stretchY = 272;
  1465.                                         oslSetImageRotCenter(suicidemouse[i]);
  1466.                                 }
  1467.  
  1468.                 frame=0;
  1469.  
  1470.                 creepysfx = oslLoadSoundFile("./sfx/pona.wav", OSL_FMT_NONE);
  1471.                 oslPlaySound(creepysfx, 0);
  1472.  
  1473.                 i=0;
  1474.  
  1475.                 while (frame < 333)
  1476.                 {
  1477.  
  1478.                         oslStartDrawing();
  1479.                     oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1480.  
  1481.                         oslSetBilinearFilter(1);
  1482.  
  1483.                         if (frame < 110)
  1484.                     {
  1485.                         spr_draw(suicidemouse[frame/14],240,138);
  1486.                     }
  1487.  
  1488.                     if ((frame >= 110) && (frame <= 140))
  1489.                     {
  1490.                         spr_draw(suicidemouse[8],240,138);
  1491.                     }
  1492.                     oslSetBilinearFilter(0);
  1493.                     oslEndDrawing();
  1494.                         //frame_debug((int)oslGetRamStatus().maxAvailable);
  1495.                     oslSwapBuffers();
  1496.  
  1497.                         oslWaitVSync();
  1498.                     frame++;
  1499.                 }
  1500.  
  1501.                 oslDeleteSound(creepysfx);
  1502.                 for (i=0; i<9; i++)
  1503.                 {
  1504.                         oslDeleteImage(suicidemouse[i]);
  1505.                 }
  1506.                 oslDeleteSound(sfx);
  1507.  
  1508.                 break;
  1509.  
  1510.         case 20:
  1511.                 suicidemouse[0] =  oslLoadImageFilePNG("./gfx/pookey1.png",OSL_IN_RAM, OSL_PF_5551);
  1512.                 suicidemouse[1] =  oslLoadImageFilePNG("./gfx/pookey2.png",OSL_IN_RAM, OSL_PF_5551);
  1513.                 creepysfx = oslLoadSoundFile("./sfx/pookeymon.wav", OSL_FMT_NONE);
  1514.                 oslSetImageRotCenter(suicidemouse[0]);
  1515.                 oslSetImageRotCenter(suicidemouse[1]);
  1516.  
  1517.                 oslPlaySound(creepysfx, 1);
  1518.  
  1519.                 frame=0;
  1520.  
  1521.                 while(frame < 550)
  1522.                 {
  1523.                         oslStartDrawing();
  1524.                     oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1525.  
  1526.                     if ((frame >= 375) && (frame < 389)) spr_draw(suicidemouse[0], 240, 136);
  1527.                     if ((frame >= 389) && (frame < 401)) spr_draw(suicidemouse[1], 240, 136);
  1528.  
  1529.                     oslEndDrawing();
  1530.                     oslSwapBuffers();
  1531.  
  1532.                         oslWaitVSync();
  1533.  
  1534.                         frame++;
  1535.                 }
  1536.  
  1537.                 oslDeleteImage(suicidemouse[0]);
  1538.                 oslDeleteImage(suicidemouse[1]);
  1539.                 oslDeleteSound(creepysfx);
  1540.                 oslDeleteSound(sfx);
  1541.                 break;
  1542.  
  1543.         case 21:
  1544.                 suicidemouse[0] =  oslLoadImageFilePNG("./gfx/gfx-0825.png",OSL_IN_RAM, OSL_PF_5551);
  1545.                 creepysfx = oslLoadSoundFile("./sfx/sfx-0030.wav", OSL_FMT_NONE);
  1546.                 oslSetImageRotCenter(suicidemouse[0]);
  1547.  
  1548.                 oslPlaySound(creepysfx, 1);
  1549.  
  1550.                 frame=0;
  1551.  
  1552.                 suicidemouse[0] -> stretchX = i = 396;
  1553.                 suicidemouse[0] -> stretchY = (int)(1.68*suicidemouse[0] -> stretchX);
  1554.  
  1555.                 while(frame < 480)
  1556.                 {
  1557.                         oslStartDrawing();
  1558.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1559.  
  1560.  
  1561.                         i=suicidemouse[0] -> stretchX;
  1562.  
  1563.                         if ((suicidemouse[0] -> stretchX) > -72)
  1564.                         {
  1565.  
  1566.                                 if (suicidemouse[0] -> stretchX >= 0)
  1567.                                 {
  1568.                                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  1569.                                         spr_draw(suicidemouse[0], 240, 136);
  1570.                                 }
  1571.  
  1572.                                 if (suicidemouse[0] -> stretchX >= -36)
  1573.                                 {
  1574.                                         suicidemouse[0] -> stretchX += 36;
  1575.                                         suicidemouse[0] -> stretchY = (int)(1.68* (suicidemouse[0] -> stretchX));
  1576.  
  1577.  
  1578.                                         oslSetAlpha(OSL_FX_ALPHA, 128);
  1579.                                         spr_draw(suicidemouse[0], 240, 136);
  1580.                                 }
  1581.  
  1582.  
  1583.                                 suicidemouse[0] -> stretchX += ((suicidemouse[0] -> stretchX < -36)?72:36);
  1584.                                 suicidemouse[0] -> stretchY = (int)(1.68* (suicidemouse[0] -> stretchX));
  1585.  
  1586.                                 oslSetAlpha(OSL_FX_ALPHA, 64);
  1587.                                 spr_draw(suicidemouse[0], 240, 136);
  1588.                         }
  1589.  
  1590.                         suicidemouse[0] -> stretchX = i;
  1591.  
  1592.                         if (!(frame%5))
  1593.                         {
  1594.                                 suicidemouse[0] -> stretchX = i - 18;
  1595.                         }
  1596.  
  1597.                         suicidemouse[0] -> stretchY = (int)(1.68*suicidemouse[0] -> stretchX);
  1598.  
  1599.                         oslEndDrawing();
  1600.                         oslSwapBuffers();
  1601.                         oslWaitVSync();
  1602.                         frame++;
  1603.                 }
  1604.  
  1605.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  1606.  
  1607.                 oslDeleteImage(suicidemouse[0]);
  1608.                 oslDeleteSound(creepysfx);
  1609.                 oslDeleteSound(sfx);
  1610.                 break;
  1611.  
  1612.         case 22:
  1613.                 suicidemouse[0] =  oslLoadImageFilePNG("./gfx/lavender.png",OSL_IN_RAM, OSL_PF_5551);
  1614.                 creepysfx = oslLoadSoundFile("./sfx/lavender.wav", OSL_FMT_NONE);
  1615.  
  1616.                 oslSetImageTileSize(suicidemouse[0],0,0,48,48);
  1617.                 oslSetImageRotCenter(suicidemouse[0]);
  1618.                 oslPlaySound(creepysfx, 1);
  1619.  
  1620.                 frame=0;
  1621.  
  1622.                 while(frame < 420)
  1623.                 {
  1624.                         oslStartDrawing();
  1625.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1626.  
  1627.                         if (frame <= 341)
  1628.                         {
  1629.                                 oslSetAlpha(OSL_FX_ALPHA, random(128));
  1630.                                 suicidemouse[0]->stretchX = suicidemouse[0]->stretchY = 96;
  1631.                         }
  1632.                         else
  1633.                         {
  1634.                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  1635.                                 oslSetImageTileSize(suicidemouse[0],48,0,48,48);
  1636.                                 oslSetImageRotCenter(suicidemouse[0]);
  1637.                                 suicidemouse[0]->stretchX = suicidemouse[0]->stretchY = 640;
  1638.                         }
  1639.  
  1640.                         if (frame < 395) spr_draw(suicidemouse[0], 240+((frame>341)?0:random(4)), 136+((frame>341)?104:random(4)));
  1641.  
  1642.                         oslEndDrawing();
  1643.                         oslSwapBuffers();
  1644.                         oslWaitVSync();
  1645.                         frame++;
  1646.                 }
  1647.  
  1648.  
  1649.                 oslDeleteImage(suicidemouse[0]);
  1650.                 oslDeleteSound(creepysfx);
  1651.                 oslDeleteSound(sfx);
  1652.                 break;
  1653.  
  1654.         case 23:
  1655.                 frame=0;
  1656.                 suicidemouse[0] =  oslLoadImageFilePNG("./gfx/c64.png",OSL_IN_RAM, OSL_PF_5551);
  1657.                 suicidemouse[1] =  oslLoadImageFilePNG("./gfx/c64-ar.png",OSL_IN_RAM, OSL_PF_5551);
  1658.  
  1659.                 while (frame < 360)
  1660.                 {
  1661.                         oslStartDrawing();
  1662.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1663.                         oslDrawFillRect(60, 0, 420, 272, RGB(165,165,255));
  1664.                         oslDrawFillRect(80, 46, 400, 226, RGB(66,66,231));
  1665.  
  1666.                         if (frame < 150)
  1667.                         {
  1668.                                 for(i=0; i<1000; i++)
  1669.                                 {
  1670.                                          spr_draw(suicidemouse[1], (i%40)*8+80, ((int)(i/40))*8+38);
  1671.                                 }
  1672.                         }
  1673.                         else
  1674.                         {
  1675.                                  spr_draw(suicidemouse[0], 80, 46);
  1676.                                  if ((frame%60) < 30)
  1677.                                  {
  1678.                                          oslDrawFillRect(80, 94, 88, 102, RGB(165,165,255));
  1679.                                  }
  1680.                         }
  1681.                         oslEndDrawing();
  1682.                         oslSwapBuffers();
  1683.                         oslWaitVSync();
  1684.                         frame++;
  1685.                 }
  1686.                 oslDeleteImage(suicidemouse[0]);
  1687.                 oslDeleteImage(suicidemouse[1]);
  1688.                 oslDeleteSound(sfx);
  1689.                 break;
  1690.  
  1691.         case 24:
  1692.                 suicidemouse[0] =  oslLoadImageFilePNG("./gfx/sncell.png",OSL_IN_RAM, OSL_PF_5551);
  1693.                 suicidemouse[1] =  oslLoadImageFilePNG("./gfx/sncpnt.png",OSL_IN_RAM, OSL_PF_5551);
  1694.                 oslSetImageRotCenter(suicidemouse[0]);
  1695.                 creepysfx = oslLoadSoundFile("./sfx/nuls.wav", OSL_FMT_NONE);
  1696.  
  1697.                 oslPlaySound(creepysfx, 1);
  1698.  
  1699.                 while(oslGetSoundChannel(creepysfx)==1)
  1700.                 {
  1701.                         oslStartDrawing();
  1702.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1703.                         spr_draw(suicidemouse[0], 236+random(7), 132+random(7));
  1704.                         spr_draw(suicidemouse[1], 224+random(7), 132+random(7));
  1705.                         spr_draw(suicidemouse[1], 246+random(7), 132+random(7));
  1706.                         oslSwapBuffers();
  1707.                         oslWaitVSync();
  1708.                 }
  1709.  
  1710.                 oslStartDrawing();
  1711.                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1712.                 oslEndDrawing();
  1713.                 oslSwapBuffers();
  1714.                 fadeout(RGB(0, 0, 0));
  1715.  
  1716.                 oslDeleteImage(suicidemouse[0]);
  1717.                 oslDeleteImage(suicidemouse[1]);
  1718.                 oslDeleteSound(creepysfx);
  1719.                 oslDeleteSound(sfx);
  1720.  
  1721.                 break;
  1722.  
  1723.         }
  1724.  
  1725.  
  1726.  
  1727.  
  1728.         oslDeleteSound(w4c);
  1729.         fadeout(RGB(0,0,0));
  1730. }
  1731.  
  1732. void draw_benj(OSL_IMAGE *benj, int px, int py, short shielded, OSL_IMAGE *shield)
  1733. {
  1734.  
  1735.         float court_zoom = 0.00192*(py+32) + 0.562;
  1736.         shield->stretchX = (int)(48*(float)court_zoom);
  1737.         shield->stretchY = (int)(48*(float)court_zoom);
  1738.  
  1739.         //oslSetBilinearFilter(1);
  1740.         if ((benj -> angle) == -90)
  1741.         {
  1742.                 spr_draw(benj, px-16, py+88);
  1743.         }
  1744.         else if ((benj -> angle) == 90)
  1745.         {
  1746.                 spr_draw(benj, px+64, py+32);
  1747.         }
  1748.         else if ((benj -> angle) == 0) spr_draw(benj, px, py);
  1749.  
  1750.         if (shielded)
  1751.         {
  1752.                 oslSetAlpha(OSL_FX_ALPHA, 128);
  1753.                 spr_draw(shield, px+4, py+16);
  1754.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  1755.         }
  1756.         //oslSetBilinearFilter(0);
  1757. }
  1758.  
  1759.  
  1760. int warning_onepilepsy()
  1761. {
  1762.         int i, w, frame=0, quit=0, red=0, accept=0;
  1763.         const char *text[8] = {"This game contains flashing patterns that may cause","epileptic seizures when players attempt to see them.","It also contains strange pictures that may cause some players","to have brief but intense adrenaline surges in their body."," ","Consult a doctor if you experience","unusual symptoms while playing games!","Press START to play or X to quit"};
  1764.         OSL_IMAGE *warning = oslLoadImageFilePNG("./gfx/warning.png",OSL_IN_RAM, OSL_PF_8888);
  1765.         OSL_SOUND *theme = oslLoadSoundFileMOD("./muzaxx/giygas.xm", OSL_FMT_NONE);
  1766.         warning->stretchX = 360;
  1767.  
  1768.         oslSetImageRotCenter(warning);
  1769.  
  1770.         oslPlaySound(theme, 5);
  1771.  
  1772.         //oslSetBilinearFilter(1);
  1773.  
  1774.         while (!quit)
  1775.         {
  1776.             oslStartDrawing();
  1777.             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1778.  
  1779.                 oslSetTransparentColor(RGB(255,0,255));
  1780.                 oslSetBkColor(RGB(255,0,255));
  1781.  
  1782.  
  1783.         for (i=0; i<7; i++)
  1784.         {
  1785.                 if (i<5) oslSetTextColor(RGB(255, 255, 255));
  1786.                 if (i>4) oslSetTextColor(RGB(255, 255, 0));
  1787.                 w = oslGetStringWidth(text[i]);
  1788.                 oslDrawString((480 - w)/2, 92+i*20, text[i]);
  1789.         }
  1790.  
  1791.         warning->angle = (int)(7*sin((0.25*frame)/3.14));
  1792.  
  1793.         spr_draw(warning, 240, 32);
  1794.  
  1795.         oslSetTextColor(RGB(red, 0, 0));
  1796.         w = oslGetStringWidth(text[7]);
  1797.         oslDrawString((480 - w)/2, 256, text[7]);
  1798.         red -= 3;
  1799.         if (red < 0) red=255;
  1800.  
  1801.     oslEndDrawing();
  1802.     oslSwapBuffers();
  1803.  
  1804.     oslReadKeys();
  1805.     if (osl_keys->pressed.start)
  1806.         {
  1807.                 accept=1;
  1808.                 quit=1;
  1809.         }
  1810.     if (osl_keys->pressed.cross)
  1811.         {
  1812.                 accept=0;
  1813.                 quit=1;
  1814.         }
  1815.  
  1816.     oslWaitVSync();
  1817.     frame++;
  1818.         }
  1819.  
  1820.         oslFlushKey();
  1821.  
  1822.         //oslSetBilinearFilter(0);
  1823.     fadeout(RGB(0,0,0));
  1824.     oslDeleteImage(warning);
  1825.     oslStopSound(theme);
  1826.     oslDeleteSound(theme);
  1827.  
  1828.     return accept;
  1829. }
  1830.  
  1831. short sonicexe2(int diff)
  1832. {
  1833.         int i, rects=1, sc=0, bx=240, frame=0, bouss=0;
  1834.  
  1835.         short reussi=0;
  1836.         OSL_IMAGE *bg, *pass, *buttons, *sexe2, *slyexe;
  1837.         OSL_SOUND *oof = oslLoadSoundFile("./sfx/sfx-0009.wav", OSL_FMT_NONE);
  1838.         OSL_SOUND *passs = oslLoadSoundFile("./sfx/sfx-0053.wav", OSL_FMT_NONE);
  1839.         OSL_SOUND *kte = oslLoadSoundFile("./sfx/kte.wav", OSL_FMT_NONE);
  1840.         OSL_SOUND *sallyexe = oslLoadSoundFile("./sfx/sallyexe.wav", OSL_FMT_NONE);
  1841.  
  1842.         sexe2 = oslLoadImageFilePNG("./gfx/sonicexe2.png",OSL_IN_RAM, OSL_PF_5551);
  1843.         bg = oslLoadImageFilePNG("./gfx/gfx-0776.png",OSL_IN_RAM, OSL_PF_5551);
  1844.         pass = oslLoadImageFilePNG("./gfx/gfx-0718.png",OSL_IN_RAM, OSL_PF_5551);
  1845.         buttons = oslLoadImageFilePNG("./gfx/arrows.png",OSL_IN_RAM, OSL_PF_8888);
  1846.         slyexe = oslLoadImageFilePNG("./gfx/sallyexe.png",OSL_IN_RAM, OSL_PF_8888);
  1847.  
  1848.         benj -> stretchX = 64;
  1849.         benj -> stretchY = 96;
  1850.  
  1851.         oslSetImageRotCenter(sexe2);
  1852.         oslSetImageRotCenter(buttons);
  1853.         oslSetImageRotCenter(pass);
  1854.  
  1855.  
  1856.  
  1857.         oslSetSoundLoop(kte, 1);
  1858.         oslPlaySound(kte, 1);
  1859.  
  1860.         while ((sc < 90*diff) && (rects < 240))
  1861.         {
  1862.                 oslStartDrawing();
  1863.                 oslDrawFillRect(0,0,480,272, RGB(0, 0, 0));
  1864.                 oslSetAlpha(OSL_FX_ALPHA, 160);
  1865.                 spr_draw(bg, 0, 0);
  1866.                 oslSetAlpha(OSL_FX_TINT, RGBA(255,0,0,48));
  1867.                 spr_draw(bg, 0, 0);
  1868.  
  1869.                 oslReadKeys();
  1870.  
  1871.                 if (((osl_pad.analogX < -32) || (osl_keys->held.left)) && (bx > rects))
  1872.                 {
  1873.                         oslSetImageTileSize(benj,(abs(frame%32)/4)*32,144,32,48);
  1874.                         bx -= 4;
  1875.                         if (bouss==0)
  1876.                         {
  1877.                                 bouss=1;
  1878.                                 sc++;
  1879.                         }
  1880.                 }
  1881.                 else if (((osl_pad.analogX > 32) || (osl_keys->held.right)) && (bx < (448-(rects+1))))
  1882.                 {
  1883.                         oslSetImageTileSize(benj,(abs(frame%32)/4)*32,48,32,48);
  1884.                         bx += 4;
  1885.                         if (bouss==1)
  1886.                         {
  1887.                                 bouss=0;
  1888.                                 sc++;
  1889.                         }
  1890.                 }
  1891.                 else
  1892.                 {
  1893.                         oslSetImageTileSize(benj,0,192,32,48);
  1894.                 }
  1895.  
  1896.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  1897.                 spr_draw(sexe2, 240+4*sin(0.0625*frame), 64);
  1898.                 spr_draw(buttons, 240, 136);
  1899.  
  1900.                 benj -> stretchX = 64;
  1901.                 benj -> stretchY = 96;
  1902.                 oslSetAlpha(OSL_FX_TINT, RGBA(0,0,0,255));
  1903.                 spr_draw(benj, bx, 176);
  1904.  
  1905.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  1906.                 oslDrawFillRect(0, 0, rects+1, 272, RGB(0,0,0));
  1907.                 oslDrawFillRect(480, 0, 480-(rects+1), 272, RGB(0,0,0));
  1908.                 oslDrawFillRect(0, 0, 480, rects+1, RGB(0,0,0));
  1909.  
  1910.                 oslEndDrawing();
  1911.                 oslSwapBuffers();
  1912.                 oslWaitVSync();
  1913.                 frame++;
  1914.                 if (!(frame%(20-((diff-1)*5)))) rects++;
  1915.                 if (bx < rects) bx=rects+4;
  1916.                 if (bx > (448-(rects+1))) bx=443-rects;
  1917.         }
  1918.  
  1919.  
  1920.         if (sc >= 90*diff)
  1921.         {
  1922.                 for (i=0; i<10; i++) oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  1923.                 oslPlaySound(passs, 2);
  1924.                 for (i=135; i<=272; i+=24)
  1925.                 {
  1926.                         oslStartDrawing();
  1927.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  1928.                         spr_draw(pass,240,136);
  1929.                         pass -> stretchX = pass -> stretchY = i;
  1930.                         oslEndDrawing();
  1931.                         oslSwapBuffers();
  1932.                         oslWaitVSync();
  1933.                 }
  1934.                 reussi=1;
  1935.         }
  1936.         else
  1937.         {
  1938.                 oslPlaySound(sallyexe, 1);
  1939.                 while(oslGetSoundChannel(sallyexe)==1)
  1940.                 {
  1941.                         oslStartDrawing();
  1942.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  1943.                         spr_draw(slyexe, 0, 0);
  1944.                         oslEndDrawing();
  1945.                         oslSwapBuffers();
  1946.                         oslWaitVSync();
  1947.                 }
  1948.         }
  1949.  
  1950.  
  1951.         oslDeleteSound(kte);
  1952.         oslDeleteImage(sexe2);
  1953.         oslDeleteImage(bg);
  1954.         oslDeleteImage(pass);
  1955.         oslDeleteSound(oof);
  1956.         oslDeleteSound(passs);
  1957.         oslDeleteSound(sallyexe);
  1958.         oslDeleteImage(slyexe);
  1959.         return reussi;
  1960. }
  1961.  
  1962. short sonicexe(int diff)
  1963. {
  1964.         SceUID check;
  1965.         short reussi=0;
  1966.         int i, j=0, k=0, l=100, benj_frame=0, bgx=0, flx=0, bb, by, sedx=80, sedy=16;
  1967.         OSL_IMAGE *iamgod, *sonicexebg, *sonicexefloor, *sonicexe_d, *buttons, *pass;
  1968.         OSL_SOUND *drowning;
  1969.  
  1970.         check = sceIoDopen("flash1:/");
  1971.  
  1972.         if (check < 0)
  1973.         {
  1974.                 drowning = oslLoadSoundFile("./sfx/sfx-0146.wav", OSL_FMT_NONE);
  1975.         }
  1976.         else
  1977.         {
  1978.                 drowning = oslLoadSoundFile("./sfx/sfx-0146.wav", OSL_FMT_STREAM);
  1979.         }
  1980.  
  1981.         OSL_SOUND *oof = oslLoadSoundFile("./sfx/sfx-0009.wav", OSL_FMT_NONE);
  1982.         OSL_SOUND *passs = oslLoadSoundFile("./sfx/sfx-0053.wav", OSL_FMT_NONE);
  1983.  
  1984.         char buffer[20];
  1985.  
  1986.         oslClearImage(OSL_SECONDARY_BUFFER, RGB(0,0,0));
  1987.  
  1988.         i=random(4)+1;
  1989.         bb=random(4);
  1990.         sprintf(buffer,"./gfx/iamgod%d.png",i);
  1991.         iamgod = oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  1992.         oslSetImageRotCenter(iamgod);
  1993.         sonicexebg = oslLoadImageFilePNG("./gfx/gfx-0973.png",OSL_IN_RAM, OSL_PF_5551);
  1994.         sonicexefloor = oslLoadImageFilePNG("./gfx/gfx-0974.png",OSL_IN_RAM, OSL_PF_5551);
  1995.         buttons = oslLoadImageFilePNG("./gfx/buttons.png",OSL_IN_RAM, OSL_PF_8888);
  1996.         sonicexe_d = oslLoadImageFilePNG("./gfx/sonicexe.png",OSL_IN_RAM, OSL_PF_5551);
  1997.         pass = oslLoadImageFilePNG("./gfx/gfx-0718.png",OSL_IN_RAM, OSL_PF_5551);
  1998.         oslSetImageRotCenter(pass);
  1999.  
  2000.  
  2001.  
  2002.         oslPlaySound(drowning, 2);
  2003.  
  2004.         while ((oslGetSoundChannel(drowning) == 2) && (j < 23*diff))
  2005.         {
  2006.                 if (k > 700) l = 90;
  2007.                 if (k > 1300) l = 80;
  2008.                 if (k > 1850) l = 70;
  2009.                 if (k > 2350) l = 60;
  2010.                 if (k > 2800) l = 50;
  2011.                 if (k > 3150) l = 40;
  2012.                 if (k > 3450) l = 30;
  2013.                 if (k > 3700) l = 20;
  2014.  
  2015.                 if (k%l < (l/2)) by=0; else by=32;
  2016.                 if (!(k%40))
  2017.                 {
  2018.                         sedx++;
  2019.                         sedy++;
  2020.                 }
  2021.  
  2022.                 oslStartDrawing();
  2023.             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2024.  
  2025.                 spr_draw(sonicexebg, bgx, 8);
  2026.                 spr_draw(sonicexefloor, flx, 248);
  2027.                 spr_draw(sonicexebg, bgx+480, 8);
  2028.                 spr_draw(sonicexefloor, flx+480, 248);
  2029.                 spr_draw(sonicexe_d, sedx, sedy);
  2030.  
  2031.                 oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
  2032.                 oslSetImageTileSize(buttons,bb*32,by,32,32);
  2033.                 benj -> stretchX = 64;
  2034.                 benj -> stretchY = 96;
  2035.                 buttons -> stretchX = buttons -> stretchY = 64;
  2036.  
  2037.                 spr_draw(benj, 360, 152);
  2038.                 spr_draw(buttons, 368, 82);
  2039.  
  2040.                 /*sprintf(buffer,"%d %d", l, (int)oslGetRamStatus().maxAvailable);
  2041.                 oslDrawString(0,8,buffer);*/
  2042.                 oslEndDrawing();
  2043.                 oslSwapBuffers();
  2044.  
  2045.                 oslReadKeys();
  2046.  
  2047.                 if (((bb==0) && (osl_keys -> pressed.circle)) || ((bb==1) && (osl_keys -> pressed.cross)) || ((bb==2) && (osl_keys -> pressed.square)) || ((bb==3) && (osl_keys -> pressed.triangle)))
  2048.                 {
  2049.                         j++;
  2050.                 }
  2051.  
  2052.                 oslAudioVSync();
  2053.                 if (!(k%24)) benj_frame++;
  2054.                 bgx--;
  2055.                 flx -= 2;
  2056.                 if (bgx == -480) bgx=0;
  2057.                 if (flx == -480) flx=0;
  2058.                 k++;
  2059.         }
  2060.  
  2061.         if (j >= 23*diff)
  2062.         {
  2063.                 for (i=0; i<10; i++) oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  2064.                 oslPlaySound(passs, 2);
  2065.                 for (i=135; i<=272; i+=24)
  2066.                 {
  2067.                         oslStartDrawing();
  2068.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2069.                         spr_draw(pass,240,136);
  2070.                         pass -> stretchX = pass -> stretchY = i;
  2071.                         oslEndDrawing();
  2072.                         oslSwapBuffers();
  2073.                         oslWaitVSync();
  2074.                 }
  2075.                 reussi=1;
  2076.         }
  2077.         else
  2078.         {
  2079.  
  2080.                 k=255;
  2081.                 for (i=sedx; i<360; i+=5)
  2082.                 {
  2083.                         oslStartDrawing();
  2084.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  2085.                         bgx--;
  2086.                         flx -= 2;
  2087.                         spr_draw(sonicexebg, bgx, 8);
  2088.                         spr_draw(sonicexefloor, flx, 248);
  2089.                         spr_draw(sonicexebg, bgx+480, 8);
  2090.                         spr_draw(sonicexefloor, flx+480, 248);
  2091.                         spr_draw(benj, 360, 152);
  2092.                         oslSetAlpha(OSL_FX_ALPHA, k);
  2093.                         spr_draw(sonicexe_d, i, sedy);
  2094.                         oslEndDrawing();
  2095.                         oslSwapBuffers();
  2096.                         oslWaitVSync();
  2097.                         k -= 8;
  2098.                         if (k<0) k=0;
  2099.                         if (sedy < 168) sedy++;
  2100.                 }
  2101.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  2102.  
  2103.                 for (i=0; i<10; i++) oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  2104.  
  2105.                 oslPlaySound(oof, 2);
  2106.                 oslStartDrawing();
  2107.             oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2108.                 spr_draw(iamgod,240,136);
  2109.                 oslEndDrawing();
  2110.                 oslSwapBuffers();
  2111.                 fadeout(RGB(0,0,0));
  2112.         }
  2113.  
  2114.         oslDeleteImage(iamgod);
  2115.         oslDeleteImage(sonicexebg);
  2116.         oslDeleteImage(sonicexefloor);
  2117.         oslDeleteImage(sonicexe_d);
  2118.         oslDeleteImage(buttons);
  2119.         oslDeleteImage(pass);
  2120.         oslDeleteSound(oof);
  2121.         oslDeleteSound(drowning);
  2122.         oslDeleteSound(passs);
  2123.  
  2124.         return reussi;
  2125. }
  2126.  
  2127. short mincer(int diff)
  2128. {
  2129.         short reussi=0, floor=-1, score=0;
  2130.         int i, skipframe=0, by=-36, bgy=0, my=404, minced=0, bb=random(4);
  2131.         OSL_IMAGE *mincer[3];
  2132.         OSL_IMAGE *benj_mincer;
  2133.         OSL_IMAGE *buttons = oslLoadImageFilePNG("./gfx/buttons.png",OSL_IN_RAM, OSL_PF_5551);
  2134.         OSL_IMAGE *pass = oslLoadImageFilePNG("./gfx/gfx-0718.png",OSL_IN_RAM, OSL_PF_5551);
  2135.  
  2136.         OSL_SOUND *passs = oslLoadSoundFile("./sfx/sfx-0053.wav", OSL_FMT_NONE);
  2137.         OSL_SOUND *mincing = oslLoadSoundFile("./sfx/sfx-0081.wav", OSL_FMT_NONE);
  2138.         OSL_SOUND *rightwrong[2];
  2139.  
  2140.         mincer[0] = oslLoadImageFilePNG("./gfx/mincer_bg.png",OSL_IN_RAM, OSL_PF_5551);
  2141.         mincer[1] = oslLoadImageFilePNG("./gfx/mincer.png",OSL_IN_RAM, OSL_PF_5551);
  2142.         mincer[2] = oslLoadImageFilePNG("./gfx/mincer_fg.png",OSL_IN_RAM, OSL_PF_5551);
  2143.  
  2144.         rightwrong[0] = oslLoadSoundFile("./sfx/right.wav",OSL_FMT_NONE);
  2145.         rightwrong[1] = oslLoadSoundFile("./sfx/wrong.wav",OSL_FMT_NONE);
  2146.  
  2147.         benj_mincer = oslLoadImageFilePNG("./gfx/benj_mincer.png",OSL_IN_RAM, OSL_PF_5551);
  2148.  
  2149.         oslSetImageRotCenter(pass);
  2150.  
  2151.         oslSetImageTileSize(benj_mincer,0,0,29,34);
  2152.         benj_mincer -> stretchX = benj_mincer -> stretchY = 58;
  2153.  
  2154.         oslSetFrameskip(0);
  2155.         oslSetMaxFrameskip(3);
  2156.  
  2157.         while ((floor <= (-2*diff+12)) && (score < (2*diff+3)))
  2158.         {
  2159.                 if (!skipframe)
  2160.                 {
  2161.                         oslStartDrawing();
  2162.                         oslSetImageTileSize(buttons,bb*32,0,32,32);
  2163.                         buttons -> stretchX = buttons -> stretchY = 64;
  2164.  
  2165.                         if (floor == -1)
  2166.                         {
  2167.                                 oslDrawFillRect(0,0,480,272, RGB(0,0,32));
  2168.                                 spr_draw(mincer[0], 80, 0);
  2169.                                 spr_draw(mincer[0], 80, 240);
  2170.                                 spr_draw(benj_mincer, 215, by);
  2171.                                 by += 4;
  2172.  
  2173.                                 if (by==136) floor=0;
  2174.                         }
  2175.                         else if (floor >= 0)
  2176.                         {
  2177.                                 oslDrawFillRect(0,0,480,272, RGB(0,0,32));
  2178.                                 spr_draw(mincer[0], 80, bgy);
  2179.                                 spr_draw(mincer[0], 80, bgy+240);
  2180.  
  2181.  
  2182.                                 if (floor >= (-2*diff+9))
  2183.                                 {
  2184.                                         spr_draw(mincer[1], 182, my);
  2185.                                 }
  2186.  
  2187.                                 spr_draw(mincer[0], 80, bgy+480);
  2188.  
  2189.  
  2190.                                 if (my < -108)
  2191.                                 {
  2192.                                         oslSetImageTileSize(benj_mincer,29,0,29,34);
  2193.                                         benj_mincer -> stretchX = benj_mincer -> stretchY = 58;
  2194.                                 }
  2195.  
  2196.                                 spr_draw(benj_mincer, 215, 136);
  2197.  
  2198.                                 if (bgy<=-240)
  2199.                                         {
  2200.                                                 floor++;
  2201.                                                 bgy=0;
  2202.                                         }
  2203.  
  2204.                                 if ((my <= 48) && (my >= -180))
  2205.                                 {
  2206.                                         oslFlushKey();
  2207.                                         if ((!minced) && (oslGetSoundChannel(mincing) != 2))
  2208.                                                 {
  2209.                                                         oslPlaySound(mincing, 2);
  2210.                                                         score=0;
  2211.                                                 }
  2212.  
  2213.                                         switch(minced)
  2214.                                         {
  2215.                                                 case 0:
  2216.                                                 case 2:
  2217.                                                 {
  2218.                                                         bgy -= 2;
  2219.                                                         if (floor >= (-2*diff+9))
  2220.                                                                 {
  2221.                                                                         oslSetImageTileSize(mincer[0],0,0,101,240);
  2222.                                                                         spr_draw(mincer[0], 80, my-164);
  2223.                                                                         oslSetImageTileSize(mincer[0],226,0,94,240);
  2224.                                                                         spr_draw(mincer[0], 306, my-164);
  2225.                                                                         spr_draw(mincer[2], 182, my+158);
  2226.                                                                         oslSetImageTileSize(mincer[0],0,0,320,240);
  2227.                                                                         my -= 2;
  2228.                                                                 }
  2229.  
  2230.                                                         if ((my == -96) && (!minced)) minced=1;
  2231.                                                         break;
  2232.                                                 }
  2233.  
  2234.                                                 case 1:
  2235.                                                 {
  2236.                                                         bgy += 2;
  2237.                                                         if (floor >= (-2*diff+9))
  2238.                                                                 {
  2239.                                                                         oslSetImageTileSize(mincer[0],0,0,101,240);
  2240.                                                                         spr_draw(mincer[0], 80, my-164);
  2241.                                                                         oslSetImageTileSize(mincer[0],226,0,94,240);
  2242.                                                                         spr_draw(mincer[0], 306, my-164);
  2243.                                                                         spr_draw(mincer[2], 182, my+158);
  2244.                                                                         my += 2;
  2245.                                                                         oslSetImageTileSize(mincer[0],0,0,320,240);
  2246.                                                                 }
  2247.                                                         if (my == -12) minced=2;
  2248.                                                         break;
  2249.                                                 }
  2250.                                         }
  2251.  
  2252.                                 }
  2253.                                 else
  2254.                                 {
  2255.                                         bgy -= 4;
  2256.                                         if (floor >= (-2*diff+9))
  2257.                                         {
  2258.                                                 spr_draw(mincer[2], 182, my+158);
  2259.                                                 my -= 4;
  2260.                                         }
  2261.  
  2262.                                         oslReadKeys();
  2263.  
  2264.                                         if (my > 48)
  2265.                                         {
  2266.                                                 spr_draw(buttons, 326, 136);
  2267.  
  2268.                                                 if (((bb==0) && (osl_keys -> pressed.circle)) || ((bb==1) && (osl_keys -> pressed.cross)) || ((bb==2) && (osl_keys -> pressed.square)) || ((bb==3) && (osl_keys -> pressed.triangle)))
  2269.                                                         {
  2270.                                                                 score++;
  2271.                                                                 bb=random(4);
  2272.                                                                 oslPlaySound(rightwrong[0], 3);
  2273.                                                         }
  2274.  
  2275.  
  2276.                                                 else if (((bb!=0) && (osl_keys -> pressed.circle)) || ((bb!=1) && (osl_keys -> pressed.cross)) || ((bb!=2) && (osl_keys -> pressed.square)) || ((bb!=3) && (osl_keys -> pressed.triangle)))
  2277.                                                         {
  2278.                                                                 bb=random(4);
  2279.                                                                 oslPlaySound(rightwrong[1], 3);
  2280.                                                                 score--;
  2281.                                                         }
  2282.                                         }
  2283.                                 }
  2284.                         }
  2285.  
  2286.                         oslEndDrawing();
  2287.                         oslEndFrame();
  2288.                         skipframe=oslSyncFrame();
  2289.                 }
  2290.         }
  2291.  
  2292.         if (score == (2*diff+3))
  2293.         {
  2294.                 for (i=0; i<10; i++) oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  2295.                 oslPlaySound(passs, 2);
  2296.                 for (i=135; i<=272; i+=24)
  2297.                 {
  2298.                         oslStartDrawing();
  2299.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2300.                         spr_draw(pass,240,136);
  2301.                         pass -> stretchX = pass -> stretchY = i;
  2302.                         oslEndDrawing();
  2303.                         oslSwapBuffers();
  2304.                         oslWaitVSync();
  2305.                 }
  2306.                 reussi=1;
  2307.         }
  2308.  
  2309.         for (i=0; i<3; i++) oslDeleteImage(mincer[i]);
  2310.         oslDeleteImage(benj_mincer);
  2311.         oslDeleteSound(mincing);
  2312.         oslDeleteSound(rightwrong[0]);
  2313.         oslDeleteSound(rightwrong[1]);
  2314.         oslDeleteImage(buttons);
  2315.         oslDeleteImage(pass);
  2316.         oslDeleteSound(passs);
  2317.  
  2318.  
  2319.  
  2320.         return reussi;
  2321. }
  2322.  
  2323. short shoot_teevees(int diff, int *health, int round)
  2324. {
  2325.         short reussi=1, enemyx=random(2), enemyy=random(3), fired=13, hasdied=0;
  2326.         int i, j, u, frame=0, skipframe=0, hgx=208;
  2327.  
  2328.         int teevees[3][4]; //angle-ecran-y-fallspeed
  2329.  
  2330.         OSL_SOUND *passs = oslLoadSoundFile("./sfx/sfx-0053.wav", OSL_FMT_NONE);
  2331.         OSL_SOUND *dead = oslLoadSoundFile("./sfx/sfx-0025.wav", OSL_FMT_NONE);
  2332.         OSL_SOUND *pew = oslLoadSoundFile("./sfx/sfx-0100.wav", OSL_FMT_NONE);
  2333.         OSL_SOUND *oof = oslLoadSoundFile("./sfx/sfx-0101.wav", OSL_FMT_NONE);
  2334.         OSL_SOUND *ambient = oslLoadSoundFile("./sfx/sfx-0017.wav", OSL_FMT_NONE);
  2335.         OSL_IMAGE *pass = oslLoadImageFilePNG("./gfx/gfx-0718.png",OSL_IN_RAM, OSL_PF_5551);
  2336.         OSL_IMAGE *bg = oslLoadImageFilePNG("./gfx/gfx-0776.png",OSL_IN_RAM, OSL_PF_5551);
  2337.         OSL_IMAGE *teevee = oslLoadImageFilePNG("./gfx/teevee.png",OSL_IN_RAM, OSL_PF_5551);
  2338.         OSL_IMAGE *teevee_targets = oslLoadImageFilePNG("./gfx/teevee_targets.png",OSL_IN_RAM, OSL_PF_5551);
  2339.         OSL_IMAGE *numberz = oslLoadImageFilePNG("./gfx/numberz.png",OSL_IN_RAM, OSL_PF_5551);
  2340.         OSL_IMAGE *handgun = oslLoadImageFilePNG("./gfx/handgun.png",OSL_IN_RAM, OSL_PF_5551);
  2341.         OSL_IMAGE *explode = oslLoadImageFilePNG("./gfx/explode.png",OSL_IN_RAM, OSL_PF_5551);
  2342.  
  2343.         OSL_IMAGE *temp = oslCreateImage(128, 96, OSL_IN_VRAM, OSL_PF_5551);
  2344.  
  2345.         oslSetImageRotCenter(pass);
  2346.         oslSetImageRotCenter(temp);
  2347.         oslSetSoundLoop(ambient, 1);
  2348.  
  2349.         oslClearImage(temp, RGB(0, 0, 0));
  2350.  
  2351.         for (i=0; i<3; i++)
  2352.         {
  2353.                         teevees[i][0]=random(180)-90;
  2354.                         teevees[i][1]=random(2);
  2355.                         teevees[i][2]=-1*random(128)-128;
  2356.                         teevees[i][3]=diff+1+random(3);
  2357.         }
  2358.  
  2359.         oslSetImageTileSize(handgun, 0, 0, 64, 64);
  2360.         oslPlaySound(ambient, 1);
  2361.  
  2362.         while (frame < 900*diff)
  2363.         {
  2364.                 if (!skipframe)
  2365.                 {
  2366.                         oslStartDrawing();
  2367.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2368.  
  2369.                         spr_draw(bg, 0, 0);
  2370.  
  2371.                         oslSetTransparentColor(RGB(255,0,255));
  2372.                         oslSetBkColor(RGB(255,0,255));
  2373.                         oslSetTextColor(RGB(255, 255, 255));
  2374.                         oslDrawString(160, 2, "Shoot the TVs with that screen:");
  2375.                         oslSetImageTileSize(teevee_targets, 99*enemyx, 71*enemyy, 99, 71);
  2376.                         oslSetBilinearFilter(1);
  2377.                         teevee_targets -> stretchX = 50;
  2378.                         teevee_targets -> stretchY = 35;
  2379.                         spr_draw(teevee_targets, 215, 14);
  2380.                         oslSetBilinearFilter(0);
  2381.  
  2382.                         teevee_targets -> stretchX = 99;
  2383.                         teevee_targets -> stretchY = 71;
  2384.  
  2385.  
  2386.                         explode -> stretchX = 128;
  2387.                         explode -> stretchY = 96;
  2388.  
  2389.  
  2390.                         oslSetImageTileSize(numberz,160,0,16,16);
  2391.                         spr_draw(numberz, 2, 2);
  2392.  
  2393.  
  2394.                         for (i=0; i<3; i++)
  2395.                         {
  2396.                                         oslSetDrawBuffer(temp);
  2397.                                         oslSetImageTileSize(teevee_targets, teevees[i][1]*99, 71*enemyy, 99, 71);
  2398.                                         spr_draw(teevee, 0, 0);
  2399.                                         spr_draw(teevee_targets, 14, 10);
  2400.  
  2401.                                         oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
  2402.                                         temp -> angle = teevees[i][0];
  2403.  
  2404.                                         spr_draw(temp, 160*i+80, teevees[i][2]);
  2405.                                         teevees[i][2] += teevees[i][3];
  2406.  
  2407.                                         if (teevees[i][2] > (336+((int)128*(sin(teevee -> stretchX)*3.14/180))))
  2408.                                         {
  2409.                                                 if (teevees[i][1]==enemyx)
  2410.                                                         {
  2411.                                                                 *health -= 12*diff;
  2412.                                                                 if ((*health <= 0) && (!hasdied))
  2413.                                                                 {
  2414.                                                                         oslPlaySound(dead, 2);
  2415.                                                                         hasdied=1;
  2416.                                                                         frame=900*diff-131;
  2417.                                                                 }
  2418.                                                         }
  2419.                                                 teevees[i][0]=random(180)-90;
  2420.                                                 teevees[i][1]=random(2);
  2421.                                                 teevees[i][2]=-1*random(128)-128;
  2422.                                                 teevees[i][3]=diff+1+random(3);
  2423.                                         }
  2424.                         }
  2425.  
  2426.                         if (*health > 0) spr_draw(handgun, hgx, 211+((int)3*sin(0.0625*frame))); else spr_draw(handgun, hgx, 211+((int)3*sin(frame)));
  2427.  
  2428.                         oslReadKeys();
  2429.                         if  (((osl_keys -> held.left) || (osl_pad.analogX<-16)) && (hgx > 8) && (*health > 0)) hgx-=8;
  2430.                         if  (((osl_keys -> held.right) || (osl_pad.analogX>16)) && (hgx < 408) && (*health > 0)) hgx+=8;
  2431.  
  2432.                         if (fired < 13)
  2433.                         {
  2434.                                 fired--;
  2435.  
  2436.                                 if ((teevees[hgx/160][1]==enemyx)  && (teevees[hgx/160][2] > 140))
  2437.                                 {
  2438.                                         spr_draw(explode, 160*i+80, teevees[hgx/160][2]);
  2439.                                 }
  2440.  
  2441.                                 if (fired > 9)
  2442.                                 {
  2443.                                         oslSetImageTileSize(handgun, 64, 0, 64, 64);
  2444.                                         spr_draw(handgun, hgx, 211+((int)3*sin(0.0625*frame)));
  2445.                                 }
  2446.                                 else
  2447.                                 {
  2448.                                         oslSetImageTileSize(handgun, 0, 0, 64, 64);
  2449.  
  2450.                                                 if (fired==8)
  2451.                                                 {
  2452.                                                         if ((teevees[hgx/160][1]==enemyx)  && (teevees[hgx/160][2] > 140))
  2453.                                                         {
  2454.                                                                 teevees[hgx/160][0]=random(180)-90;
  2455.                                                                 teevees[hgx/160][1]=random(2);
  2456.                                                                 teevees[hgx/160][2]=-1*random(128)-128;
  2457.                                                                 teevees[hgx/160][3]=diff+1+random(3);
  2458.                                                                 *health += 2*(4-diff);
  2459.                                                                 if (*health >= 100) *health=100;
  2460.                                                         }
  2461.                                                 }
  2462.                                 }
  2463.  
  2464.                         }
  2465.  
  2466.                         if (!fired)
  2467.                         {
  2468.                                 fired=13;
  2469.                                 oslSetImageTileSize(handgun, 0, 0, 64, 64);
  2470.  
  2471.                         }
  2472.  
  2473.                         if (((osl_keys -> pressed.circle) || (osl_keys -> pressed.cross) || (osl_keys -> pressed.triangle) || (osl_keys -> pressed.square)) && (fired==13) && (*health > 0))
  2474.                         {
  2475.                                 fired--;
  2476.                                 oslPlaySound(pew, 3);
  2477.  
  2478.                                 if ((teevees[hgx/160][1]!=enemyx) && (teevees[hgx/160][2] > 140))
  2479.                                 {
  2480.                                         *health -= 6*diff;
  2481.                                         oslPlaySound(oof, 4);
  2482.                                 }
  2483.                         }
  2484.  
  2485.                         i=random(15);
  2486.                         u=18;
  2487.  
  2488.                         if (*health <= 0)
  2489.                         {
  2490.                                 *health=0;
  2491.                         }
  2492.  
  2493.                         if (*health < 25) j=16; else j=0;
  2494.  
  2495.                                 if (*health / 100)
  2496.                                 {
  2497.                                         oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
  2498.                                         spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  2499.                                         u += 16;
  2500.                                 }
  2501.  
  2502.                                 if (*health > 9)
  2503.                                 {
  2504.                                         if (round==2)
  2505.                                                 {
  2506.                                                         if (i<12)
  2507.                                                                 {
  2508.                                                                         oslSetImageTileSize(numberz,((*health%100)/10)*16,j,16,16);
  2509.                                                                 }
  2510.                                                         else
  2511.                                                                 {
  2512.                                                                         oslSetImageTileSize(numberz,random(128),j,16,16);
  2513.                                                                 }
  2514.                                                 }
  2515.                                         else oslSetImageTileSize(numberz,((*health%100)/10)*16,j,16,16);
  2516.                                 spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  2517.                                 u += 16;
  2518.                                 }
  2519.  
  2520.                                 if (round==2)
  2521.                                         {
  2522.                                                 if (i<12)
  2523.                                                         {
  2524.                                                                 oslSetImageTileSize(numberz,(*health%10)*16,j,16,16);
  2525.                                                         }
  2526.                                                 else
  2527.                                                         {
  2528.                                                                 oslSetImageTileSize(numberz,random(128),j,16,16);
  2529.                                                         }
  2530.                                         }
  2531.                                 else oslSetImageTileSize(numberz,(*health%10)*16,j,16,16);
  2532.                                 spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  2533.  
  2534.                         frame++;
  2535.                         oslEndDrawing();
  2536.                         oslEndFrame();
  2537.                 }
  2538.                 skipframe=oslSyncFrame();
  2539.         }
  2540.  
  2541.                 oslClearImage(OSL_SECONDARY_BUFFER, RGB(0,0,0));
  2542.  
  2543.                 if (*health > 0)
  2544.                 {
  2545.                         oslStopSound(ambient);
  2546.                         for (i=0; i<10; i++) oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  2547.                         oslPlaySound(passs, 2);
  2548.                         for (i=135; i<=272; i+=24)
  2549.                         {
  2550.                                 oslStartDrawing();
  2551.                                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2552.                                 spr_draw(pass,240,136);
  2553.                                 pass -> stretchX = pass -> stretchY = i;
  2554.                                 oslEndDrawing();
  2555.                                 oslSwapBuffers();
  2556.                                 oslWaitVSync();
  2557.                         }
  2558.                 }
  2559.                 else reussi=0;
  2560.  
  2561.                 oslDeleteImage(bg);
  2562.                 oslDeleteImage(pass);
  2563.                 oslDeleteImage(teevee);
  2564.                 oslDeleteImage(teevee_targets);
  2565.                 oslDeleteImage(handgun);
  2566.                 oslDeleteImage(temp);
  2567.                 oslDeleteImage(numberz);
  2568.                 oslDeleteImage(explode);
  2569.                 oslDeleteSound(passs);
  2570.                 oslDeleteSound(dead);
  2571.                 oslDeleteSound(pew);
  2572.                 oslDeleteSound(ambient);
  2573.                 oslDeleteSound(oof);
  2574.  
  2575.         return reussi;
  2576. }
  2577.  
  2578. short flappy_cacodemon(int diff)
  2579. {
  2580.         short reussi=1, bunk=0, bgx=0, ghgx=0, dead=0, cacoy=32, pressed=26, mess=0;
  2581.         int i, frame=0, skipframe=0, growl=random(360)+35, postree=0;
  2582.  
  2583.         int walls[7]={0,0,0,0,0,0,random(100)};
  2584.  
  2585.         OSL_IMAGE *pass = oslLoadImageFilePNG("./gfx/gfx-0718.png",OSL_IN_RAM, OSL_PF_5551);
  2586.         OSL_IMAGE *cacod = oslLoadImageFilePNG("./gfx/cacodemon.png",OSL_IN_RAM, OSL_PF_5551);
  2587.         OSL_IMAGE *pot = oslLoadImageFilePNG("./gfx/pot.png",OSL_IN_RAM, OSL_PF_5551);
  2588.         OSL_IMAGE *pot_edge = oslLoadImageFilePNG("./gfx/pot_edge.png",OSL_IN_RAM, OSL_PF_5551);
  2589.         OSL_IMAGE *flappy_bg = oslLoadImageFilePNG("./gfx/flappy_bg.png",OSL_IN_RAM, OSL_PF_5551);
  2590.         OSL_IMAGE *flappy_redhill = oslLoadImageFilePNG("./gfx/flappy_redhill.png",OSL_IN_RAM, OSL_PF_5551);
  2591.         OSL_SOUND *passs = oslLoadSoundFile("./sfx/sfx-0053.wav", OSL_FMT_NONE);
  2592.         OSL_SOUND *ambient = oslLoadSoundFile("./sfx/sfx-0017.wav", OSL_FMT_NONE);
  2593.         OSL_SOUND *caco_sfx[2];
  2594.  
  2595.         caco_sfx[0]= oslLoadSoundFile("./sfx/cacogrowl.wav", OSL_FMT_NONE);
  2596.         caco_sfx[1]= oslLoadSoundFile("./sfx/cacodie.wav", OSL_FMT_NONE);
  2597.  
  2598.         oslSetImageTileSize(cacod, 0, 0, 64, 64);
  2599.         oslSetImageRotCenter(cacod);
  2600.         oslSetImageRotCenter(pass);
  2601.         oslSetSoundLoop(ambient, 1);
  2602.  
  2603.         oslPlaySound(ambient, 1);
  2604.  
  2605.         while ((frame < 300*diff+300) && (dead < 5))
  2606.         {
  2607.                 if (!(frame%growl))
  2608.                 {
  2609.                         growl=random(360)+35;
  2610.                         oslPlaySound(caco_sfx[0], 4);
  2611.                 }
  2612.                 if (!skipframe)
  2613.                 {
  2614.                         oslStartDrawing();
  2615.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2616.  
  2617.                                 for (i=0; i<5; i++)     spr_draw(flappy_bg, bgx+i*138, 128);
  2618.  
  2619.                         if (!bunk)
  2620.                         {
  2621.                                 for (i=6; i>=0; i--)
  2622.                                 {
  2623.                                         if (walls[i])
  2624.                                         {
  2625.                                                 pot -> stretchY = walls[i];
  2626.                                                 spr_draw(pot, i*80-(postree%80), 230-walls[i]);
  2627.                                                 spr_draw(pot_edge, i*80-(postree%80), 230-walls[i]);
  2628.  
  2629.                                                 pot -> stretchY = 94-walls[i];
  2630.                                                 spr_draw(pot, i*80-(postree%80), 0);
  2631.                                                 spr_draw(pot_edge, i*80-(postree%80), 94-walls[i]);
  2632.  
  2633.                                         }
  2634.                                 }
  2635.  
  2636.                         }
  2637.  
  2638.                         if ((!bunk) && (!dead))
  2639.                         {
  2640.                                 if ((postree%80) == (80-((diff==1)?1:((diff==2)?2:4))))
  2641.                                 {
  2642.                                         for (i=0; i<7; i++)
  2643.                                         {
  2644.                                                 if (i < 6)
  2645.                                                 {
  2646.                                                         if (walls[i+1]) walls[i]=walls[i+1];
  2647.                                                 }
  2648.                                                 else
  2649.                                                 {
  2650.                                                         walls[6]=walls[5]+(random(2)?1:-1)*random(32);
  2651.                                                         if (walls[6] < 32) walls[6]=32;
  2652.                                                         if (walls[6] > 110) walls[6]=110;
  2653.                                                 }
  2654.                                         }
  2655.                                 }
  2656.                         }
  2657.  
  2658.                         for(i=0; i<32; i++)
  2659.                         {
  2660.                                 spr_draw(flappy_redhill, ghgx+i*16, 224);
  2661.                         }
  2662.  
  2663.                         if (!bunk)
  2664.                         {
  2665.                                 if (!(frame%2))
  2666.                                 {
  2667.                                         cacod -> angle = 8*sin(0.15*frame);
  2668.                                 }
  2669.                                 spr_draw(cacod, 40, cacoy);
  2670.                         }
  2671.                         else
  2672.                         {
  2673.                                 if (!(frame%9)) dead++;
  2674.                                 oslSetImageTileSize(cacod, 64*dead, 0, 64, 64);
  2675.                                 oslSetImageRotCenter(cacod);
  2676.                                 spr_draw(cacod, 40, cacod -> y);
  2677.                                 if (dead==1)
  2678.                                 {
  2679.                                         oslPlaySound(caco_sfx[1], 4);
  2680.                                 }
  2681.                         }
  2682.  
  2683.                         if (!mess) oslDrawString(200, 18, "MAKE HIM FLY!");
  2684.  
  2685.                         oslReadKeys();
  2686.                         if (((osl_keys -> pressed.circle) || (osl_keys -> pressed.cross) || (osl_keys -> pressed.triangle) || (osl_keys -> pressed.square)))
  2687.                         {
  2688.                                 pressed=0;
  2689.                                 if (!mess) mess=1;
  2690.                         }
  2691.  
  2692.                                 pressed++;
  2693.                                 if ((cacoy > 35) && (pressed < (-4*diff+28))) cacoy -= diff;
  2694.                                 if (pressed > (-4*diff+28)) cacoy += diff;
  2695.  
  2696.  
  2697.                         if (!bunk)
  2698.                         {
  2699.                                 if (!(frame%2)) bgx -= diff+1;
  2700.                                 ghgx -= (diff+1);
  2701.  
  2702.                                 if (bgx <= -138) bgx=0;
  2703.                                 if (ghgx <= -16) ghgx=0;
  2704.  
  2705.                         }
  2706.  
  2707.                         if ((cacod -> y > 192) && (!bunk))
  2708.                         {
  2709.                                 bunk=1;
  2710.                                 frame=0;
  2711.                         }
  2712.  
  2713.                         if ((walls[1]) && ((cacod -> y)-24 <= 102-walls[1]) && (!bunk) && (postree%80 < 40))
  2714.                         {
  2715.                                 bunk=1;
  2716.                                 frame=0;
  2717.                         }
  2718.  
  2719.                         if ((walls[1]) && ((cacod -> y)+24 >= 230-walls[1]) && (!bunk) && (postree%80 < 40))
  2720.                         {
  2721.                                 bunk=1;
  2722.                                 frame=0;
  2723.                         }
  2724.  
  2725.                         oslEndDrawing();
  2726.                         oslEndFrame();
  2727.                 }
  2728.                 frame++;
  2729.  
  2730.                 if (!bunk)
  2731.                 {
  2732.                         postree += ((diff==1)?1:((diff==2)?2:4));
  2733.                 }
  2734.  
  2735.                 skipframe=oslSyncFrame();
  2736.         }
  2737.  
  2738.         while (oslGetSoundChannel(caco_sfx[1])==4);
  2739.  
  2740.         if (!bunk)
  2741.         {
  2742.                 oslStopSound(ambient);
  2743.                 for (i=0; i<10; i++) oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  2744.                 oslPlaySound(passs, 2);
  2745.                 for (i=135; i<=272; i+=24)
  2746.                 {
  2747.                         oslStartDrawing();
  2748.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2749.                         spr_draw(pass,240,136);
  2750.                         pass -> stretchX = pass -> stretchY = i;
  2751.                         oslEndDrawing();
  2752.                         oslSwapBuffers();
  2753.                         oslWaitVSync();
  2754.                 }
  2755.         }
  2756.         else reussi=0;
  2757.  
  2758.         oslDeleteImage(cacod);
  2759.         oslDeleteImage(flappy_bg);
  2760.         oslDeleteImage(flappy_redhill);
  2761.         oslDeleteImage(pot);
  2762.         oslDeleteImage(pot_edge);
  2763.         oslDeleteSound(ambient);
  2764.         oslDeleteImage(pass);
  2765.         oslDeleteSound(passs);
  2766.         oslDeleteSound(caco_sfx[0]);
  2767.         oslDeleteSound(caco_sfx[1]);
  2768.         return reussi;
  2769. }
  2770.  
  2771.  
  2772. short love_boat(int diff)
  2773. {
  2774.         short reussi=1, alive=1, bx=240, boat_x=random(320)+80, sens;
  2775.         int i, frame, a=0;
  2776.  
  2777.         OSL_IMAGE *boat = oslLoadImageFilePNG("./gfx/boat.png",OSL_IN_RAM, OSL_PF_5551);
  2778.         OSL_IMAGE *boat_blood = oslLoadImageFilePNG("./gfx/boat_blood.png",OSL_IN_RAM, OSL_PF_5551);
  2779.         OSL_SOUND *boat_sfx = oslLoadSoundFile("./sfx/boat.wav",OSL_FMT_NONE);
  2780.         OSL_SOUND *sflartch = oslLoadSoundFile("./sfx/beng-0037.wav",OSL_FMT_NONE);
  2781.         OSL_IMAGE *pass = oslLoadImageFilePNG("./gfx/gfx-0718.png",OSL_IN_RAM, OSL_PF_5551);
  2782.         OSL_SOUND *passs = oslLoadSoundFile("./sfx/sfx-0053.wav", OSL_FMT_NONE);
  2783.         OSL_SOUND *ambient = oslLoadSoundFile("./sfx/sfx-0061.wav", OSL_FMT_NONE);
  2784.         oslSetImageRotCenter(pass);
  2785.         oslSetImageRotCenter(boat);
  2786.         oslSetImageRotCenter(boat_blood);
  2787.         oslSetSoundLoop(ambient, 1);
  2788.         oslPlaySound(ambient, 1);
  2789.  
  2790.         frame = -1*random(540)-240;
  2791.  
  2792.         if (diff == 3)
  2793.         {
  2794.                 if (boat_x%4)
  2795.                 {
  2796.                         boat_x += 4-(boat_x%4);
  2797.                 }
  2798.         }
  2799.  
  2800.         while (frame < 255)
  2801.         {
  2802.                 if (!frame) oslPlaySound(boat_sfx, 4);
  2803.  
  2804.                 oslStartDrawing();
  2805.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  2806.                 oslDrawFillRect(0,0,480,272, RGB(16,0,0));
  2807.  
  2808.                 if (diff==3)
  2809.                 {
  2810.                         if (frame == 92)
  2811.                         {
  2812.                                 a = bx+32;
  2813.                         }
  2814.                         else if (frame > 92)
  2815.                         {
  2816.                                 if (boat_x > a) boat_x -= 4;
  2817.                                 if (boat_x < a) boat_x += 4;
  2818.                         }
  2819.                 }
  2820.                 else if (diff==2)
  2821.                 {
  2822.                         sens=random(2);
  2823.                         if ((sens) && (boat_x < (400-(boat->stretchX)/2))) boat_x += 4;
  2824.                         if ((!sens) && (boat_x > (boat->stretchX)/2)) boat_x -=4;
  2825.                 }
  2826.  
  2827.                 if (frame >= 0)
  2828.                 {
  2829.                         oslSetAlpha(OSL_FX_ALPHA, frame);
  2830.                         boat -> stretchX = frame*2;
  2831.                         boat -> stretchY = (int)((float)1.5*(boat -> stretchX));
  2832.                         spr_draw(boat, boat_x, 96);
  2833.                 }
  2834.  
  2835.  
  2836.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  2837.                 oslReadKeys();
  2838.                 if (((osl_pad.analogX < -32) || (osl_keys->held.left)) && (bx > 0))
  2839.                 {
  2840.                         oslSetImageTileSize(benj,(abs(frame%32)/4)*32,144,32,48);
  2841.                         bx -= 4;
  2842.                 }
  2843.                 else if (((osl_pad.analogX > 32) || (osl_keys->held.right)) && (bx < 448))
  2844.                 {
  2845.                         oslSetImageTileSize(benj,(abs(frame%32)/4)*32,48,32,48);
  2846.                         bx += 4;
  2847.                 }
  2848.                 else
  2849.                 {
  2850.                         oslSetImageTileSize(benj,0,192,32,48);
  2851.                 }
  2852.  
  2853.                 benj -> stretchX = 64;
  2854.                 benj -> stretchY = 96;
  2855.  
  2856.                 if (alive) spr_draw(benj, bx, 176);
  2857.  
  2858.                 if (((boat->stretchX) >= 200))
  2859.                 {
  2860.                         if ((alive) && ((bx+32) >= (boat_x-((boat->stretchX)/4))) && ((bx+32) <= (boat_x+((boat->stretchX)/4))))
  2861.                         {
  2862.                                 alive=0;
  2863.                                 oslDrawFillRect(0,0,480,272, RGB(255, 255, 255));
  2864.                                 oslPlaySound(sflartch, 3);
  2865.                         }
  2866.                 }
  2867.  
  2868.                 if (!alive)
  2869.                 {
  2870.                         spr_draw(boat_blood, 240, 136);
  2871.                 }
  2872.  
  2873.                 oslEndDrawing();
  2874.                 oslSwapBuffers();
  2875.                 oslWaitVSync();
  2876.                 frame++;
  2877.         }
  2878.  
  2879.         if (alive)
  2880.         {
  2881.                 for (i=0; i<10; i++) oslClearImage(OSL_SECONDARY_BUFFER, RGB(255, 255, 255));
  2882.                 oslPlaySound(passs, 2);
  2883.                 for (i=135; i<=272; i+=24)
  2884.                 {
  2885.                         oslStartDrawing();
  2886.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2887.                         spr_draw(pass,240,136);
  2888.                         pass -> stretchX = pass -> stretchY = i;
  2889.                         oslEndDrawing();
  2890.                         oslSwapBuffers();
  2891.                         oslWaitVSync();
  2892.                 }
  2893.         }
  2894.         else reussi=0;
  2895.  
  2896.         oslDeleteImage(boat);
  2897.         oslDeleteImage(boat_blood);
  2898.         oslDeleteSound(boat_sfx);
  2899.         oslDeleteImage(pass);
  2900.         oslDeleteSound(passs);
  2901.         oslDeleteSound(sflartch);
  2902.         oslDeleteSound(ambient);
  2903.         return reussi;
  2904. }
  2905.  
  2906. void draw_ball(struct ball ball_ent, OSL_IMAGE *ball_gfx, OSL_IMAGE *ball_shad)
  2907. {
  2908.  
  2909.         float yr = pow((ball_ent.y2d - 160) / HAUT_FIELD, 1.4f) * HAUT_FIELD + 160;
  2910.         float x_pr_centre = ball_ent.x2d - 240;
  2911.         float x_percent = x_pr_centre / 240;
  2912.         float y_percent = (272-yr)/HAUT_FIELD;
  2913.         float x_mult = 240 - ESPAC_HORIZ*y_percent;
  2914.         float xr = x_percent * x_mult + 240;
  2915.  
  2916.         ball_gfx -> stretchX = ball_gfx -> stretchY = 8*(1-0.266f*y_percent);
  2917.         ball_shad -> stretchX = ball_shad -> stretchY = 8*(1-0.266f*y_percent);
  2918.  
  2919.         spr_draw(ball_gfx, ball_ent.x2d, ball_ent.y2d-ball_ent.z3d);
  2920.         spr_draw(ball_shad, ball_ent.x2d, ball_ent.y2d);
  2921. }
  2922.  
  2923. void redness (int round, int diff, int hp)
  2924. {
  2925.         if (round == 2)
  2926.         {
  2927.                 if (hp == 100*round*diff)
  2928.                 {
  2929.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  2930.                 }
  2931.                 else
  2932.                 {
  2933.                         oslSetAlpha(OSL_FX_COLOR, RGBA(255, 0, 0, (int)(-2.55/(round*diff))*hp+255));
  2934.                 }
  2935.         }
  2936.         else
  2937.         {
  2938.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  2939.         }
  2940. }
  2941.  
  2942. int shoop_da_whoop(int health, int round, int diff)
  2943. {
  2944.         int i=480, f=0, ta=0, j, u, k=0, sc=0, a=0, b=0;
  2945.         short sens=0, by=0;
  2946.  
  2947.         OSL_IMAGE *starsky = oslLoadImageFilePNG("./gfx/starsky.png",OSL_IN_RAM, OSL_PF_5551);
  2948.         OSL_SOUND *firin = oslLoadSoundFile("./sfx/sdw.wav", OSL_FMT_NONE);
  2949.         oslPlaySound(firin, 1);
  2950.  
  2951.         oslSetImageRotCenter(starsky);
  2952.  
  2953.                 oslStartDrawing();
  2954.                 oslDrawFillRect(0,0,480,272, RGB(255,255,255));
  2955.                 oslEndDrawing();
  2956.                 oslSwapBuffers();
  2957.  
  2958.         OSL_SOUND *sdwh  = oslLoadSoundFile("./sfx/sdw2.wav", OSL_FMT_NONE);
  2959.         OSL_SOUND *expl_sound = oslLoadSoundFile("./sfx/sfx-0018.wav", OSL_FMT_NONE);
  2960.         OSL_IMAGE *buttons = oslLoadImageFilePNG("./gfx/arrows.png",OSL_IN_RAM, OSL_PF_8888);
  2961.         OSL_IMAGE *sdw = oslLoadImageFilePNG("./gfx/sdw.png",OSL_IN_RAM, OSL_PF_8888);
  2962.         OSL_IMAGE *sdw_sh = oslLoadImageFilePNG("./gfx/sdw_sh.png",OSL_IN_RAM, OSL_PF_8888);
  2963.         OSL_IMAGE *planet = oslLoadImageFilePNG("./gfx/planet.png",OSL_IN_RAM, OSL_PF_5551);
  2964.  
  2965.         oslStartDrawing();
  2966.         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2967.         spr_draw(starsky, 240, 136);
  2968.         oslEndDrawing();
  2969.         oslSwapBuffers();
  2970.  
  2971.         OSL_IMAGE *numberz = oslLoadImageFilePNG("./gfx/numberz.png",OSL_IN_RAM, OSL_PF_5551);
  2972.         OSL_IMAGE *explode = oslLoadImageFilePNG("./gfx/explode.png",OSL_IN_RAM, OSL_PF_5551);
  2973.  
  2974.         OSL_IMAGE *temp = oslCreateImage(480, 272, OSL_IN_VRAM, OSL_PF_5551);
  2975.         OSL_IMAGE *shoot = oslCreateImage(160, 60, OSL_IN_VRAM, OSL_PF_5551);
  2976.  
  2977.         oslSetImageRotCenter(temp);
  2978.         oslSetImageRotCenter(sdw);
  2979.         oslSetImageRotCenter(sdw_sh);
  2980.         oslSetImageRotCenter(planet);
  2981.         oslSetImageRotCenter(buttons);
  2982.  
  2983.  
  2984.  
  2985.  
  2986.         oslDisableTransparentColor();
  2987.         oslClearImage(temp, RGB(255, 0, 255));
  2988.         oslClearImage(shoot, RGB(255, 0, 255));
  2989.         oslSetTransparentColor(RGB(255, 0, 255));
  2990.  
  2991.  
  2992.  
  2993.         for (i=480; i>=128; i-=4)
  2994.         {
  2995.                 planet -> stretchX = planet -> stretchY = i;
  2996.                 oslStartDrawing();
  2997.                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  2998.                 spr_draw(starsky, 240, 136);
  2999.                 spr_draw(planet, 240, 136);
  3000.                 oslEndDrawing();
  3001.                 oslSwapBuffers();
  3002.                 oslWaitVSync();
  3003.         }
  3004.  
  3005.         for (i=480; i>=360; i-=4)
  3006.         {
  3007.                 oslStartDrawing();
  3008.                 oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  3009.                 spr_draw(starsky, 240, 136);
  3010.                 spr_draw(planet, 240, 136);
  3011.                 spr_draw(sdw, i, 136);
  3012.                 oslEndDrawing();
  3013.                 oslSwapBuffers();
  3014.                 oslWaitVSync();
  3015.         }
  3016.  
  3017.  
  3018.  
  3019.         for (k=0; k<(diff+1); k++)
  3020.         {
  3021.                 f=0;
  3022.  
  3023.                 sc=0;
  3024.  
  3025.                 while ((f < 270) && (health > 0))
  3026.                 {
  3027.                         if ((f%30) >= 15) by=32; else by=0;
  3028.  
  3029.                         oslStartDrawing();
  3030.                         spr_draw(sdw_sh, 240, 136);
  3031.  
  3032.                         if (f < 120)
  3033.                         {
  3034.                                 if (!(f%20)) sens=random(2);
  3035.  
  3036.                                 temp -> angle = 0;
  3037.                                 oslDisableTransparentColor();
  3038.                                 oslClearImage(temp, RGB(255, 0, 255));
  3039.                                 oslSetTransparentColor(RGB(255, 0, 255));
  3040.  
  3041.  
  3042.                                 oslSetDrawBuffer(temp);
  3043.                                 spr_draw(sdw, 360, 136);
  3044.  
  3045.                                 ta += (sens)?6:-6;
  3046.  
  3047.                                 if (ta < 0) ta += 360;
  3048.                                 if (ta > 359) ta = ta%360;
  3049.  
  3050.                                 temp -> angle = ta;
  3051.  
  3052.                                 oslReadKeys();
  3053.  
  3054.  
  3055.                                 if (osl_keys -> held.left)
  3056.                                 {
  3057.                                         sdw_sh -> angle -= 12;
  3058.                                 }
  3059.  
  3060.                                 if (osl_keys -> held.right)
  3061.                                 {
  3062.                                         sdw_sh -> angle += 12;
  3063.                                 }
  3064.  
  3065.                                 if ((sdw_sh -> angle) < 0)
  3066.                                 {
  3067.                                         (sdw_sh -> angle) += 360;
  3068.                                 }
  3069.  
  3070.                                 if ((sdw_sh -> angle) > 359)
  3071.                                 {
  3072.                                         sdw_sh -> angle = ((sdw_sh -> angle))%360;
  3073.                                 }
  3074.  
  3075.  
  3076.                                 /*if (((bb==0) && (osl_keys -> pressed.circle)) || ((bb==1) && (osl_keys -> pressed.cross)) || ((bb==2) && (osl_keys -> pressed.square)) || ((bb==3) && (osl_keys -> pressed.triangle)))
  3077.                                 {
  3078.                                         sc++;
  3079.                                 }*/
  3080.                         }
  3081.  
  3082.                         if (((sdw_sh -> angle - 60) < (temp -> angle)) && ((sdw_sh -> angle + 60) > (temp -> angle)) && (f==119)) sc = 2*diff+2;
  3083.  
  3084.  
  3085.                                         if ((f >= 120) && (f <= 150))
  3086.                                         {
  3087.                                                 temp -> angle = 0;
  3088.                                                 shoot -> angle = 0;
  3089.                                                 oslDisableTransparentColor();
  3090.                                                 oslClearImage(shoot, RGB(255, 0, 255));
  3091.                                                 oslSetTransparentColor(RGB(255, 0, 255));
  3092.  
  3093.                                                 oslSetDrawBuffer(shoot);
  3094.                                                 oslDrawFillRect(160, 0, (-16/3)*f+800, 60, RGB(0,0,255));
  3095.                                                 oslDrawFillRect(160, 10, (-16/3)*f+800, 50, RGB(0,128,255));
  3096.                                                 oslDrawFillRect(160, 20, (-16/3)*f+800, 40, RGB(0,255,255));
  3097.                                                 oslDrawFillRect(160, 23, (-16/3)*f+800, 37, RGB(128,255,255));
  3098.                                                 oslDrawFillRect(160, 26, (-16/3)*f+800, 33, RGB(255,255,255));
  3099.  
  3100.                                                 oslSetDrawBuffer(temp);
  3101.                                                 spr_draw(shoot, 208, 116);
  3102.  
  3103.                                                 temp -> angle = ta;
  3104.                                         }
  3105.  
  3106.                                 if (sc == 2*diff+2)
  3107.                                 {
  3108.                                         if (f >= 150)
  3109.                                         {
  3110.                                         oslSetDrawBuffer(temp);
  3111.                                         spr_draw(sdw, 360, 136);
  3112.                                         if (f == 150) oslPlaySound(sdwh, 1);
  3113.  
  3114.                                                 if (!(f%15))
  3115.                                                 {
  3116.                                                         oslPlaySound(expl_sound, 6);
  3117.                                                         a=330+random(35);
  3118.                                                         b=72+random(64);
  3119.                                                 }
  3120.  
  3121.                                                 if ((f%10) < 5)
  3122.                                                 {
  3123.                                                         explode -> stretchX = 64;
  3124.                                                         explode -> stretchY = 96;
  3125.                                                         spr_draw(explode, a, b);
  3126.                                                 }
  3127.                                                 else
  3128.                                                 {
  3129.                                                         explode -> stretchX = 32;
  3130.                                                         explode -> stretchY = 48;
  3131.                                                         spr_draw(explode, a+16, b+24);
  3132.                                                 }
  3133.                                         }
  3134.                                         if (f > 180) f=333;
  3135.                                 }
  3136.  
  3137.                         oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
  3138.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  3139.                         spr_draw(starsky, 240, 136);
  3140.                         spr_draw(temp, 240, 136);
  3141.                         spr_draw(planet, ((f > 150) && (sc < 2*diff+1))?(238+random(5)):240, ((f > 150) && (sc < 2*diff+1))?(134+random(5)):136);
  3142.                         spr_draw(buttons, 240, 136);
  3143.                         spr_draw(sdw_sh, 240, 136);
  3144.  
  3145.                         //if (f < 120) spr_draw(buttons, 208, 118);
  3146.                         if ((f >= 180) && (f <= 240) && (sc < 2*diff+1))
  3147.                         {
  3148.                                 if (f > 180)
  3149.                                 {
  3150.                                         if (!(f%3)) health--;
  3151.                                 }
  3152.  
  3153.                                 if (!(f%15))
  3154.                                 {
  3155.                                         oslPlaySound(expl_sound, 6);
  3156.                                         a=180+random(128);
  3157.                                         b=68+random(128);
  3158.                                 }
  3159.  
  3160.                                 if ((f%10) < 5)
  3161.                                 {
  3162.                                         explode -> stretchX = 64;
  3163.                                         explode -> stretchY = 96;
  3164.                                         spr_draw(explode, a, b);
  3165.                                 }
  3166.                                 else
  3167.                                 {
  3168.                                         explode -> stretchX = 32;
  3169.                                         explode -> stretchY = 48;
  3170.                                         spr_draw(explode, a+16, b+24);
  3171.                                 }
  3172.                         }
  3173.  
  3174.                         i=random(15);
  3175.                         u=18;
  3176.  
  3177.                         if (health <= 0)
  3178.                         {
  3179.                                 health=0;
  3180.                         }
  3181.  
  3182.                         oslSetImageTileSize(numberz,160,0,16,16);
  3183.                         spr_draw(numberz, 2, 2);
  3184.  
  3185.                         if (health < 25) j=16; else j=0;
  3186.  
  3187.                                 if (health / 100)
  3188.                                 {
  3189.                                         oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
  3190.                                         spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  3191.                                         u += 16;
  3192.                                 }
  3193.  
  3194.                                 if (health > 9)
  3195.                                 {
  3196.                                         if (round==2)
  3197.                                                 {
  3198.                                                         if (i<12)
  3199.                                                                 {
  3200.                                                                         oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
  3201.                                                                 }
  3202.                                                         else
  3203.                                                                 {
  3204.                                                                         oslSetImageTileSize(numberz,random(128),j,16,16);
  3205.                                                                 }
  3206.                                                 }
  3207.                                         else oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
  3208.                                 spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  3209.                                 u += 16;
  3210.                                 }
  3211.  
  3212.                                 if (round==2)
  3213.                                         {
  3214.                                                 if (i<12)
  3215.                                                         {
  3216.                                                                 oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
  3217.                                                         }
  3218.                                                 else
  3219.                                                         {
  3220.                                                                 oslSetImageTileSize(numberz,random(128),j,16,16);
  3221.                                                         }
  3222.                                         }
  3223.                                 else oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
  3224.                                 spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  3225.  
  3226.  
  3227.                         oslEndDrawing();
  3228.                         oslSwapBuffers();
  3229.                         oslWaitVSync();
  3230.                         f++;
  3231.                 }
  3232.         }
  3233.  
  3234.         oslDeleteSound(firin);
  3235.         oslDeleteSound(sdwh);
  3236.         oslDeleteSound(expl_sound);
  3237.         oslDeleteImage(buttons);
  3238.         oslDeleteImage(sdw);
  3239.         oslDeleteImage(planet);
  3240.         oslDeleteImage(starsky);
  3241.         oslDeleteImage(temp);
  3242.         oslDeleteImage(shoot);
  3243.         oslDeleteImage(explode);
  3244.         oslDeleteImage(sdw_sh);
  3245.         return health;
  3246. }
  3247.  
  3248. void sad()
  3249. {
  3250.         int f=0;
  3251.         OSL_IMAGE *gr = oslLoadImageFilePNG("./gfx/sad.png", OSL_IN_RAM, OSL_PF_5551);
  3252.         OSL_SOUND *ss = oslLoadSoundFile("./sfx/sfx-0027.wav", OSL_FMT_NONE);
  3253.         OSL_SOUND *dummy = oslLoadSoundFile("./sfx/dummy.wav", OSL_FMT_NONE);
  3254.         oslSetImageRotCenter(gr);
  3255.         oslSetSoundLoop(ss, 1);
  3256.  
  3257.         for (f=0; f<8; f++) oslPlaySound(dummy, f);
  3258.         oslPlaySound(ss, 2);
  3259.  
  3260.         f=0;
  3261.  
  3262.         while(f < 90)
  3263.         {
  3264.                 oslStartDrawing();
  3265.                 oslDrawFillRect(0, 0, 480, 272, RGB(0, 0, 0));
  3266.                 gr -> stretchX = gr -> stretchY = random(200)+64;
  3267.                 spr_draw(gr, 240, 136);
  3268.                 oslEndDrawing();
  3269.                 oslSwapBuffers();
  3270.                 oslWaitVSync();
  3271.                 f++;
  3272.         }
  3273.  
  3274.         oslDeleteImage(gr);
  3275.         oslDeleteSound(ss);
  3276.         oslDeleteSound(dummy);
  3277. }
  3278.  
  3279. int game(int round, int diff, int nbp)
  3280. {
  3281.         int i, j, a=0, stun=0, u, global_fr=0, fs=0, quit=0, px=239, py=180, giyg_flag=0, mort=0, health, pbouss=0, benj_frame=0, skipframe=0, tvnoise_ev=0, att_ch_timer=80;
  3282.         int cursor2p=0, mgcd=0, ko_frame=0, mgsy=0, ultlvl=0, ultrectshine=4, frappe=-1, shldlvl=60, racket_devnull=0, stary=0, suppo=0, suppox, suppoy, whineface=0, kx=0, ky=0;
  3283.  
  3284.         short lightsoff=0, paused=0, bulbfell=0, bulbfs=0, shielded=0, darkness=0, chair=0, attf=0, putin=0, ulted=0, rckchscr=0, nbult=0, returned=0;
  3285.  
  3286.         int giyg_bg_angles[3] = {0, 0, 0};
  3287.         float court_zoom=1, reddv=0;
  3288.         char buffer[20];
  3289.  
  3290.         int pie_attacks[8][5]; //numeroattaque-duree(frames)-x-y?
  3291.         int att_cooldowns[15];
  3292.         int stars_ult[5];
  3293.  
  3294.         int meteors[3][3];
  3295.  
  3296.         struct pie_entity pie_ent;
  3297.         struct ball ball_ent;
  3298.  
  3299.         SceUID check;
  3300.  
  3301.         ball_ent=initball(ball_ent);
  3302.         pie_ent=initpie(pie_ent);
  3303.  
  3304.     pie_ent.pie_hp=100*round*diff;
  3305.  
  3306.         oslStartDrawing();
  3307.         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  3308.         oslSetTextColor(RGB(255, 255, 255));
  3309.         oslDrawString(20, 230, "PREPARING THE PHUCKPHEST…");
  3310.         oslEndDrawing();
  3311.         oslSwapBuffers();
  3312.  
  3313.         OSL_IMAGE *pie, *tvnoise[5], *numberz = oslLoadImageFilePNG("./gfx/numberz.png",OSL_IN_RAM, OSL_PF_5551);
  3314.         OSL_SOUND *minigametime = oslLoadSoundFile("./sfx/sfx-0080.wav", OSL_FMT_NONE);
  3315.         OSL_SOUND *tvnoisesound;
  3316.         OSL_SOUND *giygas[3];
  3317.         OSL_SOUND *quitter = oslLoadSoundFile("./sfx/quitter.wav", OSL_FMT_NONE);
  3318.         OSL_SOUND *ko_sfx = oslLoadSoundFile("./sfx/sfx-0045.wav", OSL_FMT_NONE);
  3319.         OSL_SOUND *expl_sound = oslLoadSoundFile("./sfx/sfx-0018.wav", OSL_FMT_NONE);
  3320.         OSL_SOUND *pew = oslLoadSoundFile("./sfx/sfx-0100.wav", OSL_FMT_NONE);
  3321.         OSL_SOUND *paf = oslLoadSoundFile("./sfx/beng-0011.wav", OSL_FMT_NONE);
  3322.         OSL_SOUND *meteor_fall = oslLoadSoundFile("./sfx/sfx-0040.wav", OSL_FMT_NONE);
  3323.         OSL_SOUND *expl_sound2 = oslLoadSoundFile("./sfx/sfx-0036.wav", OSL_FMT_NONE);
  3324.         OSL_SOUND *bulbsfx[7];
  3325.         OSL_SOUND *stun_sound =  oslLoadSoundFile("./sfx/sfx-0038.wav", OSL_FMT_NONE);
  3326.         OSL_SOUND *elec =  oslLoadSoundFile("./sfx/elec.wav", OSL_FMT_NONE);
  3327.         OSL_SOUND *thunder =  oslLoadSoundFile("./sfx/thunder.wav", OSL_FMT_NONE);
  3328.         OSL_SOUND *psis_sfx = oslLoadSoundFile("./sfx/sfx-0043.wav", OSL_FMT_NONE);
  3329.         OSL_SOUND *dictators_sfx[4] = {
  3330.                         oslLoadSoundFile("./sfx/putin.wav", OSL_FMT_NONE),
  3331.                         oslLoadSoundFile("./sfx/kjun.wav", OSL_FMT_NONE),
  3332.                         oslLoadSoundFile("./sfx/hitler.wav", OSL_FMT_NONE),
  3333.                         oslLoadSoundFile("./sfx/skeletor.wav", OSL_FMT_NONE),
  3334.         };
  3335.  
  3336.         OSL_SOUND *mouth_sfx[2] = {
  3337.                         oslLoadSoundFile("./sfx/sfx-0021.wav", OSL_FMT_NONE),
  3338.                         oslLoadSoundFile("./sfx/sfx-0022.wav", OSL_FMT_NONE),
  3339.         };
  3340.  
  3341.         OSL_SOUND *whine = oslLoadSoundFile("./sfx/sfx-0097.wav", OSL_FMT_NONE);
  3342.         OSL_SOUND *bounce = oslLoadSoundFile("./sfx/racketbounce.wav", OSL_FMT_NONE);
  3343.  
  3344.         OSL_IMAGE *lightning =  oslLoadImageFilePNG("./gfx/lightning.png",OSL_IN_RAM, OSL_PF_5551);
  3345.         OSL_IMAGE *premess =  oslLoadImageFilePNG("./gfx/premess.png",OSL_IN_RAM, OSL_PF_5551);
  3346.     OSL_IMAGE *giyg_bg, *starsky = oslLoadImageFilePNG("./gfx/starsky.png",OSL_IN_RAM, OSL_PF_5551);
  3347.     OSL_IMAGE *sleepwell = oslLoadImageFilePNG("./gfx/sleepwell.png",OSL_IN_RAM, OSL_PF_5551);
  3348.     OSL_IMAGE *ball_gfx = oslLoadImageFilePNG("./gfx/ball.png",OSL_IN_RAM, OSL_PF_5551);
  3349.     OSL_IMAGE *ball_shad = oslLoadImageFilePNG("./gfx/ball_shadow.png",OSL_IN_RAM, OSL_PF_5551);
  3350.     OSL_IMAGE *ko = oslLoadImageFilePNG("./gfx/ko.png",OSL_IN_RAM, OSL_PF_5551);
  3351.     OSL_IMAGE *mgswirl = oslLoadImageFilePNG("./gfx/mgswirl.png",OSL_IN_RAM, OSL_PF_5551);
  3352.     OSL_IMAGE *explode = oslLoadImageFilePNG("./gfx/explode.png",OSL_IN_RAM, OSL_PF_5551);
  3353.     OSL_IMAGE *rckch[2];
  3354.     OSL_IMAGE *psycho = oslLoadImageFilePNG("./gfx/gfx-0672.png",OSL_IN_RAM, OSL_PF_5551);
  3355.     OSL_IMAGE *paused_gfx = oslLoadImageFilePNG("./gfx/paused.png",OSL_IN_RAM, OSL_PF_5551);
  3356.     OSL_IMAGE *ultgauge = oslLoadImageFilePNG("./gfx/ultgauge.png",OSL_IN_RAM, OSL_PF_5551);
  3357.     OSL_IMAGE *shlgauge = oslLoadImageFilePNG("./gfx/shlgauge.png",OSL_IN_RAM, OSL_PF_5551);
  3358.     OSL_IMAGE *visor = oslLoadImageFilePNG("./gfx/visor.png",OSL_IN_RAM, OSL_PF_5551);
  3359.     OSL_IMAGE *bulbasaur = oslLoadImageFilePNG("./gfx/bulbasaur.png",OSL_IN_RAM, OSL_PF_5551);
  3360.     OSL_IMAGE *recipe = oslLoadImageFilePNG("./gfx/darkness.png",OSL_IN_RAM, OSL_PF_5551);
  3361.     OSL_IMAGE *shield = oslLoadImageFilePNG("./gfx/shield.png",OSL_IN_RAM, OSL_PF_5551);
  3362.     OSL_IMAGE *meteor = oslLoadImageFilePNG("./gfx/gfx-0471.png",OSL_IN_RAM, OSL_PF_5551);
  3363.     OSL_IMAGE *stunning = oslLoadImageFilePNG("./gfx/creepycircle.png",OSL_IN_RAM, OSL_PF_5551);
  3364.     OSL_IMAGE *psis = oslLoadImageFilePNG("./gfx/psis.png",OSL_IN_RAM, OSL_PF_5551);
  3365.     OSL_IMAGE *dictators = oslLoadImageFilePNG("./gfx/dictators.png",OSL_IN_RAM, OSL_PF_5551);
  3366.     OSL_IMAGE *mouth = oslLoadImageFilePNG("./gfx/gfx-0102.png",OSL_IN_RAM, OSL_PF_5551);
  3367.     OSL_IMAGE *powerball = oslLoadImageFilePNG("./gfx/powerball.png",OSL_IN_RAM, OSL_PF_5551);
  3368.     OSL_IMAGE *star = oslLoadImageFilePNG("./gfx/star.png",OSL_IN_RAM, OSL_PF_5551);
  3369.     OSL_IMAGE *juche = oslLoadImageFilePNG("./gfx/juche.png",OSL_IN_RAM, OSL_PF_5551);
  3370.     OSL_IMAGE *suppo_gfx = oslLoadImageFilePNG("./gfx/suppo.png",OSL_IN_RAM, OSL_PF_5551);
  3371.     OSL_IMAGE *attch = oslLoadImageFilePNG("./gfx/attchoice.png",OSL_IN_RAM, OSL_PF_5551);
  3372.     OSL_IMAGE *cp2 = oslLoadImageFilePNG("./gfx/cursor2p.png",OSL_IN_RAM, OSL_PF_5551);
  3373.  
  3374.         OSL_SOUND *benj_sfx[11];
  3375.  
  3376.  
  3377.  
  3378.  
  3379.         benj_sfx[0] = oslLoadSoundFile("./sfx/beng-0000.wav", OSL_FMT_NONE);
  3380.         benj_sfx[1] = oslLoadSoundFile("./sfx/beng-0001.wav", OSL_FMT_NONE);
  3381.         benj_sfx[2] = oslLoadSoundFile("./sfx/beng-0002.wav", OSL_FMT_NONE);
  3382.         benj_sfx[3] = oslLoadSoundFile("./sfx/beng-0003.wav", OSL_FMT_NONE);
  3383.         benj_sfx[4] = oslLoadSoundFile("./sfx/beng-0004.wav", OSL_FMT_NONE); //hurt
  3384.         benj_sfx[5] = oslLoadSoundFile("./sfx/beng-0013.wav", OSL_FMT_NONE);
  3385.         benj_sfx[6] = oslLoadSoundFile("./sfx/beng-0016.wav", OSL_FMT_NONE);
  3386.         benj_sfx[7] = oslLoadSoundFile("./sfx/beng-0020.wav", OSL_FMT_NONE); //pass
  3387.         benj_sfx[8] = oslLoadSoundFile("./sfx/beng-0009.wav", OSL_FMT_NONE);
  3388.         benj_sfx[9] = oslLoadSoundFile("./sfx/beng-0015.wav", OSL_FMT_NONE); //ult
  3389.         benj_sfx[10] = oslLoadSoundFile("./sfx/beng-0006.wav", OSL_FMT_NONE); //shield
  3390.  
  3391.     rckch[0] = oslLoadImageFilePNG("./gfx/rocking_chair.png",OSL_IN_RAM, OSL_PF_5551);
  3392.     rckch[1] = oslLoadImageFilePNG("./gfx/rocking_chair2.png",OSL_IN_RAM, OSL_PF_5551);
  3393.  
  3394.  
  3395.  
  3396.         pie=oslLoadImageFilePNG("./gfx/pie.png",OSL_IN_RAM, OSL_PF_5551);
  3397.         oslSetImageRotCenter(pie);
  3398.         oslSetImageRotCenter(starsky);
  3399.         oslSetImageRotCenter(sleepwell);
  3400.         rckch[0] -> centerX = 32;
  3401.         rckch[0] -> centerY = 47;
  3402.         oslSetImageRotCenter(rckch[1]);
  3403.         oslSetImageRotCenter(recipe);
  3404.         oslSetImageRotCenter(paused_gfx);
  3405.         oslSetImageRotCenter(visor);
  3406.         oslSetImageRotCenter(mouth);
  3407.         oslSetImageRotCenter(stunning);
  3408.         oslSetImageRotCenter(powerball);
  3409.         oslSetImageRotCenter(star);
  3410.         ball_gfx -> centerX = 3;
  3411.         ball_gfx -> centerY = 7;
  3412.  
  3413.  
  3414.         oslSetImageTileSize(powerball, 0, 0, 32, 32);
  3415.         giyg_bg=oslLoadImageFilePNG("./gfx/dummy.png",OSL_IN_RAM, OSL_PF_5551);
  3416.         tvnoisesound = oslLoadSoundFile("./sfx/dummy.wav", OSL_FMT_NONE);
  3417.  
  3418.         mouth -> stretchX = 10;
  3419.         mouth -> stretchY = 16;
  3420.  
  3421.  
  3422.         for (i=0; i<8; i++)
  3423.         {
  3424.                 for (j=0; j<5; j++)
  3425.                 {
  3426.                         pie_attacks[i][j]=0;
  3427.                         stars_ult[j]=-32;
  3428.                 }
  3429.         }
  3430.  
  3431.  
  3432.  
  3433.         for (i=0; i<7; i++)
  3434.         {
  3435.                 sprintf(buffer,"./sfx/sfx-0%d.wav",i+114);
  3436.                 bulbsfx[i]=oslLoadSoundFile(buffer,OSL_FMT_NONE);
  3437.         }
  3438.  
  3439.         for (i=0; i<15; i++)
  3440.         {
  3441.                 att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800);
  3442.                 att_cooldowns[i] += (((i==0) || (i==3) || (i==4))?9*att_cooldowns[i]:0) + 2*random((int)(((i!=0)?1.5:3.5)*att_cooldowns[i]));
  3443.                 if ((i!=0) && (i!=3) && (i!=4)) att_cooldowns[i]=att_cooldowns[i]/(0.5*round+0.5);
  3444.         }
  3445.  
  3446.         oslSetSoundLoop(psis_sfx, 1);
  3447.  
  3448.         if (round == 2)
  3449.         {
  3450.                 giygas[0] = oslLoadSoundFile("./sfx/sfx-0006.wav", OSL_FMT_NONE);
  3451.                 giygas[1] = oslLoadSoundFile("./sfx/sfx-0007.wav", OSL_FMT_NONE);
  3452.                 giygas[2] = oslLoadSoundFile("./sfx/sfx-0008.wav", OSL_FMT_NONE);
  3453.  
  3454.                 for (i=0; i<5; i++)
  3455.                 {
  3456.                         sprintf(buffer,"./gfx/gfx-0%d.png",i+642+random(11));
  3457.                         tvnoise[i]=oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  3458.                         tvnoise[i] -> stretchX = 480;
  3459.                         tvnoise[i] -> stretchY = 272;
  3460.                 }
  3461.  
  3462.                 oslDeleteSound(tvnoisesound);
  3463.                 oslDeleteImage(giyg_bg);
  3464.  
  3465.                 tvnoisesound = oslLoadSoundFile("./sfx/sfx-0028.wav", OSL_FMT_NONE);
  3466.                 tvnoisesound -> volumeLeft = tvnoisesound -> volumeRight = 0x2000;
  3467.                 oslSetSoundLoop(tvnoisesound, 1);
  3468.  
  3469.  
  3470.                 giyg_bg=oslLoadImageFilePNG("./gfx/gfx-0103.png",OSL_IN_RAM, OSL_PF_5551);
  3471.                 oslSetImageRotCenter(giyg_bg);
  3472.                 giyg_bg -> stretchX = giyg_bg -> stretchY = 512;
  3473.         }
  3474.         else
  3475.         {
  3476.                 giygas[0] = oslLoadSoundFile("./sfx/sfx-0155.wav", OSL_FMT_NONE);
  3477.                 giygas[1] = oslLoadSoundFile("./sfx/sfx-0153.wav", OSL_FMT_NONE);
  3478.                 giygas[2] = oslLoadSoundFile("./sfx/dummy.wav", OSL_FMT_NONE);
  3479.  
  3480.                 for (i=0; i<5; i++)
  3481.                 {
  3482.                         tvnoise[i]=oslLoadImageFilePNG("./gfx/dummy.png",OSL_IN_RAM, OSL_PF_5551);
  3483.                 }
  3484.         }
  3485.  
  3486.  
  3487.  
  3488.  
  3489.     oslSetTransparentColor(RGB(255,0,255));
  3490.  
  3491.  
  3492.         for (i=0; i<3; i++)
  3493.         {
  3494.                 oslSetSoundLoop(giygas[i], 1);
  3495.         }
  3496.  
  3497.     oslPlaySound(giygas[0], 0);
  3498.     health=100;
  3499.     oslSetFrameskip(0);
  3500.     oslSetMaxFrameskip(3);
  3501.  
  3502.     while(!quit)
  3503.     {
  3504.         if (!skipframe)
  3505.                         {
  3506.  
  3507.                         oslStartDrawing();
  3508.  
  3509.  
  3510.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  3511.                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  3512.  
  3513.                         if (pie_ent.pie_hp < 1)
  3514.                         {
  3515.                                 pie_ent.pie_y = 136+5*sin(0.5*global_fr);
  3516.                         }
  3517.  
  3518.                         spr_draw(starsky,239,136);
  3519.  
  3520.                         if ((whineface) && (health > 0) && (pie_ent.pie_hp > 0))
  3521.                         {
  3522.                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  3523.                                 spr_draw(pie,pie_ent.pie_x, pie_ent.pie_y);
  3524.                                 oslSetImageTileSize(dictators, 160, 80, 80, 80);
  3525.                                 oslSetImageRotCenter(dictators);
  3526.                                 spr_draw(dictators, pie_ent.pie_x, pie_ent.pie_y-22);
  3527.                                 oslSetAlpha(OSL_FX_TINT, RGBA(255,0,0,whineface*8));
  3528.                                 whineface--;
  3529.                         }
  3530.                         else
  3531.                         {
  3532.                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  3533.                         }
  3534.  
  3535.  
  3536.                         spr_draw(pie,pie_ent.pie_x, pie_ent.pie_y);
  3537.  
  3538.  
  3539.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  3540.  
  3541.                         for (i=0; i<((2*diff)+2); i++)
  3542.                         {
  3543.                                 if ((pie_attacks[i][0]==12) && (health > 0))
  3544.                                 {
  3545.                                         oslSetImageTileSize(dictators, 80*(pie_ent.pie_facemode%2), 80*(pie_ent.pie_facemode/2),80 ,80);
  3546.                                         oslSetImageRotCenter(dictators);
  3547.  
  3548.                                         if (pie_attacks[i][1] > (240*diff-255))
  3549.                                         {
  3550.                                                 oslSetAlpha(OSL_FX_ALPHA, (240*diff - pie_attacks[i][1]));
  3551.                                         }
  3552.                                         else
  3553.                                         {
  3554.                                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  3555.                                         }
  3556.  
  3557.                                         if (pie_attacks[i][1] < 0)
  3558.                                         {
  3559.                                                 oslSetAlpha(OSL_FX_ALPHA, 255+pie_attacks[i][1]);
  3560.                                         }
  3561.  
  3562.                                         if (!whineface) spr_draw(dictators, pie_ent.pie_x, pie_ent.pie_y-22);
  3563.  
  3564.                                         pie_attacks[i][1]--;
  3565.  
  3566.                                         if (pie_attacks[i][1] == -255)
  3567.                                         {
  3568.                                                 pie_attacks[i][0]=0;
  3569.                                                 pie_ent.pie_facemode=0;
  3570.                                                 putin=0;
  3571.                                         }
  3572.  
  3573.                                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  3574.  
  3575.                                         if ((pie_ent.pie_facemode == 2) && (pie_attacks[i][1]==90))
  3576.                                         {
  3577.                                                 for (i=0; i<15; i++)
  3578.                                                 {
  3579.                                                         if ((i!=0) && (i!=3) && (i!=4) && (i != 11) && (i!=6)) att_cooldowns[i]=random(250);
  3580.                                                 }
  3581.                                         }
  3582.  
  3583.                                         if (pie_ent.pie_facemode == 0)
  3584.                                         {
  3585.                                                 if (pie_attacks[i][1] > -255) putin=1; else putin=0;
  3586.                                         }
  3587.                                         if (pie_ent.pie_facemode == 1)
  3588.                                         {
  3589.                                                 spr_draw(juche, pie_attacks[i][2], 40+30*sin(0.0625*pie_attacks[i][2]));
  3590.                                                 pie_attacks[i][2] -= 3;
  3591.                                         }
  3592.                                 }
  3593.                         }
  3594.  
  3595.                         if (health <= 0)
  3596.                         {
  3597.                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  3598.                                 oslSetImageTileSize(dictators, 160, 0, 80, 80);
  3599.                                 oslSetImageRotCenter(dictators);
  3600.                                 spr_draw(dictators, pie_ent.pie_x, pie_ent.pie_y-22);
  3601.                         }
  3602.                         else if (pie_ent.pie_hp < 1)
  3603.                         {
  3604.                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  3605.                                 oslSetImageTileSize(dictators, 160, 80, 80, 80);
  3606.                                 oslSetImageRotCenter(dictators);
  3607.                                 spr_draw(dictators, pie_ent.pie_x, pie_ent.pie_y-22);
  3608.                         }
  3609.  
  3610.                         spr_draw(court,0,0);
  3611.  
  3612.  
  3613.                         if (!paused)
  3614.                         {
  3615.                                 if (pie_ent.pie_hp > 0)
  3616.                                 {
  3617.                                         if (!(pie_ent.pie_direction))
  3618.                                         {
  3619.                                                         pie_ent.pie_x++;
  3620.                                                         pie->angle+=((round==2)?(giyg_flag+1):1)*4;
  3621.  
  3622.                                                 if (pie_ent.pie_x>=351) pie_ent.pie_direction=1;
  3623.  
  3624.                                         }
  3625.                                         else
  3626.                                         {
  3627.                                                         pie_ent.pie_x--;
  3628.                                                         pie->angle-=((round==2)?(giyg_flag+1):1)*4;
  3629.  
  3630.  
  3631.                                                 if (pie_ent.pie_x<=128) pie_ent.pie_direction=0;
  3632.                                         }
  3633.                                 }
  3634.  
  3635.  
  3636.                                 if (round==2) starsky->angle=starsky->angle-(giyg_flag+1)*((random(10))-1);
  3637.  
  3638.                                 if (counter >= 240)
  3639.                                 {
  3640.  
  3641.                                         if (diff != 3) a=diff; else a=2;
  3642.  
  3643.                                         if (counter == 240) ball_ent=apply_impulse(ball_ent, -1*a, -1*a, 30*3.14/180);
  3644.  
  3645.                                         if (ultlvl > 239) ultlvl=239;
  3646.  
  3647.                                         if ((!mgcd) && (!lightsoff) && (!rckchscr) && (mouth -> stretchX == 10))
  3648.                                         {
  3649.                                                 ball_ent.x2d += ball_ent.speed_h;
  3650.                                                 ball_ent.y2d += ball_ent.speed_v;
  3651.  
  3652.                                                 /*ball_ent.speed_z += GRAVITY;
  3653.                                                 ball_ent.z3d += ball_ent.speed_z;
  3654.  
  3655.                                                 if (ball_ent.z3d < 0)
  3656.                                                 {
  3657.                                                         ball_ent.speed_z = -1*(ball_ent.speed_z);
  3658.                                                         ball_ent.z3d=0;
  3659.                                                 }*/
  3660.  
  3661.                                                 ball_ent.z3d = abs(16*sin(0.0625*global_fr));
  3662.                                         }
  3663.  
  3664.                                         if (ball_ent.y2d < 138)
  3665.                                                 {
  3666.                                                                 ball_ent.speed_v = -1*(ball_ent.speed_v);
  3667.                                                                 ball_ent.y2d = 140;
  3668.  
  3669.                                                                 returned=0;
  3670.  
  3671.                                                                 if ((ball_ent.x2d >= pie_ent.pie_x-128) && (ball_ent.x2d <= pie_ent.pie_x+128))
  3672.                                                                 {
  3673.                                                                         pie_ent.pie_hp -= (4-diff);
  3674.                                                                         ultlvl += 5-diff;
  3675.                                                                         oslPlaySound(whine, 3);
  3676.                                                                         whineface=31;
  3677.                                                                 }
  3678.                                                                 else
  3679.                                                                 {
  3680.                                                                         if ((!suppo) && ((health) || (pie_ent.pie_hp)))
  3681.                                                                         {
  3682.                                                                                 suppo = 150;
  3683.                                                                                 suppox = px - 32;
  3684.                                                                                 suppoy = py + 48;
  3685.                                                                         }
  3686.                                                                 }
  3687.  
  3688.  
  3689.                                                                 if (ball_ent.speed_v > 0)
  3690.                                                                 {
  3691.                                                                         a=random(100);
  3692.                                                                         //if (a > 85) ball_ent.poisoned=1; else ball_ent.poisoned=0;
  3693.                                                                 }
  3694.  
  3695.                                                 }
  3696.  
  3697.                                         if (ball_ent.y2d > 288)
  3698.                                                 {
  3699.                                                                 ball_ent.speed_v = -1*(ball_ent.speed_v);
  3700.                                                                 ball_ent.y2d = 286;
  3701.  
  3702.                                                                 ball_ent.poisoned=0;
  3703.  
  3704.                                                                 if (!shielded)
  3705.                                                                 {
  3706.                                                                         stun=616;
  3707.                                                                         health -= diff+1;
  3708.                                                                         oslPlaySound(thunder, 3);
  3709.                                                                 }
  3710.  
  3711.  
  3712.                                                                 returned=1;
  3713.                                                 }
  3714.  
  3715.                                         if ((ball_ent.x2d >= 480 - 16/2) || (ball_ent.x2d < 4))
  3716.                                         {
  3717.                                                 ball_ent.speed_h = -1*(ball_ent.speed_h);
  3718.                                                 if (ball_ent.x2d < 4) ball_ent.x2d = 6; else ball_ent.x2d = 478 - 16/2;
  3719.                                         }
  3720.  
  3721.  
  3722.                                 }
  3723.  
  3724.                         }
  3725.  
  3726.  
  3727.  
  3728.  
  3729.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  3730.                         oslReadKeys();
  3731.  
  3732.                         if (((osl_keys->pressed.L) || (osl_keys->pressed.R)) && (nbp==2))
  3733.                         {
  3734.                                 att_ch_timer=0;
  3735.                                 if ((osl_keys->pressed.L) && (cursor2p > 0)) cursor2p--;
  3736.                                 if ((osl_keys->pressed.R) && (cursor2p < 13)) cursor2p++;
  3737.                         }
  3738.  
  3739.                         if ((osl_keys->pressed.start) && (pie_ent.pie_hp) && (health) && (!mgcd) && (counter > 256))
  3740.                                 {
  3741.                                         if (!paused)
  3742.                                         {
  3743.                                                 paused=1;
  3744.                                                 if (oslGetSoundChannel(quitter) == 5)
  3745.                                                 {
  3746.                                                         health -= 5;
  3747.                                                         if (putin) health -=2;
  3748.                                                         oslStopSound(quitter);
  3749.                                                 }
  3750.                                                 if (oslGetSoundChannel(tvnoisesound) == 5) oslStopSound(tvnoisesound);
  3751.                                                 if (oslGetSoundChannel(psis_sfx) > -1) oslStopSound(psis_sfx);
  3752.                                         }
  3753.                                         else paused=0;
  3754.  
  3755.                                         if (!lightsoff) oslPauseSound(giygas[giyg_flag%3], -1);
  3756.                                 }
  3757.  
  3758.  
  3759.                         if ((osl_keys->held.L) && (paused))
  3760.                         {
  3761.                                 if ((osl_keys->held.R) && (osl_keys->held.L))
  3762.                                         {
  3763.                                                 if ((osl_keys->held.cross) && (osl_keys->held.R) && (osl_keys->held.L))
  3764.                                                         {
  3765.                                                                 paused=0;
  3766.                                                                 health=0;
  3767.                                                                 mort=2;
  3768.                                                         }
  3769.  
  3770.                                                 if ((osl_keys->held.triangle) && (osl_keys->held.R) && (osl_keys->held.L))
  3771.                                                         {
  3772.                                                                 paused=0;
  3773.                                                                 pie_ent.pie_hp=0;
  3774.                                                                 pie_ent.pie_facemode=0;
  3775.                                                         }
  3776.                                         }
  3777.                         }
  3778.  
  3779.  
  3780.                         counter++;
  3781.                         global_fr++;
  3782.                         if (nbp==2) att_ch_timer++; else att_ch_timer=4;
  3783.  
  3784.                         if ((att_ch_timer >= 81) && (att_cooldowns[cursor2p] == 1) && (nbp==2))
  3785.                         {
  3786.                                 att_cooldowns[cursor2p]=0;
  3787.                         }
  3788.  
  3789.  
  3790.                         benj->stretchX = 32;
  3791.                         benj->stretchY = 48;
  3792.                         benj->angle = 0;
  3793.  
  3794.                         if (stun > 600)
  3795.                         {
  3796.                                 oslSetAlpha(OSL_FX_ALPHA, (stun%600)*16);
  3797.                                 oslSetImageTileSize(lightning,0,0,32,py+64);
  3798.                                 spr_draw(lightning, px, 0);
  3799.                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  3800.                         }
  3801.  
  3802.  
  3803.                         if (health > 0)
  3804.                         {
  3805.                                 oslSetAlpha(OSL_FX_ALPHA, 128);
  3806.                                 oslSetImageTileSize(benj,32,192,32,48);
  3807.                                 spr_draw(benj, px+8, py+26);
  3808.                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  3809.                         }
  3810.  
  3811.                         oslSetImageTileSize(benj,0,192,32,48);
  3812.  
  3813.                         if ((osl_keys->pressed.triangle) && (pie_ent.pie_hp > 0) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun) && (counter > 300) && (stary <= 0))
  3814.                         {
  3815.                                 oslPlaySound(benj_sfx[(random(2)+8)], 3);
  3816.                                 racket_devnull++;
  3817.  
  3818.                                 stary=py+48;
  3819.  
  3820.                                 if ((ultlvl > 59) && (ultlvl < 120))
  3821.                                 {
  3822.                                         stars_ult[0]=px+32;
  3823.                                         nbult=1;
  3824.                                 }
  3825.  
  3826.                                 else if ((ultlvl > 119) && (ultlvl < 239))
  3827.                                 {
  3828.                                                 stars_ult[0]=px-48;
  3829.                                                 stars_ult[1]=px+32;
  3830.                                                 stars_ult[2]=px+112;
  3831.                                                 nbult=3;
  3832.                                 }
  3833.  
  3834.                                 else if (ultlvl==239)
  3835.                                 {
  3836.                                         stars_ult[0]=px-48;
  3837.                                         stars_ult[1]=px-8;
  3838.                                         stars_ult[2]=px+32;
  3839.                                         stars_ult[3]=px+72;
  3840.                                         stars_ult[4]=px+112;
  3841.                                         nbult=5;
  3842.                                 }
  3843.  
  3844.  
  3845.                         if (ultlvl > 59) ultlvl -= ((diff==1)?60:((diff==2)?(ultlvl%60+60):ultlvl));
  3846.  
  3847.                         }
  3848.  
  3849.                         if ((osl_keys -> pressed.cross) && (health>0) && (!mgcd) && (!paused) && (shldlvl > 2) && (!stun))
  3850.                         {
  3851.                                 if (!(racket_devnull%2)) oslPlaySound(benj_sfx[10], 3);
  3852.                                 racket_devnull++;
  3853.                         }
  3854.  
  3855.                         if (((osl_keys -> pressed.square) || (osl_keys -> pressed.circle)) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun))
  3856.                         {
  3857.                                 if (!(racket_devnull%2)) oslPlaySound(benj_sfx[random(3)+5], 3);
  3858.                                 racket_devnull++;
  3859.                                 frappe=1;
  3860.                         }
  3861.  
  3862.                         if (((osl_pad.analogY < -32) || (osl_keys->held.up)) && (py >= 102) && (health>0) && (!mgcd) && (!paused) && (frappe == -1) && (!stun) && (mouth->stretchX == 10))
  3863.                         {
  3864.                                 if (pie_ent.pie_facemode != 1)
  3865.                                 {
  3866.                                         pbouss=0;
  3867.                                         oslSetImageTileSize(benj,(benj_frame%8)*32,0,32,48);
  3868.                                         if (osl_pad.analogY > -108)
  3869.                                                 {
  3870.                                                         if (pie_ent.pie_facemode == 3) py-=2; else py--;
  3871.                                                         fs=6;
  3872.                                                 }
  3873.                                         else
  3874.                                                 {
  3875.                                                         if (pie_ent.pie_facemode != 3) py-=4; else py-=2;
  3876.                                                         fs=3;
  3877.                                                 }
  3878.                                 }
  3879.                                 else
  3880.                                 {
  3881.                                         pbouss=2;
  3882.                                         oslSetImageTileSize(benj,(benj_frame%8)*32,96,32,48);
  3883.                                         if (osl_pad.analogY > -108)
  3884.                                         {
  3885.                                                 if (pie_ent.pie_facemode != 3) py+=2; else py++;
  3886.                                                 fs=6;
  3887.                                         }
  3888.                                         else
  3889.                                         {
  3890.                                                 if (pie_ent.pie_facemode != 3) py+=4; else py+=2;
  3891.                                                 fs=3;
  3892.                                         }
  3893.                                         if (py > 224) py=216;
  3894.                                 }
  3895.  
  3896.                                 oslSetImageTileSize(powerball, 32, 0, 32, 32);
  3897.                                 if (!(counter%fs)) benj_frame++;
  3898.                         }
  3899.                         if (((osl_pad.analogX < -32) || (osl_keys->held.left)) && (px >= (-0.492*py+94.184)) && (px <= (0.492*py+321.792)) && (health>0) && (!mgcd) && (!paused) && (frappe < 4) && (!stun) && (mouth->stretchX == 10))
  3900.                         {
  3901.                                 if (pie_ent.pie_facemode != 1)
  3902.                                 {
  3903.                                         pbouss=3;
  3904.                                         oslSetImageTileSize(benj,(benj_frame%8)*32,pbouss*48,32,48);
  3905.                                         if (osl_pad.analogX > -108)
  3906.                                         {
  3907.                                                 if (frappe < 4)
  3908.                                                 {
  3909.                                                         if (pie_ent.pie_facemode != 3) px-=2; else px--;
  3910.                                                 }
  3911.                                                 fs=6;
  3912.                                         }
  3913.                                         else
  3914.                                         {
  3915.                                                 if (frappe < 4)
  3916.                                                 {
  3917.                                                         if (pie_ent.pie_facemode != 3) px-=4; else px-=2;
  3918.                                                 }
  3919.                                                 fs=3;
  3920.                                         }
  3921.                                 }
  3922.                                 else
  3923.                                 {
  3924.                                         pbouss=1;
  3925.                                         oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
  3926.                                         if (osl_pad.analogX > -108)
  3927.                                         {
  3928.                                                 if (frappe < 4)
  3929.                                                 {
  3930.                                                         if (pie_ent.pie_facemode != 3) px+=2; else px++;
  3931.                                                 }
  3932.                                                         fs=6;
  3933.                                         }
  3934.                                         else
  3935.                                         {
  3936.                                                 if (frappe < 4)
  3937.                                                 {
  3938.                                                         if (pie_ent.pie_facemode != 3) px+=4; else px+=2;
  3939.                                                 }
  3940.                                                         fs=3;
  3941.                                         }
  3942.                                         if (px > (0.492*py+321.792)) px = (0.492*py+321.792);
  3943.                                 }
  3944.  
  3945.                                         oslSetImageTileSize(powerball, 32, 0, 32, 32);
  3946.                                         if (!(counter%fs)) benj_frame++;
  3947.                         }
  3948.                         if (((osl_pad.analogX > 32) || (osl_keys->held.right)) && (px >= (-0.492*py+94.184)) && (px <= (0.492*py+321.792)) && (health>0) && (!mgcd) && (!paused) && (frappe < 4) && (!stun) && (mouth->stretchX == 10))
  3949.                         {
  3950.                                 if (pie_ent.pie_facemode != 1)
  3951.                                 {
  3952.                                         pbouss=1;
  3953.                                         oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
  3954.                                         if (osl_pad.analogX < 108)
  3955.                                         {
  3956.                                                 if (frappe < 4)
  3957.                                                 {
  3958.                                                         if (pie_ent.pie_facemode != 3) px+=2; else px++;
  3959.                                                 }
  3960.                                                         fs=6;
  3961.                                         }
  3962.                                         else
  3963.                                         {
  3964.                                                 if (frappe < 4)
  3965.                                                 {
  3966.                                                         if (pie_ent.pie_facemode != 3) px+=4; else px+=2;
  3967.                                                 }
  3968.                                                         fs=3;
  3969.                                         }
  3970.                                 }
  3971.                                 else
  3972.                                 {
  3973.                                         pbouss=3;
  3974.                                         oslSetImageTileSize(benj,(benj_frame%8)*32,pbouss*48,32,48);
  3975.                                         if (osl_pad.analogX < 108)
  3976.                                         {
  3977.                                                 if (frappe < 4)
  3978.                                                 {
  3979.                                                         if (pie_ent.pie_facemode != 3) px-=2; else px--;
  3980.                                                 }
  3981.                                                 fs=6;
  3982.                                         }
  3983.                                         else
  3984.                                         {
  3985.                                                 if (frappe < 4)
  3986.                                                 {
  3987.                                                         if (pie_ent.pie_facemode != 3) px-=4; else px-=2;
  3988.                                                 }
  3989.                                                 fs=3;
  3990.                                         }
  3991.  
  3992.                                         if (px < (-0.492*py+94.184)) px = (-0.492*py+94.184);
  3993.                                 }
  3994.                                         oslSetImageTileSize(powerball, 0, 0, 32, 32);
  3995.                                         if (!(counter%fs)) benj_frame++;
  3996.                         }
  3997.                         if (((osl_pad.analogY > 32) || (osl_keys->held.down)) && (py <= 224) && (health>0) && (!mgcd) && (!paused) && (frappe == -1) && (!stun) && (mouth->stretchX == 10))
  3998.                         {
  3999.                                 if (pie_ent.pie_facemode != 1)
  4000.                                 {
  4001.                                         pbouss=2;
  4002.                                         oslSetImageTileSize(benj,(benj_frame%8)*32,96,32,48);
  4003.                                         if (osl_pad.analogY < 108)
  4004.                                         {
  4005.                                                 if (pie_ent.pie_facemode != 3) py+=2; else py++;
  4006.                                                 fs=6;
  4007.                                         }
  4008.                                         else
  4009.                                         {
  4010.                                                 if (pie_ent.pie_facemode != 3) py+=4; else py+=2;
  4011.                                                 fs=3;
  4012.                                         }
  4013.                                 }
  4014.                                 else
  4015.                                 {
  4016.                                         pbouss=0;
  4017.                                         oslSetImageTileSize(benj,(benj_frame%8)*32,0,32,48);
  4018.                                         if (osl_pad.analogY < 108