Состязание г-г-г-гуру ("два - вернуться чтобы отомстить")

Тема в разделе "WASM.ASSEMBLER", создана пользователем tylerdurden, 27 апр 2007.

  1. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Каламбия пикчерз представляет... Коль уж скоро тут начали состязаться гуру на оптимизацию, выкладываю свою версию "состязания". Было бы интересно выжмет ли кто-нить еще пару байт с моей плазмы (fasm, com file):
    Код (Text):
    1. ;---------------------------------;
    2. ;254b Plasma Intro by Tyler Durden;
    3. ;Compiled with Fasm v.1.47        ;
    4. ;---------------------------------;
    5. ;website: www.tylerdurden.net.ru  ;
    6. ;email: plasma@tylerdurden.net.ru ;
    7. ;---------------------------------;
    8. org 100h
    9. mov si,table_cos
    10. fldz
    11. .calc_sin:
    12. fld st0
    13. fcos
    14. fimul word [cos_mul]
    15. fistp word [si+bx]
    16. fadd dword [si-8]
    17. inc bx
    18. jns .calc_sin
    19. mov al,13h
    20. int 10h
    21. xchg ax,bp
    22. mov dx,string
    23. int 21h
    24. mov di,cs
    25. mov si,-320
    26. xchg ax,cx
    27. cos_mul db 68h,00h,0a0h
    28. pop ds
    29. rep movsw
    30. push ds
    31. pop es
    32. push cs
    33. pop ds
    34. xchg ax,cx
    35. mov dx,3c8h
    36. out dx,al
    37. inc dx
    38. .skip:
    39. out dx,al
    40. loop .skip
    41. .inc_palette:
    42. mov cl,2
    43. .reverse:
    44. inc bx
    45. push cx
    46. mov cl,63
    47. .inc:
    48. mov si,sp
    49. .pal_outsb:
    50. outsb
    51. out dx,al
    52. outsb
    53. add al,bl
    54. loop .inc
    55. pop cx
    56. not bx
    57. loop .reverse
    58. xor byte [.pal_outsb],bh
    59. jp .inc_palette
    60. cwd
    61. .wait:
    62. mov si,t1
    63. xor di,di
    64. mov cl,200
    65. mov bx,table_cos
    66. mov word [si],bp
    67. .loop_y:
    68. push cx
    69. mov word [si+2],bp
    70. mov cx,320
    71. .loop_x:
    72. push si
    73. .add:
    74. lodsb
    75. xlatb
    76. add ah,al
    77. cmp si,bx
    78. jnz .add
    79. shr ax,8
    80. stosb
    81. pop si
    82. inc byte [si+2]
    83. sub byte [si+3],bh
    84. loop .loop_x
    85. inc byte [si]
    86. sub byte [si+1],bh
    87. pop cx
    88. loop .loop_y
    89. add bp,0feh
    90. dec dx
    91. jg .not_last
    92. mov dx,319
    93. .not_last:
    94. pusha
    95. mov bp,dx
    96. mov bx,320
    97. sub bx,dx
    98. cwd
    99. mov cl,2
    100. .draw_buffer:
    101. push cx
    102. mov si,cs
    103. mov di,320*189
    104. mov cl,9
    105. .draw_part:
    106. add di,dx
    107. add si,bx
    108. push cx
    109. mov cx,bp
    110. .draw_line:
    111. lodsb
    112. ;mul byte [si]
    113. mul al
    114. add al,128
    115. add [es:di],al
    116. inc di
    117. loop .draw_line
    118. pop cx
    119. add di,bx
    120. add si,dx
    121. loop .draw_part
    122. xchg bp,bx
    123. xchg dx,bx
    124. pop cx
    125. loop .draw_buffer
    126. mov dx,3dah
    127. .retrace:
    128. in al,dx
    129. test al,8
    130. jz .retrace
    131. popa
    132. in al,60h
    133. dec ax
    134. jnz .wait
    135. mov al,03h
    136. int 10h
    137. ret
    138. string db 'PLASMA BY TYLER DURDEN FOR WWW.256B.COM'
    139. string_len=$-string
    140. pi_div_64 db 24h,49h,3dh
    141. t1 db ?
    142. t2 db ?
    143. t3 db ?
    144. t4 db ?
    145. table_cos rb 256
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Особо в код не вчитывался, но если заменить

    loop .loop_y
    add bp,0feh
    dec dx

    на

    loop .loop_y
    sub bp, 2
    dec dx

    -1 байт :)
     
  3. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Плазма будет на месте стоять тогда... Не, формулу плазмы не менять :)
     
  4. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Убрать нахрен
    string db 'PLASMA BY TYLER DURDEN FOR WWW.256B.COM'
    Вот те и свободные байты :)
     
  5. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Или поменять Tyler Durden на PaCHER :) Уже -6 байт :)
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    tylerdurden
    Заменить на
    lodsb
    mov ah,al
    inc ah
    mul ah
    add al,128
    stosb
     
  7. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Кхм... И ? Во-первых 255 байт, а во-вторых исчезла прозрачность бегущей строки...
     
  8. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    tylerdurden
    В байтах мне трудно оценить - на рабочем компе только то, что считает нужным начальство :), прикинул в уме, значит ошибся.
    Вроде формула осталась та же (A*A + A + 128) A = ds:[si].
     
  9. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    crypto
    add [es:di],al != mov [es:di],al
     
  10. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    tylerdurden
    Блин, у тебя же si != di. Тогда конечно у меня неправильно.
     
  11. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine