ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Suche | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
|
||||||
bruZard
Nutzer
16.09.2013, 20:17 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 In Vorbereitung auf das nächste Release habe ich die Domain www.amigamonkey.de eingerichtet. Im Wesentlichen werden es interne Änderungen und Verbesserungen sein die das nächste Release auszeichnen. So kann man nun die Compiler Optionen in der Config anpassen um bspw. speziell 68000 oder vielleicht 68040 Code zu erzeugen ... Beispiel: code:Diese Config ist noch nicht komplett (wie man sieht), aber sie funktioniert tadellos'-------------------- ' Classic / AmigaOS4 / MorphOS / AROS ' ' AmiDevCpp Path AMIDEVCPP = "{SYSTEMDRIVE}CrosscompilerAmiDevCpp" ' classic 68k BUILD_68K = true GCC_RELEASE_68K = "-noixemul -O6 -o" GCC_DEBUG_68K = "-noixemul -g -O6 -o" GCC_PROFILE_68K = "-noixemul -O6 -o" ' AmigaOS4 BUILD_OS4 = false GCC_RELEASE_OS4 = "-O6 -lauto -lamiga -o" GCC_DEBUG_OS4 = "-g -O6 -lauto -lamiga -o" GCC_PROFILE_OS4 = "-O6 -lauto -lamiga -o" ' MorphOS BUILD_MOS = false GCC_RELEASE_MOS = "" GCC_DEBUG_MOS = "" GCC_PROFILE_MOS = "" ' AROS 32 Bit BUILD_AROS32 = false GCC_RELEASE_AROS32 = "" GCC_DEBUG_AROS32 = "" GCC_PROFILE_AROS32 = "" ' AROS 64 Bit BUILD_AROS64 = false GCC_RELEASE_AROS64 = "" GCC_DEBUG_AROS64 = "" GCC_PROFILE_AROS64 = "" ' AROS PPC BUILD_AROSPPC = false GCC_RELEASE_AROSPPC = "" GCC_DEBUG_AROSPPC = "" GCC_PROFILE_AROSPPC = "" |
|||||
bruZard
Nutzer
15.08.2013, 20:01 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Sorry, bin beruflich gerade extrem eingespannt und finde kaum Zeit etwas privates zu erledigen. Trotzdem will ich hier ein paar Sachen nennen die auf der ToDo stehen und die ich so schnell wie möglich umsetzen möchte:
Von der Idee "Mojo" zu reimplementieren habe ich mich mittlerweile verabschiedet. Klar, der Mojo-Style würde es ermöglichen bisher geschriebene Monkey-Programme mit geringfügigen Änderungen für Amigane Systeme zu kompilieren. Aber die Performance wäre unter aller Sau, zudem existiert nicht wirklich viel Monkey-Source den man mal eben kompilieren könnte. Bei den "Bananas" (so heissen die Examples) werde ich einige interessante heraus picken und auf Amiga-Monkey umschreiben. Ansonsten bleibt nur: Geduld wahren ... meine Freizeit ist extrem knapp bemessen und meine Frau verhaut mich wenn ich auch diese wenige Zeit am Rechner verbringe. |
|||||
bruZard
Nutzer
17.07.2013, 19:32 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Noch nicht, eigentlich wollte ich das OS4 Target gleich mitbringen aber das wird wohl noch nichts. Ich beeile mich aber. |
|||||
bruZard
Nutzer
08.07.2013, 17:58 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Dankeschön! 0.14 wird Ende der Woche fertig sein. |
|||||
bruZard
Nutzer
28.06.2013, 17:07 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 @tbone: Die Performance sollte sich im Rahmen normaler C++ Programme bewegen, denn nichts anderes wird hier erzeugt. Trans (der Monkey Transpiler) erzeugt aus dem Monkey Source C++ welches dann an den GCC geschickt wird. |
|||||
bruZard
Nutzer
27.06.2013, 20:28 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Version 0.13 ist wie versprochen nur schlappe 800kb klein und setzt Version 0.12 voraus. Einfach das Archiv entpacken und über 0.12 kopieren.
http://amigamonkey.colorflow.de/downloads/amigamonkey.0.13.zip |
|||||
bruZard
Nutzer
26.06.2013, 19:59 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Version 0.12 erweitert die Liste der kompilierbaren Ziele um: - AROS i386 - AROS 64Bit - AROS PPC ausführbare Beispiele für AmigaOS3.x und die drei AROS Ziele finden sich unter bananasbasicbasic.buildamiga http://amigamonkey.colorflow.de/downloads/amigamonkey.0.12.zip (ca. 23MB) Ab Version 0.13 werden die Updates kumulativ sein damit man nicht jedesmal das riesen Paket herunter laden muss. |
|||||
bruZard
Nutzer
22.06.2013, 21:54 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Prinzipiell muss ich die Versionierung von vorn beginnen da mit den massiven Änderungen die Mark Sibly an Monkey vorgenommen hat, auch ich wieder von vorn beginnen muss. Also findet ihr nun unter http://amigamonkey.colorflow.de/downloads/AmigaMonkey.zip praktisch die Version 0.1 Neu ist die Trennung der Module in Amiga spezifische Definitionen. Während "Exec" noch kein eigenes Modul hat, aber per Default immer definiert ist, gibt es nun das Modul "amiga.intuition" und das Modul "amiga.window". Man kann nun entweder das Modul "amiga" importieren und somit alles was es so gibt für dieses Target, oder aber man importiert ganz gezielt einzelne Module ... je nach dem was man mit seinem Programm machen will. Das hat zum Einen den Zweck dass man damit das Executable verkleinert (kleiner als 143kb geht leider nicht), zum Anderen dass spezifische Module leichter hinzugefügt werden können. Außerdem bietet es die Möglichkeit eine Ähnlichkeit zur Amiga C/C++ Programmierung zu erreichen. Ich weiß ... Monkey sieht kaum aus wie C/C++, aber auch kaum noch wie Basic obwohl es ein Basic-Dialekt ist. Ein lauffähiges AmigaMonkey Programm: code:Strict Import amiga.intuition ' der Einsprungspunkt eines jeden Monkey Programms Function Main:Int() New AmigaMonkey()' wir instantiieren unser Programm Return 0 End Class AmigaMonkey Method New() ' zuerst ein paar Angaben wie unser Fenster aussehen soll... Local windowFlags:Int = WFLG_DRAGBAR | WFLG_CLOSEGADGET | WFLG_ACTIVATE ' ...dann sagen wir auf welche Ereignisse das Fenster reagieren soll... Local idcmpFlags:Int = IDCMP_CLOSEWINDOW | IDCMP_MOUSEMOVE | IDCMP_INTUITICKS ' ...und jetzt öffnen wir das Fenster... Self.myWindow = New Window("Hallo Amiga", 20, 20, 320, 256, windowFlags, idcmpFlags) ' ...und hüpfen in die Hauptschleife: Self.main() End Method main:Void() Local exitFlag:Bool = False While Not exitFlag ' wenn Intuition meldet dass der Closebutton des Fensters ' gedrückt wurde.... If Self.myWindow.WaitEvent() = IDCMP_CLOSEWINDOW exitFlag = True Wend ' ...schliessen wir das Fenster und beenden das Programm Self.myWindow.Close() End Private Field myWindow:Window End Dies tut recht wenig ... es öffnet ein Fenster an der Position 20, 20 mit den Dimensionen 320x256, setzt den Titel des Fensters auf "Hallo Amiga" und wartet dann in der Methode "main" darauf dass das Fenster geschlossen wird. Der Garbage Collector kümmert sich dann um die Freigabe des allokierten Speichers (was in älteren Versionen des Targets noch nicht ging). Die Window-Flags (WFLG_) und IDCMP Flags sind direkt nutzbar wie man oben in den Definitionen sehen kann. Derzeit nutzt die Klasse "Window" nur die Methode "OpenWindowTags", die anderen Möglichkeiten ("OpenWindowTagList" etc..) können aber problemlos nach gereicht werden. Das oben verlinkte Archiv beinhaltet eine fast komplette Monkey-Installation in der Version V71b. Ich habe aus meiner Pro-Version alles entfernt was nicht Public Domain ist. Somit kann man das Archiv direkt nutzen und muss nichts mehr hinzu kopieren. Das Programm "monkey" ist eine recht gute IDE und das Target "Amiga" ist per Default eingestellt. Zwei Textdateien erklären weitere wichtige Dinge zum Umgang mit diesem Archiv: "amiga.changelog.txt" ist halt das Changelog ... "amiga.readme.txt" erzählt etwas mehr über die Installation und Verwendung .... Als nächstes muss ich die String Klasse anfassen .... leider hat Mark Sibly diese (und auch andere Konstrukte) nicht in einen Namespace gesperrt so dass ich sie wieder einmal umbenennen und bearbeiten muss. Wenn das passiert ist sollten auch die Ziele MorphOS, AROS32 und AROSPPC wieder funktionieren. |
|||||
bruZard
Nutzer
12.06.2013, 20:34 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Mehr als ein Jahr hat es gedauert bis sich der Tornado über Monkey gelegt und Mark Sibly das System so gut wie komplett neu definiert hat. Das neue Target-System ist nun stabil und wird wohl vorerst keine weiteren Änderungen erfahren. Somit habe ich damit begonnen das Amiga-Target auf dieses völlig neue System anzupassen. Dieser Source: Bild: http://amigamonkey.colorflow.de/pics/amigamonkey02.jpg erzeugt schonmal folgende Ausgabe: Bild: http://amigamonkey.colorflow.de/pics/amigamonkey01.jpg Warum das jetzt so spannend ist? In den letzten Versionen des Targets musste ich tief in essentielle Teile von Monkey eingreifen um solch eine Ausgabe erzeugen zu können. Jetzt hat sich tatsächlich nur das Target geändert, AmiDevCpp übersetzt den verbesserten Standard Module-Code nun ohne zu murren oder mit Amiga relevanten Definitionen zu kollidieren. Das bedeutet dass ich AmigaMonkey C++ Code endlich in einen Namespace sperren kann und nicht mehr mit Mark Siblys Bezeichnern in Konflikt gerate. Das hat den Vorteil dass zum Einen der GC (GarbageCollector) endlich funktioniert und außerdem zum ersten Mal überhaupt das Modul "Reflection" verwendet werden kann. In den letzten Versionen des Targets wurde alles in ein Modul gepackt um die Einfachheit von Monkey zu transportieren. Der Vorteil: Man kann so loslegen wie die Monkey-Folks es weltweit tun. Der Nachteil: Je umfangreicher das Modul wird, umso größer wird das Executable. Die Lösung: Amiga Libraries (dos, intuition, graphics etc.) werden in einzelnen Modulen gewrapped welche wiederum im optionalen Modul "amiga" in Monkey kompatible Funktionen gefasst werden. Wer also alles haben will importiert "amiga", wer differenzierter arbeiten möchte darf die Libraries einzeln importieren. Mit der neuen Monkey Version (derzeit V71b) muss ich auch mit der Portierung von Trans (transcc) von vorn beginnen und es muss derzeit immer noch unter Windows via AmiDevCpp für Amiga und Derivate kompiliert werden. Die Liste sieht folgendes vor: - AmigaOS3 - AmigaOS4 - AROS32 - AROS64 - AROSPPC - MOS ...funktionieren tun derzeit die Ziele AOS3, AROS32 und AROSPPC eine Config für alle Ziele sieht derzeit so aus: Zitat: Sobald mehr geht als die substanziellen Spracheigenschaften (Class, Function, Method etc.) werde ich eine neue Version hochladen. -- PanzerZ| Monkey |
|||||
bruZard
Nutzer
24.02.2012, 21:20 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Monkey 0.26 kann jetzt von http://www.sedm.de/monkey/amonkey/AMonkey026.zip heruntergeladen werden. Hier das Changelog:
Beachte: Es gibt noch keine unabhängige Amiga/MOS/Aros Version von Monkey. Ich schätze dass diese mit Version 0.3 verfügbar sein wird. Auch Amiga Monkey 0.26 benötigt noch Windows um für AmigaOS3.x, AROSi386 und AROS PPC zu kompilieren. Nebenbei: Ich könnte Hilfe gebrauchen. Ich suche Folks die Bock auf eine neue OOP Sprache haben und mir helfen wollen Module für diese zu entwickeln. Keine Ahnung ... vielleicht mag jemand MUI kapseln, oder ein anderer OpenGL ... what ever. Monkey importiert C++ Sourcen in einem sogenannten "Extern Block", in diesem weißt man Basic Funktionen die Namen der Funktionen im CPP zu. Es können auch ganze Klassen importiert werden und die Methoden für Monkey bekannt gemacht werden. Wer Interesse hat soll mir einfach eine Mail schicken oder hier antworten. -- PanzerZ| Monkey |
|||||
bruZard
Nutzer
13.02.2012, 21:56 Uhr [ - Direktlink - ] |
Thema: Quo vadis, Amiga im Jahr 2008?
Brett: Amiga, AmigaOS 4 x86 funktioniert so gut _weil_ es alles mitschleppt was 1970 schon neu war. Diese Prozessor-Serie ist so bekloppt abwärts kompatibel dass man weinen könnte. Zudem interessiert es 2012 keinen Programmierer mehr was da noch im Prozzi schlummert, er verwendet extrem abstrahierte Frameworks die ihn nicht mal mehr in die Nähe der Hardware lassen und das ist auch gut so. -- PanzerZ| Monkey |
|||||
bruZard
Nutzer
13.02.2012, 20:46 Uhr [ - Direktlink - ] |
Thema: AmigaOne X1000 im Vergleich zu anderer PPC-Hardware
Brett: Amiga, AmigaOS 4 Der Thread-Titel fragt jetzt aber schon etwas anderes als Eure Beiträge beinhalten. Da will jemand wissen wie man den X1K mit anderer PPC Hardware vergleichen kann ... Meine Meinung: Es ist egal. Das ist alles gleich lahm und unausgegoren. Zudem spielt der Prozzi keine Rolle. Ob da nun ein ARM, ein x86 oder 68k regiert ist sowas von Banane. Wenn das alles exordinär teuer und in so kleinen Nutzerkreisen passiert interessieren sich kompetente Entwickler einen Dreck für das System. Klar kann man jetzt die Gardinen zumachen, den Aluminiumhut aufsetzen und die Leistung von IBrowse auf einem SAM mit der Leistung auf einem X1K betrachten. Man wird subjektiv feststellen dass man nichts feststellt. -- PanzerZ| Monkey |
|||||
bruZard
Nutzer
12.02.2012, 20:41 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Status: Der Monkey Compiler "Trans" kann sich nun selbst fehlerfrei für AmigaOS3.x kompilieren. Leider läuft das erzeugte Binary aber noch nicht. Es wird noch die Trans-Version in die Shell ausgegeben, dann implodiert das System in einem hübschen Guru, hier muss noch einiges angepasst werden. Wenn das aber irgendwann funktioniert benötigt man kein Windows mehr um Monkey für AOS3.x zu verwenden. Es wird dann halt notwendig sein den g++ nebst OS3.x NDK auf dem Rechner zu haben um Monkey Code in native Binaries zu kompilieren. Für AROS, MorphOS und AOS4.x werden die Anpassungen vorgenommen sobald Trans auf AOS3.x läuft. Noch eine andere (marginale) Änderung: Viele haben mich gefragt warum das Target "aos3" heißt wenn es doch für diverse Amiga Derivate kompiliert. Ohne jetzt die Story nochmal aufzuschreiben: Ich habe das Target und das Modul geändert so dass sie nun beide "AMIGA" heissen. Bevor hier jemand fragt warum wer für AROS das AMIGA Target wählen soll: Mach es einfach, es funktioniert ;-) Ja, Amiga User sind manchmal etwas "Monk" wenn es um schwabbelige Bezeichner geht ;-) Da ich, wie bereits erwähnt, "Mojo" nicht portieren darf (nicht Public Domain) heißt mein Modul (welches Mojo nachahmt) "amiga", vorher hieß es "aos3". In Zukunft muss also "amiga" importiert werden anstelle von "aos3" ... leicht zu merken und es sind ja noch ein paar Tage bis ich Monkey native auf AOS3.x habe so dass sich jeder durch beständiges, wiederholtes lesen daran gewöhnen kann. Und "Ja", auch MorphOS und AROS User müssen dann "Import amiga" schreiben ;-) ;-) stay tuned... -- PanzerZ| Monkey |
|||||
bruZard
Nutzer
14.12.2011, 18:42 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 wawa fragte im a1k nochmal nach einer genaueren Beschreibung der Installation. Natürlich will ich Euch diesen Beitrag nicht vorenthalten.
Obiges Beispiel ist Standard Monkey Source. Ich empfehle aber den "Mojo Style" da der prinzipiell von jedem Monkey-Coder da draussen verwendet wird. Dieser ist objektorientiert und das obige Beispiel sähe dann so aus: code:import amigaos3 Class HalloAmiga Extends App Field hallo:String Method OnCreate() hallo = "Hallo Amiga" End Method OnUpdate() ' leer, es gibt nichts zu "updaten" End Method OnRender() Print hallo End End Function Main() New HalloAmiga End Kommentare werden mit dem ' eingeleitet, mehrzeilige Kommentare startet man mit #rem und schliesst sie mit #endrem ab. -- PanzerZ | methusalem | basic [ Dieser Beitrag wurde von bruZard am 14.12.2011 um 18:42 Uhr geändert. ] |
|||||
bruZard
Nutzer
13.12.2011, 21:22 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 0.25 macht Monkey bunt! Download AmigaMonkey 0.25 Changes: Zitat:Bild: http://www.sedm.de/monkey/drawImage.jpg Der Source zum Bild: code:Diesen Source kann man noch nicht für andere Targets übersetzen da Monkey Fonts nicht kennt, sondern dort ein Image lädt und die Chars als Frame behandelt. Das Amiga Target lädt einen AmigaFont als "DiskFont". Desweiteren imitiert das Amiga Target noch nicht das Verhalten von Mojo was das Filesystem angeht. Mojo erwartet Dateien in "[Name des Projekts].data". Innerhalb dieses Raums kann man dann beliebige Verzeichnisse verwenden. Das Amiga Target berücksichtigt dies noch nicht.Import amigaos3 Class myApp extends App Field mx:Int Field my:int Field time:Int Field FPS:Int Field tmpFPS:Int Field tmpTime:int Field lastFPS:Int Field fnt:Font Field lastX:Int Field lastY:Int Field img:Image Field bg:Image Method OnCreate() fnt = LoadFont("helvetica.font", 16) img = LoadImage("amiga.data/monkey.iff") bg = LoadImage("amiga.data/background.jpg") SetFont(fnt) AppTitle("draw with Monkey") SetColor(255, 255, 0) ClsColor(200, 90, 0) Cls() lastX = 0 lastY = 0 SetUpdateRate(60) End Method OnUpdate() mx = MouseX() my = MouseY() tmpFPS = tmpFPS + 1 tmpTime = MilliSecs() if tmpTime - time > 1000 FPS = tmpFPS tmpFPS = 0 time = tmpTime EndIf End Method OnRender() DrawImage(bg, 0, 0) if MouseDown() DrawCircle(mx-1, my-1, 3) if lastX > 0 And lastY > 0 DrawLine(lastX, lastY, mx, my) lastX = mx lastY = my EndIf if tmpTime <> time DrawText("FPS: " + FPS, 10, 10) DrawImage(img, mx, my) End End Function Main() New myApp End Prinzipiell könnt man jetzt schon Spiele mit Monkey für Amiga programmieren, leider gibt es noch keine Masken oder gar Alpha für Images und Tastatureingaben werden noch nicht berücksichtigt. Wer aber nur mit der Maus und mit rechteckigen Images klar kommt darf loslegen Ein weiterer Stolperstein ist dass Monkey sich verhält wie sich Systeme neben dem Amiga halt verhalten: Sie malen die Spielegrafik in jedem Frame neu. Mein Rechner malt Crysis2 in einer Sekunde 120 Mal neu. Ein Amiga schafft das leider nicht (außer er ist ein aktueller PPC Rechner oder eine WinUAE Emulation). Es wird noch zahlreiche Änderungen geben um zu gewährleisten dass man mit Monkey auch Spiele schreiben kann die auf einem 14MHz A1200 noch hinreichend laufen ... aber zunächst soll es erstmal komplett sein und funktionieren. Auf zur 0.26 ... es gibt viel zu tun! -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
11.12.2011, 22:08 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 danke fürs testen Jungs Version 0.24 ist am Start. Zitat: Ich weiß dass "DrawEllipse" und "DrawOval" dasselbe tun, aber wenn Monkey da redundant ist muss ich es auch sein Bild: http://www.sedm.de/monkey/linesAndCircles.jpg Der Code zum Bild: code:Import amigaos3 Class myApp extends App Field mx:Int Field my:int Field time:Int Field FPS:Int Field tmpFPS:Int Field tmpTime:int Field lastFPS:Int Field fnt:Font Field lastX:Int Field lastY:Int Method OnCreate() fnt = LoadFont("helvetica.font", 16) SetFont(fnt) AppTitle("draw with Monkey") SetColor(255, 255, 0) ClsColor(200, 90, 0) Cls() lastX = 0 lastY = 0 End Method OnUpdate() mx = MouseX() my = MouseY() tmpFPS = tmpFPS + 1 tmpTime = MilliSecs() if tmpTime - time > 1000 FPS = tmpFPS tmpFPS = 0 time = tmpTime EndIf End Method OnRender() if MouseDown() DrawCircle(mx-1, my-1, 3) if lastX > 0 And lastY > 0 DrawLine(lastX, lastY, mx, my) lastX = mx lastY = my EndIf if tmpTime <> time DrawText("FPS: " + FPS + " Time: " + time, 10, 10) End End Function Main() New myApp End http://www.sedm.de/monkey/AmigaTarget.zip >> Download Amiga Monkey Target 0.24 (ca. 1.1MB) -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
10.12.2011, 20:16 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Dank der Hilfe und der extremen Geduld einiger a1k Member kann ich heute Version 0.23 präsentieren. Neu sind die Funktionen MilliSecs(), LoadFont(), SetFont() und DrawText(). Zitat:LoadFont() LoadFont() lädt derzeit nur Amiga Fonts per OpenDiskFont(), die überladenen Methoden für AFont.load() sind noch nicht in Monkey implementiert. Derzeit kann man nur den Namen und die Größe des gewünschten Fonts angeben. SetFont() LoadFont() und SetFont() müssen derzeit explizit aufgerufen werden wenn man mittels DrawText() etwas ins Fenster schreiben möchte. In Zukunft wird Monkey aber einen Default-Font laden (gibt es auf AOS4, AROS und MOS noch ROMFONT?) DrawText() Diese Funktion verwendet zwar schon den APen, der BPen ist aber zufällig. Wird noch geändert. Hier ein Bild mit dem aktuellen Entwicklungsstand: Bild: http://www.sedm.de/monkey/drawText.jpg ...und hier der Monkey Source im "mojo style" der dieses Bild erzeugt hat: code:Import amigaos3 Class myApp extends App Field mx:Int Field my:int Field time:Int Field FPS:Int Field tmpFPS:Int Field tmpTime:int Field lastFPS:Int Field fnt:Font Method OnCreate() fnt = LoadFont("helvetica.font", 16) SetFont(fnt) AppTitle("draw with Monkey") SetColor(255, 255, 0) ClsColor(90, 120, 200) Cls() End Method OnUpdate() mx = MouseX() my = MouseY() tmpFPS = tmpFPS + 1 tmpTime = MilliSecs() if tmpTime - time > 1000 FPS = tmpFPS tmpFPS = 0 time = tmpTime EndIf End Method OnRender() if MouseDown() DrawRect(mx-1, my-1, 3, 3) if tmpTime <> time DrawText("FPS: " + FPS + " Time: " + time, 10, 10) End End Function Main() New myApp End Download AmigaTarget for Monkey v0.23 (~1.1MB) Vielen Dank nochmal an alle Helfer, ohne Euch wäre ich noch nicht so weit! -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
06.12.2011, 21:40 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Version 0.22 ist nun online. Neu ist zunächst die Änderung an der Datei "install.txt" welche jetzt "readme.txt" heißt. In dieser Datei gibt es nun Links zu den benötigten Dateien, Hints zu Sachen welche wo nicht funktionieren, und was man derzeit benötigt um Monkey Code zu schreiben und zu kompilieren: Zitat:Ich weiß dass mein Englisch Scheisse ist, wer es korrigieren möchte ist herzlich eingeladen Die wichtigen Änderungen finden sich in der changes.txt: Zitat: Das Archiv für die Version 0.22 kann wie gehabt unter http://www.sedm.de/monkey/AmigaTarget.zip herunter geladen werden. Im Archiv enthalten sind Executables für AmigaOS3.x, AROSi386 und AROS-PPC. Der "Mojo Style" läuft nun super was überhaupt notwendig war um irgendwann bestehende Monkey Codes zu kompilieren. Desweiteren wurden ein paar Fehler ausgebügelt. Hinzugekommen ist "DrawRect" welches es gestattet ein Rechteck in der aktuell gesetzten Farbe in das Fenster zu malen. Dieses Fenster kann nun automatisch erstellt werden (Mojo Style) oder selbst definiert werden indem man SetGraphicsMode() aufruft. Es gilt zu beachten dass im Mojo Style kein Fenster als Parameter für Funktionen angegeben werden muss. Im Amiga Mode muss dies aber passieren damit Monkey weiß welches Fenster angesprochen wird. Eine genaue Dokumentation dafür wird noch erstellt. Bild: http://www.sedm.de/monkey/AmigaTarget_DrawRect.jpg Wie man sieht funktioniert der Timer noch nicht. Das Timer-Device ist aber auch ein Biest [ Dieser Beitrag wurde von bruZard am 06.12.2011 um 22:27 Uhr geändert. ] |
|||||
bruZard
Nutzer
05.12.2011, 21:41 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Liebes Tagebuch .... Timing Probleme bewirken gerade dass die ClsColor für alle Pens gesetzt wird. Aber das ist zu lösen. Wichtig ist dass das Framework nun die überladenen Methoden verwendet um wahlweise auf ein selbst erstelltes Fenster oder auf das Standard "Mojo Style" Fenster zu wirken. Monkey daran zu hindern in jedem Fall ein Fenster zu erstellen indem dies per Konstruktor bekannt gemacht hat leider nicht funktioniert, den Konstruktor einer Monkey Klasse die extern geladen wird kann man leider nicht überladen. Ich habe das nun so gelöst dass es im Verzeichnis /modules/amigaos3/ eine Datei namens "config.monkey" gibt mit der das Standard-Verhalten bei einem Build beeinflusst werden kann. Wenn sich das AmigaTarget nicht wie Mojo verhalten soll muss in der OnCreate Methode "SetGraphicsMode(AMIGA_MODE)" aufgerufen werden. Wird dies getan erstellt das Framework kein eigenes Fenster und somit auch keinen globalen Kontext für nachfolgende Operationen. In diesem Fall sind die Funktionen zu verwenden bei denen man den Paramter win:Window oder scr:Screen angeben muss. Im einfachsten Fall verwendet man das OOP Interface und wendet die Methoden direkt an: code:Ein normaler Monkey Code wird nun anstandslos kompiliert, läuft logischerweise aber noch nicht da wichtige Funktionen wie "LoadImage", "DrawImage" etc. noch nicht implementiert sind.Local myWin:Window = new Window; myWin.create("Hello World, 0, 0, 600, 300) myWin.cls() Die Funktion "Plot()" heisst nun "DrawPoint()" da Monkey mit der Version 0.5 diesen Namen eingeführt hat. Es existiert aber immer noch die Version aus 0.45 damit wir mit der Demo kompatibel bleiben. So kann mit der Demo alter und aktueller Code übersetzt werden. Ich baue gerade die Möglichkeit ein eigene TagLists für selbst erzeugte Fenster zu erstellen. Da man die Klasse Window erst erzeugen muss bevor man mittels "create()" tatsächlich ein Fenster erstellt, besteht die Möglichkeit vor dem "create()" die TagList zu ändern. Man kann natürlich auch alles in einem Rutsch haben: code:Local myWindow:Window = new Window().create("My Window", 0, 0, 600, 300) Zum Abschluss noch der Code der dem "Mal-Beispiel" vom letzten Mal entspricht, aber diesmal dem Mojo-Style folgt: code:--Import amigaos3 Class myApp extends App Field mx:Int Field my:int Method OnCreate() 'SetColor(255, 0, 0) 'ClsColor(90, 120, 200) End Method OnUpdate() mx = MouseX() my = MouseY() End Method OnRender() 'Cls() if MouseDown() DrawPoint(mx, my) End End Function Main() New myApp End PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
04.12.2011, 21:25 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Heute gibt es nichts zum downloaden, dafür aber ein Status-Update. Das Target besitzt nun die Klasse "App". Diese Klasse ist der erste Schritt um dem AmigaTarget beizubringen jeden verfügbaren Monkey Code zu kompilieren. Um das zu erklären muss ich etwas ausholen: Um mit Monkey ein Spiel schreiben zu können benötigt man das Modul "Mojo". Dieses importiert man einfach via "Import mojo". Nun werden zwei Dinge erwartet: 1. Es muss die Funktion "Main()" existieren. Sie ist der Einsprungpunkt für jedes Monkey-Programm. 2. Es muss eine Klasse existieren die von "App" abgeleitet ist und mindestens folgende Methoden definiert: - OnCreate() - OnUpdate() - OnRender() In der Funktion "Main()" erzeugt man nun eine neue Instanz dieser Klasse. Es wird dann automatisch die Methode "OnCreate()" aufgerufen. Ist diese Methode abgearbeitet springt Monkey abwechselnd in die Methoden "OnUpdate()" und "OnRender()" und führt den darin enthaltenen Code aus ... für immer. Für immer?!? Ja, da Monkey für eine Reihe von Zielen kompiliert musste man sich auf den kleinsten gemeinsamen Nenner einigen und das sind Systeme auf denen eine App sich nicht selbst beenden muss, sondern vom System beendet wird: iOS, Android, WindowsPhone, XBox, Flash, HTML5. Das Einzige Ziel für das Mojo eine Abbruchbedingung vorsieht ist GLFW, dort wird die App beendet wenn das Fenster geschlossen wird. Für das AmigaTarget habe ich die Methode "ExitApp()" implementiert damit der geneigte Programmierer selbst entscheiden kann wann sein Programm beendet wird. Es wird dann der Destructor aufgerufen der alle Libraries schliesst und den Speicher aufräumt. Ein weiteres Merkmal von Mojo ist dass es dem Programmierer in Monkey nicht gestattet eine Bildschirmauflösung/Farbtiefe zu definieren, dies geschieht über die Templates die jedem Ziel zugeordnet sind. In Android ist es bspw. die "MonkeyApp.xml", unter GLFW muss die "config.h" geändert werden etc. Damit das Amiga-Target dieses Verhalten nachahmt ruft das Modul automatisch die entsprechende Methode auf und erstellt ein Fenster auf der Workbench in der Grösse 600x400. Das ist notwendig damit die existierenden Monkey-Spiele auch auf dem Amiga kompiliert werden können. Um zu unterbinden dass das geschieht ruft man den Konstruktor seiner App Klasse mit dem Wert "NOGRAPHICS" auf. Will man irgendeinen Source kompilieren hat man natürlich das Problem dass der Author nicht wusste dass sein Spiel mal für Amiga kompiliert wird. Das heisst dass es sich nicht beenden lässt. Für diesen Fall habe ich IDCMP_CLOSEWINDOW an ExitApp() gehangen wenn "App" nicht mit "NOGRAPHICS" initialisiert wurde. Einfach so kompilieren ist aber nicht. Das Problem ist dass ich kein weiteres "Mojo Target" programmieren darf. Ich müsste Mojo in weiten Teilen anpassen und diese Anpassungen mit dem Target mitliefern, das ist aber nicht gestattet. Wer also einen bestehenden Source für Amiga kompilieren will muss diesen leicht ändern. Man schaut einfach in den Kopf des entsprechenden Source und sucht die Zeile "import mojo". Diese ändert man dann in "#if TARGET = "aos3" ; Import amigaos3 ; #else ; Import mojo #endif". Danach kann man den Code dann einfach kompilieren. Folgendes Bild zeigt ein einfaches Konsolenprogramm welches von 0 - 10 zählt. Links sieht man in welcher Methode die Ausgabe gemacht wurde. Die Steuerung der Methodenaufrufe ist durch das Modul "amigaos3" übernommen. Bild: http://www.sedm.de/monkey/AmigaTarget_Callbacks.jpg Hier der Source der die Ausgabe aus obigem Bild erzeugt: code:Import amigaos3 Class myApp extends App Field time:Int = 0 Method OnCreate() Print "OnCreate : Los gehts... wir zählen von 0 - 10 und beenden dann das Programm" End Method OnUpdate() Print "OnUpdate : time += 1" time+= 1 if time > 10 Print "OnUpdate : time > 10 ... Ende!" ExitApp() EndIf End Method OnRender() Print "OnRender : time = " + time End End Function Main() New myApp End Jetzt müssen alle Funktionen aus Mojo portiert werden. Viele davon werden einfach nichts tun weil sie mit dem Amiga NDK nicht zu realisieren sind, aber es werden genug Funktionen implementiert damit alle Monkey Spiele funktionieren. P.S.: AROSx64 werde ich mir nochmal zur Brust nehmen. -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
02.12.2011, 22:00 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Version 0.21 ist unter http://www.sedm.de/monkey/AmigaTarget.zip verfügbar. Geändert hat sich dass ich ein paar Methoden überladen habe. Bislang hat SetColor() noch RGB Werte als Parameter genommen, man kann jetzt auch direkt die Stift Nummer übergeben. Neu hinzugekommen ist die Funktion "ClsColor()", auch diese ist überladen und kann sowohl Werte für Rot, Grün und Blau annehmen als auch eine Stift Nummer. Der Fehler beim Build für Aros64 ist behoben, so dass jetzt auch AROS 64Bit User Monkey AmigaTarget verwenden können. Der Versuch Mojo zu implementieren ist bisher fulminant fehlgeschlagen da AOS selbst bei einfachsten Klassen Operationen ohne lesbare Debug-Info ins Nirvana geht. Bin dort aber noch am Ball. Ein ausführbares AOS3.x Executable für 0.21 liegt dem Archiv bei. Es ändert die Hintergrundfarbe auf ein freundliches Blau und malt mit gedrückter linker Maustaste nette rote Punkte in das erzeugte Fenster. Das Example kann problemlos für AROS (egal ob i386, x86 oder x64) übersetzt werden. Die Update Zyklen werden jetzt etwas länger weil ich ums Verrecken mein Mojo Derivat ans Laufen bekommen will. Endziel ist das Übersetzen aller verfügbaren Monkey Codes für AOS/Aros -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
01.12.2011, 21:44 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 als ich anfing wollte ich eigentlich nur AmigaOS3.x unterstützen, dass AROS dazu kam war Zufall, darum heissen die ganzen Sachen "amigaos3", "aos3" etc. Für Aros: Im Monkey-Ordner /bin/ gibt es eine Datei namens winnt.config.txt. Trage dort einfach AROS=1 ein und es werden Binaries für Aros386, ArosPPC und Aros64 erzeugt. 1. Installe AmiDevCpp von http://amidevcpp.amiga-world.de/ 2. Ergänze die Windows PATH Variable um den Pfad von [AmiDevCpp]/usr/local/amiga/bin Wie das geht kann man die Jungs von Google fragen. Ein Treffer wäre dieser: http://software4u.de/FAQDetail.aspx?lng=de&id=91 3. Ziehe Dir die Demo (eigentlich keine Demo sondern die Public Domain Version) von Monkey von http://www.monkeycoder.co.nz/file/get.php?file=/Products/demos/MonkeyDemo45c.zip. 4. Entpacke AmigaTarget.zip über das Monkey Verzeichnis 5. ändere die Datei bin/winnt.config.txt wie oben angegeben und starte Monk. 6. Lade das Example "amiga.monkey" aus /bananas/Amiga/ und starte ein Build (Rakete die nach oben zeigt). 7. Kopiere das Build Deiner Wahl (appAros386, appArosPPC, appAros64) aus dem Ordner /bananas/Amiga/amiga.build/aos3/ in Deine Aros Installation und starte es. 8. Freuen -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
01.12.2011, 20:39 Uhr [ - Direktlink - ] |
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4 Neues Update Bild: http://www.sedm.de/monkey/AmigaTarget_Draw.jpg Der Monkey Code zum Bild: code:Changelog:Strict Import amigaos3 Function Main:Int() Local win:Window = CreateWindow("Hallo Amiga", 100, 100, 600, 400) Local mx:Int = 0 Local my:Int = 0 Cls(win) SetColor(win, 255, 0, 0) Repeat WaitEvent(win) mx = MouseX(win) my = MouseY(win) If EventClass(win) = CLOSEWINDOW Then Exit If MouseDown(win) then Plot(win, mx, my) Forever CloseWindow(win) Return 0 End code:12/01/2011 v0.2 added : Window.eventClass:Int() added : Window.eventCode:Int() added : Window.setColor:Void(r:Int, g:Int, b:Int) added : Window.getBestPen:Int(r:Int, g:Int, b:Int) added : Window.setAPen:Void(pen:Int) added : Window.cls:Void() added : Window.plot:Void(x:Int, y:Int) added : Window.mouseX:Int() added : Window.mouseY:Int() added : Window.mouseDown:Int() added : Window.mouseUp:Int() added : EventClass:Int(win:Window) added : EventCode:Int(win:Window) added : SetColor:Void(win:Window, r:Int, g:Int, b:Int) added : GetBestPen:Int(win:Window, r:Int, g:Int, b:Int) added : SetAPen:Void(win:Window, pen:Int) added : Cls:Void(win:Window) added : Plot(win:Window, x:Int, y:Int) added : MouseX:Int(win:Window) added : MouseY:Int(win:Window) added : MouseDown:Int(win:Window) added : MouseUp:Int(win:Window) changed : renamed Window.IntuiMessage:Int() to Window.WaitEvent:Int() changed : renamed GetIntuiMessage:Int() to WaitEvent:Int() fixed : windowtitle was not set Download: http://www.sedm.de/monkey/AmigaTarget.zip das AOS3 Executable liegt unter /bananas/Amiga/amiga.build/aos3/appAOS3 Viel Spass beim malen -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
06.11.2009, 10:05 Uhr [ - Direktlink - ] |
Thema: Wie kann dem Amiga System leben eingehaucht werden
Brett: Amiga, AmigaOS 4 Zitat: Wozu sollte das bitteschön heute noch gut sein?!? -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
17.07.2009, 18:10 Uhr [ - Direktlink - ] |
Thema: DSL wie schliesst man das an?
Brett: Amiga, AmigaOS 4 Ist die Frage ein Scherz?!? -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
28.04.2009, 19:00 Uhr [ - Direktlink - ] |
Thema: Wie kann dem Amiga System leben eingehaucht werden
Brett: Amiga, AmigaOS 4 Wenn das nächste Amiga System darauf basiert dass man eine Modelleisenbahn damit steuern kann (mit uralter Perepherie) dann möchte ich keinen Amiga mehr haben. Wer so einen Schrott haben möchte kann doch bitte weiterhin den Kram benützen der so alt ist wie seine Steckkarten. Diese ganze Diskussion ist sowieso für die Backe. Was soll denn bitte ein NG Amiga können dass er Windows/Mac User überzeugt zu wechseln? Interaktive 3D Hologramm Anwendungen? Auf dem Desktop ist so gut wie alles erfunden und ausgereizt. 2009 interessiert kein Schwein mehr wieviele "Custom Chips" in der Kiste werkeln. Aktuelle PCs haben mehr CustomChips als in einen A4k Tower per Karte gepasst hätten. Der Computer hat den Stellenwert erreicht der ihm zusteht: Er ist ein Werkzeug oder eine Entertainment Maschine. Diesen "Spirit" den ihr noch immer mit dem Modell der 19xx Jahre verbindet ist einfach nicht mehr da. Die Zeiten ändern sich. Klar, ich mag den A1200, ich mag das Design, ich mag die Philosophie und die Kompaktheit dieser Geräte ... aber ums verrecken will ich mir nicht vorstellen wie das Gehäuse schmilzt wenn es Hardware drinnen hätte die mir ein Unreal Tournament 3 auf den Bildschirm zaubert. Wobei das noch eine Marktlücke wäre: Ein Amiga mit dem Stromverbauch einer LED und der Leistung eines AlienWare PCs ... aber da müssen die Ingenieure wohl noch ein bissl mit den Physikern plauschen. -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
10.03.2009, 16:44 Uhr [ - Direktlink - ] |
Thema: Wo gibt es AmiHuhn ?
Brett: Amiga, AmigaOS 4 Gibbet AMHuhn denn überhaupt noch? Vielleicht meinst Du das neuere "Blackshoot" von Blackbirds Site: http://www.blackbird-net.de/ -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
09.03.2009, 18:05 Uhr [ - Direktlink - ] |
Thema: Weitere Amiga-Sichtungen
Brett: Amiga, AmigaOS 4 Huhu ... kann mich mal jemand kneifen? -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
07.03.2009, 23:07 Uhr [ - Direktlink - ] |
Thema: Duke Nukem Atomic Edition voll langsam !!!
Brett: Amiga, AmigaOS 4 "Duke Nukem ist für schnelle Maschienen gemacht und auch auf 060 getestet." *Gnarhahaha* ... Schnelle Maschinen und 060er in einem Satz ... ich lach mich tot. -- PanzerZ | methusalem | basic |
|||||
bruZard
Nutzer
04.03.2009, 18:32 Uhr [ - Direktlink - ] |
Thema: Welche 3d Games gibt es eigentlich für Voodoo ?
Brett: Amiga, AmigaOS 4 Zitat:So rechnet aber kein ernstzunehmendes Unternehmen. Man betrachtet eine Plattform und erkundet die Menge an möglichen Kunden. Niemand programmiert aufwändige 3D Geschichten für eine nicht absehbare Klientel. Bevor das Beispiel mit den Konsolen kommt: Sony, Nintendo und MS sind Größen die einem eine Mindestzahl an Klienten zumindest verspricht, das konnte Phase5 niemals leisten. Als die PPC Boards nebst Graka auf den Markt kamen wusste jeder klar denkende Mensch dass der Amiga Geschichte ist. Nur Enthusiasten haben da noch das Produkt unterstützt. Leider macht man mit "Freaks" keinen Markt. -- PanzerZ | methusalem | basic |
|||||
|
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |