?login_element?

Subversion Repositories NedoOS

Rev

Rev 28 | Blame | Compare with Previous | Last modification | View Log | Download

  1. //// imported
  2. #include "../_sdk/sprite.h"
  3. #include "../_sdk/ayfxplay.h"
  4. #include "../_sdk/runtime.h"
  5.  
  6. VAR BYTE _CURBORDER;
  7. CONST UINT _IMSTACK = 0x5f00;
  8.  
  9. PROC halter FORWARD();
  10. PROC border FORWARD(BYTE col);
  11. FUNC BYTE random FORWARD();
  12. PROC prch FORWARD(UINT addr, CHAR c);
  13. PROC testscr FORWARD();
  14.  
  15. PROC readkeys FORWARD(PBYTE pkeys);
  16. VAR BYTE pkeys[40];
  17. ENUM {
  18.   _KEY_CAPS,
  19.   _KEY_Z,
  20.   _KEY_X,
  21.   _KEY_C,
  22.   _KEY_V,
  23.  
  24.   _KEY_A,
  25.   _KEY_S,
  26.   _KEY_D,
  27.   _KEY_F,
  28.   _KEY_G,
  29.  
  30.   _KEY_Q,
  31.   _KEY_W,
  32.   _KEY_E,
  33.   _KEY_R,
  34.   _KEY_T,
  35.  
  36.   _KEY_1,
  37.   _KEY_2,
  38.   _KEY_3,
  39.   _KEY_4,
  40.   _KEY_5,
  41.  
  42.   _KEY_0,
  43.   _KEY_9,
  44.   _KEY_8,
  45.   _KEY_7,
  46.   _KEY_6,
  47.  
  48.   _KEY_P,
  49.   _KEY_O,
  50.   _KEY_I,
  51.   _KEY_U,
  52.   _KEY_Y,
  53.  
  54.   _KEY_ENTER,
  55.   _KEY_L,
  56.   _KEY_K,
  57.   _KEY_J,
  58.   _KEY_H,
  59.  
  60.   _KEY_SPACE,
  61.   _KEY_SYMBOL,
  62.   _KEY_M,
  63.   _KEY_N,
  64.   _KEY_B
  65. };
  66.  
  67. EXTERN UINT _emptytile;
  68.  
  69. CONST UINT tilepic;
  70.  
  71. CONST UINT doska;
  72. CONST UINT beton;
  73. CONST UINT cherry;
  74. CONST UINT arrspr;
  75. CONST UINT ballspr;
  76. CONST UINT bigspr;
  77. CONST UINT bigspr32;
  78.  
  79. ////
  80.  
  81. STRUCT sprpos{
  82.   BYTE x;
  83.   BYTE y;
  84.   PBYTE data;
  85. }; //4
  86.  
  87. VAR UINT _wastimer;
  88. VAR UINT _curtimer;
  89. VAR UINT _logicframes;
  90.  
  91. CONST BYTE scrx   = 0x01;
  92. CONST BYTE scry   = 0x01;
  93. CONST BYTE scrwid = 0x1e;
  94. CONST BYTE scrhgt = 0x14;
  95.  
  96. VAR BYTE sprposbuf[1024];
  97. VAR sprpos* psprpos;
  98. VAR UINT nsprpos;
  99.  
  100. PROC begin_sprites()
  101. {
  102.   psprpos = (sprpos*)sprposbuf;
  103.   nsprpos = 0;
  104. }
  105.  
  106. PROC prspr_memorize(BYTE x, BYTE y, PBYTE data) //draw sprite in scrbuf, memorize its position in sprpos
  107. {
  108.   prspr(x, y, data);
  109.   psprpos->x = x;
  110.   psprpos->y = y;
  111.   psprpos->data = data;
  112.   psprpos = (sprpos*)((UINT)psprpos + +sizeof(sprpos));
  113.   INC nsprpos;
  114. }
  115.  
  116. PROC restore_sprites()
  117. {
  118.   psprpos = (sprpos*)sprposbuf;
  119.   WHILE (nsprpos!=0) {
  120.     respr(psprpos->x, psprpos->y, psprpos->data);
  121.     //todo яхЁхяхўрЄрЄ№ х∙╕ эхЄрщыют√х юс·хъЄ√ Їюэр т ¤Єюь яЁ ьюєуюы№эшъх
  122.     psprpos = (sprpos*)((UINT)psprpos + +sizeof(sprpos));
  123.     DEC nsprpos;
  124.   };
  125. }
  126.  
  127. PROC demo()
  128. {
  129. VAR BYTE x;
  130. VAR BYTE y;
  131. VAR BYTE xshift;
  132. //  setborder(0x00);
  133.  
  134.   //clearscrbuf(0x07); //attr
  135.   cleartilemap((PBYTE)emptytile);
  136.   //prtilebox(0x01, 0x01, 0x05, 0x05); //update scrbuf from portion of tilemap
  137.  
  138.   pretile(0x01, 0x01, 0x1c, 0x08, (PBYTE)((UINT)tilepic+((/**x_in_tilemap*/0/8)*9)+((/**y_in_tilemap*/0/8)*0x100)));
  139.  
  140.   //pretile(0x02, 0x02, 0x04, 0x01, (PBYTE)doska);
  141.   //pretile(0x02, 0x02, 0x04, 0x01, (PBYTE)((UINT)tilepic+((/**x_in_tilemap*/112/8)*9)+((/**y_in_tilemap*/0/8)*0x100)));
  142.  
  143.   //pretile(0x03, 0x04, 0x04, 0x01, (PBYTE)beton);
  144.   //pretile(0x03, 0x04, 0x04, 0x01, (PBYTE)((UINT)tilepic+((/**x_in_tilemap*/80/8)*9)+((/**y_in_tilemap*/0/8)*0x100)));
  145.  
  146.   pretile(0x03, 0x10, 0x05, 0x02, (PBYTE)((UINT)tilepic+((/**x_in_tilemap*/0/8)*9)+((/**y_in_tilemap*/72/8)*0x100)));
  147.  
  148.   prtilebox(scrx, scry, scrwid, scrhgt); //update scrbuf from tilemap
  149.  
  150.   xshift = 0x00;
  151.  
  152.   _curtimer = _TIMER;
  153. loop:
  154.  
  155.   _wastimer = _curtimer;
  156.  
  157.   readkeys(pkeys);
  158.  
  159.   begin_sprites();
  160.  
  161.   x = 0x00 + xshift;
  162.   y = 0x00;
  163.   prspr_memorize(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  164.   prspr_memorize(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  165.   prspr_memorize(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  166.   prspr_memorize(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  167.   prspr_memorize(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  168.   prspr_memorize(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  169.   prspr_memorize(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  170.   prspr_memorize(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  171.  
  172.   x = 0x40 - xshift;
  173.   y = 0x00;
  174.   prspr_memorize(x, y, (PBYTE)cherry); INC x; y = y + 0x11;
  175.   prspr_memorize(x, y, (PBYTE)ballspr); INC x; y = y + 0x11;
  176.   prspr_memorize(x, y, (PBYTE)cherry); INC x; y = y + 0x11;
  177.   prspr_memorize(x, y, (PBYTE)cherry); INC x; y = y + 0x11;
  178.   prspr_memorize(x, y, (PBYTE)ballspr); INC x; y = y + 0x11;
  179.   prspr_memorize(x, y, (PBYTE)ballspr); INC x; y = y + 0x11;
  180.   prspr_memorize(x, y, (PBYTE)ballspr); INC x; y = y + 0x11;
  181.   prspr_memorize(x, y, (PBYTE)ballspr); INC x; y = y + 0x11;
  182.  
  183.   x = 0x80 + xshift;
  184.   y = 0x00;
  185.   prspr_memorize(x, y, (PBYTE)bigspr); INC x; y = y + 0x17;
  186.   prspr_memorize(x, y, (PBYTE)bigspr); INC x; y = y + 0x17;
  187.   prspr_memorize(x, y, (PBYTE)bigspr); INC x; y = y + 0x17;
  188.   prspr_memorize(x, y, (PBYTE)bigspr); INC x; y = y + 0x17;
  189.   prspr_memorize(x, y, (PBYTE)bigspr); INC x; y = y + 0x17;
  190.   prspr_memorize(x, y, (PBYTE)bigspr); INC x; y = y + 0x17;
  191.   prspr_memorize(x, y, (PBYTE)bigspr); INC x; y = y + 0x17;
  192.   prspr_memorize(x, y, (PBYTE)bigspr); INC x; y = y + 0x17;
  193.  
  194.   x = 0xc0 - xshift;
  195.   y = 0x00;
  196.   prspr_memorize(x, y, (PBYTE)bigspr32); INC x; y = y + 0x15;
  197.   prspr_memorize(x, y, (PBYTE)bigspr32); INC x; y = y + 0x15;
  198.   prspr_memorize(x, y, (PBYTE)bigspr32); INC x; y = y + 0x15;
  199.   prspr_memorize(x, y, (PBYTE)bigspr32); INC x; y = y + 0x15;
  200.   prspr_memorize(x, y, (PBYTE)bigspr32); INC x; y = y + 0x15;
  201.   prspr_memorize(x, y, (PBYTE)bigspr32); INC x; y = y + 0x15;
  202.   prspr_memorize(x, y, (PBYTE)bigspr32); INC x; y = y + 0x15;
  203.   prspr_memorize(x, y, (PBYTE)bigspr32); INC x; y = y + 0x15;
  204.  
  205.   halter();
  206.   showscr();
  207.   testscr();
  208.  
  209.   //prtilebox(scrx, scry, scrwid, scrhgt); //update scrbuf from tilemap
  210.   restore_sprites(); //update portions of scrbuf from tilemap
  211. /**
  212.   x = 0x00 + xshift;
  213.   y = 0x00;
  214.   respr(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  215.   respr(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  216.   respr(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  217.   respr(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  218.   respr(x, y, (PBYTE)arrspr); INC x; y = y + 0x11;
  219. */
  220.   _curtimer = _TIMER;
  221.   _logicframes = _curtimer - _wastimer;
  222.   IF (_logicframes > 4) _logicframes = 4;
  223.   WHILE (_logicframes != 0) {
  224.    
  225.     IF (pkeys[+_KEY_P]==0x00) {
  226.             INC xshift;
  227.             IF ((xshift&0x03) == 0x00) afxPLAY((xshift>>0x02)&0x0f, 0x00);
  228.     };
  229.     IF (pkeys[+_KEY_O]==0x00) DEC xshift;
  230.     DEC _logicframes;
  231.   };
  232.  
  233.   goto loop;
  234. }
  235.