Advertisement
240-185

Alice in Pasta Crocket (PSP)

Sep 12th, 2014
627
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 164.61 KB | None | 0 0
  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)
  4019.                         {
  4020.                             if (pie_ent.pie_facemode == 3) py-=2; else py--;
  4021.                             fs=6;
  4022.                         }
  4023.                     else
  4024.                         {
  4025.                             if (pie_ent.pie_facemode != 3) py-=4; else py-=2;
  4026.                             fs=3;
  4027.                         }
  4028.                     if (py < 102) py=110;
  4029.                 }
  4030.  
  4031.                     oslSetImageTileSize(powerball, 0, 0, 32, 32);
  4032.                     if (!(counter%fs)) benj_frame++;
  4033.             }
  4034.  
  4035.             if ((osl_keys->held.square) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun))
  4036.             {
  4037.  
  4038.                 if ((!(counter%3))) frappe++;
  4039.                 oslSetImageTileSize(benj,(frappe)*32,240,32,48);
  4040.  
  4041.  
  4042.                 if ((osl_pad.analogX > 108) && (frappe > -1))
  4043.                     {
  4044.                         if (frappe>3) benj -> angle = 90;
  4045.                         oslSetImageTileSize(benj,(frappe)*32,432,32,48);
  4046.  
  4047.                     }
  4048.                 else if ((osl_pad.analogX < -108) && (frappe > -1))
  4049.                     {
  4050.                         if (frappe>3) benj -> angle = -90;
  4051.                         oslSetImageTileSize(benj,(frappe)*32,384,32,48);
  4052.                     }
  4053.  
  4054.                 if (((px+24-(ball_ent.x2d))*(px+24-(ball_ent.x2d))+(py+24-(ball_ent.y2d))*(py+24-(ball_ent.y2d)) <= 404) && (!returned) && (py >= 142))
  4055.                 {
  4056.                     if (diff != 3) a=diff; else a=2;
  4057.                     ball_ent = apply_impulse(ball_ent, a, a, (180-15*frappe)*3.14/180);
  4058.                     if (oslGetSoundChannel(bounce) != 2) oslPlaySound(bounce, 2);
  4059.                     frappe=-1;
  4060.                     returned=1;
  4061.                 }
  4062.             }
  4063.  
  4064.  
  4065.             if ((osl_keys->held.circle) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun))
  4066.             {
  4067.  
  4068.                 if ((!(counter%3))) frappe++;
  4069.                 oslSetImageTileSize(benj,(frappe)*32,288,32,48);
  4070.  
  4071.  
  4072.                 if ((osl_pad.analogX > 108) && (frappe > -1))
  4073.                     {
  4074.                         if (frappe>3) benj -> angle = 90;
  4075.                         oslSetImageTileSize(benj,(frappe)*32,432,32,48);
  4076.                     }
  4077.                 else if ((osl_pad.analogX < -108) && (frappe > -1))
  4078.                     {
  4079.                         if (frappe>3) benj -> angle = -90;
  4080.                         oslSetImageTileSize(benj,(frappe)*32,384,32,48);
  4081.                     }
  4082.  
  4083.                 if (((px+24-(ball_ent.x2d))*(px+24-(ball_ent.x2d))+(py+24-(ball_ent.y2d))*(py+24-(ball_ent.y2d)) <= 404) && (!returned) && (py >= 142))
  4084.                 {
  4085.                     if (diff != 3) a=diff; else a=2;
  4086.                     ball_ent = apply_impulse(ball_ent, -1*a, a, (15*frappe)*3.14/180);
  4087.                     if (oslGetSoundChannel(bounce) != 2) oslPlaySound(bounce, 2);
  4088.                     frappe=-1;
  4089.                     returned=1;
  4090.                 }
  4091.             }
  4092.  
  4093.             if ((osl_keys->held.triangle) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun) && (counter > 300))
  4094.             {
  4095.  
  4096.                 if ((!(counter%3))) frappe++;
  4097.                 oslSetImageTileSize(benj,(frappe)*32,336,32,48);
  4098.  
  4099.  
  4100.  
  4101.             }
  4102.  
  4103.             if ((osl_keys->held.cross) && (health>0) && (!mgcd) && (!paused) && (shldlvl > 0) && (!stun))
  4104.             {
  4105.                 if ((!(counter%(4-diff)))) shldlvl--;
  4106.                 shielded=1;
  4107.             }
  4108.  
  4109.  
  4110.             if ((osl_keys->released.circle)  ||  (osl_keys->released.triangle) ||  (osl_keys->released.square))
  4111.             {
  4112.                 frappe=-1;
  4113.             }
  4114.  
  4115.             if ((osl_keys->released.cross) || (!shldlvl))
  4116.             {
  4117.                 shielded=0;
  4118.             }
  4119.  
  4120.             if (stun)
  4121.             {
  4122.                 frappe=-1;
  4123.                 oslSetImageTileSize(benj,64,192,32,48);
  4124.                 stun--;
  4125.                 if (!(stun%200)) stun=0;
  4126.             }
  4127.  
  4128.             if (px < (-0.492*py+94.184)) px = (-0.492*py+94.184);
  4129.             if (px > (0.492*py+321.792)) px = (0.492*py+321.792);
  4130.  
  4131.             if (((osl_pad.analogX==0) && (osl_pad.analogY==0)) || ((osl_keys->released.down) || (osl_keys->released.up) || (osl_keys->released.left) || (osl_keys->released.right)))
  4132.             {
  4133.                 benj_frame=0;
  4134.             }
  4135.  
  4136.  
  4137.             if (frappe >= 7) frappe=7;
  4138.  
  4139.             court_zoom = 0.00192*py + 0.562;
  4140.  
  4141.             benj->stretchX = (int)(64*(float)court_zoom);
  4142.             benj->stretchY = (int)(96*(float)court_zoom);
  4143.  
  4144.             shield->stretchX = (int)(48*(float)court_zoom);
  4145.             shield->stretchY = (int)(48*(float)court_zoom);
  4146.  
  4147.  
  4148.  
  4149.             ball_gfx -> stretchX = (int)(8*(float)court_zoom);
  4150.             ball_gfx -> stretchY = ball_gfx -> stretchX;
  4151.  
  4152.             powerball -> stretchX = powerball -> stretchY = (int)(32*(float)(court_zoom));
  4153.  
  4154.  
  4155.             if (health > 0)
  4156.             {
  4157.                 if (stary > 0)
  4158.                 {
  4159.  
  4160.  
  4161.  
  4162.                     for(u=0; u<nbult; u++)
  4163.                     {
  4164.                         spr_draw(star, stars_ult[u], stary);
  4165.  
  4166.                         if (stary <= 136)
  4167.                         {
  4168.                             if ((stars_ult[u] >= (pie_ent.pie_x-128)) && (stars_ult[u] <= (pie_ent.pie_x+128))) pie_ent.pie_hp -= 10;
  4169.                             stary=-64;
  4170.                             stars_ult[u]=-32;
  4171.                             nbult=0;
  4172.                         }
  4173.  
  4174.                     }
  4175.                     star -> angle -= 5;
  4176.                     stary -= 4;
  4177.  
  4178.                 }
  4179.  
  4180.                 if (ball_ent.poisoned) oslSetAlpha(OSL_FX_TINT, RGB(0, 0, 255));
  4181.                 if (pie_ent.pie_hp > 0) draw_ball(ball_ent, ball_gfx, ball_shad);
  4182.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  4183.                 draw_benj(benj, px, py, shielded, shield);
  4184.                 if (((pbouss == 3) || (pbouss == 0)) && (pie_ent.pie_facemode == 3)) spr_draw(powerball, px+64, py+48);
  4185.                 if (((pbouss == 1) || (pbouss == 2)) && (pie_ent.pie_facemode == 3)) spr_draw(powerball, px, py+48);
  4186.                 if (ball_ent.poisoned) oslSetAlpha(OSL_FX_TINT, RGB(0, 0, 255));
  4187.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  4188.  
  4189.  
  4190.             }
  4191.  
  4192.  
  4193.  
  4194.             if (suppo)
  4195.             {
  4196.                 if (!paused) suppo--;
  4197.                 if (suppo<40)
  4198.                 {
  4199.                     oslSetImageTileSize(suppo_gfx, suppo/10*32, 0, 32, 32);
  4200.                 }
  4201.  
  4202.                 if (suppo>110)
  4203.                 {
  4204.                     oslSetImageTileSize(suppo_gfx, (150-suppo)/10*32, 0, 32, 32);
  4205.                 }
  4206.  
  4207.                 court_zoom = 0.00192*suppoy + 0.562;
  4208.                 suppo_gfx->stretchX = (int)(32*(float)court_zoom);
  4209.                 suppo_gfx->stretchY = (int)(32*(float)court_zoom);
  4210.  
  4211.                 spr_draw(suppo_gfx, suppox, suppoy);
  4212.                 spr_draw(suppo_gfx, suppox+64, suppoy);
  4213.  
  4214.                 if ((suppo>65) && (suppo<85))
  4215.                 {
  4216.                     if ((px>=suppox) && (px<=suppox+64) && (py>=suppoy-64) && (py <= suppoy))
  4217.                     {
  4218.                         oslSetAlpha(OSL_FX_TINT, RGBA(0, 128, 128, 255));
  4219.                         if ((suppo%4) < 2)
  4220.                         {
  4221.                             draw_benj(benj, px, py, shielded, shield);
  4222.                         }
  4223.  
  4224.                         if ((suppo == 67) && (!mgcd) && (!rckchscr))
  4225.                         {
  4226.                             health -= diff;
  4227.                             oslPlaySound(elec, 3);
  4228.                         }
  4229.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  4230.                     }
  4231.                 }
  4232.             }
  4233.  
  4234.             if ((pie_ent.pie_hp > 25*round*diff) && (!giyg_flag) && (pie_ent.pie_hp <= 50*round*diff))
  4235.             {
  4236.                 giyg_flag=1;
  4237.                 oslStopSound(giygas[0]);
  4238.                 oslPlaySound(giygas[1], 0);
  4239.             }
  4240.  
  4241.  
  4242.  
  4243.             if (round==2)
  4244.             {
  4245.                 oslSetAlpha(OSL_FX_ALPHA, random(64));
  4246.                 spr_draw(giyg_bg, 240, 138);
  4247.  
  4248.                 giyg_bg_angles[0] = random(10)-5;
  4249.  
  4250.                 giyg_bg -> angle += giyg_bg_angles[0];
  4251.  
  4252.                 if (pie_ent.pie_hp <= 50*round*diff)
  4253.                 {
  4254.                     giyg_bg_angles[1] = 2*(random(10)-5);
  4255.                     giyg_bg -> angle += giyg_bg_angles[1];
  4256.                     oslSetAlpha(OSL_FX_ALPHA, random(64)+64);
  4257.                     spr_draw(giyg_bg, 240, 138);
  4258.  
  4259.                 }
  4260.  
  4261.                 if (pie_ent.pie_hp <= 25*round*diff)
  4262.                 {
  4263.                     giyg_bg_angles[2] = 4*(random(10)-5);
  4264.                     giyg_bg -> angle += giyg_bg_angles[2];
  4265.                     oslSetAlpha(OSL_FX_ALPHA, random(64)+128);
  4266.                     spr_draw(giyg_bg, 240, 138);
  4267.  
  4268.                     if ((giyg_flag < 2))
  4269.                     {
  4270.                         giyg_flag=2;
  4271.                         oslStopSound(giygas[1]);
  4272.                         oslPlaySound(giygas[2], 0);
  4273.                     }
  4274.  
  4275.                 }
  4276.  
  4277.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  4278.             }
  4279.  
  4280.             if ((counter >= 640))
  4281.             {
  4282.  
  4283.                 //initializing attacks
  4284.                 for (i=0; i<14; i++)
  4285.                 {
  4286.                     if ((nbp==1) && (!paused)) att_cooldowns[i]--;
  4287.                     if ((nbp==2) && (!paused) && (att_cooldowns[i]>1)) att_cooldowns[i]--;
  4288.  
  4289.                     if ((i==7) && (bulbfell > 0)) att_cooldowns[7]++;
  4290.  
  4291.                     if ((att_cooldowns[i] <= 0) && (pie_ent.pie_hp > 0))
  4292.                     {
  4293.  
  4294.                         attf=0;
  4295.                         for (j=0; j<((2*diff)+2); j++)
  4296.                         {
  4297.                             if (pie_attacks[j][0] == (i+1)) attf=1;
  4298.                         }
  4299.  
  4300.                             for (j=0; j<((2*diff)+2); j++)
  4301.                             {
  4302.                                 if ((!(pie_attacks[j][0])) && (!attf))
  4303.                                 {
  4304.                                     pie_attacks[j][0]=i+1;
  4305.  
  4306.                                     switch(i+1)
  4307.                                     {
  4308.                                         case 1:
  4309.                                             pie_attacks[j][1]=140;
  4310.                                         break;
  4311.  
  4312.                                         case 2:
  4313.                                             pie_attacks[j][1]=(py-(pie_ent.pie_y))/(px-pie_ent.pie_x);
  4314.                                             pie_attacks[j][2]=(pie_ent.pie_y)-pie_attacks[j][1]*pie_ent.pie_x;
  4315.                                             pie_attacks[j][3]=pie_ent.pie_x;
  4316.                                             pie_attacks[j][4]=px;
  4317.                                             mgsy=pie_attacks[i][1]*pie_attacks[i][3]+pie_attacks[i][2];
  4318.                                         break;
  4319.  
  4320.                                         case 3:
  4321.                                             darkness=0;
  4322.                                             for (u=0; u<((2*diff)+2); u++)
  4323.                                             {
  4324.                                                 if (pie_attacks[u][0]==7) darkness=1;
  4325.                                             }
  4326.  
  4327.                                             if (!darkness)
  4328.                                             {
  4329.                                                 pie_attacks[j][1]=360-(15*diff);
  4330.                                                 pie_attacks[j][2]=random(160)+80;
  4331.                                                 pie_attacks[j][3]=random(112)+160;
  4332.                                                 pie_attacks[j][4]=2*diff+3;
  4333.                                             }
  4334.                                             else pie_attacks[j][0]=0;
  4335.                                         break;
  4336.  
  4337.                                         case 4:
  4338.                                             pie_attacks[j][1]=diff*166;
  4339.                                             lightsoff=1;
  4340.                                         break;
  4341.  
  4342.                                         case 5:
  4343.                                             pie_attacks[j][1]=-218;
  4344.                                             pie_attacks[j][2]=255;
  4345.                                         break;
  4346.  
  4347.                                         case 6:
  4348.                                             pie_attacks[j][1]=225*diff;
  4349.                                             pie_attacks[j][2]=random(416);
  4350.                                             pie_attacks[j][3]=random(100)+108;
  4351.  
  4352.                                             if ((diff > 1) && (pie_attacks[j][2]%diff))
  4353.                                             {
  4354.                                                 pie_attacks[j][2] += (diff)-(pie_attacks[j][2]%diff);
  4355.                                             }
  4356.  
  4357.                                             if ((diff > 1) && (pie_attacks[j][3]%diff))
  4358.                                             {
  4359.                                                 pie_attacks[j][3] += (diff)-(pie_attacks[j][3]%diff);
  4360.                                             }
  4361.                                         break;
  4362.  
  4363.                                         case 7:
  4364.                                             chair=0;
  4365.                                             for (u=0; u<((2*diff)+2); u++)
  4366.                                             {
  4367.                                                 if (pie_attacks[u][0]==3) chair=1;
  4368.                                             }
  4369.  
  4370.                                             if (!chair)
  4371.                                             {
  4372.  
  4373.                                             if (px+16 < 240) pie_attacks[j][1]=0; else pie_attacks[j][1]=1;
  4374.                                             pie_attacks[j][2]=random(400)+600;
  4375.                                             if (pie_attacks[j][1]) pie_attacks[j][3]=400-random(160); else  pie_attacks[j][3]=random(160)+80;
  4376.                                             if (pie_attacks[j][1]) pie_attacks[j][4]=480; else  pie_attacks[j][4]=0;
  4377.  
  4378.                                             mouth -> stretchX = 10;
  4379.                                             mouth -> stretchY = 16;
  4380.                                             }
  4381.                                             else  pie_attacks[j][0]=0;
  4382.  
  4383.                                         break;
  4384.  
  4385.                                         case 8:
  4386.                                             pie_attacks[j][1]=diff+2;
  4387.                                             pie_attacks[j][2]=random(4); //sens bulbasaur
  4388.                                             pie_attacks[j][3]=random(320)+80; //bulb_x
  4389.                                             pie_attacks[j][4]=-64; //bulb_y
  4390.                                             bulbfell=1;
  4391.                                             if (!lightsoff) oslPlaySound(bulbsfx[(random(2)?1:6)], 6);
  4392.                                         break;
  4393.  
  4394.                                         case 9:
  4395.                                             pie_attacks[j][1]=120*diff+120;
  4396.                                             if (px < 240) pie_attacks[j][2]=1; else pie_attacks[j][2]=0;
  4397.                                             pie_attacks[j][3]=py;
  4398.  
  4399.                                             for (u=0; u<3; u++)
  4400.                                             {
  4401.                                                 meteors[u][0]=0;
  4402.                                                 meteors[u][1]=0;
  4403.                                                 meteors[u][2]=0;
  4404.                                             }
  4405.                                         break;
  4406.  
  4407.                                         case 10:
  4408.                                             pie_attacks[j][1]=96;
  4409.                                             if ((!shielded) && (!stun)) stun=96;
  4410.                                             break;
  4411.  
  4412.                                         case 11:
  4413.                                             pie_attacks[j][1]=1;
  4414.                                             pie_attacks[j][2]=30;
  4415.                                             if (!lightsoff) oslPlaySound(psis_sfx, 4);
  4416.                                             break;
  4417.  
  4418.                                         case 12:
  4419.                                             pie_attacks[j][1]=240*diff;
  4420.                                             pie_ent.pie_facemode=random(4);
  4421.                                             if ((!lightsoff) && (health > 0)) oslPlaySound(dictators_sfx[pie_ent.pie_facemode], 7);
  4422.                                             if (pie_ent.pie_facemode==1)
  4423.                                             {
  4424.                                                 pie_attacks[j][2]=560;
  4425.                                             }
  4426.                                             break;
  4427.  
  4428.                                         case 13:
  4429.                                             if ((round==2) && (pie_ent.pie_hp < 20*round*diff) && (!ulted) && (!lightsoff))
  4430.                                             {
  4431.                                                 oslStopSound(giygas[giyg_flag]);
  4432.                                                 oslStopSound(psis_sfx);
  4433.                                                 oslEndDrawing();
  4434.                                                 health=shoop_da_whoop(health, round, diff);
  4435.                                                 oslStartDrawing();
  4436.                                                 ulted=1;
  4437.                                                 oslPlaySound(giygas[giyg_flag], 0);
  4438.                                                 oslDrawFillRect(0, 0, 480, 272, RGB(0, 0, 0));
  4439.                                             }
  4440.                                             pie_attacks[j][0]=0;
  4441.                                             break;
  4442.  
  4443.                                         case 14:
  4444.                                             if ((round==2) && (pie_ent.pie_hp < 10*round*diff) && (ulted==1) && (!lightsoff))
  4445.                                             {
  4446.                                                 oslStopSound(giygas[giyg_flag]);
  4447.                                                 oslStopSound(psis_sfx);
  4448.                                                 oslEndDrawing();
  4449.                                                 sad();
  4450.                                                 oslStartDrawing();
  4451.                                                 ulted=2;
  4452.                                                 oslPlaySound(giygas[giyg_flag], 0);
  4453.                                                 oslDrawFillRect(0, 0, 480, 272, RGB(0, 0, 0));
  4454.                                             }
  4455.                                             pie_attacks[j][0]=0;
  4456.                                             break;
  4457.  
  4458.  
  4459.                                         default:
  4460.                                             break;
  4461.                                     }
  4462.  
  4463.                                     j=2*diff+3; //break;
  4464.                                 }
  4465.                             }
  4466.  
  4467.  
  4468.                             //att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800)*(2*i+11);
  4469.                                 att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800);
  4470.                                 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]));
  4471.                                 if ((i!=0) && (i!=3) && (i!=4)) att_cooldowns[i]=att_cooldowns[i]/(0.5*round+0.5);
  4472.                                 if (i == 11) att_cooldowns[i] += 1792;
  4473.  
  4474.                     }
  4475.                 }
  4476.  
  4477.  
  4478.                 //programming attacks
  4479.  
  4480.  
  4481.                 if (!paused) {
  4482.  
  4483.                     for (i=0; i<((2*diff)+2); i++)
  4484.                     {
  4485.                         switch(pie_attacks[i][0])
  4486.                         {
  4487.                             case 1:
  4488.                             {
  4489.                                 if ((mgcd < 1) && (health > 0) && (!lightsoff))
  4490.                                 {
  4491.                                     oslSetAlpha(OSL_FX_TINT, RGBA(0, 128, 128, 255));
  4492.                                     if (pie_attacks[i][1] > 115)
  4493.                                     {
  4494.                                         oslSetImageTileSize(ko,0,0,120,96);
  4495.                                         spr_draw(ko, (int)(9.6*(140-pie_attacks[i][1])-120), 88);
  4496.                                     }
  4497.  
  4498.                                     if ((pie_attacks[i][1] <= 115) && (pie_attacks[i][1] >= 90))
  4499.                                     {
  4500.                                         oslSetImageTileSize(ko,0,0,120,96);
  4501.                                         spr_draw(ko, 120, 88);
  4502.                                         oslSetImageTileSize(ko,120,0,120,96);
  4503.                                         spr_draw(ko, (int)(-9.6*(140-pie_attacks[i][1])+720), 88);
  4504.                                     }
  4505.  
  4506.                                     if ((pie_attacks[i][1] > 0) && (pie_attacks[i][1] < 90))
  4507.                                     {
  4508.                                         oslSetImageTileSize(ko,0,0,240,96);
  4509.                                         spr_draw(ko, 120, 88);
  4510.                                     }
  4511.  
  4512.                                     if ((pie_attacks[i][1] <= 0))
  4513.                                     {
  4514.                                         pie_attacks[i][0]=0;
  4515.                                     }
  4516.  
  4517.                                     if (pie_attacks[i][1] > 80)
  4518.                                     {
  4519.                                         if ((pie_attacks[i][1]%6) < 3)
  4520.                                         {
  4521.                                             explode -> stretchX = 64;
  4522.                                             explode -> stretchY = 96;
  4523.                                             spr_draw(explode, px, py);
  4524.                                         }
  4525.                                         else
  4526.                                         {
  4527.                                             explode -> stretchX = 32;
  4528.                                             explode -> stretchY = 48;
  4529.                                             spr_draw(explode, px+16, py+24);
  4530.                                         }
  4531.                                     }
  4532.  
  4533.                                     pie_attacks[i][1]--;
  4534.                                     oslSetAlpha(OSL_FX_DEFAULT, 0);
  4535.                                 }
  4536.                                 break;
  4537.                             }
  4538.  
  4539.                             case 2:
  4540.                             {
  4541.                                 //frame_debug(j);
  4542.  
  4543.                                 if ((!mgcd) && (!lightsoff))
  4544.                                 {
  4545.                                     oslSetAlpha(OSL_FX_ALPHA,128);
  4546.  
  4547.                                     if (pie_attacks[i][4] < pie_attacks[i][3])
  4548.                                         {
  4549.                                             pie_attacks[i][4]-=3;
  4550.                                             pie_attacks[i][3]-=3;
  4551.                                         }
  4552.                                     else
  4553.                                         {
  4554.                                             pie_attacks[i][4]+=3;
  4555.                                             pie_attacks[i][3]+=3;
  4556.                                         }
  4557.  
  4558.                                     if (mgsy < py)  mgsy += random(8)+2;    else mgsy -= random(8)+2;
  4559.  
  4560.                                     court_zoom = 0.00192*(mgsy) + 0.562;
  4561.  
  4562.                                     mgswirl->stretchX = (int)(128*(float)court_zoom);
  4563.                                     mgswirl->stretchY = (int)(128*(float)court_zoom);
  4564.  
  4565.                                     spr_draw(mgswirl, pie_attacks[i][3], mgsy);
  4566.  
  4567.                                     oslSetAlpha(OSL_FX_DEFAULT, 0);
  4568.                                 }
  4569.  
  4570.                                 if ((swirl_collide(px, py, pie_attacks[i][3], mgsy)) && (health>0))
  4571.                                 {
  4572.  
  4573.                                         if (!mgcd)
  4574.                                         {
  4575.  
  4576.                                             if (oslGetSoundChannel(minigametime) != 7)
  4577.                                             {
  4578.                                                 oslStopSound(giygas[giyg_flag%3]);
  4579.                                                 oslPlaySound(minigametime, 7);
  4580.                                                 if (oslGetSoundChannel(tvnoisesound) == 5) oslStopSound(tvnoisesound);
  4581.                                                 if (oslGetSoundChannel(meteor_fall) == 6) oslStopSound(meteor_fall);
  4582.                                                 oslStopSound(psis_sfx);
  4583.                                                 sleepwell -> stretchX = sleepwell -> stretchY = 272;
  4584.                                             }
  4585.  
  4586.                                         }
  4587.  
  4588.                                         mgcd++;
  4589.  
  4590.                                         if (mgcd >= 1)
  4591.                                         {
  4592.  
  4593.                                                 oslStopSound(psis_sfx);
  4594.                                                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  4595.                                                 if (mgcd < 9) oslDrawFillRect(0,0,480,272, RGB(255,255,255)); else
  4596.                                                 {
  4597.                                                     oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  4598.                                                     oslSetAlpha(OSL_FX_ALPHA, 255-(int)(mgcd*2.55));
  4599.                                                     sleepwell -> stretchX+=18;
  4600.                                                     sleepwell -> stretchY+=36;
  4601.                                                     spr_draw(sleepwell,240,138);
  4602.                                                     oslSetAlpha(OSL_FX_DEFAULT, 0);
  4603.                                                 }
  4604.  
  4605.  
  4606.                                         }
  4607.  
  4608.                                 }
  4609.  
  4610.                                 if ((pie_attacks[i][3] <= -128) || (pie_attacks[i][3] >= 544))
  4611.                                 {
  4612.                                     pie_attacks[i][0]=0;
  4613.                                     mgcd=0;
  4614.                                 }
  4615.  
  4616.  
  4617.                                 break;
  4618.                             }
  4619.  
  4620.                             case 3:
  4621.                             {
  4622.                                 if ((mgcd < 1) && (health > 0) && (!lightsoff))
  4623.                                         {
  4624.  
  4625.                                         if (pie_attacks[i][4] > 0)
  4626.                                         {
  4627.                                                 pie_attacks[i][1]--;
  4628.  
  4629.                                                 if (pie_attacks[i][1] > 90)
  4630.                                                 {
  4631.  
  4632.                                                     if (pie_attacks[i][1] < 180) rckch[0] -> angle = (int)(6*sin(0.5*counter));
  4633.                                                     else rckch[0] -> angle = 0;
  4634.  
  4635.                                                     court_zoom = 0.00192*(pie_attacks[i][3]+15) + 0.562;
  4636.                                                     rckch[0]->stretchX = (int)(64*(float)court_zoom);
  4637.                                                     rckch[0]->stretchY = (int)(64*(float)court_zoom);
  4638.  
  4639.                                                     spr_draw(rckch[0], pie_attacks[i][2], pie_attacks[i][3]+15);
  4640.  
  4641.                                                     if ((((px-pie_attacks[i][2])*(px-pie_attacks[i][2])+(py-pie_attacks[i][3])*(py-pie_attacks[i][3])) <= 3000) & (frappe >= 1))
  4642.                                                     {
  4643.                                                         oslSetAlpha(OSL_FX_TINT, RGBA(255,255,0,255));
  4644.                                                         spr_draw(rckch[0], pie_attacks[i][2], pie_attacks[i][3]+15);
  4645.                                                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  4646.                                                         if (frappe == 1)
  4647.                                                         {
  4648.                                                             if ((osl_keys -> held.square) || (osl_keys -> held.circle)) pie_attacks[i][4]--;
  4649.                                                             if (osl_keys -> held.triangle) pie_attacks[i][4]=0;
  4650.                                                             oslPlaySound(paf, 7);
  4651.                                                             ultlvl += 5-diff;
  4652.                                                         }
  4653.                                                     }
  4654.  
  4655.                                                     if (pie_attacks[i][4] <= 0) pie_attacks[i][1]=20;
  4656.                                                 }
  4657.                                                 else
  4658.                                                 {
  4659.                                                     if (pie_attacks[i][1] > 59)
  4660.                                                     {
  4661.                                                         rckch[1] -> stretchX = (90-pie_attacks[i][1])*16;
  4662.                                                         rckch[1] -> stretchY = (int)(0.567 * (rckch[1] -> stretchX));
  4663.                                                         rckch[1] -> angle = ((pie_attacks[i][1]-30)*12);
  4664.                                                     }
  4665.                                                     if (pie_attacks[i][1] == 59)
  4666.                                                     {
  4667.                                                         rckch[1] -> angle = 0;
  4668.                                                         rckch[1] -> stretchX = 480;
  4669.                                                         rckch[1] -> stretchY = 272;
  4670.                                                         rckchscr=1;
  4671.                                                         oslPlaySound(quitter, 5);
  4672.                                                     }
  4673.                                                     spr_draw(rckch[1], 240+random(8)-4, 136+random(8)-4);
  4674.                                                     if (!(pie_attacks[i][1]%36) && (!shielded))
  4675.                                                     {
  4676.                                                         health--;
  4677.                                                         if (putin) health--;
  4678.                                                     }
  4679.                                                 }
  4680.  
  4681.                                                 if (pie_attacks[i][1] <= -180)
  4682.                                                 {
  4683.  
  4684.                                                     oslStopSound(quitter);
  4685.                                                     pie_attacks[i][0]=0;
  4686.                                                     rckchscr=0;
  4687.  
  4688.                                                 }
  4689.  
  4690.                                                 if (py > ((pie_attacks[i][3]-62)*court_zoom))
  4691.                                                 {
  4692.                                                     oslSetAlpha(OSL_FX_DEFAULT, 0);
  4693.                                                     draw_benj(benj, px, py, shielded, shield);
  4694.                                                 }
  4695.  
  4696.  
  4697.                                             }
  4698.                                         else
  4699.                                             {
  4700.                                                 if (pie_attacks[i][1]==20) oslPlaySound(expl_sound2, 6);
  4701.                                                 explode -> stretchX = explode -> stretchY = 20 - pie_attacks[i][1];
  4702.                                                 spr_draw(explode, pie_attacks[i][2], pie_attacks[i][3]);
  4703.                                                 pie_attacks[i][1]--;
  4704.                                                 if (pie_attacks[i][1]==0)
  4705.                                                 {
  4706.                                                     pie_attacks[i][0]=0;
  4707.                                                 }
  4708.  
  4709.                                             }
  4710.                                         }
  4711.  
  4712.  
  4713.                                 break;
  4714.                             }
  4715.  
  4716.                             case 4:
  4717.                             {
  4718.                                 if ((mgcd < 1) && (health > 0))
  4719.                                 {
  4720.                                     if ((pie_attacks[i][1] == diff*166) || (pie_attacks[i][1] == 0))
  4721.                                     {
  4722.                                          oslPauseSound(giygas[giyg_flag%3], -1);
  4723.                                     }
  4724.                                     if (lightsoff)
  4725.                                     {
  4726.                                         oslSetAlpha(OSL_FX_DEFAULT,0);
  4727.                                         oslDrawFillRect(0,0,480,272, RGB(0,0,0));
  4728.  
  4729.  
  4730.  
  4731.                                         draw_benj(benj, px, py, shielded, shield);
  4732.  
  4733.  
  4734.                                         for (u=0; u<(2*diff+2); u++)
  4735.                                         {
  4736.                                             if (pie_attacks[u][0] != 4)
  4737.                                                 {
  4738.                                                     pie_attacks[u][0]=0;
  4739.                                                 }
  4740.                                         }
  4741.                                     }
  4742.                                 }
  4743.  
  4744.                                  if (!pie_attacks[i][1])
  4745.                                      {
  4746.                                         lightsoff=0;
  4747.                                         pie_attacks[i][0]=0;
  4748.                                      }
  4749.  
  4750.                                 pie_attacks[i][1]--;
  4751.                                 break;
  4752.                             }
  4753.  
  4754.                             case 5:
  4755.                             {
  4756.                                 if ((mgcd < 1) && (health > 0))
  4757.                                 {
  4758.                                     if (pie_attacks[i][1] < (px-108))
  4759.                                         {
  4760.                                             spr_draw(psycho, pie_attacks[i][1], abs(32*sin(0.0125*3.14*pie_attacks[i][1]))+8);
  4761.                                         }
  4762.                                     else
  4763.                                         {
  4764.  
  4765.                                             if (pie_attacks[i][2] > 2) pie_attacks[i][2]-=2; else pie_attacks[i][0]=0;
  4766.                                             oslSetAlpha(OSL_FX_ALPHA,pie_attacks[i][2]);
  4767.                                             oslDrawFillRect(0,0,480,272, RGB(255,255,255));
  4768.                                             oslSetAlpha(OSL_FX_DEFAULT, 0);
  4769.                                         }
  4770.                                     pie_attacks[i][1]+=4;
  4771.                                 }
  4772.                                 break;
  4773.                             }
  4774.  
  4775.                             case 6:
  4776.                             {
  4777.                                 if ((mgcd < 1) && (health > 0))
  4778.                                 {
  4779.  
  4780.                                     if (pie_attacks[i][1] < 51)
  4781.                                     {
  4782.                                         if ((pie_attacks[i][1])%4 < 3) oslSetAlpha(OSL_FX_TINT, RGBA(0, 0, 255, 192)); else oslSetAlpha(OSL_FX_DEFAULT, 0);
  4783.                                     }
  4784.                                     else
  4785.                                     {
  4786.                                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  4787.                                     }
  4788.  
  4789.                                     if (pie_attacks[i][1] > 0) spr_draw(visor, pie_attacks[i][2], pie_attacks[i][3]);
  4790.  
  4791.  
  4792.  
  4793.                                     if (px+32 < pie_attacks[i][2])
  4794.                                         {
  4795.                                             pie_attacks[i][2] -= diff;
  4796.                                         }
  4797.                                     else if (px+32 > pie_attacks[i][2])
  4798.                                         {
  4799.                                             pie_attacks[i][2] += diff;
  4800.                                         }
  4801.  
  4802.                                     if (py+48 < pie_attacks[i][3])
  4803.                                         {
  4804.                                             pie_attacks[i][3] -= diff;
  4805.                                         }
  4806.                                     else if (py+48 > pie_attacks[i][3])
  4807.                                         {
  4808.                                             pie_attacks[i][3] += diff;
  4809.                                         }
  4810.  
  4811.  
  4812.                                     pie_attacks[i][1]--;
  4813.                                     oslSetAlpha(OSL_FX_DEFAULT, 0);
  4814.  
  4815.                                     if (!pie_attacks[i][1])
  4816.                                     {
  4817.                                         oslPlaySound(pew, 6);
  4818.                                         if ((pie_attacks[i][2] >= px-16) && (pie_attacks[i][2] <= px+80) && (pie_attacks[i][3] >= py+24) && (pie_attacks[i][3] <= py+72) && (!shielded))
  4819.                                         {
  4820.                                             health -= 2*diff+6;
  4821.                                             if (putin) health -= 3;
  4822.                                             oslPlaySound(benj_sfx[random(5)], 3);
  4823.                                         }
  4824.                                     }
  4825.  
  4826.                                     if (pie_attacks[i][1] < 0)
  4827.                                     {
  4828.                                         explode -> stretchX = explode -> stretchY = 20 + 2*pie_attacks[i][1];
  4829.                                         spr_draw(explode, pie_attacks[i][2], pie_attacks[i][3]);
  4830.  
  4831.                                         if (pie_attacks[i][1] == -10) pie_attacks[i][0]=0;
  4832.                                     }
  4833.                                 }
  4834.                                 break;
  4835.                             }
  4836.  
  4837.  
  4838.  
  4839.                             case 8:
  4840.                             {
  4841.                                 if ((mgcd < 1) && (health > 0))
  4842.                                 {
  4843.                                     if (bulbfell==1)
  4844.                                     {
  4845.                                         oslSetImageTileSize(bulbasaur, 0, 128, 64, 64);
  4846.                                         court_zoom = 0.00192*pie_attacks[i][4] + 0.562;
  4847.                                         bulbasaur->stretchX = (int)(64*(float)court_zoom);
  4848.                                         bulbasaur->stretchY = (int)(64*(float)court_zoom);
  4849.  
  4850.                                         spr_draw(bulbasaur, pie_attacks[i][3], pie_attacks[i][4]);
  4851.                                         pie_attacks[i][4] += 8;
  4852.                                         if (pie_attacks[i][4] >= 136)
  4853.                                         {
  4854.                                             pie_attacks[i][4]=136;
  4855.                                             bulbfell=2;
  4856.                                         }
  4857.  
  4858.                                         if (py > ((pie_attacks[i][4])*court_zoom))
  4859.                                         {
  4860.                                             oslSetAlpha(OSL_FX_DEFAULT, 0);
  4861.                                             draw_benj(benj, px, py, shielded, shield);
  4862.                                         }
  4863.                                     }
  4864.  
  4865.                                     else if (bulbfell==2)
  4866.                                     {
  4867.                                         if (pie_attacks[i][2] != 4)
  4868.                                         {
  4869.                                             oslSetImageTileSize(bulbasaur, bulbfs*64, pie_attacks[i][2]*64, 64, 64);
  4870.                                         }
  4871.                                         else
  4872.                                         {
  4873.  
  4874.                                             if (abs(pie_attacks[i][3]-px) > abs(pie_attacks[i][4]-py))
  4875.                                             {
  4876.                                                 if (pie_attacks[i][3] > px)
  4877.                                                 {
  4878.                                                     oslSetImageTileSize(bulbasaur, 0, 192, 64, 64);
  4879.                                                 }
  4880.                                                 else
  4881.                                                 {
  4882.                                                     oslSetImageTileSize(bulbasaur, 0, 64, 64, 64);
  4883.                                                 }
  4884.                                             }
  4885.                                             else
  4886.                                             {
  4887.                                                 if (pie_attacks[i][4] > py)
  4888.                                                 {
  4889.                                                     oslSetImageTileSize(bulbasaur, 0, 0, 64, 64);
  4890.                                                 }
  4891.                                                 else
  4892.                                                 {
  4893.                                                     oslSetImageTileSize(bulbasaur, 0, 128, 64, 64);
  4894.                                                 }
  4895.                                             }
  4896.                                         }
  4897.  
  4898.                                         court_zoom = 0.00192*pie_attacks[i][4] + 0.562;
  4899.                                         bulbasaur->stretchX = (int)(64*(float)court_zoom);
  4900.                                         bulbasaur->stretchY = (int)(64*(float)court_zoom);
  4901.  
  4902.                                         spr_draw(bulbasaur, pie_attacks[i][3], pie_attacks[i][4]);
  4903.  
  4904.                                         if (!(counter%52) && ((counter%416) < 364))
  4905.                                         {
  4906.                                             pie_attacks[i][2]=random(4);
  4907.                                         }
  4908.                                         else
  4909.                                         {
  4910.                                             switch(pie_attacks[i][2])
  4911.                                             {
  4912.                                                 case 0:
  4913.                                                 if (pie_attacks[i][4] > 128) pie_attacks[i][4] -= 2; else pie_attacks[i][2]=2;
  4914.                                                 break;
  4915.  
  4916.                                                 case 1:
  4917.                                                 if (pie_attacks[i][3] < 400) pie_attacks[i][3] += 2; else pie_attacks[i][2]=3;
  4918.                                                 break;
  4919.  
  4920.                                                 case 2:
  4921.                                                 if (pie_attacks[i][4] < 240) pie_attacks[i][4] += 2; else pie_attacks[i][2]=0;
  4922.                                                 break;
  4923.  
  4924.                                                 case 3:
  4925.                                                 if (pie_attacks[i][3] > 80) pie_attacks[i][3] -= 2; else pie_attacks[i][2]=1;
  4926.                                                 break;
  4927.                                             }
  4928.                                         }
  4929.  
  4930.  
  4931.  
  4932.                                         if ((counter%416) >= 364)
  4933.                                         {
  4934.                                             pie_attacks[i][2]=4;
  4935.  
  4936.                                             if ((counter%416) == 364) oslPlaySound(bulbsfx[random(3)+3], 6);
  4937.  
  4938.                                             if (pie_attacks[i][3] > px) pie_attacks[i][3] -= 4; else pie_attacks[i][3] += 4;
  4939.                                             if (pie_attacks[i][4] > py) pie_attacks[i][4] -= 2; else if (pie_attacks[i][4] < 238) pie_attacks[i][4] += 2;
  4940.  
  4941.                                         }
  4942.  
  4943.  
  4944.  
  4945.                                         if ((((px-pie_attacks[i][3])*(px-pie_attacks[i][3])+(py-pie_attacks[i][4])*(py-pie_attacks[i][4])) <= 64) && (pie_attacks[i][2]==4) && (!shielded))
  4946.                                         {
  4947.                                             if (!stun) stun=200+3*diff;
  4948.                                             pie_attacks[i][2]=random(4);
  4949.                                             health -= diff+1;
  4950.                                             if (putin) health -= diff;
  4951.                                             oslPlaySound(benj_sfx[random(5)], 3);
  4952.                                             counter += (counter%417)+1;
  4953.                                             oslPlaySound(bulbsfx[0],6);
  4954.                                         }
  4955.  
  4956.                                         if ((((px-pie_attacks[i][3])*(px-pie_attacks[i][3])+(py-pie_attacks[i][4])*(py-pie_attacks[i][4])) <= 1500) && (frappe >= 1))
  4957.                                         {
  4958.                                             oslSetAlpha(OSL_FX_TINT, RGBA(255,255,0,255));
  4959.                                             spr_draw(bulbasaur, pie_attacks[i][3], pie_attacks[i][4]);
  4960.                                             ultlvl += 5-diff;
  4961.                                             oslSetAlpha(OSL_FX_DEFAULT, 0);
  4962.                                             if (frappe == 1)
  4963.                                             {
  4964.                                                 if ((osl_keys -> held.square) || (osl_keys -> held.circle)) pie_attacks[i][1]--;
  4965.                                                 if (osl_keys -> held.triangle) pie_attacks[i][4]=0;
  4966.                                                 oslPlaySound(paf, 6);
  4967.                                             }
  4968.                                         }
  4969.  
  4970.                                         bulbfs=(counter%20)/5;
  4971.  
  4972.                                         if (py > ((pie_attacks[i][4])*court_zoom))
  4973.                                         {
  4974.                                             oslSetAlpha(OSL_FX_DEFAULT, 0);
  4975.                                             draw_benj(benj, px, py, shielded, shield);
  4976.                                         }
  4977.                                     }
  4978.  
  4979.                                     if (pie_attacks[i][1] <= 0)
  4980.                                     {
  4981.                                         bulbfell=0;
  4982.                                         if (!pie_attacks[i][1]) oslPlaySound(bulbsfx[2], 6);
  4983.                                         pie_attacks[i][2]=4;
  4984.                                         pie_attacks[i][1]--;
  4985.  
  4986.                                         if (pie_attacks[i][1] == -35)
  4987.                                         {
  4988.                                             pie_attacks[i][0]=0;
  4989.                                         }
  4990.  
  4991.                                         bulbfs=((abs(pie_attacks[i][1]))%36)/9;
  4992.                                         oslSetImageTileSize(bulbasaur, bulbfs*64, pie_attacks[i][2]*64, 64, 64);
  4993.                                         spr_draw(bulbasaur, pie_attacks[i][3], pie_attacks[i][4]);
  4994.  
  4995.                                     }
  4996.  
  4997.                                 }
  4998.                                 break;
  4999.  
  5000.                             case 9:
  5001.                             {
  5002.  
  5003.                                 if ((mgcd <1) && (!lightsoff))
  5004.                                 {
  5005.                                     if (pie_attacks[i][1] == 120*diff+120)
  5006.                                     {
  5007.  
  5008.  
  5009.                                         for(u=0; u<3; u++)
  5010.                                         {
  5011.                                             meteors[u][1] = random(176);
  5012.                                             if (pie_attacks[i][2]) meteors[u][0]=-48; else meteors[u][0]=480;
  5013.                                             meteors[u][2] = random(3)+1;
  5014.                                         }
  5015.  
  5016.                                         oslPlaySound(meteor_fall, 5);
  5017.                                     }
  5018.                                     else
  5019.                                     {
  5020.                                         if (oslGetSoundChannel(meteor_fall) != 5) oslPlaySound(meteor_fall, 5);
  5021.  
  5022.                                         for(u=0; u<3; u++)
  5023.                                         {
  5024.  
  5025.                                             oslSetImageTileSize(meteor, u*48, 0, 48, 48);
  5026.                                             meteor -> stretchX = meteor -> stretchY = 12*meteors[u][2];
  5027.                                             spr_draw(meteor, meteors[u][0], meteors[u][1]);
  5028.  
  5029.                                             if (pie_attacks[i][2]) meteors[u][0]+=random(9)+1; else meteors[u][0]-=random(9)+1;
  5030.  
  5031.                                             meteors[u][1]+=4;
  5032.  
  5033.                                             if ((meteors[u][1] < pie_attacks[i][3]+32) && (meteors[u][1] >= pie_attacks[i][3]))
  5034.                                             {
  5035.                                                 explode -> stretchX = explode -> stretchY = 48;
  5036.                                                 spr_draw(explode, meteors[u][0], meteors[u][1]);
  5037.                                                 oslPlaySound(expl_sound2, 4);
  5038.                                             }
  5039.  
  5040.                                             if (meteors[u][1] >= pie_attacks[i][3]+32)
  5041.                                             {
  5042.                                                 if (((px-meteors[u][0])*(px-meteors[u][0])+(py+32-meteors[u][1])*(py+32-meteors[u][1]) <= 196) && (!shielded))
  5043.                                                 {
  5044.                                                     if (oslGetSoundChannel(expl_sound2) != 7) oslPlaySound(expl_sound2, 7);
  5045.                                                     health -= round;
  5046.                                                     if (putin) health -= round;
  5047.                                                     oslPlaySound(benj_sfx[random(5)], 3);
  5048.                                                 }
  5049.  
  5050.                                                 if (pie_attacks[i][1] <= 0) meteors[u][2]=0; else meteors[u][2] = random(3)+1;
  5051.                                                 meteors[u][1]=random(176);
  5052.                                                 if (pie_attacks[i][2]) meteors[u][0]=-48; else meteors[u][0]=480;
  5053.  
  5054.                                             }
  5055.                                         }
  5056.                                     }
  5057.  
  5058.                                     pie_attacks[i][1]--;
  5059.  
  5060.                                     if (pie_attacks[i][1] == 0)
  5061.                                         {
  5062.                                             oslStopSound(meteor_fall);
  5063.                                         }
  5064.  
  5065.                                     if (meteors[0][2]+meteors[1][2]+meteors[2][2] == 0) pie_attacks[i][0]=0;
  5066.                                     }
  5067.                                 }
  5068.                                 break;
  5069.  
  5070.                             case 10:
  5071.                             {
  5072.                                 if ((mgcd <1) && (!lightsoff))
  5073.                                 {
  5074.                                     if (!shielded)
  5075.                                     {
  5076.  
  5077.                                         if (pie_attacks[i][1] == 96)
  5078.                                         {
  5079.                                             stunning->stretchX = stunning->stretchY = 24;
  5080.                                             oslPlaySound(stun_sound, 3);
  5081.                                         }
  5082.  
  5083.  
  5084.                                         for (u=0; u<135; u++)
  5085.                                         {
  5086.                                             oslSetAlpha(OSL_FX_TINT, RGBA(0,255,255,192));
  5087.                                             if (stunning->stretchX > 4) spr_draw(stunning, (u%15)*32+12, ((int)(u/15))*32+12);
  5088.                                             oslSetAlpha(OSL_FX_DEFAULT, 0);
  5089.                                         }
  5090.                                     }
  5091.  
  5092.                                     pie_attacks[i][1]--;
  5093.  
  5094.                                     if (!((pie_attacks[i][1])%8))
  5095.                                     {
  5096.                                         if (stunning->stretchX > 4)
  5097.                                         {
  5098.                                             stunning->stretchX -= 4;
  5099.                                             stunning->stretchY -= 4;
  5100.                                         }
  5101.                                     }
  5102.  
  5103.                                     if (!(pie_attacks[i][1]))
  5104.                                     {
  5105.                                         pie_attacks[i][0]=0;
  5106.                                     }
  5107.                                 }
  5108.                                 break;
  5109.                             }
  5110.  
  5111.                             case 11:
  5112.                             {
  5113.                                 if ((mgcd <1) && (!lightsoff) && (health > 0))
  5114.                                 {
  5115.                                     if (pie_attacks[i][2] > 0)
  5116.                                     {
  5117.                                         oslSetImageTileSize(psis, ((int)(counter%18)/6)*16, 0, 16, 32);
  5118.                                         oslSetImageRotCenter(psis);
  5119.  
  5120.                                         psis -> angle = pie_attacks[i][1];
  5121.  
  5122.                                         court_zoom = 0.00192*(py+24) + 0.562;
  5123.                                         psis->stretchX = (int)(16*(float)court_zoom);
  5124.                                         psis->stretchY = (int)(32*(float)court_zoom);
  5125.  
  5126.                                         spr_draw(psis, px+32+pie_attacks[i][2]*cos(pie_attacks[i][1]*3.14/180), py+48+pie_attacks[i][2]*sin(pie_attacks[i][1]*3.14/180));
  5127.                                         spr_draw(psis, px+32+pie_attacks[i][2]*cos((pie_attacks[i][1]+180)*3.14/180), py+48+pie_attacks[i][2]*sin((pie_attacks[i][1]+180)*3.14/180));
  5128.  
  5129.                                         pie_attacks[i][1] += 16;
  5130.  
  5131.                                         if (pie_attacks[i][1] > 360)
  5132.                                         {
  5133.                                             pie_attacks[i][1] = pie_attacks[i][1]%360;
  5134.                                             pie_attacks[i][2]-=2;
  5135.                                         }
  5136.                                     }
  5137.                                     else if (pie_attacks[i][2] <= 0)
  5138.                                     {
  5139.                                             explode -> stretchX = explode -> stretchY = 40 + 4*pie_attacks[i][2];
  5140.                                             spr_draw(explode, px, py);
  5141.  
  5142.                                             if (!(pie_attacks[i][2])) oslPlaySound(expl_sound, 6);
  5143.  
  5144.                                             if ((!shielded) && (counter%2))
  5145.                                             {
  5146.                                                 health -= diff;
  5147.                                                 if (putin) health -= diff;
  5148.                                                 oslPlaySound(benj_sfx[random(5)], 3);
  5149.                                             }
  5150.                                             pie_attacks[i][2]--;
  5151.  
  5152.                                             if (pie_attacks[i][2] == -10)
  5153.                                             {
  5154.                                                 oslStopSound(psis_sfx);
  5155.                                                 pie_attacks[i][0]=0;
  5156.                                             }
  5157.                                     }
  5158.                                 }
  5159.                                 break;
  5160.                             }
  5161.  
  5162.                             case 7:
  5163.                             {
  5164.                                 if ((mgcd < 1) && (health > 0) && (!lightsoff))
  5165.                                 {
  5166.                                     if (!(pie_attacks[i][1]))
  5167.                                     {
  5168.                                         oslSetImageTileSize(recipe,0, 0, 32, 136);
  5169.                                     }
  5170.                                     else
  5171.                                     {
  5172.                                         oslSetImageTileSize(recipe, 32, 0, 32, 136);
  5173.                                     }
  5174.  
  5175.                                     if (pie_attacks[i][2] > 0)
  5176.                                     {
  5177.                                         oslSetAlpha(OSL_FX_ALPHA, 128);
  5178.                                         oslDrawFillRect(pie_attacks[i][4], 0, (pie_attacks[i][1])?480:0, 272, RGB(0, 0, 0));
  5179.  
  5180.                                         for(u=0; u<4; u++)
  5181.                                         {
  5182.                                             spr_draw(recipe, pie_attacks[i][4]+((pie_attacks[i][1])?0:32), u*136-(global_fr%137));
  5183.                                         }
  5184.  
  5185.                                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  5186.  
  5187.                                         if (((pie_attacks[i][1]) && (pie_attacks[i][2] <= (480-pie_attacks[i][3]))) ||
  5188.                                                 ((!(pie_attacks[i][1])) && (pie_attacks[i][2] <= pie_attacks[i][3])))
  5189.                                         {
  5190.  
  5191.  
  5192.                                             if (((pie_attacks[i][1]) && (px+32 >= pie_attacks[i][4])) || (!(pie_attacks[i][1]) && (px+32 <= pie_attacks[i][4])))
  5193.                                             {
  5194.                                                 if (oslGetSoundChannel(mouth_sfx[0]) != 2) oslPlaySound(mouth_sfx[0], 2);
  5195.                                                 oslDrawFillRect(0, 0, 480, 272, RGB(0, 0, 0));
  5196.                                                 spr_draw(mouth, 240, 136);
  5197.  
  5198.                                                 pie_attacks[i][2]++;
  5199.                                                 mouth -> stretchX += 6;
  5200.                                                 mouth -> stretchY = 1.63 * mouth -> stretchX;
  5201.  
  5202.                                                 if (mouth -> stretchY >= 420)
  5203.                                                 {
  5204.                                                     if (oslGetSoundChannel(mouth_sfx[1]) != 2) oslPlaySound(mouth_sfx[1], 2);
  5205.                                                     oslDrawFillRect(0, 0, 480, 272, RGB(255, 0, 0));
  5206.                                                 }
  5207.  
  5208.                                                 if (mouth -> stretchY >= 450)
  5209.                                                 {
  5210.                                                     health -= 2*diff+4;
  5211.                                                     if (putin) health -= 2;
  5212.                                                     pie_attacks[i][0]=0;
  5213.                                                     mouth -> stretchX = 10;
  5214.                                                     mouth -> stretchY = 16;
  5215.                                                 }
  5216.  
  5217.                                             }
  5218.                                         else
  5219.                                             {
  5220.                                                 if (!(pie_attacks[i][1]))
  5221.                                                 {
  5222.                                                     pie_attacks[i][4]--;
  5223.  
  5224.                                                 }
  5225.                                                 else
  5226.                                                 {
  5227.                                                     pie_attacks[i][4]++;
  5228.  
  5229.                                                 }
  5230.                                             }
  5231.                                         }
  5232.                                         else
  5233.                                         {
  5234.                                             if (!(pie_attacks[i][1]))
  5235.                                             {
  5236.                                                 if (pie_attacks[i][4] < pie_attacks[i][3]) pie_attacks[i][4]++;
  5237.                                                 if (pie_attacks[i][4] > 512)
  5238.                                                 {
  5239.                                                     darkness=0;
  5240.                                                     pie_attacks[i][0]=0;
  5241.                                                 }
  5242.                                             }
  5243.                                             else
  5244.                                             {
  5245.                                                 if (pie_attacks[i][4] > pie_attacks[i][3]) pie_attacks[i][4]--;
  5246.                                                 if (pie_attacks[i][4] < -64)
  5247.                                                 {
  5248.                                                     darkness=0;
  5249.                                                     pie_attacks[i][0]=0;
  5250.                                                 }
  5251.                                             }
  5252.                                         }
  5253.                                         pie_attacks[i][2]--;
  5254.  
  5255.  
  5256.                                     }
  5257.                                     else
  5258.                                     {
  5259.                                         darkness=0;
  5260.                                         pie_attacks[i][0]=0;
  5261.                                     }
  5262.  
  5263.                                     if (pie_attacks[i][2] <= 0)
  5264.                                     {
  5265.                                         pie_attacks[i][0]=0;
  5266.                                     }
  5267.                                 }
  5268.                                 break;
  5269.                             }
  5270.  
  5271.  
  5272.                             }
  5273.                         }
  5274.                     }
  5275.                 }
  5276.  
  5277.                 if (oslGetSoundChannel(minigametime) != 7 && (oslGetSoundChannel(tvnoisesound) != 1) && (!paused))
  5278.                     {
  5279.                         tvnoise_ev=random((3800/(100*round*diff))*pie_ent.pie_hp+4200);
  5280.                     }
  5281.  
  5282.                 if ((tvnoise_ev <= 4000) && (tvnoise_ev > 3940) && (round==2)  && (health>0) && (!lightsoff) && (!paused))
  5283.                 {
  5284.                     i=random(4);
  5285.                     oslSetBilinearFilter(1);
  5286.                     spr_draw(tvnoise[i], 0, 0);
  5287.                     oslSetBilinearFilter(0);
  5288.                     if (oslGetSoundChannel(tvnoisesound) != 1) oslPlaySound(tvnoisesound, 1);
  5289.                     tvnoise_ev--;
  5290.                 }
  5291.                 else
  5292.                 {
  5293.                     oslStopSound(tvnoisesound);
  5294.                 }
  5295.             }
  5296.  
  5297.             if ((pie_ent.pie_hp) && (!mgcd))
  5298.             {
  5299.                 reddv = (-0.64/(round*diff))*pie_ent.pie_hp+64;
  5300.  
  5301.                 oslSetAlpha(OSL_FX_ALPHA, (int)(reddv*1.5));
  5302.                 oslDrawFillRect(0, 0, 480, 272, RGB(255, 0, 0));
  5303.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  5304.             }
  5305.  
  5306.  
  5307.  
  5308.             if ((health < 1) || (pie_ent.pie_hp < 1))
  5309.             {
  5310.                 oslStopSound(psis_sfx);
  5311.                 ball_ent.speed_v=0;
  5312.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  5313.                 if (pie_ent.pie_hp < 1)
  5314.                 {
  5315.                     if (!ko_frame)
  5316.                     {
  5317.                         a=pie_ent.pie_x-128+random(256);
  5318.  
  5319.                         for (i=0; i<8; i++)
  5320.                             {
  5321.                                 for (j=0; j<5; j++)
  5322.                                 {
  5323.                                     pie_attacks[i][j]=0;
  5324.                                 }
  5325.                                 bulbfell=0;
  5326.                             }
  5327.                     }
  5328.  
  5329.                     mort=1;
  5330.  
  5331.  
  5332.                     if (round==2)
  5333.                     {
  5334.                         if (!(ko_frame%9))
  5335.                         {
  5336.                             oslPlaySound(expl_sound, 6);
  5337.                             kx=pie_ent.pie_x-128+random(256);
  5338.                             ky=random(136);
  5339.                         }
  5340.  
  5341.                         if ((ko_frame%6) < 3)
  5342.                         {
  5343.                             explode -> stretchX = 64;
  5344.                             explode -> stretchY = 96;
  5345.                             spr_draw(explode, kx, ky);
  5346.                         }
  5347.                         else
  5348.                         {
  5349.                             explode -> stretchX = 32;
  5350.                             explode -> stretchY = 48;
  5351.                             spr_draw(explode, kx+16, ky+24);
  5352.                         }
  5353.                     }
  5354.                 }
  5355.  
  5356.                 if (ko_frame == 0)
  5357.                 {
  5358.                     oslPlaySound(ko_sfx, 7);
  5359.                     oslPlaySound(expl_sound, 6);
  5360.                     u=0;
  5361.                 }
  5362.  
  5363.                 if (health < 1)
  5364.                 {
  5365.                     if (ko_frame < 60)
  5366.                     {
  5367.                         if ((ko_frame%6) < 3)
  5368.                         {
  5369.                             explode -> stretchX = 64;
  5370.                             explode -> stretchY = 96;
  5371.                             spr_draw(explode, px, py);
  5372.                         }
  5373.                         else
  5374.                         {
  5375.                             explode -> stretchX = 32;
  5376.                             explode -> stretchY = 48;
  5377.                             spr_draw(explode, px+16, py+24);
  5378.                         }
  5379.                     }
  5380.                 }
  5381.  
  5382.  
  5383.                 if (ko_frame < 25)
  5384.                 {
  5385.                     oslSetImageTileSize(ko,0,0,120,96);
  5386.                     spr_draw(ko, (int)(9.6*ko_frame-120), 88);
  5387.                 }
  5388.  
  5389.                 if ((ko_frame >= 25) && (ko_frame <= 50))
  5390.                 {
  5391.                     oslSetImageTileSize(ko,0,0,120,96);
  5392.                     spr_draw(ko, 120, 88);
  5393.                     oslSetImageTileSize(ko,120,0,120,96);
  5394.                     spr_draw(ko, (int)(-9.6*ko_frame+720), 88);
  5395.                 }
  5396.  
  5397.                 if (ko_frame > 50)
  5398.                 {
  5399.                     oslSetImageTileSize(ko,0,0,240,96);
  5400.                     spr_draw(ko, 120, 88);
  5401.                 }
  5402.  
  5403.                 if (ko_frame >= 140) quit=1;
  5404.  
  5405.  
  5406.                 ko_frame++;
  5407.             }
  5408.  
  5409.             if (health < 0) health=0;
  5410.  
  5411.             if (!mgcd)
  5412.             {
  5413.                     oslSetAlpha(OSL_FX_DEFAULT, 0);
  5414.                     oslSetImageTileSize(numberz,160,0,16,16);
  5415.                     spr_draw(numberz, 2, 2);
  5416.  
  5417.                     u=random(5);
  5418.  
  5419.                     oslSetImageTileSize(ultgauge,0,0,64,8);
  5420.                     spr_draw(ultgauge, 2+((round==2)?u:0), (round==2)?20+u:21);
  5421.                     oslSetImageTileSize(ultgauge,(int)((ultlvl/60)*6),9,6,6);
  5422.                     spr_draw(ultgauge, 69+((round==2)?u:0), (round==2)?21+u:22);
  5423.                     spr_draw(shlgauge, 2+((round==2)?u:0), (round==2)?28+u:30);
  5424.  
  5425.                     if (ultlvl > 1) oslDrawFillRect(4+((round==2)?u:0), (round==2)?22+u:23, ultlvl%60+4+((round==2)?u:0), (round==2)?25+u:26, RGB(0,0,255));
  5426.                     if (shldlvl > 1) oslDrawFillRect(4+((round==2)?u:0), (round==2)?31+u:32, shldlvl+4+((round==2)?u:0), (round==2)?34+u:35, RGB(255,150,255));
  5427.  
  5428.                     if ((ultlvl%60) > 15)
  5429.                     {
  5430.                         if ((ultrectshine+16) <= ultlvl%60)
  5431.                         {
  5432.                             oslDrawFillRect(ultrectshine+((round==2)?u:0), (round==2)?22+u:23, ultrectshine+13+((round==2)?u:0), (round==2)?25+u:26, RGB(0,255,255));
  5433.                         }
  5434.                         else
  5435.                         {
  5436.                             oslDrawFillRect(ultrectshine+((round==2)?u:0), (round==2)?22+u:23, ultlvl%60+3+((round==2)?u:0), (round==2)?25+u:26, RGB(0,255,255));
  5437.                         }
  5438.  
  5439.                         if ((ultrectshine+8) <= ultlvl%60)
  5440.                         {
  5441.                             oslDrawFillRect(ultrectshine+4+((round==2)?u:0), (round==2)?22+u:23, ultrectshine+9+((round==2)?u:0), (round==2)?25+u:26, RGB(255,255,255));
  5442.                         }
  5443.                         else
  5444.                         {
  5445.                             oslDrawFillRect(ultrectshine+4+((round==2)?u:0), (round==2)?22+u:23, ultlvl%60+3+((round==2)?u:0), (round==2)?25+u:26, RGB(255,255,255));
  5446.                         }
  5447.  
  5448.                         ultrectshine++;
  5449.  
  5450.                         if (ultrectshine > ultlvl%60)
  5451.                         {
  5452.                             ultrectshine=0;
  5453.                         }
  5454.                     }
  5455.  
  5456.                     i=random(15);
  5457.  
  5458.                     u=18;
  5459.  
  5460.                     if (health < 25) j=16; else j=0;
  5461.  
  5462.                         if (health / 100)
  5463.                         {
  5464.                             oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
  5465.                             spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  5466.                             u += 16;
  5467.                         }
  5468.  
  5469.                         if (health > 9)
  5470.                         {
  5471.                             if (round==2)
  5472.                                 {
  5473.                                     if (i<12)
  5474.                                         {
  5475.                                             oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
  5476.                                         }
  5477.                                     else
  5478.                                         {
  5479.                                             oslSetImageTileSize(numberz,random(128),j,16,16);
  5480.                                         }
  5481.                                 }
  5482.                             else oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
  5483.                         spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  5484.                         u += 16;
  5485.                         }
  5486.  
  5487.                         if (round==2)
  5488.                             {
  5489.                                 if (i<12)
  5490.                                     {
  5491.                                         oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
  5492.                                     }
  5493.                                 else
  5494.                                     {
  5495.                                         oslSetImageTileSize(numberz,random(128),j,16,16);
  5496.                                     }
  5497.                             }
  5498.                         else oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
  5499.                         spr_draw(numberz, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
  5500.                 }
  5501.  
  5502.  
  5503.  
  5504.             if ((paused) && (health))
  5505.             {
  5506.                 oslSetAlpha(OSL_FX_ALPHA,224);
  5507.                 oslDrawFillRect(0,0,480,272, RGB(0,8,0));
  5508.                 spr_draw(paused_gfx, 240, 136);
  5509.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  5510.             }
  5511.  
  5512.             if ((!(counter%6)) && (shldlvl<60) && (!shielded) && (!paused)) shldlvl++;
  5513.  
  5514.  
  5515.             if (counter < 256)
  5516.             {
  5517.                 if (counter < 128)
  5518.                 {
  5519.                     oslSetImageTileSize(premess,0,0,256,64);
  5520.  
  5521.                     if (counter < 32) premess -> stretchY = counter*2;
  5522.                     else if (counter > 96) premess -> stretchY = 128-counter*2;
  5523.                     else premess -> stretchY = 64;
  5524.  
  5525.                     spr_draw(premess, 112, 136-(premess -> stretchY)/2);
  5526.                 }
  5527.  
  5528.                 else if (counter >= 128)
  5529.                 {
  5530.                     oslSetImageTileSize(premess,0,64,256,64);
  5531.                     if (counter < 160) premess -> stretchY = (counter-128)*2;
  5532.                     else if (counter > 224) premess -> stretchY = 256-counter*2;
  5533.                     else premess -> stretchY = 64;
  5534.  
  5535.                     spr_draw(premess, 112, 136-(premess -> stretchY)/2);
  5536.                 }
  5537.  
  5538.                 if (counter==255) oslDeleteImage(premess);
  5539.             }
  5540.  
  5541.  
  5542.  
  5543.             if ((nbp==1) && (DEBUG))
  5544.             {
  5545.                 if (osl_keys->held.R)
  5546.                 {
  5547.                     for (i=0; i<16; i++)
  5548.                     {
  5549.                         sprintf(buffer,"%d",(i<15)?att_cooldowns[i]:(int)reddv);
  5550.                         u = oslGetStringWidth(buffer);
  5551.  
  5552.                         oslSetTransparentColor(RGB(255,0,255));
  5553.                         oslSetBkColor(RGB(255,0,255));
  5554.                         oslSetTextColor(RGB(255, 255, 255));
  5555.                         oslDrawString(480-u, i*12, buffer);
  5556.                     }
  5557.                 }
  5558.  
  5559.  
  5560.                 if (osl_keys->held.L)
  5561.                 {
  5562.                     for (i=0; i<10; i++)
  5563.                     {
  5564.                         sprintf(buffer,"%d", (i<8)?pie_attacks[i][0]:
  5565.                                                         (i==8)?(pie_ent.pie_hp):
  5566.                                                                 (int)(-2.55/(round*diff)*(pie_ent.pie_hp)+255));
  5567.                         u = oslGetStringWidth(buffer);
  5568.  
  5569.                         oslSetTransparentColor(RGB(255,0,255));
  5570.                         oslSetBkColor(RGB(255,0,255));
  5571.                         oslSetTextColor(RGB(255, 255, 255));
  5572.                         oslDrawString(480-u, i*12, buffer);
  5573.                     }
  5574.                 }
  5575.             }
  5576.  
  5577.             if ((att_ch_timer < 80) && (nbp==2) && (health > 0) && (pie_ent.pie_hp > 0) && (!paused))
  5578.             {
  5579.                 spr_draw(attch, 32, 33);
  5580.                 spr_draw(cp2, 40 + cursor2p*32, 68);
  5581.                 for (i=0; i<15; i++)
  5582.                 {
  5583.                     if (att_cooldowns[i] > 1)
  5584.                     {
  5585.                         sprintf(buffer, "%d", att_cooldowns[i]/60);
  5586.                         oslSetAlpha(OSL_FX_ALPHA, 128);
  5587.                         oslDrawFillRect(32+i*32, 33, 32+(i+1)*32, 67, RGB(1, 1, 1));
  5588.                         oslSetAlpha(OSL_FX_DEFAULT, 0);
  5589.                         if (i < 12) oslDrawString(36+i*32, 42, buffer);
  5590.                         if ((i==12) && (pie_ent.pie_hp > 25*round*diff) && (ulted == 0) && (att_cooldowns[12] > 1))
  5591.                         {
  5592.                             oslDrawLine(32+i*32, 33, 32+(i+1)*32, 66, RGB(255, 0, 0));
  5593.                         }
  5594.                         if ((i==13) && (pie_ent.pie_hp > 10*round*diff) && (ulted != 1) && (att_cooldowns[13] > 1))
  5595.                         {
  5596.                             oslDrawLine(32+i*32, 33, 32+(i+1)*32, 66, RGB(255, 0, 0));
  5597.                         }
  5598.                     }
  5599.                 }
  5600.             }
  5601.  
  5602.             if (nbp == 2)
  5603.             {
  5604.                 oslSetAlpha(OSL_FX_ALPHA, 255-(global_fr%64)*4);
  5605.                 oslDrawString(270, 2, "OTHER MORTAL, USE L OR R TO ATTACK!");
  5606.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  5607.             }
  5608.  
  5609.             oslEndDrawing();
  5610.             }
  5611.  
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617.         oslEndFrame();
  5618.         skipframe=oslSyncFrame();
  5619.  
  5620.         if (mgcd==100)
  5621.             {
  5622.                 u=random(6);
  5623.                 check = sceIoDopen("flash1:/");
  5624.  
  5625.                 while ((check < 0) && ((u==0) || (u==2)))
  5626.                 {
  5627.                     u=random(6);
  5628.                 }
  5629.  
  5630.  
  5631.                 switch(u)
  5632.                 {
  5633.                     case 0:
  5634.                     i=sonicexe(diff);
  5635.                     break;
  5636.  
  5637.                     case 1:
  5638.                     i=mincer(diff);
  5639.                     break;
  5640.  
  5641.                     case 2:
  5642.                     i=shoot_teevees(diff, &health, round);
  5643.                     break;
  5644.  
  5645.                     case 3:
  5646.                     i=flappy_cacodemon(diff);
  5647.                     break;
  5648.  
  5649.                     case 4:
  5650.                     i=love_boat(diff);
  5651.                     break;
  5652.  
  5653.                     case 5:
  5654.                     i=sonicexe2(diff);
  5655.                     break;
  5656.                 }
  5657.                 if (i)
  5658.                     {
  5659.                      oslPlaySound(giygas[giyg_flag%3], 0);
  5660.  
  5661.                     } else health=0;
  5662.  
  5663.  
  5664.                 for (i=0; i<8; i++)
  5665.                     {
  5666.                         for (j=0; j<5; j++)
  5667.                         {
  5668.                             pie_attacks[i][j]=0;
  5669.                         }
  5670.                         bulbfell=0;
  5671.                     }
  5672.  
  5673.                 pie_ent.pie_facemode=0;
  5674.                 mgcd=0;
  5675.                 mouth -> stretchX = 10;
  5676.                 if (diff != 3) a=diff; else a=2;
  5677.                 ball_ent = apply_impulse(ball_ent, random(2)?a:-1*a, random(2)?a:-1*a, (180-15*frappe)*3.14/180);
  5678.                 frappe=-1;
  5679.                 rckchscr=0;
  5680.             }
  5681.  
  5682.  
  5683.  
  5684.     }
  5685.  
  5686.  
  5687.     if ((mort==1) && (round==2))
  5688.     {
  5689.         oslStopSound(tvnoisesound);
  5690.         oslDeleteSound(paf);
  5691.         paf = oslLoadSoundFile("./sfx/sfx-0029.wav", OSL_FMT_NONE);
  5692.  
  5693.         oslPlaySound(tvnoisesound, 0);
  5694.  
  5695.         for(i=0; i<420; i++)
  5696.         {
  5697.             oslStartDrawing();
  5698.             oslDrawFillRect(0, 0, 480, 272, RGB(0, 0, 0));
  5699.                 u=random(4);
  5700.                 oslSetBilinearFilter(1);
  5701.                 spr_draw(tvnoise[u], 0, 0);
  5702.                 spr_draw(tvnoise[u], random(480), random(272));
  5703.                 spr_draw(tvnoise[u], random(480)-240, random(272)-136);
  5704.                 spr_draw(tvnoise[u], random(240)-120, random(136)-68);
  5705.                 oslSetBilinearFilter(0);
  5706.             oslEndDrawing();
  5707.             oslWaitVSync();
  5708.             oslSwapBuffers();
  5709.         }
  5710.  
  5711.         oslStopSound(tvnoisesound);
  5712.         oslPlaySound(paf, 0);
  5713.  
  5714.         for(i=0; i<=135; i+=2)
  5715.         {
  5716.             oslStartDrawing();
  5717.             oslDrawFillRect(0, 0, 480, 272, RGB(0, 0, 0));
  5718.             oslDrawFillRect(0, i, 480, 272-i, RGB(255, 255, 255));
  5719.             oslEndDrawing();
  5720.             oslWaitVSync();
  5721.             oslSwapBuffers();
  5722.         }
  5723.  
  5724.         fadeout(RGB(0, 0, 0));
  5725.     }
  5726.  
  5727.  
  5728.     for (i=0; i<3; i++) oslDeleteSound(giygas[i]);
  5729.  
  5730.     for (i=0; i<4; i++) oslDeleteSound(dictators_sfx[i]);
  5731.  
  5732.     for (i=0; i<5; i++) oslDeleteImage(tvnoise[i]);
  5733.  
  5734.     for (i=0; i<7; i++) oslDeleteSound(bulbsfx[i]);
  5735.  
  5736.     for (i=0; i<11; i++) oslDeleteSound(benj_sfx[i]);
  5737.  
  5738.     oslDeleteSound(tvnoisesound);
  5739.     oslDeleteImage(giyg_bg);
  5740.     oslDeleteSound(ko_sfx);
  5741.     oslDeleteSound(quitter);
  5742.     oslDeleteSound(pew);
  5743.     oslDeleteSound(paf);
  5744.     oslDeleteSound(psis_sfx);
  5745.     oslDeleteImage(numberz);
  5746.     oslDeleteImage(starsky);
  5747.     oslDeleteImage(lightning);
  5748.     oslDeleteImage(pie);
  5749.     oslDeleteImage(sleepwell);
  5750.     oslDeleteImage(ko);
  5751.     oslDeleteImage(explode);
  5752.     oslDeleteImage(ball_gfx);
  5753.     oslDeleteImage(ball_shad);
  5754.     oslDeleteImage(mgswirl);
  5755.     oslDeleteImage(powerball);
  5756.     oslDeleteSound(minigametime);
  5757.     oslDeleteSound(expl_sound);
  5758.     oslDeleteSound(expl_sound2);
  5759.     oslDeleteSound(meteor_fall);
  5760.     oslDeleteSound(stun_sound);
  5761.     oslDeleteSound(elec);
  5762.     oslDeleteSound(thunder);
  5763.     oslDeleteSound(whine);
  5764.     oslDeleteSound(mouth_sfx[0]);
  5765.     oslDeleteSound(mouth_sfx[1]);
  5766.     oslDeleteSound(bounce);
  5767.     oslDeleteImage(rckch[0]);
  5768.     oslDeleteImage(rckch[1]);
  5769.     oslDeleteImage(psycho);
  5770.     oslDeleteImage(paused_gfx);
  5771.     oslDeleteImage(ultgauge);
  5772.     oslDeleteImage(shlgauge);
  5773.     oslDeleteImage(visor);
  5774.     oslDeleteImage(bulbasaur);
  5775.     oslDeleteImage(recipe);
  5776.     oslDeleteImage(shield);
  5777.     oslDeleteImage(meteor);
  5778.     oslDeleteImage(stunning);
  5779.     oslDeleteImage(juche);
  5780.     oslDeleteImage(psis);
  5781.     oslDeleteImage(dictators);
  5782.     oslDeleteImage(mouth);
  5783.     oslDeleteImage(star);
  5784.     oslDeleteImage(suppo_gfx);
  5785.     oslDeleteImage(attch);
  5786.     oslDeleteImage(cp2);
  5787.  
  5788.     return mort;
  5789. }
  5790.  
  5791. void text(int nbt)
  5792. {
  5793.     int frame=0, k;
  5794.     const char *texts[12] = {"YOUR HEAD IS ALREADY OFF", "YOU WON'T SEE THE MOCK TURTLE", "MOTHER", "YOU'RE NOT EVEN TRYING", "AEIOU", "UNHAPPY UNBIRTHDAY", "YOU'RE LATE YOU'RE LATE YOU'RE LATE",
  5795.                              "NO TIME TO SAY GOODBYE", "PAINTING YOUR BOWELS RED", "HOW DOTH THE LITTLE OF YOU LIVE", "I HAVE A VERY GOOD ADVICE", "THE WALRUS ATE THE CARPENTER"};
  5796.  
  5797.     OSL_SOUND *wind = oslLoadSoundFile("./sfx/sfx-0019.wav", OSL_FMT_NONE);
  5798.  
  5799.     k = oslGetStringWidth(texts[nbt]);
  5800.  
  5801.     oslPlaySound(wind, 0);
  5802.  
  5803.     while(frame<282)
  5804.     {
  5805.         oslStartDrawing();
  5806.         oslDrawFillRect(0,0,480,272, RGB(0, 0, 0));
  5807.  
  5808.  
  5809.         if (frame < 82)
  5810.         {
  5811.             oslSetTextColor(RGB(frame*3, frame*3, frame*3));
  5812.             oslDrawString((480 - k)/2, 130, texts[nbt]);
  5813.         }
  5814.         if ((frame >= 82) && (frame <= 200))
  5815.         {
  5816.             oslSetTextColor(RGB(255, 255, 255));
  5817.             oslDrawString((480 - k)/2, 130, texts[nbt]);
  5818.         }
  5819.         else if (frame > 200)
  5820.         {
  5821.             oslSetTextColor(RGB((282-frame)*3, (282-frame)*3, (282-frame)*3));
  5822.             oslDrawString((480 - k)/2, 130, texts[nbt]);
  5823.         }
  5824.         oslEndDrawing();
  5825.         oslSwapBuffers();
  5826.         oslWaitVSync();
  5827.         frame++;
  5828.     }
  5829.  
  5830.     oslDeleteSound(wind);
  5831. }
  5832.  
  5833. void amigatext(const char *arg, int x, int y, OSL_IMAGE *amigafont, int width, int height)
  5834. {
  5835.     int i, l=strlen(arg), tx=x, placex=(amigafont -> sizeX)/width;
  5836.  
  5837.  
  5838.  
  5839.     for(i=0; i<l; i++)
  5840.     {
  5841.         if (arg[i] <= 'Z')
  5842.         {
  5843.             oslSetImageTileSize(amigafont, ((arg[i]-32)%placex)*width, ((arg[i]-32)/placex)*height, width, height);
  5844.             spr_draw(amigafont, tx, y);
  5845.         }
  5846.  
  5847.         tx += width;
  5848.     }
  5849. }
  5850.  
  5851. void credz()
  5852. {
  5853.     int frame=0, a=0, b=480, c=0, d=32, e=136, trans=0, skipframe=0, f=7, i;
  5854.     short quit=0;
  5855.     char buffer[39];
  5856.  
  5857.     const char *texts[23] = {VERSION, "Released on 05/16/2014 for", "","", "® 2014 by",
  5858.                             "Code, some GFX and .XM music by", "Ball physics and OSLib by",
  5859.                             "Inspired by", "THE NONE", "Musics ingame ripped from", "EARTHBOUND",
  5860.                             "Powered by", "OSLIB MOD V2", "Coding started on", "JULY 2013", "Hours of work", "COUNTLESS",
  5861.                             "Most pictures were found on", "GOOGLE PICS", "Number of defeat animations", "25", " ", " "};
  5862.  
  5863.     const char *greeted[25] = {"ICEMAN", "PRINCEPS-BONUS", "ODIE_ONE", "MAGEDRAXGONVAMPIRE", "XELTEKSEN", "FEI", "SHYKOOPA77", "XIRIUS_THIR", "GOBOLZ",
  5864.                              "MEZ", "ORION_", "ZEROSQUARE", "BRUNNI", "MATMOOK", "JEFFR3Y", "DR.DEIMOS", "GODZIL", "ARETHIUS", "TENDERNESS", "KEYDEE GAMER BOY",
  5865.                              "OBO", "BARONLESTAT666", "ISOBEL", "LUNA240681", "...AND MANY OTHERS"};
  5866.  
  5867.     OSL_SOUND *theme = oslLoadSoundFileMOD("./muzaxx/credz.xm", OSL_FMT_NONE);
  5868.     OSL_IMAGE *aipc = oslLoadImageFilePNG("./gfx/credz/aipc.png", OSL_IN_RAM, OSL_PF_8888);
  5869.     OSL_IMAGE *twt = oslLoadImageFilePNG("./gfx/credz/twitter.png", OSL_IN_RAM, OSL_PF_8888);
  5870.     OSL_IMAGE *gml = oslLoadImageFilePNG("./gfx/credz/gmail.png", OSL_IN_RAM, OSL_PF_8888);
  5871.     OSL_IMAGE *amiga = oslLoadImageFilePNG("./gfx/credz/amiga.png", OSL_IN_RAM, OSL_PF_5551);
  5872.     OSL_IMAGE *giygas = oslLoadImageFilePNG("./gfx/credz/giygas.png", OSL_IN_RAM, OSL_PF_5551);
  5873.     OSL_IMAGE *sonicexe = oslLoadImageFilePNG("./gfx/sonicexe.png", OSL_IN_RAM, OSL_PF_5551);
  5874.     OSL_IMAGE *flappy_redhill = oslLoadImageFilePNG("./gfx/flappy_redhill.png", OSL_IN_RAM, OSL_PF_5551);
  5875.     OSL_IMAGE *_1in24, *aa = oslLoadImageFilePNG("./gfx/pookey1.png", OSL_IN_RAM, OSL_PF_5551), *bb = oslLoadImageFilePNG("./gfx/pona08.png", OSL_IN_RAM, OSL_PF_5551);
  5876.     OSL_IMAGE *iamgod[4];
  5877.  
  5878.     for (i=1; i<=4; i++)
  5879.     {
  5880.         sprintf(buffer,"./gfx/iamgod%d.png",i);
  5881.         iamgod[i-1] = oslLoadImageFilePNG(buffer,OSL_IN_RAM, OSL_PF_5551);
  5882.     }
  5883.  
  5884.     sprintf(buffer,"./gfx/pasta%d.png",random(42)+1);
  5885.     _1in24 = oslLoadImageFilePNG(buffer, OSL_IN_RAM, OSL_PF_5551);
  5886.  
  5887.     OSL_IMAGE *temp = oslCreateImage(480, 272, OSL_IN_VRAM, OSL_PF_8888);
  5888.  
  5889.     oslClearImage(temp, RGB(0, 0, 0));
  5890.  
  5891.     oslSetImageRotCenter(giygas);
  5892.  
  5893.     oslPlaySound(theme, 7);
  5894.  
  5895.     oslSetFrameskip(0);
  5896.     oslSetMaxFrameskip(4);
  5897.  
  5898.     while ((frame < 10600) && (!quit))
  5899.     {
  5900.         if (!skipframe)
  5901.         {
  5902.             oslStartDrawing();
  5903.             oslSetAlpha(OSL_FX_DEFAULT, 0);
  5904.             oslDrawFillRect(0, 0, 480, 272, RGB(0, 0, 0));
  5905.             if (frame < 684)
  5906.             {
  5907.                 oslDrawGradientRect(0, 0, 480, 272, RGB(0, 0, 64), RGB(0, 0, 64), RGB(0, 0, 192), RGB(0, 0, 192));
  5908.                 for(a=0; a<16; a++)
  5909.                 {
  5910.                     oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, RGB(94, 126, 255));
  5911.                     if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, RGB(94, 126, 255));
  5912.                 }
  5913.  
  5914.                 oslSetImageTileSize(benj, ((frame%48)/4)*32, 48,32,48);
  5915.                 benj -> stretchX = 96;
  5916.                 benj -> stretchY = 144;
  5917.                 if (frame < 492) oslSetAlpha(OSL_FX_ALPHA, 192); else oslSetAlpha(OSL_FX_ALPHA, 684-frame);
  5918.                 spr_draw(benj, 78, 90);
  5919.                 if (frame < 428) oslSetAlpha(OSL_FX_DEFAULT, 0); else oslSetAlpha(OSL_FX_ALPHA, 684-frame);
  5920.  
  5921.                 oslSetImageTileSize(aipc, 0, 0, (frame<76)?frame*4:304, 34);
  5922.                 spr_draw(aipc, 10, 10);
  5923.                 if (c > -32) c--; else c=0;
  5924.  
  5925.                 if (frame > 180)
  5926.                 {
  5927.                     if (frame < 428)
  5928.                     {
  5929.                         if (d > 255) oslSetAlpha(OSL_FX_DEFAULT, 0); else oslSetAlpha(OSL_FX_ALPHA, d);
  5930.                     }
  5931.                     else
  5932.                     {
  5933.                         oslSetAlpha(OSL_FX_ALPHA, 684-frame);
  5934.                     }
  5935.                     oslSetTextColor(RGB(255, 255, 255));
  5936.                     for (a=0; a<5; a++) oslDrawString(b, 100+a*20, texts[a]);
  5937.                     amigatext("A.C. 2014", b, 132, amiga, 16, 22);
  5938.                     amigatext("240-185", b, 192, amiga, 16, 22);
  5939.                     if (b > 264) b -= 4;
  5940.                     if (d < 255) d += 2;
  5941.                 }
  5942.  
  5943.             }
  5944.  
  5945.             if ((frame >= 684) && (frame < 1368))
  5946.             {
  5947.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  5948.  
  5949.                 if ((frame==684) || (frame == 1032))
  5950.                 {
  5951.                     d=-12;
  5952.                     trans=0;
  5953.                 }
  5954.  
  5955.                 oslDrawGradientRect(0, 0, 480, 272, RGB(0, 0, 64), RGB(0, 0, 64), RGB(0, 0, 192), RGB(0, 0, 192));
  5956.                 for(a=0; a<16; a++)
  5957.                 {
  5958.                     oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, RGB(94, 126, 255));
  5959.                     if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, RGB(94, 126, 255));
  5960.                 }
  5961.                 if (c > -32) c--; else c=0;
  5962.  
  5963.                 oslSetAlpha(OSL_FX_ALPHA, trans);
  5964.  
  5965.                 if (trans < 252) trans+=4;
  5966.  
  5967.                 if (frame < 1032)
  5968.                 {
  5969.                     b=oslGetStringWidth(texts[5]);
  5970.                     oslDrawString((480-b)/2, d, texts[5]);
  5971.                     amigatext("240-185", 184, d+32, amiga, 16, 22);
  5972.                 }
  5973.                 else
  5974.                 {
  5975.                     b=oslGetStringWidth(texts[6]);
  5976.                     oslDrawString((480-b)/2, d, texts[6]);
  5977.                     amigatext("BRUNNI", 192, d+32, amiga, 16, 22);
  5978.                 }
  5979.  
  5980.                 if (d < 66) d += 2;
  5981.             }
  5982.  
  5983.  
  5984.             if ((frame >= 1368) && (frame <= 2735))
  5985.             {
  5986.                 temp -> stretchX = 480;
  5987.                 temp -> centerX = 0;
  5988.                 temp -> centerY = 0;
  5989.  
  5990.                 oslSetDrawBuffer(temp);
  5991.                 oslDisableTransparentColor();
  5992.                 oslDrawFillRect(0, 0, 480, 272, RGB(255, 0, 255));
  5993.                 oslSetTransparentColor(RGB(255, 0, 255));
  5994.  
  5995.                 oslSetImageRotCenter(temp);
  5996.  
  5997.  
  5998.                 if (f < 21)
  5999.                 {
  6000.                     b=oslGetStringWidth(texts[f]);
  6001.                     oslDrawString(240+(240-b)/2, 120, texts[f]);
  6002.  
  6003.                     b=strlen(texts[f+1])*16;
  6004.                     amigatext(texts[f+1], 240+(240-b)/2, 144, amiga, 16, 22);
  6005.                     spr_draw(giygas, 120, 136);
  6006.                 }
  6007.  
  6008.                 temp -> stretchX = d;
  6009.                 temp -> stretchY = (int)((float)(0.57)*d);
  6010.  
  6011.                 oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
  6012.  
  6013.                 if (frame == 1368)
  6014.                 {
  6015.                     d=0;
  6016.                     e=136;
  6017.                 }
  6018.  
  6019.                 spr_draw(temp, 240, e);
  6020.  
  6021.                 if (temp -> stretchX > 1280) e += 8; else e=136;
  6022.                 if (temp -> stretchX < 1536) d += 8; else
  6023.                 {
  6024.                     f += 2;
  6025.                     d=0;
  6026.                 }
  6027.  
  6028.  
  6029.             }
  6030.  
  6031.             if ((frame >= 2736) && (frame < 3422))
  6032.             {
  6033.                 if (frame == 2736)
  6034.                 {
  6035.                     a=0;
  6036.                     b=1;
  6037.                     c=0;
  6038.                 }
  6039.  
  6040.                 spr_draw(sonicexe, 204, 20+16*sin(0.0625*frame));
  6041.  
  6042.                 switch(c)
  6043.                 {
  6044.                 case 0:
  6045.                     oslDrawString(198, 136, "SONIC.EXE by");
  6046.                     amigatext("CRIMSON THE BAT", (480-strlen("CRIMSON THE BAT")*16)/2, 150, amiga, 16, 22);
  6047.                     break;
  6048.  
  6049.                 case 1:
  6050.                     amigatext("SYMBIOTICFEDORAGEEK", (480-strlen("SYMBIOTICFEDORAGEEK")*16)/2, 150, amiga, 16, 22);
  6051.                     break;
  6052.  
  6053.                 case 2:
  6054.                     amigatext("SHADOWNINJA976", (480-strlen("SHADOWNINJA976")*16)/2, 150, amiga, 16, 22);
  6055.                     break;
  6056.  
  6057.                 case 3:
  6058.                     amigatext("HICHIGO1989", (480-strlen("HICHIGO1989")*16)/2, 150, amiga, 16, 22);
  6059.                     break;
  6060.  
  6061.                 default:
  6062.                     break;
  6063.                 }
  6064.  
  6065.                 if (c>0) oslDrawString((480-strlen("SONIC.EXE DeviantArts by:")*6)/2, 136, "SONIC.EXE DeviantArts by:");
  6066.  
  6067.                 for(i=0; i<32; i++)
  6068.                 {
  6069.                     spr_draw(flappy_redhill, a+i*16, 224);
  6070.                 }
  6071.  
  6072.                 a--;
  6073.  
  6074.                 if (a == -16) a=0;
  6075.  
  6076.                 b++;
  6077.                 if ((!(b%172)) && (c<3)) c++;
  6078.             }
  6079.  
  6080.             if ((frame >= 3422) && (frame < 3764))
  6081.             {
  6082.                 oslSetImageRotCenter(_1in24);
  6083.                 _1in24 -> angle = 16*sin(0.0625*frame);
  6084.                 spr_draw(_1in24, 240, 136);
  6085.  
  6086.                 oslDrawString(0, 0, "Weird movies stills taken from:");
  6087.                 amigatext("STUART <ASHENS> ASHEN", 0, 30, amiga, 16, 22);
  6088.                 amigatext("1IN24.TUMBLR.COM", 0, 60, amiga, 16, 22);
  6089.             }
  6090.  
  6091.             if ((frame >= 3764) && (frame < 4105))
  6092.             {
  6093.                 if (frame == 3764)
  6094.                 {
  6095.                     oslSetImageRotCenter(aa);
  6096.                 }
  6097.  
  6098.                 aa -> angle = 16*sin(0.0625*frame);
  6099.                 spr_draw(aa, 240, 136);
  6100.  
  6101.                 oslDrawString(0, 0, "High-pitched Pookeymon Theme by");
  6102.                 amigatext("DAN <LOUSY PANDAH> TOMLINSON", 0, 24, amiga, 16, 22);
  6103.                 oslDrawString(0, 60, "Taken from animation 'POKÉMON SHOWDOWN'");
  6104.             }
  6105.  
  6106.             if ((frame >= 4105) && (frame < 4447))
  6107.             {
  6108.                 if (frame == 4105)
  6109.                 {
  6110.                     oslSetImageRotCenter(bb);
  6111.                 }
  6112.  
  6113.                 bb -> angle = 16*sin(0.0625*frame);
  6114.                 spr_draw(bb, 240, 136);
  6115.  
  6116.                 oslDrawString(0, 0, "Scene from 'Pikachu on Acid' taken from:");
  6117.                 amigatext("HIGH5TOONS", 0, 24, amiga, 16, 22);
  6118.             }
  6119.  
  6120.             if ((frame >= 4447) && (frame < 5473))
  6121.             {
  6122.                 if (frame == 4447)
  6123.                 {
  6124.                     c=0;
  6125.                 }
  6126.  
  6127.                 oslSetAlpha(OSL_FX_ALPHA, 64);
  6128.                 oslDrawGradientRect(0, 0, 480, 272, RGB(0, 0, 64), RGB(0, 0, 64), RGB(0, 0, 192), RGB(0, 0, 192));
  6129.                 for(a=0; a<16; a++)
  6130.                 {
  6131.                     oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, RGB(94, 126, 255));
  6132.                     if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, RGB(94, 126, 255));
  6133.                 }
  6134.  
  6135.                 oslSetImageTileSize(benj, ((frame%48)/4)*32, 48, 32, 48);
  6136.                 benj -> stretchX = 96;
  6137.                 benj -> stretchY = 144;
  6138.                 oslSetAlpha(OSL_FX_ALPHA, 16);
  6139.                 spr_draw(benj, 192, 90);
  6140.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  6141.  
  6142.                 if (c > -32) c--; else c=0;
  6143.  
  6144.                 if (frame <= 5090)
  6145.                 {
  6146.                 amigatext("SO, THERE WE ARE. I HAD TO", 0, 20, amiga, 16, 22);
  6147.                 amigatext("TRAVEL FOR 700 KMS IN ORDER TO", 0, 42, amiga, 16, 22);
  6148.                 amigatext("PRESENT MY SECOND HOMEBREW ON", 0, 64, amiga, 16, 22);
  6149.                 amigatext("PSP.", 0, 86, amiga, 16, 22);
  6150.                 amigatext("LITTLE DID I KNOW I HAD TO", 0, 130, amiga, 16, 22);
  6151.                 amigatext("DEAL WITH A 2 PLAYER MODE ON A", 0, 152, amiga, 16, 22);
  6152.                 amigatext("PORTABLE CONSOLE! LUCKILY, I", 0, 174, amiga, 16, 22);
  6153.                 amigatext("WAS ADDICTED TO A MOBA GAME", 0, 196, amiga, 16, 22);
  6154.                 amigatext("CALLED <SMITE>...", 0, 218, amiga, 16, 22);
  6155.                 }
  6156.                 else
  6157.                 {
  6158.                 amigatext("...AND THE IMPLEMENTATION OF", 0, 24, amiga, 16, 22);
  6159.                 amigatext("A MOBA UI WAS A BREEZE. ", 0, 46, amiga, 16, 22);
  6160.                 amigatext("THE MORAL OF THE STORY IS TO", 0, 90, amiga, 16, 22);
  6161.                 amigatext("NEVER PREPARE YOUR PRODUCTION", 0, 112, amiga, 16, 22);
  6162.                 amigatext("WAAAAAAAAAAY BEFORE THE CON", 0, 134, amiga, 16, 22);
  6163.                 amigatext("BEGINS!", 0, 156, amiga, 16, 22);
  6164.                 }
  6165.             }
  6166.  
  6167.             if ((frame >= 5473) && (frame < 8894))
  6168.             {
  6169.                 if (frame == 5473)
  6170.                 {
  6171.                     d=480;
  6172.                     i=0;
  6173.                 }
  6174.  
  6175.                 oslDrawGradientRect(0, 0, 480, 272, RGB(0, 0, 64), RGB(0, 0, 64), RGB(0, 0, 192), RGB(0, 0, 192));
  6176.                 for(a=0; a<16; a++)
  6177.                 {
  6178.                     oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, RGB(94, 126, 255));
  6179.                     if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, RGB(94, 126, 255));
  6180.                 }
  6181.  
  6182.                 oslSetImageTileSize(benj, ((frame%48)/4)*32, 48, 32, 48);
  6183.                 benj -> stretchX = 96;
  6184.                 benj -> stretchY = 144;
  6185.                 oslSetAlpha(OSL_FX_ALPHA, 192);
  6186.                 spr_draw(benj, 192, 90);
  6187.                 oslSetAlpha(OSL_FX_DEFAULT, 0);
  6188.  
  6189.                 if (c > -32) c--; else c=0;
  6190.  
  6191.                 oslDrawString(201, 4, "Greetings to:");
  6192.                 amigatext(greeted[i], d, 136+32*sin(0.0625*frame), amiga, 16, 22);
  6193.  
  6194.                 d=(int)(d-5.5);
  6195.  
  6196.                 if ((d <= -288) && (i<23))
  6197.                 {
  6198.                     d=480;
  6199.                     i++;
  6200.                 }
  6201.  
  6202.             }
  6203.  
  6204.             if (frame >= 8894)
  6205.             {
  6206.                 if (frame < 10260) oslSetAlpha(OSL_FX_DEFAULT, 0); else oslSetAlpha(OSL_FX_ALPHA, trans);
  6207.                 a = 54+32*sin(0.0625*frame);
  6208.                 b = 296+32*cos(0.0625*frame);
  6209.  
  6210.                 spr_draw(gml, a, 32);
  6211.                 spr_draw(twt, b, 32);
  6212.  
  6213.                 amigatext("@240185", 304+32*cos(0.0625*frame), 187, amiga, 16, 22);
  6214.                 amigatext("ROUNDSOFTSTUDIO", 0, 172, amiga, 16, 22);
  6215.                 amigatext("@ GMAIL.COM", 32+32*sin(0.0625*frame), 202, amiga, 16, 22);
  6216.  
  6217.                 if (frame >= 9582)
  6218.                 {
  6219.                     if (frame == 9582)
  6220.                     {
  6221.                         c=480;
  6222.                         trans=255;
  6223.                     }
  6224.                     oslDrawString(c, 256, "See you @ A.C. 2015 for my next project for PSP: THE FIFTH AXIS! Discover a twisted theory about time travel!");
  6225.  
  6226.                     c -= 2;
  6227.                 }
  6228.  
  6229.                 if ((frame >= 10260) && (trans > 0)) trans--;
  6230.             }
  6231.  
  6232.             oslEndDrawing();
  6233.             //frame_debug(frame);
  6234.         }
  6235.         oslEndFrame();
  6236.         skipframe=oslSyncFrame();
  6237.         frame++;
  6238.         if (oslKbhit()) quit=1;
  6239.     }
  6240.  
  6241.     oslDeleteSound(theme);
  6242.     oslDeleteImage(aipc);
  6243.     oslDeleteImage(amiga);
  6244.     oslDeleteImage(gml);
  6245.     oslDeleteImage(twt);
  6246.     oslDeleteImage(temp);
  6247.     oslDeleteImage(giygas);
  6248.     oslDeleteImage(sonicexe);
  6249.     oslDeleteImage(flappy_redhill);
  6250.     oslDeleteImage(_1in24);
  6251.     oslDeleteImage(aa);
  6252.     oslDeleteImage(bb);
  6253.  
  6254.     for (i=0; i<4; i++)
  6255.     {
  6256.         oslDeleteImage(iamgod[i]);
  6257.     }
  6258.  
  6259.     fadeout(RGB(0, 0, 0));
  6260. }
  6261.  
  6262. int main()
  6263. {
  6264.     SceUID check;
  6265.     short i, a, tx=0, ty=0, gt=0, ch=0, chd=1, mort=0, vies=2, round=1, f=0, nbp=1;
  6266.     int q=strlen(VERSION);
  6267.     const char *items[4] = {"CHALLENGE THE PIE", "DIFFICULTY:", "WHO DID THIS MESS?", "FLEE TO XMB LIKE A COWARD"};
  6268.     const char *diffs[3] = {"WUSS", "MANLY", "HELL"};
  6269.     //Initialisation de la librairie
  6270.  
  6271.     SetupCallbacks();
  6272.  
  6273.  
  6274.     oslInit(0);
  6275.     //oslInitAudioME(OSL_FMT_ALL);
  6276.     oslInitGfx(_16bit, 1);
  6277.     oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
  6278.  
  6279.  
  6280.     gothic = oslLoadFontFile("gfx/gothic.oft");
  6281.     oslSetFont(gothic);
  6282.     oslSetTransparentColor(RGB(255,0,255));
  6283.     oslSetBkColor(RGB(255,0,255));
  6284.     oslSetTextColor(RGB(255, 255, 255));
  6285.     oslStartDrawing();
  6286.     oslDrawString(20, 230, "LOADING, PLEASE WAIT…");
  6287.  
  6288.     oslEndDrawing();
  6289.     oslSwapBuffers();
  6290.  
  6291.     court=oslLoadImageFilePNG("./gfx/court_hell.png",OSL_IN_RAM, OSL_PF_5551);
  6292.     benj=oslLoadImageFilePNG("./gfx/boktai.png",OSL_IN_RAM, OSL_PF_5551);
  6293.  
  6294.     OSL_IMAGE *hand = oslLoadImageFilePNG("./gfx/hand.png",OSL_IN_RAM, OSL_PF_5551);
  6295.     OSL_IMAGE *title = oslLoadImageFilePNG("./gfx/title.png",OSL_IN_RAM, OSL_PF_5551);
  6296.     OSL_IMAGE *alice = oslLoadImageFilePNG("./gfx/alice.png",OSL_IN_RAM, OSL_PF_5551);
  6297.     OSL_SOUND *crack = oslLoadSoundFile("./sfx/sfx-0026.wav", OSL_FMT_NONE);
  6298.     OSL_SOUND *theme = oslLoadSoundFile("./sfx/theme.wav", OSL_FMT_NONE);
  6299.  
  6300.     sceKernelUtilsMt19937Init(&ctx, time(NULL));
  6301.  
  6302.     oslSetAlpha(OSL_FX_DEFAULT,0);
  6303.  
  6304.     if (!DEBUG)
  6305.     {
  6306.         a=warning_onepilepsy();
  6307.     }
  6308.     else
  6309.     {
  6310.         a=1;
  6311.     }
  6312.  
  6313.     if (a)
  6314.     {
  6315.  
  6316.         if (!DEBUG) rndsft();
  6317.  
  6318.         while (ch != 137)
  6319.         {
  6320.  
  6321.             if (!f) oslPlaySound(theme, 0);
  6322.  
  6323.             if (!(f%6))
  6324.             {
  6325.                 tx=random(16);
  6326.                 ty=random(32);
  6327.             }
  6328.  
  6329.             chd=chd%3;
  6330.  
  6331.             oslStartDrawing();
  6332.             oslSetTextColor(RGB(255, 255, 255));
  6333.             oslDrawFillRect(0,0,480,272, RGB(0, 0, 0));
  6334.  
  6335.             oslSetAlpha(OSL_FX_ALPHA, gt);
  6336.             spr_draw(title, tx, ty);
  6337.  
  6338.             oslSetAlpha(OSL_FX_ALPHA, gt/2);
  6339.             spr_draw(title, random(16), random(32));
  6340.  
  6341.             oslSetAlpha(OSL_FX_ALPHA, gt/4);
  6342.             spr_draw(title, random(16), random(32));
  6343.  
  6344.             oslSetAlpha(OSL_FX_ALPHA, gt);
  6345.             spr_draw(alice, 299, 0);
  6346.  
  6347.             oslDrawString(480-(q*6), 260, VERSION);
  6348.  
  6349.             for (i=0; i<4; i++)
  6350.             {
  6351.                 oslDrawString(48, 182+i*20, items[i]);
  6352.                 if ((!i) && (nbp==2))  oslDrawString(162, 182, "(AGAINST A MORTAL)");
  6353.             }
  6354.  
  6355.             spr_draw(hand, 8+4*sin(0.0625*f), 186+ch*20);
  6356.  
  6357.             oslSetTextColor(RGB(255, ((chd<2)?(255/(chd+1)):0), 0));
  6358.             oslDrawString(120, 202, diffs[chd]);
  6359.  
  6360.             oslEndDrawing();
  6361.  
  6362.             oslSwapBuffers();
  6363.  
  6364.             if (gt < 255) gt++;
  6365.  
  6366.             oslReadKeys();
  6367.             if (osl_keys -> pressed.up) ch--;
  6368.             if (osl_keys -> pressed.down) ch++;
  6369.             if ((osl_keys -> pressed.right) && (ch==1)) chd++;
  6370.  
  6371.             if ((osl_keys -> pressed.right) && (ch==0) && (nbp==1)) nbp++;
  6372.             if ((osl_keys -> pressed.left) && (ch==0) && (nbp==2)) nbp--;
  6373.  
  6374.             if ((osl_keys -> pressed.left) && (ch==1))
  6375.                 {
  6376.                     chd--;
  6377.                     if (chd < 0) chd=2;
  6378.                 }
  6379.  
  6380.             if (ch < 0) ch += 4;
  6381.             else if (ch > 3) ch -= 4;
  6382.  
  6383.             if (osl_keys -> held.square)
  6384.             {
  6385.                 if ((osl_keys -> held.L) && (ch==0))
  6386.                 {
  6387.  
  6388.                     oslStartDrawing();
  6389.                     oslDrawFillRect(0,0,480,272, RGB(0, 0, 0));
  6390.                     oslEndDrawing();
  6391.                     oslSwapBuffers();
  6392.                     fadeout(RGB(0,0,0));
  6393.                     for (i=0; i<25; i++) creepypasta(i);
  6394.  
  6395.                 }
  6396.             }
  6397.  
  6398.             if ((osl_keys -> pressed.circle) || (osl_keys -> pressed.cross) || (osl_keys -> pressed.start))
  6399.             {
  6400.  
  6401.                 if (ch != 1) fadeout(RGB(0,0,0));
  6402.  
  6403.                     switch(ch)
  6404.                     {
  6405.  
  6406.                         case 0:
  6407.                         {
  6408.                             vies=2;
  6409.                             mort=0;
  6410.                             round=1;
  6411.                             f=-1;
  6412.  
  6413.                             oslDeleteSound(theme);
  6414.  
  6415.                             while ((vies > 0) && (round < 3))
  6416.                             {
  6417.                                 mort=game(round, chd+1, nbp);
  6418.  
  6419.                                 counter=0;
  6420.                                 if ((!mort) || (mort==2))
  6421.                                 {
  6422.                                     i=random(25);
  6423.                                     if ((i != 1) && (i != 3) && (i != 5) && (i != 13) && (i != 21) && (i != 22))
  6424.                                     {
  6425.                                         fadeout(RGB(0,0,0));
  6426.                                     }
  6427.                                     else
  6428.                                     {
  6429.                                         if ((i != 3) && (i != 5) && (!mort))
  6430.                                         {
  6431.                                             oslPlaySound(crack, 7);
  6432.  
  6433.                                             for (a=0; a<5; a++)
  6434.                                             {
  6435.                                                 oslStartDrawing();
  6436.                                                 oslDrawFillRect(0,0,480,272, RGB(255, 255, 255));
  6437.                                                 oslEndDrawing();
  6438.                                                 oslSwapBuffers();
  6439.                                                 oslWaitVSync();
  6440.                                             }
  6441.                                         }
  6442.                                     }
  6443.                                     if (!mort)
  6444.                                     {
  6445.                                         creepypasta(i);
  6446.                                         vies--;
  6447.                                     }
  6448.                                     else
  6449.                                     {
  6450.                                         vies=-1;
  6451.                                     }
  6452.                                 }
  6453.                                 else
  6454.                                 {
  6455.                                     fadeout(RGB(0,0,0));
  6456.                                     if (round==1) ben();
  6457.                                     round++;
  6458.                                 }
  6459.                                 if ((vies > 0) && (round < 3))
  6460.                                 {
  6461.                                     text(random(12));
  6462.                                 }
  6463.                             }
  6464.                             theme = oslLoadSoundFile("./sfx/theme.wav", OSL_FMT_NONE);
  6465.                             break;
  6466.                         }
  6467.  
  6468.                         case 1:
  6469.                         {
  6470.                             if ((osl_keys -> pressed.circle) || (osl_keys -> pressed.cross)) chd++;
  6471.                             break;
  6472.                         }
  6473.  
  6474.                         case 2:
  6475.                         {
  6476.                             oslDeleteSound(theme);
  6477.                             f=-1;
  6478.                             if (DEBUG)
  6479.                             {
  6480.                                 sonicexe(chd+1);
  6481.                             }
  6482.                             else
  6483.                             {
  6484.                                 credz();
  6485.                             }
  6486.                             theme = oslLoadSoundFile("./sfx/theme.wav", OSL_FMT_NONE);
  6487.                             break;
  6488.                         }
  6489.  
  6490.                         case 3:
  6491.                         {
  6492.                             ch=137;
  6493.                             break;
  6494.                         }
  6495.                     }
  6496.             }
  6497.             f++;
  6498.         oslWaitVSync();
  6499.         }
  6500.     }
  6501.  
  6502.     //on quitte l'application
  6503.  
  6504.     check = sceIoDopen("flash1:/");
  6505.     if (check < 0) mackey();
  6506.  
  6507.  
  6508.     oslDeleteImage(benj);
  6509.     oslDeleteImage(court);
  6510.     oslDeleteImage(hand);
  6511.     oslDeleteImage(alice);
  6512.     oslDeleteSound(crack);
  6513.     oslDeleteSound(theme);
  6514.  
  6515.  
  6516.     oslEndGfx();
  6517.     oslQuit();
  6518.  
  6519.     return 0;
  6520. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement