Advertisement
Ham62

DrawPipe ASM

Aug 13th, 2017
431
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.94 KB | None | 0 0
  1. void CreatePipe() {
  2.     time_t t;
  3.     ushort _Image = (ushort)(CurPipe.Image + sizeof(TxtGFX));
  4.     int _Size = CurPipe.Image->Size >> 1;
  5.     int _Height = (rand() % 12) + 2;
  6.     extern void DrawPipe_ASM(void);
  7.     #pragma aux DrawPipe_ASM =  \
  8.         "mov di, [_Image]"      \
  9.         "mov ax, [_Height]"     \
  10.         "mov cx, [_Size]"       \
  11.         "mov bx, 0ADBh"         \
  12.         "mov dx, 0B1B1h"        \
  13.                                 \
  14.         "DrawRow:"              \
  15.         "mov [di], dx"          \
  16.         "mov [di+2], bx"        \
  17.         "mov [di+4], bx"        \
  18.         "mov [di+6], dx"        \
  19.         "add di, 8"             \
  20.         "sub cx, 4"             \
  21.         "jz End"                \
  22.         "dec ax"                \
  23.         "jz HitHeight"          \
  24.         "jmp DrawRow"           \
  25.                                 \
  26.         "HitHeight:"            \
  27.         "mov [di], bx"          \
  28.         "mov [di+2], bx"        \
  29.         "mov [di+4], bx"        \
  30.         "mov [di+6], bx"        \
  31.         "add di, 8"             \
  32.         "mov si, 3"             \
  33.         "DrawGap:"              \
  34.         "mov [di], dx"          \
  35.         "mov [di+2], dx"        \
  36.         "mov [di+4], dx"        \
  37.         "mov [di+6], dx"        \
  38.         "add di, 8"             \
  39.         "dec si"                \
  40.         "jnz DrawGap"           \
  41.         "mov [di], bx"          \
  42.         "mov [di+2], bx"        \
  43.         "mov [di+4], bx"        \
  44.         "mov [di+6], bx"        \
  45.         "add di, 8"             \
  46.         "sub cx, 20"            \
  47.         "mov ax, 0xFF"          \
  48.         "jmp DrawRow"           \
  49.                                 \
  50.         "End:"                  \
  51.         modify [ax bx cx dx si di];
  52.     //printf("%ld\n", time(&t));
  53.     DrawPipe_ASM();
  54.     //printf("%ld\n", time(&t));
  55.  
  56.     CurPipe.Height = _Height;
  57.     PutGFX(30, 1, CurPipe.Image);
  58.     UpdateScreen();
  59.     return;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement