Jump to content
IGNORED

Atari 2600+ Hardware


Blinky

Recommended Posts

21 hours ago, Blinky said:

Got my rom loader working. Can load 2600 and 7800 roms over a USB serial cable. Some mods to the 2600+ are required though.

 

Project is on my GitHub

 

Here's a YouTube video of loading some 2600 and 7800 roms. Sorry for the poor quality beforehand.

 

 

The Dumper works like the ARMGA Floppy Disk Drive does, the Drive is connected to the Cubieboard2 USB Serial or UART and is a PC drive and grabs the disk track by track but it can only copy cracked disks or ADF disks, not originals, they are protected so it can not copy them and not every disk works, if the disk has errors on it will not copy it.

It a shame you can't do this thought the mini usb port on the CPU board usb-c but do under stand why you can't.. :)

You need to show a diagram or where you solder the USB Serial on to what pins, it does not use its UART dose it, its the GND, TX, RX on jumper pins thats connects to the CPU Board and the Dumper/DB9 I/O board, is it the TX,RX pins...?

 

Would be good to get this it work from a USB Stick then would not need a PC to do it... :) so it copies a rom.bin from a USB Stick and then runs it in the emulator.

Link to comment
Share on other sites

9 minutes ago, Spanner said:

You need to show a diagram or where you solder the USB Serial on to what pins

I agree the documentation can be better but the mod-v1 folder contains images with wireing discriptions. If not using the switch The USB TX, RTS and GND can be soldered directly to the mainboard. If the USB serial cable has a header you could also solder jumper cables to the mainboard instead.

 

Link to comment
Share on other sites

24 minutes ago, doug0909 said:

Is Keystone Koppers (7800) working? 

I just loaded the demo rom from this post successfully over serial and can play the game. I did update my 2600+ with the beta 1.1 update a few hours ago so I'm not sure if thatdoes make a difference. (I was able to load games like that failing boxing game on the 1.0 firmware before though)

  • Thanks 1
Link to comment
Share on other sites

Does the Rom Loader have to use a TTL-232-RV5, I have a CP2102 USB to TTL USB Serial, but it only has Rx and Tx on it..?
 

You could put the FTDI Serial Adapter FT232RL inside the Atari2600+ so all you do is plug in the USB into it to use it so it like a extra cable plugged into the Atari2600+, just have to glue it into the right position inside the Atari2600+.

I did use the FT232RL with my Atari800XL to load Disks images from my PC... :)

Edited by Spanner
Link to comment
Share on other sites

2 hours ago, Spanner said:

Does the Rom Loader have to use a TTL-232-RV5, I have a CP2102 USB to TTL USB Serial, but it only has Rx and Tx on it..?

currently yes because we need to control the CARD_TEST input of the mainboard too. RTS or DTR can be used to control that.

 

2 hours ago, Spanner said:

You could put the FTDI Serial Adapter FT232RL inside the Atari2600+

Yes ( i call it module instead of adapter). I'm currently using a cable cause that's what I have.

 

One idea is to mount a small USB-C Serial module in the top right corner of the top cover and replace the switch with an 74HC4053 analog switch chip to auto switch between normal and loader mode.

 

another idea is use an Arduino Pro Micro with USB-C connector or a Seeeduino Xiao these can act as a USB Serial

 

I also got a USB serial cable with 2.5mm jack that also got only rx and tx (bought it before I knew the CARD_TEST signal is required for loading roms 😂 )

could probably add a small MCU to make that usable.

 

need to think about it a bit more whats works best and easiest to build.

 

 

 

 

 

 

 

 

 

 

 

 

  • Like 1
Link to comment
Share on other sites

11 hours ago, Blinky said:

currently yes because we need to control the CARD_TEST input of the mainboard too. RTS or DTR can be used to control that.

 

Yes ( i call it module instead of adapter). I'm currently using a cable cause that's what I have.

 

One idea is to mount a small USB-C Serial module in the top right corner of the top cover and replace the switch with an 74HC4053 analog switch chip to auto switch between normal and loader mode.

 

another idea is use an Arduino Pro Micro with USB-C connector or a Seeeduino Xiao these can act as a USB Serial

 

I also got a USB serial cable with 2.5mm jack that also got only rx and tx (bought it before I knew the CARD_TEST signal is required for loading roms 😂 )

could probably add a small MCU to make that usable.

 

need to think about it a bit more whats works best and easiest to build.

 

 

 

 

 

 

 

 

 

 

 

 

2.5mm jack, what a headphone jack...?, the Amstrad Emailer had one for its UART, the Amstrad Emailer was a Emailer landline phone but inside it it had a Arm chip , it was like the Atari2600+ its the same idea, it had a nand Toshiba and NOR flash, it had a emulator on it to so you could play ZX Spectrum games it download them, but you could only rent them so could buy them for a week then it deleted them, it was only ever made for the UK market, Amstrad would change users to use it because it had its own 56k modem so had it own internet connection so no need to sign up to one, it came out in 2000 Amstrad made 3 Models - E1, E2 Plus and E3, E3 had a Colour Screen The E3 was made in 2004 so before FB or YouTube, 20 years ago, and could do video calling, they closed its service down in 2011, the first of its kind, it was the first device that could run a emulator on it own, without needing a PC to do it, then the same idea was then used on Mini Consoles after the RPI came out, the Snes Mini, but the SNES was not the first Mini Console, it was the Amsted Emailer, even if it looked like a landline phone with 480p screen, it even had the ZX Speccy rubber keyboard that came out from under the headset.

The E3 as well run Linux in the background MountVista Linux and was hackable to run a Linux shell on it 2.6.18.
I know alot about them because I have all 3 models and wrote about them on Wikipedia and made a support forum for them, I want users to know that after 3 months(or sooner depending on how long the machine has been on for) they deactivate themselves and stop functioning, until its reactivated by the Amserve Service but it does not exist anymore so all the ones on ebay are crap, Amstrad never really supported it at the end and only allows users 2 weeks to get the configuration change that stops the device from deactivating, not long enough time.
People are still selling them for £35 to £40 when they are worth nothing at all without the Configuration Change and none of them do.
But it has worked now and stopped people buy them, when they are deactivated all the works is the clock on the home screen, you can't even make a call or receive one on it, its a shame, it was made to make Amstrad money, that all, and why its tech is now wasted.
I am trying to hack the e3 firmware now to get it to work again but they have put all its data across the nand in Q;Q Blocks, it uses a cramfs file system but some of its files are scattered across the nand in the Q;Q Blocks, it to stop someone hacking it and getting passed the Daily Charge of 20p a day and stopping it.

Amstard E3 Emailer.jpg

Edited by Spanner
Link to comment
Share on other sites

Nice, didn't know about that Amstrad emailer and it played speccy games? too bad it's so locked down.

 

Back on topic. I updated my 2600+ with the beta 1.1 update and also reversed dmenu.bin again to see the changes. Nice thing is that Atari 2600 rom sizes are not so restricted anymore. It's supports rom sizes that are a multiple of 1K. I Updated my USB serial loader to support the new rom sizes.

 

It loads Pitfall II now too :D

 

 

 

  • Like 7
Link to comment
Share on other sites

3 hours ago, Blinky said:

Nice, didn't know about that Amstrad emailer and it played speccy games? too bad it's so locked down.

 

Back on topic. I updated my 2600+ with the beta 1.1 update and also reversed dmenu.bin again to see the changes. Nice thing is that Atari 2600 rom sizes are not so restricted anymore. It's supports rom sizes that are a multiple of 1K. I Updated my USB serial loader to support the new rom sizes.

 

It loads Pitfall II now too :D

 

 

 

Fascinating as always, but this method is not transferable to stock 2600+ hardware and software is it?

Link to comment
Share on other sites

Posted (edited)

A software solution is possible if the rockchip mainboard could configure its USB controller as a USB CDC device (virtual com port) (just like ums can configure the USB port as a mass storage device) in that case the 2600+ can be connected (and powered) by a PC and the PC would detect the 2600+ as a com port.

 

When the above is achieved the dmenu.bin program would need to modified to detect and listen to this virtual com port so it can receive the rom dump.

 

Also it would be good for dmenu.bin to support rom sizes in bytes (The BCD rom size in the serial 'header' limits rom size to multiples of 1K) my suggestion would be to use the most significant bit  of the MSB of rom size as a flag to indicate BCD or binary size format. When set  to '1' the rom size is in bytes and in binary format instead of the BCD format (by using this flag the dumper doesn't need to be updated / older dumper versions are supported)

Edited by Blinky
add romsize info
Link to comment
Share on other sites

Thinking more about it. having the USB port configured as mass storage device may be easier. the user can just copy a rom file over and doesn't need a PC client to transfer the rom.

Link to comment
Share on other sites

12 hours ago, Blinky said:

A software solution is possible if the rockchip mainboard could configure its USB controller as a USB CDC device (virtual com port) (just like ums can configure the USB port as a mass storage device) in that case the 2600+ can be connected (and powered) by a PC and the PC would detect the 2600+ as a com port.

 

When the above is achieved the dmenu.bin program would need to modified to detect and listen to this virtual com port so it can receive the rom dump.

 

Also it would be good for dmenu.bin to support rom sizes in bytes (The BCD rom size in the serial 'header' limits rom size to multiples of 1K) my suggestion would be to use the most significant bit  of the MSB of rom size as a flag to indicate BCD or binary size format. When set  to '1' the rom size is in bytes and in binary format instead of the BCD format (by using this flag the dumper doesn't need to be updated / older dumper versions are supported)

Possibly the easiest way to achieve this would be to copy /oem/vendor/bin/dmenu.bin to /oem/vendor/bin/dmenu-orig.bin and create the following /oem/vendor/bin/dmenu.bin shell script:

#!/bin/sh
X=$(cat /tmp/config/usb_gadget/g1/UDC)
if [ "x$X" = "x" ]
then
   exec 4>&2 5>&1 # backup the filedescr of 1 and 2
   exec >/dev/ttyFIQ0 2>&1
   printf "\nActivating serial port\n"
   WD=$(pwd)
   mkdir /tmp/config
   mount -t configfs none /tmp/config
   mkdir /tmp/config/usb_gadget/g1
   cd /tmp/config/usb_gadget/g1
   echo "0x04D8" > idVendor
   echo "0x1234" > idProduct
   mkdir strings/0x409
   echo "jj0" > strings/0x409/serialnumber
   echo "jj0" > strings/0x409/manufacturer
   echo "Atari 2600+ serial or mass storage gadget" > strings/0x409/product

# Config for serial port gadget
   if true; then
      mkdir functions/acm.usb0
      mkdir -p configs/c.1
      ln -s functions/acm.usb0 configs/c.1
   fi

# Config for mass storage gadget
   if false; then
      mkdir -p functions/mass_storage.0/lun.0
      mkdir -p configs/c.2
      echo 120 > configs/c.2/MaxPower
      echo /dev/rkflash0 > functions/mass_storage.0/lun.0/file
      ln -s functions/mass_storage.0 configs/c.2
   fi

   echo "10180000.usb" > UDC
   echo peripheral > /sys/devices/platform/20008000.syscon/20008000.syscon:usb2-phy@17c/otg_mode

   exec 2>&4 >&5 4>&- 5>&- # restore stdout and stderr

# Uncomment for shell on serial gadget
#   cd /
#   while true; do sleep 3; PS1='\u@A2600+ \w #' setsid getty -n -l /bin/sh 115200 /dev/ttyGS0; done &

# Change serial gadget to /dev/ttyS0 for cartirdge upload
   rm /dev/ttyS0
   mknod -m 777 /dev/ttyS0 c 242 0

   cd $WD
fi

printf "\nStarting dmenu-orig.bin\n" >/dev/ttyFIQ0
/oem/vendor/bin/dmenu-orig.bin

 

12 hours ago, Blinky said:

Thinking more about it. having the USB port configured as mass storage device may be easier. the user can just copy a rom file over and doesn't need a PC client to transfer the rom.

But how would dmenu.bin detect this ROM or a change to a different ROM?

  • Thanks 2
Link to comment
Share on other sites

That's an impressive script. Is it concept or has this been tested?

 

So it's very doable there is only an issue with a missing CAR_TEST signal but for the dmenu.bin developer it shouldn't be to much of an issue to test the ACM RTS/DTR linestate for a serial cart detect. Hope they see the value of it to implement this. It would be a great tool to improve emulation as dumper issues are ruled out when loading a rom over USB ;)

 

9 hours ago, jj_0 said:

But how would dmenu.bin detect this ROM or a change to a different ROM?

Yeah thinking more about it, using a mass storage device isn't such a good idea.

Link to comment
Share on other sites

More hardware info.

 

From exploring the dumper update tool 1.1.0.2 with a hex editor, I found out that the dumper MCU (and most likely the game controller MCU too) is a YSM3151 from YSTek Technology Taiwan. This is a 8052 based MCU with 45 GPIO, full speed usb support, 32K of (re)programable flash memory, 256 bytes ram (+ 1K external ram shared with USB controller) and runs (most likely) on 12MHz.

 

The 32K firmware image can be found at the tools file offset 0x2ce300

 

Datasheet can be found here

 

 

  • Like 1
Link to comment
Share on other sites

54 minutes ago, Blinky said:

That's an impressive script. Is it concept or has this been tested?

 

So it's very doable there is only an issue with a missing CAR_TEST signal but for the dmenu.bin developer it shouldn't be to much of an issue to test the ACM RTS/DTR linestate for a serial cart detect. Hope they see the value of it to implement this. It would be a great tool to improve emulation as dumper issues are ruled out when loading a rom over USB ;)

 

Yeah thinking more about it, using a mass storage device isn't such a good idea.

Thanks, it's based on the standard way of enabling USB composite gadget mode(s) via the configfs.  It does seem that the A2600+ kernel only supports a single mode at a time though, normally the serial and mass storage modes work simultaneously. But I have tested it and it works for me. Your mileage may vary of course 😉

 

I haven't tried it with your Python script yet. I have tried to replay a dump from the the cartridge dumper, but I have spurious 0x95's being sent at the start by my PC that I haven't yet figured out where they come from, so the dump is not recognised correctly. All this with a cartridge in the cartridge slot so CAR_TEST would be set.

 

  • Like 2
Link to comment
Share on other sites

1 hour ago, jj_0 said:

I have tested it and it works for me

Nice! what's the easiest way to get the script on the 2600+ ?

 

2 hours ago, jj_0 said:

I have spurious 0x95's being sent at the start by my PC

Is the PC running linux? anything to do with modem manager?

 

Link to comment
Share on other sites

10 hours ago, Blinky said:

Nice! what's the easiest way to get the script on the 2600+ ?

Right now the easiest way would be to interrupt u-boot (CTRL-C) and export the nand oem partition via USB (connected to a PC) with the ums command:

ums 0 rknand 0:7

 

Then you will have a new drive on your PC with the dmenu.bin in the vendor/bin directory.

10 hours ago, Blinky said:

Is the PC running linux? anything to do with modem manager?

PC is running Linux, with the modem manager removed altogether.

 

<edit> Now tried with @Blinky's Python loader. It works after a few tries.

Starting dmenu-orig.bin
arm_release_ver of this libMali is r7p0-00rel0, rk_so_ver is '2', built at '15:17:56', on 'Jul 16 2020'. 
[init_my_display] formatName= SDL_PIXELFORMAT_ARGB8888 
init_my_display: init success!
----- init_my_system ---ok
--read_uart_stream--: cnt > 10 
kk(0) <: 

--read_uart_stream--: cnt > 10 
kk(0) <: 

--read_uart_stream--: cnt > 10 
kk(0) <: 

--read_uart_stream--: cnt > 10 
kk(4119) >: 
00 00 F0 00 F0 
00 F0 55 AA FD 00 00 EA AA 55 26 00 04 4C EF 
00 00 00 00 00 00 00 00 00 00 F0 00 F0 00 F0 55 AA 
FD 00 00 
+++++ a2600_7800=0,data_size = 0 +++++
--read_uart_stream--: cnt > 10 
kk(0) <: 

--read_uart_stream--: cnt > 10 
kk(0) <: 

--read_uart_stream--: cnt > 10 
kk(4107) >: 
EA AA 55 26 00 
04 4C EF F2 78 D8 4C 06 F3 85 2B A5 86 A2 00 
00 00 00 00 00 00 00 00 00 00 F0 00 F0 00 F0 55 AA 
FD 00 00 
+++++ a2600_7800=0,data_size = 4096 +++++
crc8 = 0xfd,crcori = 0xfd 
++++ get card data ok++++ 
--deint_joystick_key 267 
--deint_joystick_key 286 
--uninit_my_display 155 
--uninit_my_display 163 
--uninit_my_display 170 
--uninit_my_display 179 

 

Note, I made a change to my original script, redirecting the dmenu.bin output to the UART:

#!/bin/sh
X=$(cat /tmp/config/usb_gadget/g1/UDC)
if [ "x$X" = "x" ]
then
   exec 4>&2 5>&1 # backup the filedescr of 1 and 2
   exec >/dev/ttyFIQ0 2>&1
   printf "\nActivating serial port\n"
   WD=$(pwd)
   mkdir /tmp/config
   mount -t configfs none /tmp/config
   mkdir /tmp/config/usb_gadget/g1
   cd /tmp/config/usb_gadget/g1
   echo "0x04D8" > idVendor
   echo "0x1234" > idProduct
   mkdir strings/0x409
   echo "jj0" > strings/0x409/serialnumber
   echo "jj0" > strings/0x409/manufacturer
   echo "Atari 2600+ serial or mass storage gadget" > strings/0x409/product

# Config for serial port gadget
   if true; then
      mkdir functions/acm.usb0
      mkdir -p configs/c.1
      ln -s functions/acm.usb0 configs/c.1
   fi

# Config for mass storage gadget
   if false; then
      mkdir -p functions/mass_storage.0/lun.0
      mkdir -p configs/c.2
      echo 120 > configs/c.2/MaxPower
      echo /dev/rkflash0 > functions/mass_storage.0/lun.0/file
      ln -s functions/mass_storage.0 configs/c.2
   fi

   echo "10180000.usb" > UDC
   echo peripheral > /sys/devices/platform/20008000.syscon/20008000.syscon:usb2-phy@17c/otg_mode

   exec 2>&4 >&5 4>&- 5>&- # restore stdout and stderr

# Uncomment for shell on serial gadget
#   cd /
#   while true; do sleep 3; PS1='\u@A2600+ \w #' setsid getty -n -l /bin/sh 115200 /dev/ttyGS0; done &

# Change serial gadget to /dev/ttyS0 for cartirdge upload
   rm /dev/ttyS0
   mknod -m 777 /dev/ttyS0 c 242 0

   cd $WD
fi

printf "\nStarting dmenu-orig.bin\n" >/dev/ttyFIQ0
/oem/vendor/bin/dmenu-orig.bin >/dev/ttyFIQ0

 

Edited by jj_0
Typo + more info
  • Like 2
Link to comment
Share on other sites

That is a really nice and modular script.

 

As I am also interested in how the dumper finds my carts I will keep my current serial hack between the dumper and the Rockchip. But I really hope they add this serial gateway to the main USB port. Dumping from the PC directly would be cool!

  • Like 1
Link to comment
Share on other sites

3 hours ago, jj_0 said:

Right now the easiest way would be to interrupt u-boot (CTRL-C) and export the nand oem partition via USB (connected to a PC) with the ums command:

ums 0 rknand 0:7

 

Then you will have a new drive on your PC with the dmenu.bin in the vendor/bin directory.

Thanks. I'm on windows so the drive doesn't get reconized but I'll try connect the 2600+ to my raspberri pi later.

3 hours ago, jj_0 said:

It works after a few tries.

I was experimenting before I read your last post and managed to transfer a rom successfully too on each attempt. doesn't launch the emulator though as I have CAR_TEST disconnected atm (it loads the rom regardless of CAR_TEST pin).

 

[root@rk312x:/]# oem/vendor/bin/dmenu.bin
arm_release_ver of this libMali is r7p0-00rel0, rk_so_ver is '2', built at '15:17:56', on 'Jul 16 2020'.
[init_my_display] formatName= SDL_PIXELFORMAT_ARGB8888
init_my_display: init success!
----- init_my_system ---ok
--read_uart_stream--: cnt > 10
kk(0) <:

--read_uart_stream--: cnt > 10
kk(4107) >:
EA AA 55 26 00
04 4C CA F0 18 69 36 48 4A 4A 4A 4A A8 68 29
00 00 00 00 00 00 00 00 00 00 00 00 F0 00 00 55 AA
AB 00 00
+++++ a2600_7800=0,data_size = 4096 +++++
crc8 = 0xab,crcori = 0xab
++++ get card data ok++++
---------- find a2600 game ----------
--deint_joystick_key 267
--deint_joystick_key 286
--uninit_my_display 155
--uninit_my_display 163
--uninit_my_display 170
--uninit_my_display 179

Note that I've installed the 1.1 beta firmware and dmenu.bin logging is different.

 

I noticed dmenu.bin is launched from the S50launcher script in rootfs etc/init.d/ Maybe we could create the port and the redirect there?

 

 

Link to comment
Share on other sites

33 minutes ago, Blinky said:

Thanks. I'm on windows so the drive doesn't get reconized but I'll try connect the 2600+ to my raspberri pi later.

Ah yes, the filesystem is ext2 so Windows doesn't recognise it. You could install something like ext2read to be able to use it.

 

35 minutes ago, Blinky said:

I was experimenting before I read your last post and managed to transfer a rom successfully too on each attempt. doesn't launch the emulator though as I have CAR_TEST disconnected atm (it loads the rom regardless of CAR_TEST pin).

With me it doesn't load every time and if it loads also doesn't stay in the game (retorarch quits), this is probably related to the state of the CAR_TEST, I haven't modified the hardware.

 

42 minutes ago, Blinky said:

I noticed dmenu.bin is launched from the S50launcher script in rootfs etc/init.d/ Maybe we could create the port and the redirect there?

That is possible, but S50launcher is on the read-only cramfs filesystem partition (nand partition 6) so you would need to uncompress that, make the changes, compress it again and write it back to the nand. I did that at first to change the root password but it is a bit laborious if you want to experiment. The oem partition (nand partition 7) is writable by default so much easier to work with.

 

I made another update to the script, it now also removes the password for the root user so you can login with an empty password. So there's no need to change the cramfs at all anymore.

#!/bin/sh
X=$(cat /tmp/config/usb_gadget/g1/UDC)
if [ "x$X" = "x" ]
then
   exec 4>&2 5>&1 # backup the filedescr of 1 and 2
   exec >/dev/ttyFIQ0 2>&1
   printf "\nOvermounting shadow file\n"
   cat /etc/shadow | awk -F":" 'BEGIN{OFS=":"}{if($1 == "root"){$2="";print}else{print}}' >/tmp/shadow
   mount --bind /tmp/shadow /etc/shadow
   printf "\nActivating serial port\n"
   WD=$(pwd)
   mkdir /tmp/config
   mount -t configfs none /tmp/config
   mkdir /tmp/config/usb_gadget/g1
   cd /tmp/config/usb_gadget/g1
   echo "0x04D8" > idVendor
   echo "0x1234" > idProduct
   mkdir strings/0x409
   echo "jj0" > strings/0x409/serialnumber
   echo "jj0" > strings/0x409/manufacturer
   echo "Atari 2600+ serial or mass storage gadget" > strings/0x409/product

# Config for serial port gadget
   if true; then
      mkdir functions/acm.usb0
      mkdir -p configs/c.1
      ln -s functions/acm.usb0 configs/c.1
   fi

# Config for mass storage gadget
   if false; then
      mkdir -p functions/mass_storage.0/lun.0
      mkdir -p configs/c.2
      echo 120 > configs/c.2/MaxPower
      echo /dev/rkflash0 > functions/mass_storage.0/lun.0/file
      ln -s functions/mass_storage.0 configs/c.2
   fi

   echo "10180000.usb" > UDC
   echo peripheral > /sys/devices/platform/20008000.syscon/20008000.syscon:usb2-phy@17c/otg_mode

   exec 2>&4 >&5 4>&- 5>&- # restore stdout and stderr

# Uncomment for shell on serial gadget
#   cd /
#   while true; do sleep 3; PS1='\u@A2600+ \w #' setsid getty -n -l /bin/sh 115200 /dev/ttyGS0; done &

# Change serial gadget to /dev/ttyS0 for cartridge upload
   rm /dev/ttyS0
   mknod -m 777 /dev/ttyS1 c 64 0
   mknod -m 777 /dev/ttyS0 c 242 0

   cd $WD
fi

echo -n -e '\x95' >/dev/ttyS1
printf "\nStarting dmenu-orig.bin\n" >/dev/ttyFIQ0
/oem/vendor/bin/dmenu-orig.bin >/dev/ttyFIQ0

 

  • Like 1
Link to comment
Share on other sites

been doing a bit more reversing on dmenu and found out that the CAR_TEST and switch inputs are read out by reading:

 

/sys/devices/platform/gpio-keys-polled/keys

 

The returned value  will be:


+ 1 game select lever pulled down
+ 2 game reset lever pulled down
+ 4 TV type switch in B-W position
+ 8 player 1 difficulty switch in A position (according to rear panel label)
+16 player 2 difficulty switch in A position (according to rear panel label)
+32 4:3/16:9 switch in 16:9 position
+64 CAR_TEST high (cart detected)

 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...