• Anmelden

1

Samstag, 2. Oktober 2010, 13:03

Probleme mit SDL Apicall (last post)

Servus..

Öhm...
Ja..

Wie frag ichd as jetzt.. ah..k..also..:
Gibt es ne WinApi, bzw kann mir wer die so scripten, das ich die Dualshock Funktion eines PS3 Six-Axis nutzen kann? (muss ja was geben um das rumble ein und auszuschalten..oder?)
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chaosgod Espér« (2. Oktober 2010, 21:10)


2

Samstag, 2. Oktober 2010, 13:56

ich hab aber nicht nach der DLL gefragt.. Ich würde nicht nach der WinAPI fragen.. wenn ich nicht schon eine funzende DLL hätte -.-
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Motto: ich bin der brennende schinken

  • Nachricht senden

3

Samstag, 2. Oktober 2010, 13:59

Kla hast du nach der dll mitgefragt ... immerhin: wie willst du sons deinen controller benutzten ...
Dann zeig uns die lib doch mal?
;( :jagen:

4

Samstag, 2. Oktober 2010, 14:45

Driver: http://www.dcemu.co.uk/vbulletin/attachm…55&d=1231686163
(musst angemeldets ein zum downloaden)

Alternativ gehen auch die:
http://konsolenprofis.de/downloads/download2.php?id=2349
Sind dieselben.. nur ohne forenanmeldung.. allerdings halt au japanisch.. ^^



Falls es nötig ist.. ginge auch der hier (den nutze ich normal für A8):
http://www.gamersglobal.de/news/15924



Edit:
ich hab letzteres (MotionJoy) nochmal installiert.. scheint mir der leichteste zus ein (vorallem da er der deutschen und englischen sprache mächtig ist). Fehlt im grunde nurnoch zugriff auf die Dualshock/Rumble funktion.
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chaosgod Espér« (2. Oktober 2010, 14:45)


Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

5

Samstag, 2. Oktober 2010, 14:50

Du nutzt die selben DLLs wie für normale Gamepads auch. Ich weiß die richtige jetzt nicht auswendig, doch hat SDL bereits alle nötigen Joystick-Methoden drin. Kannst also - wenn du nix besseres findest - die Doc von SDL lesen, oder schauen, ob und wie Rubygame diese Methoden gewrappt hat.

Die Gamepads heißen in SDL übrigens "Joystick", "Hats" sind die Steuerkreuze, "Axes" sind die Sticks (0-1 sind X-Y, 2-3 sind Z-Horizontal - Z-Vertikal, usw.), "Buttons" (erklärt sich selbst), und noch so ein Quatsch den ich bei Gamepads noch nie gesehen habe. Die Nummerierung der Buttons kannste beim Konfigurieren des Gamepads nachsehen.

Vorsicht:
Sixaxis hat eine andere Button-Nummerierung als normale Gamepads. Frage am besten den Namen des Gamepads ab. Heißt er Sixaxis irgendein Quatsch, solltest du automatisch die Belegung der Buttons umkonfigurieren, sodass dein Script auch ohne Umstellen mit normalen Gamepads kompatibel ist.

Die Kippvorrichtung müssten Axes 4-5 sein, bin mir aber nicht sicher.
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

6

Samstag, 2. Oktober 2010, 19:29

SDL Controllersystem allgemein (Probleme)

k.. hab SDL ma reingehaun.. und festgestellt.. man muss den joystick iwie am leben halten..
Frage ist.. wie initialisiere ich den, und halte in fest?



Ok.. dank Ankou funzt schonmal en winziger teild avon...

Hier mal das ganze Script + etwas aus meinem AKS Code (wo ich buttons abfrage):
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
im AKS:
 
  def update
    if($keysys.padcount > 0)
      @key_hit = $keysys.sdl_getbutton.call($keysys.pad_po, 3)
      if(@key_hit == 1)
        p(@key_hit, 1)
      end
    end
 
    if(Input.trigger?(Input::Z))
 
    end
  end
end
 
 
 
 
 
 
Im Keylogs:
class Keylogs
  attr_accessor :padcount      # Anzahl der Controllers
  attr_accessor :pad_name      # Name des Controllers
  attr_accessor :pad_id        # ID nummer des Controllers
  attr_accessor :pad_po        # Pointer auf den Controller
  attr_accessor :pad_bu        # Buttonanzahl des Controllers
  attr_accessor :sdl_getbutton # ApiCall für buttonabfrage
 
  def initialize
    @padcount = 0
    @pad_id = 0
    @pad_bu = 0
    @pad_name = ""
 
    @sdl_dll
    @sdl_hap
    @pad_po
    @sdl_getbutton
    ask_pads
  end
 
 
 
  def ask_pads
    @sdl_dll = Win32API.new("SDL.dll", "SDL_Init", 'i', 'i') #SDL Starten mit Joystick flag
    @sdl_dll.call(0x00000200)
    @sdl_dll = Win32API.new("SDL.dll", "SDL_NumJoysticks", nil, 'i') #Padanzahl ausfragen
    @padcount = @sdl_dll.call()
 
    if(@padcount > 0)
      @sdl_dll = Win32API.new("SDL.dll", "SDL_JoystickOpen", 'i', 'p') #Pad freigeben
      @pad_po = @sdl_dll.call(@pad_id)
      @sdl_dll = Win32API.new("SDL.dll", "SDL_JoystickName", 'i', 'p') #Padname ausfragen
      @pad_name = @sdl_dll.call(@pad_id)
      @sdl_dll = Win32API.new("SDL.dll", "SDL_JoystickNumButtons", 'p', 'i') #Buttonanzahl ausfragen
      @pad_bu = @sdl_dll.call(@pad_po)
      @sdl_getbutton = Win32API.new("SDL.dll", "SDL_JoystickGetButton", 'pi', 'i')  #GetButton vorbereiten
 
      p("Controllerdaten", "Gefundene Pads: #{@padcount}", "Pointer: #{@pad_po}", "ID: #{@pad_id}", 
        "Name: #{@pad_name}", "Buttonanzahl: #{@pad_bu}")
    else
      change_to_board  
    end
  end
 
 
 
  def change_to_board_error
      p("Kein Gamepad oder Controller gefunden!", "Das keyboard wird als Eingabegerät gewählt.")
      $used_device = "board"
  end
  def change_to_board
      $used_device = "board"
  end
 
 
 
  def remove_pads
      @sdl_dll = Win32API.new("SDL.dll", "SDL_JoystickClose", 'p', nil) #Pad löschen
      @sdl_dll.call(@pad_po)
  end
end
zum Lesen den Text mit der Maus markieren


Die Probleme:
- @pad_bu wird auf 1746072272 gesetzt.. das sind.. viele Buttons...
- Alles läuft super, solange des AKS zeug auskommentiert ist..

Sobald die abfrage im AKS ausgeführt wird, macht es ZACK und "RGSS player funktioniert nicht mehr" erscheint...


Edit: hier die Ausgabe des aktuellen Prints (mit nem normalen Gamepad):
Bild
Die 1,7 milliadren buttons hab ich bei jedem Gerät...
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Chaosgod Espér« (2. Oktober 2010, 19:29)


7

Sonntag, 3. Oktober 2010, 03:13

SDL im Maker läuft nicht wirklich. Die genauen Beweggründe sind mir selber nicht klar, aber wenn ich Rückgaben ausgebe, bekomme ich zum Beispiel 0, wenn ich die selbe Rückgabe mit 1 vergleiche kommt true raus - also irgendwas handhabt SDL da seltsam =/
Abgesehen davon: SDL bietet deine gefragte Funktion gar nicht, das steht doch noch auf der ToDo Liste der Entwickler afaik.

Wenn du den Maker nutzen willst, bzw. den RGSS Player dann bedeutet das, dass du es auf einem Windowsbetriebssystem hast, also hast du DirectX und die WinMM Bibliothek zur Hand.
Lies dich mal in DirectInput ein, und schau dir die nativen Joystick Abbildungen für Windows an.
Das Native reicht für alle Eingaben locker aus. Nur für Rückgaben, da brauchst du schon DirectInput. Vermutlich findest du auch ein bisschen wenn du nach ForceFeedback googelst.

PS: Deinen Code, den du hier zeigst, solltest du nochmal überarbeiten, falls du den weiter nutzen willst ;) die Umsetzung ist mies

8

Sonntag, 3. Oktober 2010, 12:26

Zitat

PS: Deinen Code, den du hier zeigst, solltest du nochmal überarbeiten, falls du den weiter nutzen willst ;) die Umsetzung ist mies

Das mein erster Code mit Win32Api, den ich jemals geschrieben habe.. Die umsetzung ist mir da erstma piepegal.. Mich nervt nur, das der RGSS Player da immer abstürzt..


Btw.. ich hab kein plan wie ich die MSDN Joystick sachen nutzen kann...
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Ähnliche Themen

Social Bookmarks