25.10.2023, 20:39
Hallo,
ich habe vor kurzem angefangen, mir AmiBlitz etwas anzuschauen.
Beim Beispiel-Programmieren sind einpaar Fragen aufgekommen, vielleicht kann mir jemand Hinweise dazu geben:
1. Text:
Es war relativ leicht, einen Screen zu öffnen und ein paar Dinge reinzuzeichnen, unter anderem Text:
Screen 0,12 ; 25
ScreensBitMap 0,0 ; 8 hires + 4 bitplanes = 16 colors
RGB 1,15,0,0
...
Locate 20,20
Print"hello"+Chr$(10)+" world", Rnd(8), " und ", Int(Rnd(8))
Gibt es eine einfache Möglichkeit, den Text Pixelgenau zu setzen (ich glaube es gab in der Graphics-Library eine
Text() Funktion, aber vielleicht komme ich ja drumherum, mit Libs zu hantieren ... zumindest am Anfang)
2. Mouse:
Gibt es eine einfache Methode, die aktuelle Mausposition und den Button-Status abzufragen (ohne Libs/Events)?
Wenn ich mich richtig zurückerinnere, köennte ich wahrscheinlich einfach ein bestimmtes Bit in 0xbfe001 für die
linke Maustaste abfragen oder so (wahrscheinlich gibts ein peek), aber wie sieht es mit den absoluten Maus-Koordinaten aus?
Ich will möglichst keine Gadgets dafür nutzen ...
3. Pointer auf Array of Struct (Newtype):
Für eine eigene Priority-Queue Implementierung habe ich mir ein Struct Array definiert:
NEWTYPE .prioqueue
map_2_info.w
v.w
End NEWTYPE
Dim pq.prioqueue(20)
pq(0)\v = 55
Wie genau beschaffe ich mir dadrauf einen Pointer, Dinge wie
*pqp.prioqueue = pq(20)
scheinen nicht zu funktionieren. Ich will einen Pointer auf solche Structuren und Struct-Arrays, damit
ich den Pointer dann später als Parameter an eine Assembler-Funktion übergeben kann ...
Außerdem:
Kann ich mir sicher sein, daß wenn ich es schaffe, einen Pointer darauf an eine Assembler-Funktion zu übergeben,
daß das Layout dann so ist, wie man es erwarten würde, also Pointer zeigt dann in dem Beispiel auf:
16 bit map info[0], 16 bit v[0], 16 bit map info[1], 16 bit v[1], ..., 16 bit map info[20], 16 bit v[20]
Ohne irgendwas anderes dazwischen? Ich muss ja in Assember den genauen Aufbau kennen, damit ich dann damit
hantieren kann/davon lesen und darein schreiben kann...
Falls nein, ist irgendwo dokumentiert, wie BlitzBasic die Strukturen und Structarrays genau im Speicher aufbaut?
Danke schon mal, viele Grüße
ich habe vor kurzem angefangen, mir AmiBlitz etwas anzuschauen.
Beim Beispiel-Programmieren sind einpaar Fragen aufgekommen, vielleicht kann mir jemand Hinweise dazu geben:
1. Text:
Es war relativ leicht, einen Screen zu öffnen und ein paar Dinge reinzuzeichnen, unter anderem Text:
Screen 0,12 ; 25
ScreensBitMap 0,0 ; 8 hires + 4 bitplanes = 16 colors
RGB 1,15,0,0
...
Locate 20,20
Print"hello"+Chr$(10)+" world", Rnd(8), " und ", Int(Rnd(8))
Gibt es eine einfache Möglichkeit, den Text Pixelgenau zu setzen (ich glaube es gab in der Graphics-Library eine
Text() Funktion, aber vielleicht komme ich ja drumherum, mit Libs zu hantieren ... zumindest am Anfang)
2. Mouse:
Gibt es eine einfache Methode, die aktuelle Mausposition und den Button-Status abzufragen (ohne Libs/Events)?
Wenn ich mich richtig zurückerinnere, köennte ich wahrscheinlich einfach ein bestimmtes Bit in 0xbfe001 für die
linke Maustaste abfragen oder so (wahrscheinlich gibts ein peek), aber wie sieht es mit den absoluten Maus-Koordinaten aus?
Ich will möglichst keine Gadgets dafür nutzen ...
3. Pointer auf Array of Struct (Newtype):
Für eine eigene Priority-Queue Implementierung habe ich mir ein Struct Array definiert:
NEWTYPE .prioqueue
map_2_info.w
v.w
End NEWTYPE
Dim pq.prioqueue(20)
pq(0)\v = 55
Wie genau beschaffe ich mir dadrauf einen Pointer, Dinge wie
*pqp.prioqueue = pq(20)
scheinen nicht zu funktionieren. Ich will einen Pointer auf solche Structuren und Struct-Arrays, damit
ich den Pointer dann später als Parameter an eine Assembler-Funktion übergeben kann ...
Außerdem:
Kann ich mir sicher sein, daß wenn ich es schaffe, einen Pointer darauf an eine Assembler-Funktion zu übergeben,
daß das Layout dann so ist, wie man es erwarten würde, also Pointer zeigt dann in dem Beispiel auf:
16 bit map info[0], 16 bit v[0], 16 bit map info[1], 16 bit v[1], ..., 16 bit map info[20], 16 bit v[20]
Ohne irgendwas anderes dazwischen? Ich muss ja in Assember den genauen Aufbau kennen, damit ich dann damit
hantieren kann/davon lesen und darein schreiben kann...
Falls nein, ist irgendwo dokumentiert, wie BlitzBasic die Strukturen und Structarrays genau im Speicher aufbaut?
Danke schon mal, viele Grüße