![]() |
Anzeige:
|
|
|||||||
| Helfer & Tools Programme für und in XProfan und Fragen dazu. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Meinen XProfan Inline Assembler gibt es jetzt - nach großem Umbau - in Version 4.0.
Der XPIA macht es möglich, XProfan und Assembler zusammen in einem Quelltextes zu verwenden. Durch ein spezielles Verfahren wandelt der Inline-Assembler die Assembler-Befehle (MASM32-Syntax) in Maschinencode um. Dieser wird so in den XProfan-Quelltext integriert, dass ein Code entsteht, der ohne zusätzliche Dateien compiliert und ausgeführt werden kann. Alle mit XPIA erzeugten XProfan-Quellcodes benötigen weder DLL, noch andere Zusatzdateien! ![]() Die Wundermaschine XPIA bietet ganz nebenbei eine Erweiterung des XProfan- Befehlssatzes unter Zuhilfenahme superschneller Assembler-Funktionen und ganzer ASM-Bibliotheken. Es kann sogar die High-Level Syntax des MASM32 (.while/.endw/.break/.continue, .repeat/.until, .if/.else/.elseif/.endif) benutzt werden, und alle existierenden Macros und Libraries. Das Endprodukt ist eine alleinstehende Exe-Datei, die einem C++ oder Delphi Programm in nichts nachsteht, ja sogar noch schneller arbeitet. Zu finden auf meiner Webseite.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von X-MAN (14.06.2009 um 19:53 Uhr) |
|
|
|
|
|
|
#2 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 21.02.2009
Beiträge: 71
|
Jup klasse.
Ich möchte jetzt Profan2Cpp einbinden. Wo muss jetzt "invokeXpia" genau hingelenkt werden, damit Profan2Cpp damit funktioniert? Habe es zur Zeit auf xpia_dir gelegt. Bekomme von Profan2Cpp viele Fehlermeldungen. Auch wenn ich die "$MAKE" mit allen Buchstaben reinsetze. Mit dem Profan2Cpp, Xpia 3.1 und Xpse läuft es einwandfrei. mfg Code:
$H Windows.ph
declare x1!,y1!,dx!,dy!,winkel!,y&,z&,groesse&
declare hWin&,hwin1&,hintergr&,hintergr1&,block&,hintergrauto&
declare width&,height&,ende&,bild_auto&
declare bmi# ,ogl_rgb#,b#,rechteck1#,rechteck2#,rechteck3#
declare xb1&,yb1&,xb2&,yb2&,xd&,yd&,colli&,xx1&,yy1&
groesse&=64*64*4
dim b#,groesse&
dim ogl_rgb#,groesse&
If 0
AsmStart rgb_farbe
Parameters b#,groesse&
LOCAL r :BYTE
LOCAL g :BYTE
LOCAL b :BYTE
LOCAL n :DWORD
mov eax,para2
mov n,eax
mov ecx,0
mov ebx,para1
.while ecx<=n
mov al,[ebx+ecx]
mov r,al
mov al,[ebx+ecx+1]
mov g,al
mov al,[ebx+ecx+2]
mov b,al
mov al,b
.if al>252
mov eax,255
.break
.endif
mov al,g
.if al>252
mov eax,255
.break
.endif
mov al,r
.if al>252
mov eax,255
.break
.endif
add ecx,4
.endw
AsmEnd(z&)
endif
ende&=1
Window 20,20-800,600
Cls @RGB(220,220,220)
hWin& = @Create("text", %hwnd, "Test1", 10, 10, 64,64)
hWin1& = @Create("text",%hwnd, "Test2", 200, 10,500,500)
hintergr&=create("hnewpic",500,500,$00ffff)
hintergr1&=create("hnewpic",500,500,$00ffff)
block&=create("hnewpic",64,64,$00f000)
bild_auto&=create("hnewpic",64,64,$00ff00)
oGL("Init", hwin&, 0,0, 0, 0)
oGL("PosMode", 1)
bild_auto& = Create("hnewPic",64,64,0 )
var tex.auto& = oGL("LoadTextureBMP","auto1.bmp",1)
STRUCT rect = x&,y&,w&,h&
DIM rechteck1#, rect
DIM rechteck2#, rect
DIM rechteck3#, rect
mcls 64,64
height&=64
width&=64
bitmap_header
drawglscene
drawglscene
oglzubmp
dx!=100
dy!=100
drawscene
WHILE ende&
sleep 1
if isKey(81)
winkel!=winkel!+1.0
drawglscene
oglzubmp
drawscene
endif
if isKey(69)
winkel!=winkel!-1.0
drawglscene
oglzubmp
drawscene
endif
if isKey(87)
y1!=Sin((-winkel!)/180.0*pi())*2
x1!=Cos((-winkel!)/180.0*pi())*2
dx!=dx!-x1!
dy!=dy!-y1!
drawglscene
oglzubmp
drawscene
endif
if isKey(83)
y1!=Sin((-winkel!)/180.0*pi())*2
x1!=Cos((-winkel!)/180.0*pi())*2
dx!=dx!+x1!
dy!=dy!+y1!
drawglscene
oglzubmp
drawscene
endif
collision
StartPaint %hwnd
DrawText 10,300,(Format$("######0' '",colli&))
DrawText 10,320,(Format$("######0' '",z&))
endpaint
ENDWHILE
end
proc collision
With rechteck1#
.x& = 0
.y& = 0
.w& = 0
.h& = 0
EndWith
With rechteck2#
.x& = dx!
.y& = dy!
.w& = dx!+64
.h& = dy!+64
EndWith
With rechteck3#
.x& = 300
.y& = 200
.w& = 364
.h& = 264
EndWith
colli&=~IntersectRect(rechteck1#,rechteck2#,rechteck3#)
if colli&=1
pixelausgabe
endif
endproc
proc pixelausgabe
~GetDIBits(%hdc,hintergrauto&,0,64,b#,bmi#,0)
z&=Call(xpia_getprocaddressm(xpia_hmodule&,"rgb_farbe"),b#,groesse&)
endproc
proc oglzubmp
ogl("glReadPixels",0,0,64,64,~GL_BGRA,~GL_UNSIGNED_BYTE,ogl_rgb#)
~setDIBits(%hdc,bild_auto&,0,64,ogl_rgb#,bmi#,0)
startpaint -1
drawpic bild_auto&,0,0;-1
endpaint
endproc
proc drawglscene
OGL("Clear")
OGL("origin",0,0,-1.11)
OGL("texture",tex.auto&,1)
OGL("rotate",0,0,winkel!)
OGL("quad",0.7,0.7)
OGL("show")
endproc
proc drawscene
startpaint hintergr&
drawpic hintergr1&,0,0;0
drawpic block&,300,200;0
mcopybmp 0,0 - 64,64 > dx!,dy!,-1
endpaint
startpaint hwin1&
drawpic hintergr&,0,0;0
endpaint
hintergrauto&=create("hpiccopy",hintergr&,300,200,64,64)
startpaint hwin&
drawpic hintergrauto&,0,100;0
endpaint
endproc
proc bitmap_header
def &BI_RGB 0
def &DIB_RGB_COLORS 0
struct BITMAPINFOHEADER = \
biSize&, biWidth&, biHeight&, biPlanes%, biBitCount%, biCompression&, \
biSizeImage&, biXPelsPerMeter&, biYPelsPerMeter&, biClrUsed&, biClrImportant&
dim bmi#,BITMAPINFOHEADER
clear bmi#
with bmi#
.biSize& = sizeof(bmi#)
.biWidth& = width&
.biHeight& = height&
.biPlanes% = 1
.biBitCount% = 32
.biCompression& = &BI_RGB
.biSizeImage& = ((.biWidth& * .biBitCount% \ 8 - 1) | 3 + 1) * abs(.biHeight&)
endwith
endproc
Geändert von profanfan (12.05.2009 um 22:50 Uhr) |
|
|
|
|
|
#3 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
|
Bravissimo, das war jetzt echt flott!
Frage 1: Basis v1.94c vom 12/24/2008 (stable) mit Masm6.14-Kompatibilität bis SSE3 ? Oder ganz eigenständig? Oder doch v1.95RC release candidate vom 05/11/2009 (Ich frage wegen des relativ langen ChangeLog) ? Frage 2: Ich möchte sicherstellen, daß ich auf die ältere XPIA-Version weiterhin Zugriff habe. Kann ich das XPIA4.0 setting da bedenkenlos drüberlaufen lassen? Gruss
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 Geändert von p. specht (13.05.2009 um 01:06 Uhr) |
|
|
|
|
|
#4 (Direktlink) | |||
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Zitat:
Auf jeden Fall muß es über $TOOL eingebunden werden, kann aber sein, dass Sebastian noch Anpassungen vornehmen muß. Am besten postest du das Problem mal in seinem Forum. XPSE macht ebenfalls noch Probleme, weil es keine Commandlines annimmt. Ich hab es getestet mit: $MAKE N $TOOL N XPSE "%" {$cleq} Das sollte funktionieren, aber dabei gibt es noch Probleme. Das müßte sich David mal ansehen. Zitat:
Zitat:
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|||
|
|
|
|
|
#5 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
|
Ah ok, danke!
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Kein Problem, testet in Ruhe alles aus.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#7 (Direktlink) | |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Zitat:
Code:
$MAKE N $TOOL N Dateipfad/Profan2Cpp.exe -close -f "%" Sebastian, passt sein XPIA-Plugin ebenfalls noch an, sodass der Aufruf auch anders herum funktioniert. So könnt ihr als User euch aussuchen, wie herum ihr die beiden Tools benutzt. Mit dem XPSE strebe ich es genauso an.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (15.05.2009 um 17:53 Uhr) |
|
|
|
|
|
|
#8 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 21.02.2009
Beiträge: 71
|
Jup, danke.
Jetzt funktioniert die Profan2Cpp auch mit dem Inline-Asm und Xpia4. Alle meine alten Programme werden jetzt Fehlerfrei mit Profan2Cpp compiliert und laufen auch. Das Anhängsel : -f " D " -d ":P" :! , welches die Exe-Datei aus dem Cpp-Ordner in den Profan-Source-Ordner kopiert funktioniert hier nicht. mfg |
|
|
|
|
|
#9 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Das hier geht aber:
Code:
$MAKE NE $TOOL N Dateipfad/Profan2Cpp.exe -close -f "%" -d "XProfanpfad"
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#10 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 21.02.2009
Beiträge: 71
|
Jup, das war's.
Läuft wie gewünscht fehlerfrei in allen Positionen mit Profan2Cpp und kopiert die Datei ins Profanverzeichnis. mfg Geändert von profanfan (17.05.2009 um 17:09 Uhr) |
|
|
|
|
|
|
#11 (Direktlink) |
|
Gast
Beiträge: n/a
|
Habe ich das richtig verstanden ? Hier wird ein Programm vorgestellt, welches Inlineassembler für eine interprätierte Sprache bereitstellt ? Geht das auch für andere Sprachen, beispielsweise AutoIt ?
|
|
|
|
#12 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.782
|
Das was Frank dort geschrieben hat, ist speziell für Profan erstellt - die Technik dürfte vom Prinzip her aber auch in manch anderen interprätierenden Sprachen funktionieren, in denen man einen Call auf eine Adresse ausführen kann, denn die ist recht gut durchdacht.
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
#13 (Direktlink) | ||
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Zitat:
- die Einbettung von Include-Dateien - die Art des Umformens der generierten Dll in Binärform - den Aufruf der Dll-Funktionen - die Aufrufe hinter der Direktive $MAKE (kann via $TOOL kompensiert werden) Eigentlich sollte jetzt schon auch in anderen Sprachen eine Dll generiert werden, sofern der Quellcode nicht aus mehreren Dateien besteht. Bei genügend Interesse und angebotener Hilfeleistung (ich programmiere nur in XProfan und Assembler) kann ich gerne über eine "Portierung" nachdenken. In dem Fall kann man mich gerne per Mail persönlich ansprechen. Auch eine Anpassung an 64 Bit kann in Zukunft ohne großen Aufwand betrieben werden, nur mal so am Rande erwähnt. Dazu müßte der Assembler/Linker angepasst werden, sowie seine Aufrufe. Und Änderungen an der Basis.inc durchgeführt werden, sowie Libraries ausgetauscht werden Zitat:
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (17.05.2009 um 20:39 Uhr) |
||
|
|
|
|
|
#14 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Die von mir in einem ähnlichen Thread vorgestellten Plugins sind ab sofort auf meiner Seite verfügbar (BuildMaker wurde auch geupdated).
XPIA macht sich langsam richtig gut. Es fehlt nur noch ein Syntax-Check.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#15 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Passend dazu gibt es das XPIA-Update auf Version 4.12. Zu finden auf meiner Seite.
Weiterhin viel Spaß!
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Neue Xpia | profanfan | Spezielles | 49 | 01.07.2009 06:34 |
| XPIA > neu | profanfan | Helfer & Tools | 10 | 30.04.2009 17:08 |
| XPIA - was brauche ich | AHT | Spezielles | 39 | 29.04.2009 16:57 |
| XPIA und zweiter Thread | AHT | Spezielles | 6 | 26.04.2009 18:42 |
| neue version über alte version installieren | Kim. | Windows XP | 7 | 31.07.2005 15:30 |