Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ich habe sieben Monate gebraucht, um meine Eingaben kalibriert zu kriegen. Dir muss nichts peinlich sein.

Ich fange übrigens schonmal mit dem Raw Input-Tutorial an; aber es wird noch Wochen dauern, bis es vollständig ist.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Code: Alles auswählen

							return;

						} else {
							err = "axis classes invalid";
						}

					} else {
						err = "button classes invalid";
					}

				} else {
					err = "capabilities invalid";
				}

			} else {
				err = "input report protocol too large";
			}

		} else {
			err = "no input report protocol";
		}

		CloseHandle(myHandle);
	} else {
		err = "handle not available";
	}

} else {
	err = "path not found";
}

throw Exception(err);
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

    do {
        (*toDestination) = (*toSource);
        ++toDestination;
        ++toSource;
    } while(L'\0' != toSource);


*Absturz*

Ach ja – ich vergaß, dass das hier C++ ist und was ich eben geschrieben habe wird propagiert zu:

    } while(nullptr != toSource);
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Egal, wie viele Bits man hat: Es gibt nie einen Wert, der genau in der Mitte des Wertebereichs liegt. Aber ein Joystick hat eine Mittelstellung. Und die Welt deshalb ein Problem.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 5045
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Aber nur ein halbes 65536stel Problem, oder? :-)
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Krishty hat geschrieben:Egal, wie viele Bits man hat: Es gibt nie einen Wert, der genau in der Mitte des Wertebereichs liegt. Aber ein Joystick hat eine Mittelstellung. Und die Welt deshalb ein Problem.
wow, wer hat sich das denn bitte ausgedacht!?
Niki
Establishment
Beiträge: 309
Registriert: 01.01.2013, 21:52

Re: Jammer-Thread

Beitrag von Niki »

dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Niki hat geschrieben:
dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.
Die Anzahl verfügbarer Zustände schreibt aber nicht deren Nutzung vor. Du speicherst in einem bool ja auch keine 256 Wahrheitswerte, nur weil es meist ein ganzes Byte belegt. ;)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Ich meinte natürlich, wer auf die Idee gekommen ist, die Bits so zu verteilen, dass es keinen Wert für die Mittelstellung gibt... ;)
Zuletzt geändert von dot am 15.04.2013, 14:16, insgesamt 1-mal geändert.
Niki
Establishment
Beiträge: 309
Registriert: 01.01.2013, 21:52

Re: Jammer-Thread

Beitrag von Niki »

CodingCat hat geschrieben:Du speicherst in einem bool ja auch keine 256 Wahrheitswerte, nur weil es meist ein ganzes Byte belegt. ;)
Wie du selbst weißt, hat eine 1 Bit Boole'sche Zahl hat einen Wertebereich von 0 bis 1. Die goldene Mitte ist 0.5.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Niki hat geschrieben:Wie du selbst weißt, hat eine 1 Bit Boole'sche Zahl hat einen Wertebereich von 0 bis 1. Die goldene Mitte ist 0.5.
Bitte? :D Habe ich von 1-Bit-Zahlen gesprochen? Siehe dot. ;)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Niki
Establishment
Beiträge: 309
Registriert: 01.01.2013, 21:52

Re: Jammer-Thread

Beitrag von Niki »

Du kannst auch N>0 Bits nehmen. Die goldene Mitte des resultierenden Wertebereichs ist nie darstellbar. Vielleicht mit floats, aber selbst da wäre ich mir nicht sicher.
Zuletzt geändert von Niki am 15.04.2013, 14:19, insgesamt 1-mal geändert.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Niki hat geschrieben:Du kannst auch N>0 Bits nehmen. Die goldene Mitte des resultierenden Wertebereichs ist nie darstellbar. Vielleicht mit floats, aber selbst da w#re ich mir nicht sicher.
Nochmal: Du legst deinen Wertebereich stets selbst fest, die Anzahl möglicher Werte ist dabei immer nur eine Obergrenze.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Niki
Establishment
Beiträge: 309
Registriert: 01.01.2013, 21:52

Re: Jammer-Thread

Beitrag von Niki »

Klar, du kannst natürlich einen Wertebereich als kleiner definieren. Da würde ich dir auch nicht widersprechen.
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Niki hat geschrieben:Wie du selbst weißt, hat eine 1 Bit Boole'sche Zahl hat einen Wertebereich von 0 bis 1. Die goldene Mitte ist 0.5.
Da liegt dein Denkfehler. Ein Bit kann zwei verschiedene Zustände unterscheiden. Ob du diesen Zuständen nun Zahlenwerte zuordnest und welche das genau sind, ist völlig dir überlassen. ;)
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Niki hat geschrieben:Klar, du kannst natürlich einen Wertebereich als kleiner definieren. Da würde ich dir auch nicht widersprechen.
Ganz genau, und wenn du bei 8 Bit einen Wertebereich von 0 bis 254 wählst, hast du auch eine schöne Mitte. :) Ich bin mir nicht sicher, was Krishty hier eigentlich anmosert; dass er einen Wert nicht ausnutzen kann oder dass die Geräte tatsächlich einen derart unsinnigen Wertebereich vorgeben.
Zuletzt geändert von CodingCat am 15.04.2013, 14:27, insgesamt 1-mal geändert.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Niki
Establishment
Beiträge: 309
Registriert: 01.01.2013, 21:52

Re: Jammer-Thread

Beitrag von Niki »

Oh Mann, ich ziehe ja schon von dannen!

Nur Spaß :) Aber von dannen ziehe ich trotzdem, weil ich einkaufen muss.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

CodingCat hat geschrieben:
Niki hat geschrieben:
dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.
Die Anzahl verfügbarer Zustände schreibt aber nicht deren Nutzung vor. Du speicherst in einem bool ja auch keine 256 Wahrheitswerte, nur weil es meist ein ganzes Byte belegt. ;)
Ja; das ist absolut richtig. Die Hardware kann sich sogar selber aussuchen, wie groß der Wertebereich ist, den sie meldet – trotzdem nutzt jedes meiner sieben Testgeräte eine gerade Anzahl Zustände für alle seine Achsen.
Schrompf hat geschrieben:Aber nur ein halbes 65536stel Problem, oder? :-)
Nein. Fast alle Joysticks und Gamepads, die ich bisher benutzt habe, liefern 8-Bit-Werte (und da kann man die Abweichung als Kurvenbewegung spüren). Mein 300-€-Logitech-Lenkrad liefert als einzige Ausnahme 15-Bit-Werte, und das auch nur auf der Lenkradachse.

Dummerweise geht es auch in die andere Richtung. Kennt ihr die Rundblickschalter (Hat Switches) an Joysticks? Die sind ebenfalls als Achsen implementiert; allerdings mit nur vier oder acht Zuständen: 1 für 0°; 2 für 90°; 3 für 180°; 4 für 270°.

Jetzt möchte ein cleverer Mensch vielleicht auf die Idee kommen, das halbe 256tel Abweichung bei den Controllern auszugleichen, indem die ersten 128 Werte auf 0 bis 0,5 und die nächsten 128 auf 0,50588… bis 1,0 gemappt werden. Und wenn man noch klüger ist, unterteilt man nicht in 128-128 sondern nutzt den Mittelpunkt der Kalibrierung.

Aber auf den Rundblickschalter angewendet bedeutet das, das 1 zu 0° wird; 2 zu 180°; 3 zu 225°; und 4 zu 270°. Ihr bewegt das Ding nach rechts und interpretiert wird es als nach-unten. Scheiße.

Ich muss also zwischen Achsen unterscheiden, die einen Mittelpunkt haben, der dann aber niemals in der Mitte des Wertebereichs liegt; und Achsen, die keinen Mittelpunkt haben. Und weil die von der HID-API immer identisch ankommen, bleiben mir dafür einzig und allein die DInput-Kalibrierungsinformationen aus der Registry.

DAS mosere ich an.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 5045
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Hab mein Headset einmal zu oft umgesteckt. Jetzt sind zwei der vier Kontakte des USB-Steckers abgerieben. Und ich stehe just in dem Moment ohne Headset da, in dem ich die Platzhalter-Sounds für den neuen Gegner einsingen wollte.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
antisteo
Establishment
Beiträge: 928
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: Jammer-Thread

Beitrag von antisteo »

Warum führt der erste Google-Treffer immer zu einem Forum, in dem gefragt wird "kannst du das nicht Googeln?"
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Niki
Establishment
Beiträge: 309
Registriert: 01.01.2013, 21:52

Re: Jammer-Thread

Beitrag von Niki »

antisteo hat geschrieben:Warum führt der erste Google-Treffer immer zu einem Forum, in dem gefragt wird "kannst du das nicht Googeln?"
Um dich zu zwingen auf einem Forum posten, damit man fragen kann ob du das nicht googeln kannst.

Einer der vielen Gründe warum ich dieses Forum mag ist übrigens, dass ich bisher noch keine "Google gefälligst" Antwort gesehen habe. Links zu einer erklärenden Seite sind aber natürlich okay, auch wenn dadurch der Forums-eigene Content geringer wird (was wiederum etwas schade ist).
kaiserludi
Establishment
Beiträge: 467
Registriert: 18.04.2002, 15:31

Re: Jammer-Thread

Beitrag von kaiserludi »

https://bugzilla.gnome.org/buglist.cgi? ... ch=doxygen
"1658 bugs found. This list is too long for Bugzilla's little mind"
und das sind tatsächlich nur die offenen...
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da
:)

"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Sooo. Ich habe dann mal einen Prototypen für statische Reservierung und nebenläufige statische Initialisierung geschrieben, der zum Grundgerüst meines nächstes Projekts werden könnte.

Die Erfahrung mit Visual C++ war ein wenig ernüchternd. Sagen wir, ich reserviere global Speicher für alle Foos, die jemals in meinem Programm vorkommen:

    Foo foos[16384]; // habe dafür gesorgt, dass die nicht konstruiert werden; nicht einmal committed
    size_t numberOfFoos; // implizit 0

Jetzt werden alle Foos von dort allokiert:

    void * Foo::operator new (size_t) {
        return foos + numberOfFoos;
        ++numberOfFoos;
    }


Zu erwarten wäre jetzt, dass – zumindest am Anfang des Programms, bevor es zu kompliziert wird – alle Foos, die man anlegt, schon bei Kompilierung eine Adresse bekämen:

    void main(int, char[]) {
        auto f0 = new Foo(); //
Adresse: foos + 0
        auto f1 = new Foo(); // Adresse: foos + 1
    }

Aber Pustekuchen – Visual C++ behandelt numberOfFoos, als wäre es völlig unberechenbar. Die Adressen werden weiterhin zur Laufzeit ausgerechnet. Es werden sogar implizite nullptr-Tests hinter jede Allokierung gepflanzt.

Naja; zumindest entfallen die globalen Wirkungen. Eine Allokation hat mit diesem Allokator kosten von einigen Takten; nimmt man einen tatsächlich brauchbaren Allokator, kann man Speicher pseudo-dynamisch ohne Nebenwirkungen und völlig inline in ungefähr 30 Takten allokieren und freigeben. Für den Anfang ist das eine brauchbare Verbesserung.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
antisteo
Establishment
Beiträge: 928
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: Jammer-Thread

Beitrag von antisteo »

Warum benötigt Clover den Mesa-Treiber, wenn ich es doch eh bloß für CPU-basiertes OpenCL nutzen will?

Naja, kompilier' ich halt den kompletten Treiberstack inklusive LLVM neu. Hab' ja sonst nix zu tun den ganzen Abend.
Und CMakefiles können die Pfeifen auch alle nicht schreiben. Zumindest passt das nicht in mein Prefix-System, bei dem ich mit User-Rechten in einem abgekapselten Verzeichnis die experimentellen Treiber liegen habe und nur bei entsprechend gesetzten envvars dieser Treiber auch genutzt wird.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Ich habe hier ein US-englisches Windows, öffne Notepad, schreibe dort „ss“ rein, suche nach „ß“, und der findet das als Übereinstimmung.

Was ist das denn.
klickverbot
Establishment
Beiträge: 191
Registriert: 01.03.2009, 19:22
Echter Name: David N.

Re: Jammer-Thread

Beitrag von klickverbot »

eXile hat geschrieben:Ich habe hier ein US-englisches Windows, öffne Notepad, schreibe dort „ss“ rein, suche nach „ß“, und der findet das als Übereinstimmung.

Was ist das denn.
Einer der Unicode-Normalisierungsalgorithmen. ;)
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ich jeden Tag derweil zumindest Post die Feedback-Feld auf MSDN, in ficken Übersetzung maschinell auf Kreuz.

Wenn sie in zwei Jahren nur noch Englisch anzeigen spart mir das wahrscheinlich mehr Zeit als für den Rest meines Lebens die englischen Originale suchen zu müssen. Und ich kann meine wüsten Beschimpfungen da loswerden, wo sie auch jemand verdient hat.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Wieder Schluderei in Visual C++’ Code Generation:

    switch(x) {
    case 0:
        foo(0);
    case 1:
        foo(1);
    default:
        foo(x);
    }


Visual C++ rafft hier nicht, dass alle drei foo()-Aufrufe zu einem einzigen foo(x) vereinigt werden können. Man muss es entsprechend anpassen damit das passiert.

Es geht hier um die DefWindowProc() und für mich bedeutet das, dass ich 30, 40 Funktionen einen zusätzlichen Parameter übergeben muss, damit korrekt propagiert wird.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Krishty hat geschrieben:Ich jeden Tag derweil zumindest Post die Feedback-Feld auf MSDN, in ficken Übersetzung maschinell auf Kreuz.

Wenn sie in zwei Jahren nur noch Englisch anzeigen spart mir das wahrscheinlich mehr Zeit als für den Rest meines Lebens die englischen Originale suchen zu müssen. Und ich kann meine wüsten Beschimpfungen da loswerden, wo sie auch jemand verdient hat.
Also ich bin mir net sicher ob das dein Problem ist, aber ich hab bei meinem Browser Englisch als preferred Language eingestellt und komm immer auf die englische Seite. Ansonsten kannst du dir zumindest die englische MSDN als Search Provider einrichten... ;)
Antworten