Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

PSET in ASM???
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 09.02.2007, 23:16    Titel: PSET in ASM??? Antworten mit Zitat

Hi Leute,
Ich bin gerade am entwickeln meines eigenen Videoformates, und da gibt es ein Prob:
-PSET (x,y) Farbe ist zu laahhmm
-CLS ist zu laahhmm

Also:
Kennt jemand zwei kurze Snippets ASM die ich mit ASM2BAS einbinden kann??? (bei PSET mit den drei Parametern!) Das auch evtl. auch AK-Lib/VESA-Kompatibel ist (modus allenfalls screen 13 oder &H101/&H110/&H111)

Vielen Dank im voraus!
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.02.2007, 23:23    Titel: Antworten mit Zitat

du kannst im screen 13 folgendes snippet anwenden, ist 100% qb:

Code:

def seg = &HA000
Poke X + Y * 320&, Farbe
def seg

ist eigentlich recht selbsterklärend. wenn du Viele pixel auf einmal zeichnen willst, musst du sie alle IN dem def seg .... def seg block laufen lassen, damit's noch schneller wird, z.B.
Code:

def seg = &HA000
poke 100 + 100 * 320&, 150
poke 120 + 80 * 320&, 120
poke 140 + 40 * 320&, 110
def seg


außerdem könntest du auch auf freebasic umsteigen happy
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 09.02.2007, 23:46    Titel: Antworten mit Zitat

ne, immer noch zu lahm neutral

/edit:
FB würde ich bei einem neuen Projekt nehmen, aber hier bin ich an QB "gebunden" lachen
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.02.2007, 23:54    Titel: Antworten mit Zitat

äääh, hallo? Ich habe selbst auf meinem gaaanz alten computer damit einen bildschirm in screenmode 13 rasend schnell gefülllt... wenn du noch mehr speed willst, deklariere alle varibalen automatisch als integer mit dem befehl defint a-z (ganz am anfang des codes)
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 09.02.2007, 23:59    Titel: Antworten mit Zitat

geht auch net schneller mit ASM??? geschockt
ne, wart mal ... (edit kommt gleich)

/edit:
defint a-z is schon da
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.02.2007, 00:08    Titel: Antworten mit Zitat

Geht sicher, aber sei dir bewusst, dass das qbasic ist, und das hat auch mit asm seine grenzen... am schnellsten ist imo ein bild mit bsave zu speichern und mit bload dann wieder zu laden (hab mal damit einen "videoplayer" gebaut).
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 10.02.2007, 00:10    Titel: Antworten mit Zitat

Nee, war nur LiveUpdate im Hintergrund lachen

ca. 34 FPS - das ist genug: happy (nach edit 67 FPS lächeln )
Code:

DEFINT A-Z

SCREEN 13
startzeit! = TIMER
DEF SEG = &HA000

FOR farbe = 1 TO 255
FOR x = 1 TO 320
FOR y = 1 TO 200
POKE x + y * 320&, farbe
NEXT y%
NEXT x
NEXT farbe

DEF SEG

differenz! = TIMER - startzeit!
PRINT differenz!
fps = 255 / differenz!
PRINT fps
END

_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 10.02.2007, 03:48    Titel: Antworten mit Zitat

Hi,

mir war langweilig und ich hab mal ein Geschwindigkeitstest gemacht mit den ganzen Anzeige-Routinen. Also im Grunde genommen der gleiche Quellcode wie im letzten Beitrag von csderats nur in jeweils abgewandelter Form.

Der Test lief auf einem aussagefähigen Rechner, also auf meinem guten 486er mit 120MHz. grinsen

Hier die Ergebnisse des letzten Codes,der AK-LIB v1.5 und einiger Spielereien:
Code:

Alles in Screen 13(QB) oder &H13(AK-LIB)
-----------------------------------------------------------
24.8283700 fps - (QB) - direktes BLOAD3 (mit HD-Read pro Bild)         
17.7947400 fps - (QB) - direktes BLOAD2 (mit HD-Read pro Bild)         
10.6250000 fps - (Lib) - Set.Picture (320x200) (EMS-Read pro Bild)
 5.9900900 fps - (Lib) - Set.Picture (320x200) (mit HD-Read pro Bild)
 4.2828320 fps - (QB) - direktes BLOAD1 (mit HD-Read pro Bild)
 3.8789030 fps - (QB) - BLOAD (mit HD-Read pro Bild)
 3.1882980 fps - (QB) - POKE (Wie im letzten Beitrag)                         
 2.6836450 fps - (QB) - PSET                           
 0.6588973 fps - (Lib) - XPSET           
-----------------------------------------------------------

EDIT:
BLOAD1,2 und 3 sind Routinen bei denen nur Interrupte verwendet werden. Dies in unterschiedlichen Arten, deswegen die Nummern. J4I.

Obwohl du ein eigenes Format erstellen möchtest; vllt. ist folgender Thread noch interessant:
http://forum.qbasic.at/viewtopic.php?t=1436

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 10.02.2007, 10:38    Titel: Antworten mit Zitat

Es gibt sonst eine BIOS-Routine:

INT 10h, AH=0Ch

(Für POINT() gibt es analog noch INT 10h, AH=0Dh)

Vermutlich verwendet QBasic im Hintergrund genau diese BIOS-Routinen. Weil diese möglichst SCREEN-neutral gehalten werden müssen, sind sie evtl. relativ langsam (ein CASE vom Videomodus auswerten braucht nun einmal Zeit). Daher wenn es schneller sein muss, muss man schon seinen eigenen POKE-Algorithmus im Commodore 64-Stil entwickeln, wie von mir unter

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/VESA-Schnittstelle.html

ausführlich gezeigt und diesen natürlich dann in Assembler umsetzen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 10.02.2007, 12:04    Titel: Antworten mit Zitat

Noch ein Tipp von mir:
wenn du dir deine eigene Routine bastelst, dann lass Clipping raus. zwinkern
Das kann zwar bei unsachgemäßer Bedienung zu Pixel-Fehlern führen, dafür wird die Routine abe schneller, da unnötige Sprünge im Code vermieden werden. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 10.02.2007, 12:55    Titel: Antworten mit Zitat

Im Prinzip ist mein Prob gelöst: als kompilierte EXE schaffter über 200 FPS geschockt Zunge rausstrecken

In ASM brauch ich das dan gar net mehr um zu setzten zwinkern

an bsave und bload hab ich dabei schon gedacht, aber damits doch noch schnell genug wird müsste man das in den Speicher laden = 600 * 60 KB ist zu viel. (ginge auch in blöcken - aber man will nicht abgucken sondern selbst was proggen happy
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.02.2007, 13:52    Titel: Antworten mit Zitat

Ich kann dir auch von herzen die Blast!Lib empfehlen. Die ist richtig cool, wenn du screen 13 verwendest. Richtig schnell, aber braucht eventuell viel speicher (kein ems-support), je nachdem wieviele bildschirmseiten du deklariest.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 10.02.2007, 17:24    Titel: Antworten mit Zitat

csderats hat Folgendes geschrieben:
Im Prinzip ist mein Prob gelöst: als kompilierte EXE schaffter über 200 FPS geschockt Zunge rausstrecken

In ASM brauch ich das dan gar net mehr um zu setzten zwinkern



Hi,

bedenke aber das nicht alle Menschen solche schnellen Rechner haben.
Bei nächsten kann das ganze kompiliert auch extrem weniger sein.

Ich hab es bisher immer so gehalten das ich alle Sachen die Geschwindigkeitsabhängig sind vor allem auf älteren Rechnern optimiere. Da sieht man gleich wo dran man ist.


MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 10.02.2007, 17:58    Titel: Antworten mit Zitat

Da hast du allerdings recht grinsen

Auch in der heutigen welt kann man (vor allen dingen als Progger) nicht vorraussetzten, dass jeder einen 2-Ghz Pc hat zwinkern

Frage am Rande:
Wie kann ich aus einer 8-bit BMP Datei für screen 13 die pallette extrahieren und anwenden?? meine mit bsave erstellten bilder haben nämlich die falschen farben neutral
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.02.2007, 18:15    Titel: Antworten mit Zitat

Die Farben beginnen ab byte 54 und bestehen aus 4byte (blau, grün, rot, unbenutzt). so geht das:

Code:

FOR attr = 0 TO 255
  OUT &H3C8, attr
  FOR rgb = 1 TO 3
    GET #1, attr * 4 + 58 - rgb, byte
    OUT &H3C9, INT(ASC(byte) * .2471)
NEXT rgb, attr

_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 10.02.2007, 18:30    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Die Farben beginnen ab byte 54 und bestehen aus 4byte (blau, grün, rot, unbenutzt). so geht das:

Code:

FOR attr = 0 TO 255
  OUT &H3C8, attr
  FOR rgb = 1 TO 3
    GET #1, attr * 4 + 58 - rgb, byte
    OUT &H3C9, INT(ASC(byte) * .2471)
NEXT rgb, attr


Noch eine kleine Anmerkung:
Die Anzahl der Farben in der Palette ist nicht immer 256.
An Byte 47 der Datei ist die Anzahl der Farben in der Palette enthalten.
0 bedeutet dabei das 256 benutzt werden, größer 0 = Anzahl der Farben.

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.02.2007, 18:39    Titel: Antworten mit Zitat

csderats hat Folgendes geschrieben:
8-bit BMP Datei


8 Bit sind immer 256 farben zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 10.02.2007, 18:47    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
csderats hat Folgendes geschrieben:
8-bit BMP Datei


8 Bit sind immer 256 farben zwinkern


grins, schön wenn es so wäre....happy

Auch ein 8-Bit-Bmp hat nicht immer 256 Farben! zwinkern

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 10.02.2007, 19:33    Titel: Antworten mit Zitat

aber Jojo hat recht: alle 600 bmp dateien enthalten alle 256 Farben. natürlich könnten da unbenutzte sein, aber da ich bei RADgametools die eingangspalette eingestellt habe, weiß ich dass es immer 256 farben sind zwinkern

@Jojo:
danke, damit ist mein Prob vollständig gelöst happy

/edit:
Ich kapier das net'! eben hats noch gefunzt mit der pallettte jetzt kommt immer "Unzulässiger Funktionsaufruf". neutral verwundert traurig
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick


Zuletzt bearbeitet von csde_rats am 10.02.2007, 20:07, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 10.02.2007, 19:34    Titel: Antworten mit Zitat

@Mods/Admins:
Eintrag löschen. Danke!
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick


Zuletzt bearbeitet von csde_rats am 10.02.2007, 19:35, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz