ASM-Code Extern in C++
-
Hi folks!
2 Fragen...
Bis vor 10 Min. war ich dem Wahnsinn nahe... Alle schönen externen ASM-Routinen
versagten ihren Dienst "plötzlich" mit
"Undefined symbol ... in modul ..."
Hat lange gedauert bis ich gemerkt habe dass sich meine Codeendung von .c zu .cpp geändert hatte (ich brauchte eine Klasse).
Ich haben eben gelesen, dass man das (hoffentlich) mitextern "C" ...
wieder gradebiegen kann. Gibt es eine schönere Möglichkeit?
-
Weiss jemand, welchen Anforderungen echter C++ - extern - Asm - Code gerecht werden muss?
-
ich versuche seit einiger Zeit eine Maus im MCGA (13) - Mode unterzubringen.
Der einfache INT33-Aufruf hilft viel weiter (DANKE DocJunior!!!) aber nicht
wirklich perfekt... hängt das dann vom geladenen Maus-Treiber ab?
Besten Dank,
MartinPS:
- ist viel wichtiger
-
-
1:
extern "C"
ist ja ein Schlüsselwort
also ist es völlig konform das zu utzen
-
Jaein.
Der Int 33 ist quasi eine Schnittstelle zum Maustreiber. Er ist aber auch nicht der schnellste (sind Interrupts nie)
Allerdings weiß ich nicht, was nicht funktioniert, weshalb ich nicht sagen kann, woran es liegt.
Einiges beruht möglicherweise darauf, dass Interruptaufrufe immer sehrsehr langsam sind. Eine Möglichkeit, dem abzuhelfen wäre ein Polling, also ständiges Abfragen der Mouse von "hand".
-
eine solche Antwort hatte ich befürchtet
Polling?? Also den com-port selbst abfragen? Kennt zufällig jemand nen kleines Tut. dazu?
Ich sitze grade an 'nem kleinen Spiel in C++ und 'ner Menge extern-Assembler.
Die Maus über INt33 fummelt arg in den Bildaufbau rein, bzw. es gibt Ärger wenn der Zeiger über dem Sprite ist oder ich von Virtualscreen zu A000 wechsele (das sollte ich aber noch hinbekommen, hoffe ich).
Zum Problem:
Der Maustreiber bzw. GetMsPos gibt offenbar für einen 640x200-screen wieder (wieso auch immer), statt 320x200.
Einfloor(mx/2)
ist zwar nicht hübsch, löst das Prob aber inzwischen..
Ich weiss ich bin nimmersatt;
jetzt suche ich einen Weg-finde-Algorithmus.
Den aber vielleicht besser in C++, deshlab das HIER nur am Rande...danke allen!
& C64 forever
Martin a(u-)ka Enthusi
----------------------------
wer sich nicht bewegt spürt seine Fesseln nicht
-
Hier gibbet nen Trick.
Vor jeder Bildschirmaktion musst Du die Maus deaktivieren. Dann zeichnest Du und anschließend wird die Maus wieder eingeschaltet..
zum Wegfinden gibbet ne Menge tuts. (glaub auch in den FAQ was gesehen zu haben)
eine Möglichkeit ist, eine Art Gummiband zu nehmen.
Du musst sehen, ob zwischen Anfang und Ende ein Hindernis ist. Wenn ja, nimmst Du dieses als Mittelpunk und verschiebst ihn entlang des Hindernisses, bis Du daran vorbei kommst. Jetzt musst Du schauen, ob Du zwischen dem Mittelpunkt und den Endpunkten ein Hindernis hast. Ist dem so, geht das Spiel wieder von vorne los, bis Du über die Eckpunkte auf das Ziel losgehen kannst...Rekursion ist hierzu ganz gut geeignet..
cYa
DjR
-
Wenn es kritisch ist, würde ich den Mauszeiger abschalten, und ihn selbst zeichnen. Am besten im Timerinterrupt immer die Position abfragen. Vom nachimplementieren des Maustreibers würd ich die Finger lassen, gibt nur Kompatibilitätsprobleme.
-
da wirst du bleedee, es gibt PS2 mäuse und ne menge versch. protokolle bei seriellen und außerdme gibts noch USB-mäuse... also maustreiber selber schreiben is nich...