libretro / libretro-atari800

atari800 3.1.0 for libretro/libco WIP
15 stars 43 forks source link

Fix first run crashing on Xbox One. Added savestate support. Rewind … #87

Closed greenchili2 closed 11 months ago

greenchili2 commented 12 months ago

…works. Fixes issue #83 and possibly #49. Added Disc Control menu. Supports Disks, Tapes and M3U files (issue #66). Added in support for 5200 Super Carts. Better support for 5200 controller. Added Paddle support. Converted Core Options menu to v2. Moved some core options into submenus. Added controller mappings for Ports 2-4. Added options for Dual Stick and Swap Ports. Fixes issue #76. Joystick/Console now controlled more easily with device type Atari Keyboard. Added 4 Hi-Res Artifacting modes. Restart does something now. When core option changed only reboot if necessary. Removed several hardcoded controller binds. Fixed issue #29. Joypad input ignored when virtual keyboard active. SIO Acceleration now defaults to enabled. Fix for Bounty Bob (5200 & lift fix A800). Added Atari 800 carts to autodetect DB.

Here is my full change information..

Fixed Atari800 crashing on XBOX One/UWP. Crashes were due to Xbox One/UWP not liking the fileopen command being used on directories.

Some corrections on spelling (search/replace)

Removed lots of hardcoded controller binds to controls/keys. Now the keyboard will only come up in A5200 if you have it defined in the controller settings (among other things). This fixes issue #29 since you can now custom map Vkbd activation properly. https://github.com/libretro/libretro-atari800/issues/29

Hardcoded binds are still present for when in the Atari800 Menu. I do have code for controlling the Atari800 Menu based on how you have the controller mapped to joystick controls and fire 1 and fire 2. It's currently commented out.

In 5200 mode Vkdb keys works as follows. F1 = Atari800 Menu, Sta = 5200 pad Start, Res = 5200 pad Reset

Emulator no longer receives joypad based input when the virtual keyboard is active. It's mostly detrimental to gameplay.

Fixed Atari rebooting when any Core Option is changed regardless of situation. Added "(Restart)" text to all options that need a restart. The system will still auto-reboot if you change the emulated Atari System.

Added new core option "Hi-Res Artifacting Mode". Options are "blue/brown 1", "blue/brown 2", "GTIA", and "CTIA" so Atari users can pick the flavor they enjoy / remember.

Added Disc Control menu to Atari800. This includes tapes. M3U support as well. So now you can play those multi-disk/tape games! This also addresses request #66 https://github.com/libretro/libretro-atari800/issues/66

Added controller mapping for Ports 2, 3, and 4 controls as reported by issue #76 https://github.com/libretro/libretro-atari800/issues/76

Supported extensions list has (cdm) which I think is a typo and should be (DCM)? Corrected

Added savestate support (Yeah!) Testing so far shows rewind working good as well. Issue #83. https://github.com/libretro/libretro-atari800/issues/83 Currently has estimated savestate size Issue #49. (Netplay may be possible? Need sucker to test with ).

Restart actually does something now... :P

Converted "Core Options" menu to v2 interface. In prelude to adding "Swap Ports!"

Renamed "Joy hack A5200 for robotron" to "Controller Hacks" and have options for "Dual Stick" and "Swap Ports" to match a5200.

Moved audio and video core options into submenus.

Switched default for "SIO Acceleration" to "enabled". Only protected disk images (ATX) and protected cassette tapes need this. And you're insane if you want to load a cassette at normal speed.

Changing SIO acceleration in Core Options now takes affect immediately.

Added in support for 5200 Super carts in 64K, 128K, 256K and 512K size. Only 64K and 512K tested. Anyone have any 128K or 256K images?

Added in better support for 5200 controller and controls. You can change it in "Controls". Descriptions will change as well. Had to revamp the joystick handling code to work with four controllers. Lots of reworking of the controller handling code.

New options added for 5200 analog controller support. Digital Joystick Sensitivity and Analog Joystick Sensitivity for setting the sensitivy of the digital to analog controls as well as the analog stick. This is usefull for making more games controllable and games such as Kaboom, Missile Command, Pengo, Realsports Tennis and Super Breakout more playable. Also "Analog Joystick Deadzone" for handling joystick drift. That way you don't have to rely on the GLOBAL option in the retroarch menu which can affect other cores.

Added Paddle Support for computer mode. Just enable "Activate Paddle Mode" and the left analog and dpad will control the paddle. You can adjust the movement speed with the "Paddle Movement Speed" option.

Added code so when using Device Type "Atari Keyboard" certain keypresses map to Atari Joystick, 5200 Controller and console keys. (Stick 1 only ATM). Should be handy for keyboard based games. Mappings are as follows. Keymaps for joystick. "Keyboard Numpad 8, 2, 4 and 6" -> Up, Down, Left, Right. 5200 analog joystick -> left analog stick or Keyboard Numpad 8, 2, 4 and 6. Right CTRL for Fire 1, Right ALT for fire 2.
Keymaps for 52000 keypad. Keyboard Numpad -> 5200 Keypad , Keyboard = -> 5200 Keypad #, Keyboard 0-9 -> 5200 Keypad 0-9. P -> Pause, R-> Reset Keymaps for 'Console" keys use F2 -> Option, F3 -> Select, F4 -> Start.

Implemented fix for lift not working in Bounty Bob Strikes Back Level 2. Atari 800 cart version. Also Bounty Bob now works properly in A5200 mode as well (doesn't lock up).

Added a bunch of Atari800 carts for autodetection. Added super carts to Atari5200 DB as well as missing ROMS.

Hopefully I got everything. Let me know if I missed anything or if something needs to be changed. Also the Atari800 INFO file will need to be updated to enable rewind, add new media types, and fix the one typo in the DCM media type.