Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Al_Nafuur

#1
I'm thrilled to introduce a new project I've been working on: an Atari 2600 Keyboard and Joystick Interface! This project aims to bring keyboard input to the Atari 2600 while allowing parallel connection of joysticks and other input devices, opening up exciting possibilities for games, utilities, and creative experiments. I've already discussed the idea with Thomas Jentzsch, who has been incredibly helpful in getting this project off the ground by contributing some great ideas for the protocol. Now, I'm looking for testers, developers, and feedback to help bring this project to life.
Project Overview
The goal is to create a hardware interface that allows a PS/2 or USB keyboard and other input devices like joysticks and paddles to be connected to the Atari 2600 in parallel. This interface will enable developers to create games and applications that use both keyboard and joystick input simultaneously. Here are some key features:
  • Keyboard Support: The board will include a PS/2 and a USB connector, but only USB keyboards that support the PS/2 protocol over USB will work (most keyboards should do, but I haven't tested).
  • Parallel Connection of Input Devices: You can connect joysticks, paddles and keypads in parallel with the keyboard, allowing for versatile input options.
  • No PlusCart Required: This project is designed to work with a normal ROM cartridge, so you don't need a PlusCart to use it.
  • Free Test Boards: Thanks to a potential PCBway sponsorship, we might have some free boards available for testers and developers involved in the project!
One Limitation
  • SaveKey and AtariVox Compatibility: Unfortunately, the SaveKey and AtariVox and other devices that need the RIOT in output mode will most likely not work with this interface due to hardware and protocol conflicts. This is something to keep in mind for developers and users.
How It Works
The project is built around an ATmega328P microcontroller that manages communication between the joysticks, keyboard, and the Atari 2600's RIOT (6532) chip. Here's a breakdown of the system:
  • ATmega328P and Bus Transceiver:
    • The ATmega328P controls the communication between the joysticks and the RIOT via an 8-bit bus transceiver (SN74LVC245AN).
    • The SN74LVC245AN acts as a bidirectional buffer, allowing the ATmega328P to selectively "block" or "enable" the joysticks and keyboard.
  • Direct TIA Connections:
    • The TIA connections on the Atari 2600 joystick ports (e.g., trigger buttons and paddle potentiometers) are wired directly to the joystick ports of the device. These connections are not controlled by the ATmega328P and remain active at all times.
  • Keyboard Input Handling:
    • When a key on the keyboard is pressed, the ATmega328P:
      • Blocks the joysticks by disabling their communication with the RIOT.
      • Sets the RIOT's data bus to the corresponding keycode value (8-bit, allowing for 255 different keys; $ff represents "no key pressed").
    • When the key is released, the ATmega328P:
      • Disconnects itself from the data bus.
      • Re-enables the joysticks, allowing them to communicate with the RIOT again.
  • Reading Keycodes on the 2600:
    • On the Atari 2600 side, reading the keycode is as simple as reading the RIOT's SWCHA register.
    • Here's an example of the code used to handle key presses in my demo:
   lda SWCHA         ; Load the value from SWCHA (keyboard input)
   cmp #$ff          ; Compare to $FF (no key pressed)
   beq skipNewChar   ; If no key is pressed, skip
   cmp last_char     ; Compare to the last key pressed
   beq skipNewChar   ; If the key hasn't changed, skip
   ldx ActiveChar    ; Load the index for the active character
   sta w000,x        ; Store the keycode in memory
   inx               ; Increment the index
   stx ActiveChar    ; Store the updated index
skipNewChar
   sta last_char     ; Store the current keycode as the last key pressed



 
  • In this example, the keycode sent by the ATmega328P directly corresponds to the value needed by the 24-character display kernel I'm using. This simplifies the process of displaying characters on the screen.
  • Future Protocol Improvements:
    • The current implementation uses a simple keycode system, but we're open to exploring other protocols in the future, such as:
      • ASCII: For better compatibility with text-based applications.
      • Real PS/2 Keycodes: To support a wider range of keyboards and key combinations.
      • Custom Protocol: To allow simultaneous use of keyboard and joystick inputs (e.g., using arrow keys as joystick directions).
Things to Discuss and To-Do
There are still some open questions and decisions to make, and I'd love your input:
Protocol
  • Should we use ASCII, keycodes, or a custom protocol to allow simultaneous use of the keyboard and joystick in the same kernel?
    • For example, could we use the arrow keys as a joystick? (Diagonals are still unclear.)
    • We'll need to decide which ASCII codes to omit to avoid conflicts with joystick inputs.
Hardware
  • Keyboard Layout Selection: Should this be done via DIP switches on the board or configured in the 2600 software?
  • Power Supply: Should the keyboard have a separate power supply, or can it share power with the Atari 2600?
  • Capacitors: Do we need additional capacitors for the SN74LVC245AN buffer to ensure stable operation?
Miscellaneous
  • Project Name: We need a cool name for the project/board! Any suggestions?
 
How You Can Help
  • Testers: If you're interested in testing the hardware and providing feedback, let me know!
  • Developers: If you're a developer interested in creating software (games, utilities, etc.) for this interface, your input will be invaluable.
  • Feedback: Share your thoughts on the protocol, hardware design, and any other ideas you have.
 
Next Steps
  • I'll be finalizing the hardware design and ordering test boards soon.
  • Once the boards are ready, I'll distribute them to testers and developers.
  • We'll work together to refine the design and create some awesome software for the Atari 2600!
 
 
YouTube Videos




#2
Is there example code for a ChronoColour/Interleaved Playfield?

I found this here:
https://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-20.html 

but I am not sure if it is single or multi colour
#3
General Discussion / Re: Sony PVM-4300
09 Jan 2025, 09:39 AM
First time I heard of CRT Cataracts was on Adrian Black's channel. He has a really worse case of this:
#4
Quote from: alex_79 on 02 Dec 2024, 02:48 AMBTW, anyone has any great gameplay idea that makes use this new "rotary" controller? ;D
maybe with your dc26 kernel. The 2600 gives a Number to reach, but also selects for you the digit sequence (most digits twice or three times) to enter. You always have to add 1-10 to the selected digit.
#5
General Discussion / Re: Retiring
08 Nov 2024, 02:27 AM
Hi Andrew,

I just wanted to take a moment to thank you deeply for the invaluable contributions you made to the PlusCart project. Your expertise and creativity truly elevated the project, and I am grateful to have had the chance to work alongside you. The optimized text display in the menu and the stunning 3D case design you created are testaments to your skill and dedication to the Atari 2600 platform.

I am a regular visitor to your forum and noticed that, while you were still around, you hadn't been posting over the past months. I had a feeling that this day might come, but it's still bittersweet to hear of your decision to step back. While I fully respect and understand your reasons, it's hard to imagine the Atari scene without you. Your passion and generosity in sharing your knowledge have been an inspiration to so many, myself included. You've made an impact on this platform and on everyone who's had the pleasure of learning from or working with you.

Thank you again for everything, Andrew. I wish you all the best in whatever comes next and hope our paths might cross again in the future.

Regards,
Wolfgang
#6
Here's the video of my talk about the PlusCart.

#7
Quote from: killersquirel on 05 Sep 2024, 11:14 AMThis is awesome news. I am looking forward to hearing more about this project.
There is more information at the AtariAge Club for the hardware/stellaRT

https://forums.atariage.com/clubs/88-stellart/
#8
General Discussion / Re: Sokoboo Plus
05 Sep 2024, 09:39 AM
Quote from: killersquirel on 05 Sep 2024, 04:08 AMI think I solved one level once. Some appear to not be solvable. Is there another version that isn't the plus version?
You can use the "Search" function in main menu.

There is one in "Public ROMs/Homebrew/NTSC/Q-S/sokoboo_20200211.bin" and a newer version in "Public ROMs/WIP/-Inactive-/R-Z/Sokoboo WIP/sokoboo20200510.bin"
#9
General Discussion / Re: Sokoboo Plus
03 Sep 2024, 11:08 AM
Quote from: Andrew Davie on 03 Sep 2024, 01:52 AMI am not sure, but I don't recall ever using the name "Sokoboo Plus", and this is what threw me initially. I only have a very very very vague recollection - perhaps a manufactured memory, even - of doing anything related to loading levels from a "PlusStore PlusROM backend".
I also remember very vaguely that I had setup the PlusROM backend and the database for you, and a communication we had about the code on AA.

Quote from: Andrew Davie on 03 Sep 2024, 01:52 AMI do worry, actually, that I'm starting to forget things as I am getting older. Seriously.
Me too
#10
General Discussion / Re: Sokoboo Plus
02 Sep 2024, 12:25 AM
Quote from: Andrew Davie on 01 Sep 2024, 09:25 AM
Quote from: Al_Nafuur on 01 Sep 2024, 05:55 AMSokoboo Plus is the version which loads the levels from a PlusROM internet backend in a random order. I am not sure if all levels in the database are solvable

I don't remember this at all.

A certain "Andrew Davie" announced this about 5 years ago here:
https://forums.atariage.com/topic/293315-sokoban/?do=findComment&comment=4391823
#11
General Discussion / Re: Sokoboo Plus
01 Sep 2024, 05:55 AM
Quote from: Andrew Davie on 01 Sep 2024, 01:19 AM
Quote from: killersquirel on 31 Aug 2024, 03:50 PMIThis game's difficulty totally crushes me though. I think I managed to pass one level once, but that hasn't happened since. Is there something that I am missing, or is this game just brutal?

Um... you must have... accidentally got a.... corrupted version. Only explanation I can think of. Ahem! ;)


Sokoboo Plus is the version which loads the levels from a PlusROM internet backend in a random order. I am not sure if all levels in the database are solvable
#12
Money has been spend and prototype boards have been ordered:

#13
Quote from: alex_79 on 27 Aug 2024, 01:07 AM
Quote from: Thomas Jentzsch on 26 Aug 2024, 08:01 PMProbably to be able to better milk the 7800 fans. Or milk 2600 and 7800 fans twice.
Why stop there? They can do many more case variations (junior, vader, 2800...) and resell the same thing again and again.

Collect them all! ;D


I would be interested in a 2600jr in 80% size
#14
I have made a KiCAD footprint for the EPM240 mini board to be "overlayed" over the EPM240. Now the test board can be populated with a smd EPM240 or with the breakout board. The pin headers can be used for testing.


#15
Quote from: Bomberman94 on 23 Aug 2024, 06:05 AMWill this be streamed or recorded or should one attend physically?

It will (most likely) be recorded.