Jump to content

Danjovic

Members
  • Posts

    342
  • Joined

  • Last visited

Everything posted by Danjovic

  1. Yes, precisely! Both controllers can be connected, and either one should work.
  2. The excellent MasterPlay clone provided by @ikonsgr have 4 spare pins that can be used ti extend its functionality. Two of such signals can be used to interface to a NES/SNES controller leaving the other two to provide Top and Bottom button presses. Besides the female NES(or SNES) connector, only 3 components are necessary, as presented on the schematic below: I wrote some code that can be compiled using open source tools SDCC and GPUTILS. It preserves the original functionality of the adapter, while adding the support for the NES/SNES controller. In this version only buttons B and Y of the SNES controller are functional (besides the directionals, of course). main.c To compile the code, the following command is necessary: sdcc --use-non-free -mpic14 -p16f630 main.c -o "MasterPlayClonePlus" Presently I don't have a 5200 system, so I'll be grateful if someone could help me on that, but If none shows off nevermind, LOL. I am doing that just for the fun of do it, so I should probably rig some hardware to "emulate" a 5200 game port and validate the code.
  3. Hi Swami, I hope that the information below might be useful might be useful to clarify your questions: pin 12 is a permanent VCC (+5V) coming from a voltage regulator inside the 5200. pin 9 is an adjustable power supply (~4.2..6V) that can be turned on/off by 5200. On the 5200 schematic such voltage is named CAV. I agree that Vpot would suit better to its purpose. Atari 5200 measures position of the game controller by measuring the time a (internal) capacitor takes to charge from 0 (zero) Volts to a given voltage. The current that charges the capacitor flows through the potentiometer of the game controller. For a fixed voltage supplied to one side of the potentiometer ("hot side"), the charging time varies with the resistance value. For a fixed resistance of the potentiometer the charging time varies with the voltage supplied to the "hot side" of the potentiometer. The reason why CAV voltage was made adjustable is to provide a means of adjustig the timing when the potentiometer is set on the "center" position. The 5200 trackball works by varying the voltage on the hot side of a 180K resistor. When the trackball is steady the voltage is about 3.0V. When you roll the trackball to one side the voltage increases, thus charging the capacitor faster. When you roll the trackball to the opposite direction the voltage drops and the capacitor takes more time to charge. The net effect is the same of having a fixed voltage and a variable resistor. Some games can turn off CAV to measure the "idle" position of the trackball. When CAV drops, the circuit of the trackball ignores the pulses coming from the ball sensors and the voltage it supplies provides the reference charging time for the 5200. The game can differentiate a controller from a trackball by dropping CAV and measuring the time it takes for the capacitors charge. A Trackball will return some value close to the center of the scale. A standard controller will return 208 because without the CAV voltage supplied to the hot side of the potentiometer the capacitor will never charge. A game that do not try to detect a trackball will work with the ikonsgr's adapter connected to either pin 12 (5V) or CAV. They might provide different countings, though. A controller adapter can be powered by pin 12 as long as it provides a method of blocking the output whenever CAV drops to 0V.
  4. The board is for a custom (DIY) paddle (that should have a 100K pot instead of a 500K, sorry). The standard CX-30 paddle requires a different circuit/board PC+CX30to5200.sch PC+CX30to5200.brd
  5. An exercise on the board layout, single faced, 71x51mm (2.8"x2"). PCto5200.schPCto5200.brd
  6. I have designed a PC to 5200 adapter based on the schematics found on this forum. I have added a stereo plug to provide automatic switching to external potentiometer inside the paddle. Worth to mention that I am considering a DIY paddle. When the paddle plug is not inserted, the X axis is connected to PC X axis pin (in series with the trim potentiometer) and the transistor is permanently cut by the ground at its base (as the common connection for the paddle is a positive voltage, it was necessary to add a transistor to invert the state of the button output). When the plug is inserted the connection to PC X Axis is interrupted and the 5200 X axis is connected to the paddle potentiometer. When the paddle button is pressed the VPOT voltage polarizes the transistor base making it conduct (saturate). Resistor from transistor base to ground is added to enhance noise immunity.
  7. "Faliu" in portuguese has the meaning of "went bankrupt". Is that an intentional pun?
  8. Thanks !! It will help me a lot! My plan is to use a microcontroller to interface to keyboard and perhaps a custom version of arduitape (tzxduino) to playback the software (and maybe record the pulses too).
  9. I an drawing an schematic for the Compumate based on the info provided by @kevtris . Did anybody here have pictures of the internals of the compumate or the original schematic, so I can check my design? My intention is to build a clone. Thanks!
  10. You can use a coin on a cloth to paint the 5200. It might be necessary to mask the outline though.
  11. Those are the calculations I have mentioned in a former post: I think R2 might be reduced to 56 or 68 Ohms to compensate the 100 Ohm output impedance of the PWM source provided by R4.
  12. I heve read some messages from one the users (a guy in orange clothes) saying that some games were considering full scale diagonal movements as cheating, but as no one else complained about, I quoted the terms "unexpected" and "correct" (values). The modification I have proposed is more an exercise of thought than a solution to an alleged problem
  13. And what about a PS/2 mouse to 5200 adapter? I did some math and verified that it is possible to use 3 resistors to convert the 0-5V output from a microcontroller pwm into 2.4 to 3.9V that in series with a 180K, as in the trackball, should provide the adequate timing for the 5200.
  14. I was reading some posts related to the "unexpected" readings of the masterplay adapter on the intermediary positions (diagonals). Is that really an issue? If so I think that some resistors can be added to extra pins on the design of the masterplay clone so it is possible to get "correct" diagonal values: Considering the present circuit and how it works the extra resitors would be added to RC0 and RC1 // RC4 and RA2. Today: PosY RC0 RC1 Equivalent min --- ON 0 Ohm mid ON --- 47k Ohm max --- --- 94k Ohm With intermediary values: PosY RC0 RC1 RC2 RC3 Equivalent min --- ON --- --- 0 Ohm 30% ON --- ON --- 47k||68k = 27.8k mid ON --- RC2 RC3 47k Ohm 70% --- --- --- ON (47k+47k)||220k = 65.9k max --- --- --- --- 94k Ohm Full Scale: 47k + 47k = 94k Ohm 30% = 28k 50% = 47k 70% = 66k
  15. Just checking the code for "deluxe" version, diagonal controls coming from Atari 2600 port input can be restricted to circle equivalent with the following code: // Check the 2600 Joystick port uint8_t statePort2600 = 0; if (NORTH_PRESSED) statePort2600 |= (1<<0); // UP if (SOUTH_PRESSED) statePort2600 |= (1<<1); // DOWN if ( WEST_PRESSED) statePort2600 |= (1<<2); // LEFT if ( EAST_PRESSED) statePort2600 |= (1<<3); // RIGHT switch (statePort2600) { // Cardinals case (1<<0): // NORTH digital_vpot0 = 1; digital_vpot1 = 1; break; case (1<<1): // SOUTH digital_vpot0 = 254; digital_vpot1 = 254; break; case (1<<2): // EAST digital_hpot0 = 1; digital_hpot1 = 1; break; case (1<<3): // WEST digital_hpot0 = 254; digital_hpot1 = 254; break; // Diagonals case (1<<0)|(1<<2): // NORTHWEST digital_vpot0 = 38; digital_vpot1 = 38; digital_hpot0 = 217; digital_hpot1 = 217; break; case (1<<0)|(1<<3): // NORTHEAST digital_vpot0 = 38; digital_vpot1 = 38; digital_hpot0 = 38; digital_hpot1 = 38; break; case (1<<1)|(1<<2): // SOUTHWEST digital_hpot0 = 217; digital_hpot1 = 217; digital_hpot0 = 217; digital_hpot1 = 217; break; case (1<<1)|(1<<3): // SOUTHEAST digital_hpot0 = 217; digital_hpot1 = 217; digital_hpot0 = 38; digital_hpot1 = 38; break; default: digital_hpot0 = 127; digital_hpot1 = 127; digital_hpot0 = 127; digital_hpot1 = 127; } // if in ambidextrous mode, default it to no-stick-pressed. if (statePort2600!=0) ambistick = AMBI_NONE; /* if (NORTH_PRESSED) { ambistick = AMBI_NONE; // if in ambidextrous mode, default it to no-stick-pressed. digital_vpot0 = 1; digital_vpot1 = 1; } else if (SOUTH_PRESSED) { ambistick = AMBI_NONE; digital_vpot0 = 254; digital_vpot1 = 254; } if (WEST_PRESSED) { ambistick = AMBI_NONE; digital_hpot0 = 1; digital_hpot1 = 1; } else if (EAST_PRESSED) { ambistick = AMBI_NONE; digital_hpot0 = 254; digital_hpot1 = 254; } */
  16. Well, I did it! Single handed controller but it is for MSX I believe that it should work for 7800 as long as the pinout for VCC,GND,FireA,FireB are connected on respective pins ... /* //(PC0) A0 - TRGA-1 Port 1/Pin 6 Button Z // MSX //(PC1) A1 - TRGB-1 Port 1/Pin 7 Button C // MSX (PC0) A0 - TRGA-1 Port 1/Pin 5 Button Z // Atari 800 (PC1) A1 - TRGB-1 Port 1/Pin 9 Button C // Atari 800 */ ... and the PORT register state for the triggers be initialized with "1" instead of "0" ... //PORT_TRIG &=~( (1<<TA_1)|(1<<TB_1) ); // MSX PORT_TRIG |= ( (1<<TA_1)|(1<<TB_1) ); // Atari 7800 ...
  17. Hi @smbaker, I watched the video! Very cool project, thanks for sharing. If at least Pokey checked the /KR1 input line one video line after it changed state of internal counter I am sure that emulating the keyboard would be less tricky ;). By the way, did you manage already to get it working? Just in case you don't then I think that a pair of analog switches should do the trick: The desired key be "pressed" by settng the signals KR0/KR1/KC0/KC1 and ENABLE according to the table: The Yn and Xn row and column matches the order of the analog muxes internal to the 5200
  18. What a wonderful project! Thanks for sharing!
  19. I understand you. I can't speak for other people but I do it just for fun. On the other hand the tasks involved in commercialize the product are way too boring and that is the reason why I don't usually sell them.
  20. Oh sorry, I did not sell it. I have just made it for the square inch contest from hackaday.io
  21. The case (shell) was designed for the NES/SNES version but it is not mandatory. The Wii nunchuck connects directly to the board and the board can be connected directly to the Atari Joystick ports.
  22. I think I have figured out how do the trackball is detected:
  23. You mean move with the thumbstick and aim with the accelerometers? That would be cool.
×
×
  • Create New...