התגובות שלי בפורום
-
מאתתגובות
-
HutsHutsמשתתף
1. הקוד שלך גם לא התקמפל לי, איזה אסמבלר השתמשת?
2. בקשר ל REPE SCASW
זה אכן יהיה מהיר יותר, אבל בשורד שלנו החלטנו לשים את הדגש יותר על פגיעות הקוד, ופחות על מהירות השורד.
לשורד שלנו 2 שדות בגודל 2 בתים, וכל 100 תורות בערך השורד מבצע בהם בדיקה האם השתנו…
צריך לזכור שלהיות מהיר יותר זה לא בהכרח טוב יותר
בלופ הראשי, בו השורד בודק את השדות עד לשינוי אחד מהם, פגיעות השורד היא בערך 1.1 בתים
אולם לאחר הפגיעה באחד השדות, השורד עובר ללולאת ההריגה של ה CALL FAR
ושמה, פגיעות השורד היא כ-20 בתים ולכן אין מה למהר…
אם תריץ את השורד שלך נגד הרבה שורדים הכותבים
CALL FAR לא רציף
תגלה שהשורד לא יהיה חזק ואף יפסיד בהרבה
השורד שלנו איטי ולכן אם תריץ נגד שורדים המשתמשים ב CALL FAR
ומעתיקים את עצמם מהר לדוגמא כל 256 פקודות, השורד לא יספיק להרוג אותם לעולם
זה כמובן היה החשש שלנו וזו הסיבה שלא שלחנו את השורד המקורי כבר בהתחלהHutsHutsמשתתףלא בדיוק, השם הוץהוץ נוצר למעשה במשחק ארץ עיר. אחד מחברי הקבוצה היה צריך לחשוב על חיה באות ה' ולא הצליח, אז הוא פשוט המציא כזו וקרא לה "הוץהוץ".
אבל גם הפרוש שלך מקורי…
HutsHutsמשתתףקוד המקור זמין להורדה בקישור:
http://www.sendspace.com/file/layuvvHutsHutsמשתתףלאחר שעות רבות של עבודה וכתיבת הערות, צוות הוץהוץ גאה להציג את קוד המקור השורד HutsHuts בגרסאתו שלאחר העדכון (ניתן לקימפול בעזרת האסמבלר a86 שמופיע באתר).
כמה הערות לגבי השורד:
1. האנגלית שלנו סבירה, אבל לא מדהימה, מצטערים על שגיאות הכתיב והתחביר.
2. השורד במתכונתו המופיעה כאן אינו זהה לגמרי שורד שנשלח בתחרות. בתחרות היו אלה שני שורדים שהעתיקו כל אחד את מחצית הקוד לסגמנט המשותף כדי לבצע העתקה מהירה יותר. בנוסף לכך, גרסה זו כתובה בצורה ידידיותית יותר מאשר הגרסה המקורית (כדי להקל על הבנתה).
3. ניסינו ככל האפשר להסביר כל פעולה ושורה בקוד בעזרת תיעוד, אבל עדיין קשה מאוד להבין אותו, בהצלחה!
4. ד"א, יש גם שורדים שמשתמשים בcallfar ועדיין מנצחים את השורד הזה, תשברו ת'ראש לבד (לא רק bimp ו-cannon)להלן הקוד המתועד:
HutsHutsמשתתףיש לבדוק זאת CALL FAR כיוון שלא ניתן להניח שכל נקודה במסך הותקפה ע"י
תחילה הבהרה קצרה,
אם נכתוב באמצעות הפקודה STOSW
ES:DI יכתב לתוך AX
אך הכתובת האמיתית השמורה במחשב תהיה:
ES*10+DIהוא 1000 CS ערכו ההתחלתי של
(בהקסדצימלי)
לכן כדי שהכתובת שאנו קוראים תהיה הגיונית, הכתובת השמורה במחשב צריכה להיות בין 10000 לבין 20000 כלומר
כלומר ספרת העשרות אלפים צריכה להיות 1יש לשים לב שחייבת להתבצע בדיקה, אחרת השורד ינסה לתקוף מקום שלא בזירה, ויעוף
ולבסוף השורד:
mov bx,ax
inc cx
@loop:
add bx,9
les di,[bx]
;es,di gets the value in bx
sub di,2
mov dx,es
mov ax,010h
mul dx
;dx:ax equals to 10*es
add ax,di
;now if the carry flag is true if ax+di>10000
jnc @glisha
inc dx
@glisha:
;checks if 10000<es*10+di<20000
cmp dx,1
jne @loop
@sa:
mov ax,0CCCCh
stosw
jmp @loopשני הקבצים קומפלו באמצעות A86
זוהי הגרסה הראשונית ביותר לשורד הוצהוץ, השורד מכיל עוד כמה אסטרטגיות שיוסברו בהמשך
-
מאתתגובות