Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 09.02.2007, 23:16 Titel: PSET in ASM??? |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.02.2007, 23:23 Titel: |
|
|
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  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.02.2007, 23:54 Titel: |
|
|
äää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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.02.2007, 00:08 Titel: |
|
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 10.02.2007, 00:10 Titel: |
|
|
Nee, war nur LiveUpdate im Hintergrund
ca. 34 FPS - das ist genug: (nach edit 67 FPS )
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 |
|
 |
A.K.

Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 10.02.2007, 03:48 Titel: |
|
|
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.
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 |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 10.02.2007, 10:38 Titel: |
|
|
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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 10.02.2007, 12:04 Titel: |
|
|
Noch ein Tipp von mir:
wenn du dir deine eigene Routine bastelst, dann lass Clipping raus.
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.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 10.02.2007, 12:55 Titel: |
|
|
Im Prinzip ist mein Prob gelöst: als kompilierte EXE schaffter über 200 FPS
In ASM brauch ich das dan gar net mehr um zu setzten
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  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.02.2007, 13:52 Titel: |
|
|
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 |
|
 |
A.K.

Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 10.02.2007, 17:24 Titel: |
|
|
csderats hat Folgendes geschrieben: | Im Prinzip ist mein Prob gelöst: als kompilierte EXE schaffter über 200 FPS
In ASM brauch ich das dan gar net mehr um zu setzten
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 10.02.2007, 17:58 Titel: |
|
|
Da hast du allerdings recht
Auch in der heutigen welt kann man (vor allen dingen als Progger) nicht vorraussetzten, dass jeder einen 2-Ghz Pc hat
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  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.02.2007, 18:15 Titel: |
|
|
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 |
|
 |
A.K.

Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 10.02.2007, 18:30 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.02.2007, 18:39 Titel: |
|
|
csderats hat Folgendes geschrieben: | 8-bit BMP Datei |
8 Bit sind immer 256 farben  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
A.K.

Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 10.02.2007, 18:47 Titel: |
|
|
Jojo hat Folgendes geschrieben: | csderats hat Folgendes geschrieben: | 8-bit BMP Datei |
8 Bit sind immer 256 farben  |
grins, schön wenn es so wäre....
Auch ein 8-Bit-Bmp hat nicht immer 256 Farben!
MFG A.K. _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 10.02.2007, 19:33 Titel: |
|
|
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
@Jojo:
danke, damit ist mein Prob vollständig gelöst
/edit:
Ich kapier das net'! eben hats noch gefunzt mit der pallettte jetzt kommt immer "Unzulässiger Funktionsaufruf".  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick
Zuletzt bearbeitet von csde_rats am 10.02.2007, 20:07, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
csde_rats

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