Atari 5200: New version of Atari800 (Beta): two triggers (Moon Patrol!!!), hat start and exit buttons
-
@rkoster Thanks, this is actually the current way i implemented it, this linear conversion however is too sensitive for some roms.
That is why i am trying for a more elaborate math function, so there is a sort of slope to controls.
I have not found any way for adjustment in OS or other tool, so i am open to suggestions.@Used2BeRX Good to have you back, clerical error ?
As far as Miner goes, unless the manual is wrong, your rom seems to be a dump of an A8 version ported to A52 instead of a true A52 version, or perhaps you're running in A8 machine mode (doubtful), you are able to check the last one by going in emulator menu and checking under system settings.
Could also be the emulator is flawed causing the rom to think it's in A8 mode, same way some roms switch to trackball or paddle mode. -
@future.child Yup. Nobody's sure what happened, but they got me back here. I guess a permanent ban was issued. Those stay on your record, so I guess they got an asterisk by it. :)
Interesting about the Miner 2049er. I'll look into it. Would rather have it work normally so you don't have to hit select for 2 players. That would be the only game you have to do that for if I can't fix it.
I posted the controls to my standard configuration. I don't know by looking at yours what would be happening to me. Maybe you can look at what I've got and see it right away?
EDIT: I finished the configurations for all of the 5200 games on the spreadsheet. Bugs are in red. Nothing really except for the issues I'm having with the 2 player controls. I tried comparing our controller configs but couldn't figure anything that would fix it on my end. Hope you notice something that I didn't.
-
@future.child What sort of curve do you want? Small movements have less effect?
-
@rkoster Yes, that's exactly what i want as the controller now is way too sensitive.
The current code is (i.e. for joystick 1 y axis)
int joy1_y = SDL_JoystickGetAxis(joystick0, 1); int pot1 = (joy1_y/287.429824561)+114; if(pot1 < 0) pot1 = 0; if(pot1 > 227) pot1 = 227; POKEY_POT_input[1] = pot1;
This is beautifully linear, but little movements of the analog thumbstick are huge in the emulator.
-
Simplest would be to keep it linear, and change the relationship. Try changing the unit factor from 287. That adjusts the linear mapping. You're already clamping pot1, so all it will do is discard extreme values. That would be doing kind of the same thing that a circular restrictor does on an analog arcade stick.
-
@rkoster I have been fiddling with this, problem is when having a higher number the atari does not get the full input range making some roms unplayable, while lowering the value actually makes it more sensitive.
I currently have a adjustable relationship (in the code the 287.429824561 is actually a default value of a variable) in place as a temporary workaround for a few roms, but some roms like caste crisis and Kaboom expect the full range of input.
-
Ah, you're definitely diving into trickier territory then. Different gamepads will actually have different response curves for that. You may want to look at this article.
I'd start with an anlog deadzone to begin with, to see if that makes a difference.
-
@future.child I managed to get the kernel recompiled. The joystick works correctly now. :) Thanks for your help!
-
As a heads-up to anyone else who might run into this.
If you have a problem where you run the atari800 emulator the first time and everything works fine, and then you run it a second time and it exits the emu when you push right on the joystick, the issue is that you have joy2key enabled.
You can hit F4 to exit to the command line and type
sudo killall joy2key.py
Now you can play the atari800 emu again.
To solve the problem permanently, you can to go the RetroPie menu, Run Command Configuration, and make sure that "Launch menu joystick control" is set to Disabled.
I am not sure what's happening, but it seems like having this option on leaves it running when the atari800 emu exits. The result is that hitting the joystick is also sending keystrokes. You can even go into jstest while it's happening, and see that keys are being hit when the joystick moves.
-
@future.child Hey bud. Just wondering how the progress has been going. I haven't heard from you in a while.
I borked my Pi so I had to re-start on a new SD card. That's probably a good thing though because it's a fresh install that my brother didn't fiddle around with and it's 4.2 instead of the 4.1 that he was using. I'm hoping once I get everything up and running and back to the state it was in before that those controller and game save issues that I was having don't crop up again.
-
@Used2BeRX Well things haven't really been progressing that much.
The analog controls are still a problem, i now have a less sensitive joystick with a curve to it but for some reason the extra step it takes to do the adjustment in between reading the joystick and passing the modified value to the emulator takes too long for game-play (about a half to a full second of delay depending on how much adjustment is needed).
Without the curve, there is no noticeable lag but this curve is needed for certain roms (i use Kaboom! for testing) where the paddle sometimes needs to travel fast and at other times needs to travel more slowly but accurate.I can't see any other way than using a mouse for now.
So your controller issues have been solved with a fresh install ?
Does that include the crosstalk from controller 2 to controller 1 ? -
@future.child I don't know if the fresh install fixed the controller problems. I've been busy setting media up for another project I'm working with somebody else on to make gamelist.xmls that are going to take advantage of all of the media I've already collected for use on another emulation system.
I'm hoping everything will work out. I will let you know if it works now.
-
@mediamogul said in Atari 5200: New version of Atari800 (Beta): two triggers (Moon Patrol!!!), hat start and exit buttons:
The individual launch commands are located in
/opt/retropie/configs/atari800/emulators.cfg
and/opt/retropie/configs/atari5200/emulators.cfg
. However, the per-game preferences for those launch commands are located in/opt/retropie/all/emulators.cfg
.So....... I've installed 4.2 on a new SD card, installed the original atari800 emulator through the regular ways in emulationstation/retropie. I installed future.child's upgraded version. I've played a few games and changed the configurations to the ones that I made specifically for those games.
Now I wanted to copy over the new per-game preferences file we spoke about before with the old one I had with all of the 5200 games set up.
Unfortunately the directory "/opt/retropie/all/" doesn't even exist, so the "emulators.cfg" file is not getting saved there anymore. Yes, I did a refresh in the FTP program several times after making individual game launch preference saves to be sure that the folder isn't there. Is anybody aware of where this is being saved in version 4.2 vs the above directory where it was saved in RetroPie 4.1?
EDIT: Nevermind. Either that was a typo when mediamogul made that post and I figured it out before, or it did change where it saves that information. The file is location is actually here:
/opt/retropie/configs/all/emulators.cfg
-
-
@future.child The fresh install did not fix any of the controller issues. BUG1 and BUG2 remain. I've tried both Choplifter (a 1 player game) and Countermeasure (a 2 player game. Here are the configuration files for them.
Standard "atari5200.cfg" that Choplifter uses:
Atari 800 Emulator, Version 3.1.0 ROM_OS_A_NTSC= ROM_OS_A_PAL=/home/pi/RetroPie/BIOS/Atariosa.rom ROM_OS_B_NTSC= ROM_OS_AA00R10= ROM_OS_AA00R11= ROM_OS_BB00R1= ROM_OS_BB01R2=/home/pi/RetroPie/BIOS/ATARIXL.ROM ROM_OS_BB02R3= ROM_OS_BB02R3V4= ROM_OS_CC01R4= ROM_OS_BB01R3= ROM_OS_BB01R4= ROM_OS_BB01R59= ROM_OS_BB01R59A= ROM_5200=/home/pi/RetroPie/BIOS/atari5200.rom ROM_5200_A= ROM_BASIC_A= ROM_BASIC_B= ROM_BASIC_C=/home/pi/RetroPie/BIOS/ATARIBAS.ROM ROM_XEGAME= ROM_400/800_CUSTOM=/home/pi/RetroPie/BIOS/ATARIOSB.ROM ROM_XL/XE_CUSTOM= ROM_5200_CUSTOM= ROM_BASIC_CUSTOM= ROM_XEGAME_CUSTOM= OS_400/800_VERSION=AUTO OS_XL/XE_VERSION=AUTO OS_5200_VERSION=AUTO BASIC_VERSION=AUTO XEGS_GAME_VERSION=AUTO SAVED_FILES_DIR=/home/pi/RetroPie/SAVES/Atari5200 H1_DIR= H2_DIR= H3_DIR= H4_DIR= HD_READ_ONLY=1 PRINT_COMMAND=lpr %s SCREEN_REFRESH_RATIO=1 MACHINE_TYPE=Atari 5200 RAM_SIZE=16 DEFAULT_TV_MODE=NTSC MOSAIC_RAM_NUM_BANKS=0 AXLON_RAM_NUM_BANKS=0 ENABLE_MAPRAM=0 DISABLE_BASIC=1 ENABLE_SIO_PATCH=1 ENABLE_H_PATCH=1 ENABLE_P_PATCH=0 ENABLE_NEW_POKEY=1 STEREO_POKEY=0 SPEAKER_SOUND=1 BUILTIN_BASIC=0 KEYBOARD_LEDS=0 F_KEYS=0 BUILTIN_GAME=0 KEYBOARD_DETACHED=0 1200XL_JUMPER=0 CFG_SAVE_ON_EXIT=0 MIO_ROM= BLACK_BOX_ROM= XLD_D_ROM= XLD_V_ROM= CARTRIDGE_FILENAME= CARTRIDGE_TYPE=4 CARTRIDGE_PIGGYBACK_FILENAME= CARTRIDGE_PIGGYBACK_TYPE=0 CARTRIDGE_AUTOREBOOT=1 CASSETTE_FILENAME= CASSETTE_LOADED=0 CASSETTE_WRITE_PROTECT=0 RTIME=1 COLOURS_NTSC_SATURATION=0 COLOURS_NTSC_CONTRAST=0 COLOURS_NTSC_BRIGHTNESS=0 COLOURS_NTSC_GAMMA=0.3 COLOURS_NTSC_HUE=0 COLOURS_NTSC_GTIA_DELAY=26.8 COLOURS_NTSC_EXTERNAL_PALETTE= COLOURS_NTSC_EXTERNAL_PALETTE_LOADED=0 COLOURS_NTSC_ADJUST_EXTERNAL_PALETTE=0 COLOURS_PAL_SATURATION=0 COLOURS_PAL_CONTRAST=0 COLOURS_PAL_BRIGHTNESS=0 COLOURS_PAL_GAMMA=0.3 COLOURS_PAL_HUE=0 COLOURS_PAL_GTIA_DELAY=23.2 COLOURS_PAL_EXTERNAL_PALETTE= COLOURS_PAL_EXTERNAL_PALETTE_LOADED=0 COLOURS_PAL_ADJUST_EXTERNAL_PALETTE=0 ARTIFACT_NTSC=NONE ARTIFACT_PAL=NONE ARTIFACT_NTSC_MODE=0 SCREEN_SHOW_SPEED=0 SCREEN_SHOW_IO_ACTIVITY=1 SCREEN_SHOW_IO_COUNTER=0 SCREEN_SHOW_1200XL_LEDS=1 SOUND_ENABLED=1 SOUND_RATE=44100 SOUND_BITS=16 SOUND_FRAG_FRAMES=0 SOUND_LATENCY=20 VIDEO_FILTERING=1 VIDEO_ZOOM=1.00 SDL_JOY_0_ENABLED=1 SDL_JOY_0_LEFT=276 SDL_JOY_0_RIGHT=275 SDL_JOY_0_UP=273 SDL_JOY_0_DOWN=274 SDL_JOY_0_TRIGGER=306 SDL_JOY_1_ENABLED=0 SDL_JOY_1_LEFT=97 SDL_JOY_1_RIGHT=100 SDL_JOY_1_UP=119 SDL_JOY_1_DOWN=115 SDL_JOY_1_TRIGGER=306 SDL_JOY_0_INDEX=0 SDL_JOY_1_INDEX=1 SDL_JOY_0_SECOND_AXIS=2 SDL_JOY_0_SECOND_AXIS_ENABLED=0 SDL_JOY_0_TRIGGER1=1 SDL_JOY_0_TRIGGER2=0 SDL_JOY_0_ASTERISK=3 SDL_JOY_0_HASH=2 SDL_JOY_0_SELECT=8 SDL_JOY_0_START=9 SDL_JOY_0_A52_PAUSE=12 SDL_JOY_0_A52_RESET=999 SDL_JOY_0_OPTION=999 SDL_JOY_0_DIGIT_1=4 SDL_JOY_0_DIGIT_2=5 SDL_JOY_0_DIGIT_3=6 SDL_JOY_0_DIGIT_4=7 SDL_JOY_0_DIGIT_5=999 SDL_JOY_0_DIGIT_6=999 SDL_JOY_0_DIGIT_7=999 SDL_JOY_0_DIGIT_8=999 SDL_JOY_0_DIGIT_9=999 SDL_JOY_0_DIGIT_0=999 JOY_SPEED_ADJUST=999 TRUE_ANALOG_JOYSTICK=0
Countermeasure.cfg:
Atari 800 Emulator, Version 3.1.0 ROM_OS_A_NTSC= ROM_OS_A_PAL=/home/pi/RetroPie/BIOS/Atariosa.rom ROM_OS_B_NTSC= ROM_OS_AA00R10= ROM_OS_AA00R11= ROM_OS_BB00R1= ROM_OS_BB01R2=/home/pi/RetroPie/BIOS/ATARIXL.ROM ROM_OS_BB02R3= ROM_OS_BB02R3V4= ROM_OS_CC01R4= ROM_OS_BB01R3= ROM_OS_BB01R4= ROM_OS_BB01R59= ROM_OS_BB01R59A= ROM_5200=/home/pi/RetroPie/BIOS/atari5200.rom ROM_5200_A= ROM_BASIC_A= ROM_BASIC_B= ROM_BASIC_C=/home/pi/RetroPie/BIOS/ATARIBAS.ROM ROM_XEGAME= ROM_400/800_CUSTOM=/home/pi/RetroPie/BIOS/ATARIOSB.ROM ROM_XL/XE_CUSTOM= ROM_5200_CUSTOM= ROM_BASIC_CUSTOM= ROM_XEGAME_CUSTOM= OS_400/800_VERSION=AUTO OS_XL/XE_VERSION=AUTO OS_5200_VERSION=AUTO BASIC_VERSION=AUTO XEGS_GAME_VERSION=AUTO SAVED_FILES_DIR=/home/pi/RetroPie/SAVES/Atari5200 H1_DIR= H2_DIR= H3_DIR= H4_DIR= HD_READ_ONLY=1 PRINT_COMMAND=lpr %s SCREEN_REFRESH_RATIO=1 MACHINE_TYPE=Atari 5200 RAM_SIZE=16 DEFAULT_TV_MODE=NTSC MOSAIC_RAM_NUM_BANKS=0 AXLON_RAM_NUM_BANKS=0 ENABLE_MAPRAM=0 DISABLE_BASIC=1 ENABLE_SIO_PATCH=1 ENABLE_H_PATCH=1 ENABLE_P_PATCH=0 ENABLE_NEW_POKEY=1 STEREO_POKEY=0 SPEAKER_SOUND=1 BUILTIN_BASIC=0 KEYBOARD_LEDS=0 F_KEYS=0 BUILTIN_GAME=0 KEYBOARD_DETACHED=0 1200XL_JUMPER=0 CFG_SAVE_ON_EXIT=0 MIO_ROM= BLACK_BOX_ROM= XLD_D_ROM= XLD_V_ROM= CARTRIDGE_FILENAME=/home/pi/RetroPie/roms/atari5200/(1) Licensed/Pengo.bin CARTRIDGE_TYPE=4 CARTRIDGE_PIGGYBACK_FILENAME= CARTRIDGE_PIGGYBACK_TYPE=0 CARTRIDGE_AUTOREBOOT=1 CASSETTE_FILENAME= CASSETTE_LOADED=0 CASSETTE_WRITE_PROTECT=0 RTIME=1 COLOURS_NTSC_SATURATION=0 COLOURS_NTSC_CONTRAST=0 COLOURS_NTSC_BRIGHTNESS=0 COLOURS_NTSC_GAMMA=0.3 COLOURS_NTSC_HUE=0 COLOURS_NTSC_GTIA_DELAY=26.8 COLOURS_NTSC_EXTERNAL_PALETTE= COLOURS_NTSC_EXTERNAL_PALETTE_LOADED=0 COLOURS_NTSC_ADJUST_EXTERNAL_PALETTE=0 COLOURS_PAL_SATURATION=0 COLOURS_PAL_CONTRAST=0 COLOURS_PAL_BRIGHTNESS=0 COLOURS_PAL_GAMMA=0.3 COLOURS_PAL_HUE=0 COLOURS_PAL_GTIA_DELAY=23.2 COLOURS_PAL_EXTERNAL_PALETTE= COLOURS_PAL_EXTERNAL_PALETTE_LOADED=0 COLOURS_PAL_ADJUST_EXTERNAL_PALETTE=0 ARTIFACT_NTSC=NONE ARTIFACT_PAL=NONE ARTIFACT_NTSC_MODE=0 SCREEN_SHOW_SPEED=0 SCREEN_SHOW_IO_ACTIVITY=1 SCREEN_SHOW_IO_COUNTER=0 SCREEN_SHOW_1200XL_LEDS=1 SOUND_ENABLED=1 SOUND_RATE=44100 SOUND_BITS=16 SOUND_FRAG_FRAMES=0 SOUND_LATENCY=20 VIDEO_FILTERING=1 VIDEO_ZOOM=1.00 SDL_JOY_0_ENABLED=1 SDL_JOY_0_LEFT=276 SDL_JOY_0_RIGHT=275 SDL_JOY_0_UP=273 SDL_JOY_0_DOWN=274 SDL_JOY_0_TRIGGER=306 SDL_JOY_1_ENABLED=0 SDL_JOY_1_LEFT=97 SDL_JOY_1_RIGHT=100 SDL_JOY_1_UP=119 SDL_JOY_1_DOWN=115 SDL_JOY_1_TRIGGER=306 SDL_JOY_0_INDEX=0 SDL_JOY_1_INDEX=1 SDL_JOY_0_SECOND_AXIS=2 SDL_JOY_0_SECOND_AXIS_ENABLED=0 SDL_JOY_0_TRIGGER1=1 SDL_JOY_0_TRIGGER2=0 SDL_JOY_0_ASTERISK=3 SDL_JOY_0_HASH=2 SDL_JOY_0_SELECT=8 SDL_JOY_0_START=9 SDL_JOY_0_A52_PAUSE=999 SDL_JOY_0_A52_RESET=12 SDL_JOY_0_OPTION=999 SDL_JOY_0_DIGIT_1=4 SDL_JOY_0_DIGIT_2=5 SDL_JOY_0_DIGIT_3=6 SDL_JOY_0_DIGIT_4=999 SDL_JOY_0_DIGIT_5=999 SDL_JOY_0_DIGIT_6=999 SDL_JOY_0_DIGIT_7=999 SDL_JOY_0_DIGIT_8=999 SDL_JOY_0_DIGIT_9=999 SDL_JOY_0_DIGIT_0=7 JOY_SPEED_ADJUST=999 TRUE_ANALOG_JOYSTICK=0
I have tested controller output in jstest for JS0 and JS1 and it behaves exactly as you would expect it to and you don't get any cross-contamination with the 2nd joystick. All other emulators that I've used 2 controllers on whether in or out of the libretro umbrella have not had any issues with the controllers I'm using. I'm using "Medal of Honor" Airflow aftermarket PS3 controllers.
-
@Used2BeRX i think i found the cause for the cross-contamination......
I have taken the button input and mapped it to the atari keyboard input assuming the keypad would be the same for all users (like i said i was no 5200 kid).
To solve this i will have to remap the joystick buttons to the emulated pokey chip.
But first i have to find out if, and how i have to interact with the emulated gtia chip for two joystick support.Kat5200 seems to be getting more and more attractive as an emulator for the 5200.
Once you have it installed, configured it with mouse and created different configs for different roms it just works.Current downside is there is no button combination support (i.e. for exiting the emulator), the author has plans to incorporate this function though after the upcoming release.
There are no plans for a libretro port however, but anyone is welcome to create one.
Plus side is joystick works as intended and it's highly configurable. -
@future.child I wasn't even aware there was another 5200 emulator for the Pi lol...
I really hope you figure this controller thing out though. If you manage to do that, with the configs I've made and all the work you've done we have the entire 5200 library working "perfectly" except for 3 games. (I'm adding Pole Position to the list because although it plays very good it still would benefit from a True Analog fix).
I'll have to get you the config files somehow. Unfortunately, on the first launch of each game, you would have to follow the spreadsheet and pick the correct configuration for each game that doesn't use the default atari5200.cfg. That's because the file that saves this information changes if you have your roms in different folders than I have mine in, and I can guarantee that you don't have them in the same folders as I do :)
I'll put them together in an upload for you to try out.
-
@Used2BeRX
Atari800 requires an extensive rewrite to descently support analog controls, for which i do not have the needed time.
Perhaps when i find enough time Atari800 will eventually have analog controls.I have created a install script for the kat5200 emulator which has the necessary analog support already present.
You will find more details in this thread. -
@future.child Already saw it and replied about 3 seconds before you posted here. :)
Awesome work man. I should be able to test it out some time this week.
-
@future-child
Thanks for your fixes and additions :DAfter messing around trying to figure out why Robotron 2084/Space Dungeon dual stick controls weren't working for me (shooting was always aiming northwest, and the config would always write out SDL_JOY_0_SECOND_AXIS_ENABLED=0) with a single gamepad connected to my Pi, I finally worked out that the simplest fix was to change the 2 lines in
sdl/input.c
that contain "SDL_JOY_0_SECOND_AXIS_ENABLED" to something else.I'm guessing that since the option SDL_JOY_0_SECOND_AXIS is a substring of SDL_JOY_0_SECOND_AXIS_ENABLED, that's the reason the segment where SDL_JOY_0_SECOND_AXIS_ENABLED option is read from the config file never actually got called.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.