ABA


"שאלה בגרפיקה בC לסביבת DOS"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #6881 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 6881
אנילאאנוכי

   20:58   06.09.03   
אל הפורום  
  שאלה בגרפיקה בC לסביבת DOS  
 
   אני יודע לעבור למוד 13 וכל מיני כאלו, אבל
מה אני צריך לעשות כדי לעבור למוד שמכיל 16 צבעים ברזולוציה של 800X600?
אני יודע לעבור לזה עם הספרייה graphics.h אבל אני רוצה לעבוד בלי הספרייה הזאת...


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אתה רוצה לעבוד עם VESA dryice 06.09.03 21:56 1
     טוב, אחרי חיפוש, בדיקות ונסיונות אנילאאנוכי 06.09.03 23:25 2
         אתה מתעלם מBANK SWITCHES dryice 07.09.03 01:26 3
             איך אני עושה את מה שאמרת? כאלו לאיפה אני יכתו אנילאאנוכי 07.09.03 17:00 4
             מכתב אנילאאנוכי 07.09.03 22:08 5
                 16 צבעים זה עדיין 4 ביט. dryice 08.09.03 02:13 6
                     יש אולי איזה קד שמדגים את זה? אנילאאנוכי 08.09.03 17:02 7
                         יש שתי שיטות מוכרות: Dudenland 08.09.03 22:19 8
                             תודה... אני אנסה את זה אנילאאנוכי 08.09.03 23:30 9
                                 ניסתי את זה אנילאאנוכי 08.09.03 23:48 10
                                     אתה בכלל קורא את מה שאתה כותב. dryice 09.09.03 02:25 11

       
dryice

   21:56   06.09.03   
אל הפורום  
  1. אתה רוצה לעבוד עם VESA  
בתגובה להודעה מספר 0
 
   ודנו בזה, הרבה בפורום, תנסה להריץ חיפושים בפורום,
ואולי יש משהוא בארכיון.
אחר כך, תחזור לפה עם שאלות.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אנילאאנוכי

   23:25   06.09.03   
אל הפורום  
  2. טוב, אחרי חיפוש, בדיקות ונסיונות  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 06.09.03 בשעה 23:26 בברכה, אנילאאנוכי
 
הצלחתי לעשות מצב של 640 על 480....
אבל יש בעיה...
כשכתבתי את הקוד הזה, הכל עבד טוב...
http://rotter.net/User_files/nor/3f5a425131534b7a.txt
אחרי זה ניסתי לשנות טיפה ולכתב את זה...
http://rotter.net/User_files/nor/3f5a421b2f682855.txt
זה לא נתן שגיאה או משהו כזה, הוא פשוט לא צייר נכון ועשה בלאגן...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   01:26   07.09.03   
אל הפורום  
  3. אתה מתעלם מBANK SWITCHES  
בתגובה להודעה מספר 2
 
   חלון A הוא בגודל 64KB ואילו בשביל 640*480 ב256 צבעים,
צריך יותר זכרון. לכן צריך להזיז את המקום אליו מצביע חלון A
בזכרון המסך, פעולה זאת נקראת BANK SWITCH. כל פעם נגיש
לך בלוק אחר בזכרון מסך, ובשביל להגיע לשורה הנכונה, לא מספיק
להכפיל את y ב640 אתה צריך לדאוג שהשורה הנדונה נמצאת בחלון
אליו אתה מסתכל באותו רגע.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אנילאאנוכי

   17:00   07.09.03   
אל הפורום  
  4. איך אני עושה את מה שאמרת? כאלו לאיפה אני יכתו  
בתגובה להודעה מספר 3
 
   ב?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אנילאאנוכי

   22:08   07.09.03   
אל הפורום  
  5. מכתב  
בתגובה להודעה מספר 3
 
   >חלון A הוא בגודל 64KB ואילו בשביל 640*480 ב256 צבעים,
תיקון: 640*480 ב16 צבעים


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   02:13   08.09.03   
אל הפורום  
  6. 16 צבעים זה עדיין 4 ביט.  
בתגובה להודעה מספר 5
 
   640*480*0.5 זה עדיין יותר מ64KB.

אתה עושה BANK SWITCH בעזרת פסיקת VESA, אם זכרוני אינו מטעני
זה באינטרפט 10, פונקציה 4f בשביל VESA, תת פונקציה 5.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אנילאאנוכי

   17:02   08.09.03   
אל הפורום  
  7. יש אולי איזה קד שמדגים את זה?  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dudenland

   22:19   08.09.03   
אל הפורום  
  8. יש שתי שיטות מוכרות:  
בתגובה להודעה מספר 7
 
   אני אתן לך את הקצרה (קצת פחות מהירה)...

mov ax, 4F05h
mov bx, 0
mov dx, bank
int 10h

כאשר bank, הוא מספר ה-bank שברצונך לאפשר ברגע...
המשוואה היא כזאת... עבור pixel מסויים, כלומר ה-offset שלו (המיקום הוירטואלי שלו בזיכרון - y * x_resolution + x), ה-bank יהיה: pixel_offset << 16, כלומר חילוק ב-64KB... או לחלופין, אם זה שונה מ-64, תשנה את ה-16...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אנילאאנוכי

   23:30   08.09.03   
אל הפורום  
  9. תודה... אני אנסה את זה  
בתגובה להודעה מספר 8
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אנילאאנוכי

   23:48   08.09.03   
אל הפורום  
  10. ניסתי את זה  
בתגובה להודעה מספר 9
 
   וזה לא עובד

void putpixel (int x, int y, byte color){

int a = 640*y+x;
int bank = a<<16;

asm mov ah,0x0c;
asm mov ax, 0x4F05;
asm mov bx, 0x01;
asm mov dx, bank;
asm mov al,color;
asm int 0x10;

}
ד"א איך אתה עושה את הקוד במשבצת כזו?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   02:25   09.09.03   
אל הפורום  
  11. אתה בכלל קורא את מה שאתה כותב.  
בתגובה להודעה מספר 10
 
   אתה מנסה לשלב בין צביעת הנקודה(שמלכתחילה לא צריכה להתבצע ע"י
פסיקה) עם שינוי BANK, בפסיקה בודדת וזה וודאי לא אפשרי.

הקוד שאתה כתבת מעיד על חוסר הבנה בסיסית, לא רק של פונקציות
VESA אלא של אסמבלי בסיסי.
אתה כותב מידע בah, ואז מייד דורש אותו כשאתה כותב לax
ואז דורס את החלק העליון של ax שוב כשאתה כותב לah.

מה גם שבכלל לא כתבת, איפה במסך אתה רוצה, חשבת את a
ואז זרקת 16 ביט נמוכים של מידע, בכלל לא הכנסת את המידע על
איזה פיקסל לצבוע!

אני ממליץ לך לשבת וללמוד אסמבלי בסיסי, כמו היחס בין AX
AH וAL, ואז תחזור לVESA.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net