in c#
joystickDevice.Poll();
This is faster for a number of reasons. First of all, I didn't have to write the entire application in assembly language. So what if you can read the joystick with one mov instruction? Reading a joystick ain't hard no matter what the language and API you have to deal with. What's hard is all of the other parts of the game you have to write, especially the graphics. I don't know about you, but I don't like writing graphics code in asm. Some of the crappiest, most inefficient code I've ever seen was written in assembly language. The whole mantra of "code written in assembly is the fastest there is" is an exaggeration beyond belief.
...
It's given someone knows high level language and assembly, he can produce more efficient and faster code in assembly since he can better deal with misalignment, registerizing variables, use the flags optimally, etc.
>Second, I can read the value from two analog sticks and two analog flippers more than once per frame, I can do it as fast as the HID spec allows, and there can be a lot more analog controls on the device than that! Not so on the Amiga, only can do this once per frame. So much for the superior Amiga joy port.
No, now you are comparing another aspect of the Amiga joystick port-- the ability to deal with analog signals as well. Games pick the better interface-- the digital one. On PC even you are forced to use the analog joystick since that's the standard. And even in the analog case, Amiga reads the POTs with one MOVE-- the hardware is doing the sampling for you. I have never even seen an analog joystick on Amiga-- just paddles in some rare applications.
>With the Amiga Joy port, I get one 1980's era standard boring as hell joystick. Just one per port. Imagine playing Gears of War or Crysis with such a joystick. Might as well sit on the damn thing. On the PC I can have a dozen gaming devices. Mice, keyboards, steering wheels, foot pedals, yokes, game pads, classic style joys, harddrives, video output devices, video input devices, audio output devices, audio input devices, and the list goes on and on. All on one bus. With the Amiga joy port, I get.... a joystick... an old crappy joystick whose metal contact switches tie directly to I/O pins on some bizarre custom chip that's capable of recording the full glory of raw signal bounce. Oh how superior!
Wrong. PC's gameport doesn't give you those options. USB bus gives you ability to have faster buffer transfers but Amiga uses a different port for buffer-based transfers. Digital joysticks are and were the norm for Ataris/Amigas/C64/Vic-20/Sega/STs/etc. whereas PCs were using the inferior analog joysticks. So the Amiga's joystick port is optimized for digital joysticks. Analog joysticks are crappy so only computer that used them were PCs which were NOT into gaming.
>USB HID devices output perfect state information to the computer...
That's a speculative remark. Whatever you read from joystick port you can end up reading from USB HID device.
>All this being said, the Amiga joystick port is just another para interface hanging off a custom chip.
Aren't all ports some sort of interface hanging off a chip-- keyboard port on PC is hanging off some 8042 or compatible.
>It is unusual in that you can fetch information from it rather quickly. One thing amigaski hasn't done in his argument is actually show real code that reads the joystick port as fast as he claims. He has a product which emulates joystick devices for the amiga by bit banging the para port on the pc, but notice he hasn't claimed there are games which are unusable using his hardware emulation product, which by it's very nature has to use the supposedly inferior db15 standard legacy joystick port or a keyboard for it's input.
I can also read digital joystick data and feed it to Amiga/Ataris not just analog joysticks. And the fact that I have gone through all these timings is why I am so certain the analog joysticks are slower and inferior to digital joysticks and on top of that the interface for reading even analog values on Amiga is superior (due to less CPU useage). By the way, the simulation of joysticks is only one part-- the same interface also simulates mice for various machines, disk drives, digitized paddles, etc.
It's not a big deal to write code to read joysticks as fast as I claim.
>The only devices that i'm aware of that actually use the limits of the Amiga joyport are audio digitizers that tie in to that port. I wouldn't be surprised if others on here know of additional devices that can use the capability of this interface. There are two words that accurately describe the Amiga Joystick/Mouse port: weird and suboptimal.
Amazing that you labeled it "mouse port" but did not mention that Mouse is one of the devices that port handles. And you can send pulses through the joystick port for mouse every few microseconds (not milliseconds). Joystick port also handles Light Pens, Paddles, Dongle-stuff, and also lets you control pins for input or output for controlling custom devices although there's a parallel port for doing that as well.