Atari 5200: New version of Atari800 (Beta): two triggers (Moon Patrol!!!), hat start and exit buttons
-
@Used2BeRX i will have a look at the hat code, i did not add this so i have no idea yet why it would delete the config line or why it still works when it should be disabled.
4 player support is not that hard to add, but as you say it was not common in that era to have more than two joysticks.
The JOY_SPEED_ADJUST will not conflict with analog, the only thing this parameter does is restrict the minimum and maximum values of the joystick hat and analog axises, hence the limited movement in Kaboom! and castle crisis.
In this version the analog axises (value: between -32767 and 32767, 0 is center) are linear translated to atari's input (value: between 0 and 228, 114 is centre), for modern controllers i think, it would be better to have some sort of logarithmic scale to aid in sensitivity.
If someone could supply me with a nifty math trick to accomplish this it would be great. -
@future.child Unfortunately, I couldn't tell you when the "HAT" line was being erased from my configurations. I can just say that it started after I started using your updates versus jfranco original code. What I don't understand is why the line doesn't seem to be needed anymore though. The D-Pad works fine for me without it on any of the games where we're not using the stick for analog controls.
If 4 players isn't hard, might as well add it :)
I'm going to try out Kaboom! and Castle Crisis with JOY_SPEED_ADJUST at 11 with True Analog turned on, but I'm assuming that it's just going to move too fast like it did before you put the joyspeedadjust parameter in there.
I'm a big dummy at math man. I'm pretty awesome at accounting type math, but put some variables in there and I'm lost. I'm pretty sure we've got some smart guys in these forums though.
EDIT: It was hard to tell a difference with Kaboom!, but there is DEFINITELY a difference in performance in Castle Crisis. It's still very unplayable, but you do have at least a tiny bit of control over the movements now if you're really careful about how far you press the left analog stick. So.... even though at this point "TRUE_ANALOG_JOYSTICK=1" doesn't actually fix any of the problems by itself, you're on the right track.
EDIT 2:
Pole Position is virtually fixed now with TRUE_ANALOG_JOYSTICK=1. I think it's still too sensitive, but for the first time since I've tried it on the Pi you can actually straighten the car out. I'll have to fiddle with the other settings now to map the HI/LO gears and this one can pretty much be considered fixed I think.EDIT 3:
Galaxian. Nothing I've tried with any of the new settings ever fixes the glitch where sometimes you don't have control of the ship until you die the first time. True Analog doesn't fix it. Joy Speed Adjust doesn't fix it. Using a mouse doesn't fix it. I was told that this had the same problem as Pole Postion and Pengo, but I'm not sure if that's entirely true. Odd behavior. I think unless you were to do some real digging on this one the best option for Galaxian is to load it without any analog "fixes" so you can use the DPad and just let people know that this is an issue that pops up sometimes on this game and your options are to reset and keep your fingers crossed or to die 3 times and start a new game with the controls fixed. -
I just went over the code, it seems jfroco commented out the parts reading the HAT from and writing it to config.
It seems it is just always enabled for some reason, i will just let it leave it as is since there is no downside to having it always enabled as far as i can tell.The sensitivity part you describe in castle crisis where you have to be real careful not to move the joystick too far is exactly the reason why i think a logarithmic scale would work better.
worst case scenario i will end up using lookup table instead of some fancy calculation.I think the Galaxian bug is a issue i will not be able to solve as this happens within the emulation part (i think something is off in pokey handling, either emulator side or rom bug).
-
@future.child I agree on HAT. I haven't noticed any negative effects to it whatsoever. The only time it doesn't get used is, like you said, when the True Analog is used, and that's to be expected. Don't fix what ain't broke.
I think if you were to manage some sort of fix to the analog that got Castle Crisis playing properly it would fix all games that rely on the joystick sensitivity. Even if it didn't though, the only two that are really a concern on the 5200 library are Castle Crisis, Kaboom! (and now fine tuning of Pole Position, although that one is totally playable as-is at this point).
I asked a guy that knows the Atari 5200 about the Galaxian issue. No promises, but maybe he has a fix or at least can point you where to look. I believe he got it working perfect on the XBox, I just haven't pulled it out to double check on that. He was the guy that knew about the issue though.
EDIT:
Gear shifting on Pole Position. When I press 7 on my USB keyboard it goes into high gear. When I press 1 on the keyboard it goes into low gear. Pressing the square button on my current joystick configuration for all games (Numpad 1) will also put it into low gear. I've been trying to map Numpad 7 to another key, but for whatever reason I can't seem to get the controller to put the car into high gear. Is there a difference between USB Keyboard 7 and Numpad 7? -
@future.child I've done all that I can do right now I believe. I figured I'd give you an update of where we're at now. This is including the entire 5200 official library, and all prototypes and self-published titles on the site that talks about Atari (I don't want to name any sites with roms, but you know the one).
When I say "Fixed Games" I really mean fixed. I don't think you have to do a single thing more to tweak them. They play as well as I remember them ever playing on the official system.
FIXED GAMES:
Centipede - Centipede.cfg should have JOY_SPEED_ADJUST=6, TRUE_ANALOG_JOYSTICK=0. Dpad works.Missile Command - MissileCommand.cfg should have JOY_SPEED_ADJUST=8, TRUE_ANALOG_JOYSTICK=0. Dpad works.
Pengo - add "-mouse st" to emulators.cfg Pengo line. Pengo.cfg should have JOY_SPEED_ADJUST=2, TRUE_ANALOG_JOYSTICK=0. Dpad works.
RealSports Tennis - RealSportsTennis.cfg should have JOY_SPEED_ADJUST=1, TRUE_ANALOG_JOYSTICK=0. Dpad works.
Super Breakout - SuperBreakout.cfg should have JOY_SPEED_ADJUST=8, TRUE_ANALOG_JOYSTICK=0. Dpad works.
Pole Position - Still need to map High Gear. Car is controllable now with TRUE_ANALOG_JOYSTICK=1. DPad does not work. "7" key on USB keyboard will put car into high gear, but mapping "Numpad 7" to the controller has no effect.
WEIRD BUGS:
Galaxian - is still playable but suffers from this occasionally on your first life until you die. Just reset if this happens. (Nothing we've done has fixed this yet. Put out question to a guy who might have some ideas).BAD JOYSTICK/SENSITIVITY ISSUES:
Castle Crisis - True Analog way to fast, but IS better than having it off. Joy Speed adjust limits movement to about 1" of screen.Kaboom! - True analog is way to fast. Really didn't notice any difference having it off. Joy Speed adjust limits movement to about 1" of screen.
UNMAPPABLE/GAMES THAT REQUIRE USB KEYBOARD:
Miner 2049er for the final level.
Quest for Quintana Roo
RealSports Football
Space Shuttle -
Gentlemen, does this version of emulator overwrite one that installs with Retro-Pie? Does it still play Atari 800XL games besides 5200?
-
@adriansos666 This version replaces the one that installs with retropie.
It is a enhanced version that has some optional configuration parameters for mapping buttons and joystick axises.
The changes made are aimed at making certain games at least playable with joystick, but is currently unfinished.When these parameters are all disabled this emulator behaves exactly like the original version, and when enabled should have no negative impact (i did not notice any problems with my 800xl roms).
The list of added features:
- Full Joystick support for RetroPie - Autoconfiguration of buttons using Retroarch configuration - Menu navigation using joystick - Joystick Button configuration: trigger1, trigger 2 (Moon Patrol and H.E.R.O.!), asterisk and hash. - Supports hat and axis for joysticks - Use second analog stick in first as second player stick: Robotron and Space Dungeon!!! (configurable axis), This is disabled until restart when player 2 joystick trigger 1 is pressed to prevent cheating in two player games. - Ability to define joysticks numbers. - Numerical 0-9 keys mapped to joystick buttons for games like Beamrider and Congo Bongo. - Option key mapped to joystick button for games like Mr. Robot and his Robot Factory. - Config option to adjust joystick speed (restrict min/max joystick values). - Analog joystick support (for now this disables HAT and is limited to two joysticks) Hotkeys: -------- SELECT + START to exit emulator SELECT + * : Emulator Menu SELECT + # : Reset New parameters in /home/pi/.atari800.cfg : SDL_JOY_0_SELECT=8 <-- button ID SDL_JOY_0_START=9 <-- button ID SDL_JOY_0_TRIGGER1=1 <-- button ID SDL_JOY_0_TRIGGER2=2 <-- button ID SDL_JOY_0_ASTERISK=3 <-- button ID SDL_JOY_0_OPTION=5 <-- button ID SDL_JOY_0_HASH=4 <-- button ID SDL_JOY_0_SECOND_AXIS=2 <-- axis ID SDL_JOY_0_SECOND_AXIS_ENABLED=1 <-- set this to 0 or 1 SDL_JOY_0_DIGIT_1=0 <-- button ID SDL_JOY_0_DIGIT_2=6 <-- button ID SDL_JOY_0_DIGIT_3=7 <-- button ID SDL_JOY_0_DIGIT_4=10 <-- button ID SDL_JOY_0_DIGIT_5=11 <-- button ID SDL_JOY_0_DIGIT_6=12 <-- button ID SDL_JOY_0_DIGIT_7=13 <-- button ID SDL_JOY_0_DIGIT_8=14 <-- button ID SDL_JOY_0_DIGIT_9=15 <-- button ID SDL_JOY_0_DIGIT_0=16 <-- button ID JOY_SPEED_ADJUST=8 <-- accepted Values: 0 ~ 9 (higher = slower movement), anything else disables adjustment. TRUE_ANALOG_JOYSTICK=0 <-- set to 1 for analog joystick input.
-
@future.child I'm actually working on some other stuff on the Pi for a few hours still tonight man. On the off chance you put anything up in that time I should have quick results for you. :)
I'm really curious about why I can't map the "7" from the USB keyboard to a Joystick button. The Numpad 7 you programmed last release doesn't work for teh High Gear.
-
@Used2BeRX I updated the emulator, there was a bug in reading config which caused not accepting values for numerical input other than hardcoded defaults.
afaik only the sensitivity (linearity) is still an issue, i will see what i can do about this.
-
@future.child I'll check the new build when I get a chance and make sure all of the numbers are working again. I didn't think to check the other ones you mapped last time since that wasn't the focus.
I just watched a video of Miner 2049er and I was wrong about needing more numbers. You need to pick up dynamite for the cannon on the last level. how high you go is based off of how much you pick up, so Miner 2049er is also good as-is.
Since we're so close to having the entire 5200 library playable now I think I'm going to try to find manuals for the 3 other games I remarked and see if I can map all of the controls to the joystick for them with their own separate configs. If that's possible, I will have a document saying which buttons do what for those 3.
-
I just went briefly trough the manuals for these three roms.
I'm not sure if it is allowed to post a link to these manuals but google is your friend.Space shuttle; there are too many keys to map that a keyboard is really unavoidable
Keys needed: Select, L, E, C, G, Space, Escape, 1, 2, 3, T............ i stopped reading at page 6 of 32.Real Sports Football; this one needs Hash, Pound, digits 1 to 6 (on both controllers for two player game)
I'm not sure how to map these to the second controller, but single player (practice could work).Quest for Quintana Roo: this one uses two triggers, start and digits 1 to 6 so could work.
-
@future.child Well this is strange. I've got the gearshift working in Pole Position now, but Hash and Asterisk aren't working. They do work on the standard configuration for Robotron though.
Here's my setup:
Gas: CROSS (SDL_JOY_0_TRIGGER1=1)
Brake: SQUARE (SDL_JOY_0_TRIGGER2=0)
Lo Gear: L BUMPER (SDL_JOY_0_DIGIT_1=4)
Hi Gear: R BUMPER (SDL_JOY_0_DIGIT_7=5)Here's the two that aren't working...
SELECT RACE: TRIANGLE (SDL_JOY_0_ASTERISK=3)
NUMBER OF LAPS: CIRCLE (SDL_JOY_0_HASH=2)
EDIT: I'm wondering if the * and # keys are right. The manual at the site says they are, but I reverted back to the standard config for Pole Position, the same configuration file that those keys work with on Robotron 2084 and they don't do anything in Pole Position.
Here's the whole file:
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/Pole Position.bin CARTRIDGE_TYPE=6 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_SELECT=8 SDL_JOY_0_START=9 SDL_JOY_0_TRIGGER1=1 SDL_JOY_0_TRIGGER2=0 SDL_JOY_0_ASTERISK=3 SDL_JOY_0_OPTION=13 SDL_JOY_0_HASH=2 SDL_JOY_0_SECOND_AXIS=2 SDL_JOY_0_SECOND_AXIS_ENABLED=1 SDL_JOY_0_DIGIT_1=4 SDL_JOY_0_DIGIT_2=6 SDL_JOY_0_DIGIT_3=7 SDL_JOY_0_DIGIT_4=10 SDL_JOY_0_DIGIT_5=11 SDL_JOY_0_DIGIT_6=12 SDL_JOY_0_DIGIT_7=5 SDL_JOY_0_DIGIT_8=14 SDL_JOY_0_DIGIT_9=15 SDL_JOY_0_DIGIT_0=16 SDL_JOY_0_INDEX=0 SDL_JOY_1_INDEX=1 JOY_SPEED_ADJUST=01 TRUE_ANALOG_JOYSTICK=1
-
@Used2BeRX According to pete's test cartridge with your config all buttons produce the correct output.
I did notice two parameters (SDL_JOY_0_TRIGGER1=1 and SDL_JOY_1_TRIGGER=306) which afaik do the same thing but are mapped to different buttons, maybe this interferes somehow as trigger is mapped to both button 1 and sdl 306.Perhaps in a future version i will change the code for this if needed so only one is used.What happens in pole position when you use keyboard * and # ?
-
@future.child I don't think the TRIGGER thing is a problem. At least it hasn't caused me any problems at all in any of my testing to this point. In fact, other than the Select and Start button, it is probably the only button on the joystick that I've never changed at all.
That is a good question about what happens when I use the keyboard * and #. Sadly, I don't have an answer for you. The only USB keyboard I have is one I got for using on the XBox years ago that is a mini-keyboard that doesn't have a numpad. I tried to hold shift and hit the top-row number keys but they didn't do anything. Of course that means nothing. Any chance you could try that on your end? If not I'm sure I can figure something out but it might take me a few days.
-
@Used2BeRX Disregard the remark about the two parameters, the sdl one is for keyboard joystick.
Both Asterix and Hash do nothing for me either in pole position (btw the numpad does not have a hash key).
Edit: Neither the original atari800 emulator nor kat5200 on both retropie and windows do anything with asterix and hash in pole position for me.
-
@future.child At least we got the same results. :)
That manual you're looking at... Is it the text document? I'm thinking somebody made a mistake on it. I'll have to look around and see if I can find a PDF or alternate instructions. Maybe whoever wrote that just guessed at those two since they often were the keys used for similar pre-game options.
EDIT: Nope. I found a manual I can post here. http://www.gamesdatabase.org/Media/SYSTEM/Atari_5200//Manual/formated/Pole_Position_-1983-_Atari.pdf
Those keys should be good. WTF, right?
EDIT2: You don't think it might have something to do with using True Analog and/or the fact this is one of the few games that default to Trackball, do you? I've got a couple of ideas for testing. I'll get back to you on them when I'm done.
EDIT3: Well... that didn't prove anything. I tried turning on True Analog for Pengo again and the Hash still works in Pengo with it turned on. I was wondering if possibly the Trackball was maybe fighting with the dual stick code for 1 player or something, but no... the hash does work on Pengo with True Analog turned on and only one joystick plugged in. I'm out of ideas.
EDIT4: What I noticed while playing Pengo though is that Pengo uses the "0" key to change players, so configured as-is you need to have the USB keyboard to change the number of players. I think what I'm going to do today is make a "Map" of functions for the joystick and start going through the Atari 5200 games 1 by 1 with the manuals so the same keys will do the same things on all of the games.
Could you tell me where the emulator saves the information when you select an alternate emulator to launch in the emulators.cfg file? I want to know how RetroPie knows to use a different emulator automatically after you've made that alternate choice in the game loading menu.
EDIT5: BTW... could you program it so you can map the "PAUSE" button on the controller? I forgot about that. I believe the 5200 was the first console system in history that had the ability to pause the game.
-
@Used2BeRX I'm starting to think it is a bug in the rom (or dump of it) or every emulator around has the same flaw.
I can not get the asterix nor hash input for pole position on any of the emulators i have tried.Since pole position reacts to 7 and 1 for gear shift it would be in trackball mode, maybe trackball sends another value for asterix and hash than a keyboard would ?
For pengo, Digit_0 will be added in the next release, it is the only button not yet mapped from the a5200 joystick, may as well get that one too.
As for pause, it is an option to add it, it's just as easy as the digits, but since you can press start + shift to enter emulator menu it would be unnecessary as entering the menu also pauses the game.
I'll add it just for accuracy's sake. -
@future.child I'll try something else with Pole Position. You gave me an idea to test out. I'll let you know more after I did it.
I didn't even realize that 0 wasn't added yet. Thanks for adding it. Thanks for adding the Start button too. For PS3/4 controllers I'm going to configure the Home Button to use it.
I'm starting a spreadsheet for the re-mapping and I'm going to use the manuals to get all of the buttons for games. I will send you a link to it when I get the ball rolling.
EDIT: What does "SDL_JOY_0_SELECT=" actually map to?
-
@Used2BeRX "SDL_JOY_0_SELECT=" maps to the select button found on the atari 400/800(xl)'s.
I assume you meant pause button, as start was already mapped ? -
@future.child No... I was talking about the "SELECT". It's mapped to every one of my games in the 5200 but it dawned on me that there was no select button. I assumed it was an 800 thing, but just wanted to verify.
Could you try Bounty Bob Strikes Back! I've tried a few other games and the controls are good with the standard configuration but for some reason I can't move "left" or "up" with Bounty Bob on either the DPad or the Left Analog stick.
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.