Saturday, April 24, 2021

Spot Killer Killer

  USB Relay   USB Extension Cable   Files

     When using a DVG with a WG6100 monitor, some games may appear to be missing all or part of the vectors being displayed on the screen.  This happens most frequently with Cinematronics games, but is also seen with Sega games like Star Trek.  If you take a look at your monitor chassis when this is occurring, you will see the Spot Killer LED lighting up.  The purpose of the spot killer is to turn off the video amplifiers when deflection is not occurring and prevent picture tube burn in.  Unfortunately, the 6100 spot killer is a bit too sensitive and negatively impacts games that only generate a small amount of screen activity.

    I chose to modify the 6100 Spot Killer circuit by putting a USB controlled relay inline with the Spot Killer LED(D800).  This allows me to selectively turn on or off the spot killer depending on the game being played.  

WARNING, if you attempt this modification, you are modifying a protection circuit on the monitor.  You assume all risk and should double check your work each step of the way.

Hardware

1.  Carefully remove deflection board from monitor.  Locate Spot Killer LED on the lower right hand corner of the board.  It is marked D800.  Carefully de-solder and remove LED being careful not to damage LED or its legs.



2. Bend one leg of the LED up and out.  Attach a jumper wire to the leg you bent.  Solder and heat shrink recommended.

3.  In the location on the PCB for the leg you just bent up, solder in a jumper wire.

4.  Carefully reinsert the LED with the one leg pointing down and solder back into PCB.  You should have one leg soldered in, one leg with a jumper wire, and one wire jumper from the PCB.  Try to avoid the ceramic resistor right in front of the LED when routing your jumper wires out.

5.  CHECK YOUR WORK.  Reinstall deflection board.  Temporarily attach the two jumper wires together.  Power back on looking for anything wrong.  Your spot killer LED should be lit and then go off when something is displayed on the monitor.  Power everything back off.

6.  Break the connection between the jumper wires.  Insert one jumper into the C(Common) terminal and the other jumper into the NC(Normally Closed) terminal.  By default we want the wires connected and Spot Killer On.  Power back on and everything should be the same as before.  Spot Killer will be active unless you send a command to the relay to open and deactivate.

I used a USB Extension Cable to put the Relay right next to the deflection board and keep jumper wires short.

    Software

    VMMENU calls vmm.sh when launching games.  This version of vmm.sh has been modified to call spotoff.sh to send command to usb relay to open when selecting games that need it and  spoton.sh before returning to VMMENU.  Script files should be placed in /usr/local/share/advance/. 

Technical Information

    Technical description from Atari TM-183 manual - "When either of the deflection amplifiers is not driving current through the deflection coils then either transistor Q801 or Q801 becomes biased so that it conducts, which turns on transistor Q800 and the LED D800 in its collector circuit.  When transistor Q800 is conducting, then transistor Q503 in the Neck PCB is cut off, forcing the red, green and blue amplifiers to turn off their electron beams."

    It should be possible to disable the spot killer by interrupting other components in the spot killer circuit, but the LED is very accessible and easy to modify.

Friday, April 9, 2021

Joysticks Part2

    I was frustrated by the lack of analog joysticks for games that required them to work correctly, mainly Star Wars. I know it is nothing compared to a true yoke, but without a swappable control panel, this is the next best thing.  I upgraded one and then both joysticks to Ultimarc UltraStik 360 and now I have 2-way,4-way, 8-way, Analog, and even mouse emulation(Quantum) switching automatically with the game selection!

    Using leaf or button switch joysticks with an encoder,  Mame goes from 0 to maximum as soon as you push in one direction.  Analog joysticks let you have fine control and only move as much or as little in the direction you push.  The ability to use different joystick maps is an amazing bonus as using an 8-way joystick to play a 4-way or 2-way game can be painful.  Using mouse emulation mode makes Quantum at least playable, if not nearly as good as having a trackball on the control panel.

    One other nice thing about using the UltraStiks is that you can purchase a harness that plugs into the joystick to encode 8 buttons per joystick., making them a complete solution  (Plus button 8 works as a shift, allowing up to 15 mappings)

Zero Delay Encoder


New setup with 2 UltraStik 360 Joysticks

    You need to use the updated version of VMMENU I shared in the previous post so it recognizes the UltraStiks.  It was a pain to compile the ultrastikcmd application for Raspberry Pi, the application that loads maps into the joystick.  It is included here and is ready for you to put into /usr/local/share/ultrastickcmd.  You also need to put the maps folder and all of its files in the same location.    UltraStik Files

    There are 2 more pieces to make the magic work.  VMMENU launches games by passing the name to vmm.sh.  Place this updated version in /usr/local/share/advance as well as the ultra*.sh files (for example ultra2way.sh)  Now when the vmm.sh file is called, it will selectively call the correct script files to change the mapping for the game you are using and then set it back to 4-way for VMMENU.

    To summarize file locations:
  • /usr/local/share/ultastickcmd  should contain the entire maps folder and ultrastickcmd application
  • /usr/local/share/advance should contain vmmenu, vmm.sh, ultra*.sh files
Important Note: vmm.sh also includes commands to turn spot killer off and on - spotoff.sh and spoton.sh, these will have no effect other then producing an error message if you don't have these files.  It will not actually do anything.  You can comment out these lines with a #.  Spot Killer Killer instructions coming in next post.

    The UltraStiks ship with the axis in the wrong direction for the multivector cp mounting.  This is easy to fix by removing four screws from the top of the joystick and rotating the mounting plate.  I also prefer the harder spring in the joysticks so installed those as well.  Pictures below show the joystick further disassembled to replace the spring.  You don't need to go this far if you are only rotating the mounting plate.

    
    Important note if using 2 UltraStiks - As explained in the Ultrastik directions, if using more then one, you need to change the joystick id on one of them to be 2 as they all ship configured as one.  I cheated and used a windows computer with the UltraMap application to change joystick2.
    
    Two considerations for button setup and mapping.  Button 8 is a shift button so make sure to wire that where you want it to be.  When in mouse mode, the joystick is remapped to make buttons 1 and 2 act as left click and right click.  I intentionally used joystick 2 which I keep in 8-way mode for Credit, Start, and Select buttons so that they do not get remapped when mouse mode is active.  I have button1 to the left and button2 to the right of my joystick so it makes sense if I ever want to use mouse mode in xwindows.

    To configure MAME to utilize analog joysticks, the following two lines need to be edited in /usr/local/share/pi/.advance/advmame.rc   (you may need to modify if your joysticks are not detected as 0 and 1)
input_map[p1_stickx] joystick[1,0,x] -joystick[1,1,x]
input_map[p1_sticky] joystick[1,0,y] -joystick[1,1,y]
    
    One last recommended step AFTER you have everything working correctly is to add some locktite blue threadlocker to prevent the joystick tops from coming lose.


Link to Parts used - Parts and Such
Link to Parent software directory - Shared Folder


Wednesday, April 7, 2021

Joysticks Part1

For the first iteration of my Multi Vector control panel, I used USB Zero delay encoders from Amazon along with Wico joysticks.

USB Zero Delay Encoder

    The distributed version of the VMMENU application recognizes the encoders, but only the buttons worked.  Pushing up or down on joystick had no effect.  I submitted a pull request to add complete joystick handling including the Axis which was accepted.  Link below is to compiled version for Raspberry PI that includes latest features:   VMMENU (With Joysticks Controls!)   Just replace the existing version in /usr/local/share/advance/

    The distributed version also only includes support for "SDL Gamecontrollers".  We got lucky that the encoder above was recognized, but the mapping adds labels to the inputs that don't necessarily make sense.  This did not work when I upgraded to Ultimarc Ultrastik coming in part 2.  The updated software should work with any USB joystick supported by Raspberry Pi.

    Useful commands for working with joysticks:

ls /dev/input              (You will see mouse0, js0,js1 etc depending on what you have connected)  

ls /dev/input/by-id  

jstest /dev/input/js0 (Test Joystick0, CTRL^C to exit, Can repeat with jstest /dev/input/js1 etc)

advj (AdvanceMame Joystick utility)

Friday, March 19, 2021

Raspberry Pi Configure Wifi

From Command prompt $

sudo raspi-config

1.  System Options
    S1. Wireless LAN

Follow the prompts.







Adding Games to VMMenu

The Excellent vmmenu application uses /usr/local/share/advance/vmmenu.ini to configure menu choices.
 
The Format of vmmenu.ini is
Manufacturer name|Display name|name of parent game|name of game
To add Tempest Tubes as an alternate version for Tempest:
Atari|Tempest Tubes|tempest|temptube

Here is a file with all(maybe) of the playable vector games already included:

 

Multi-Vector Fix your Spinner

There are two locations for for advmame.rc.  The one you want to edit is /home/pi/.advance/advmame.rc

Here are the lines to add or edit: 

device_mouse raw
device_raw_mousedev[0] /dev/input/mouse0
device_raw_mousedev[1] /dev/input/mouse1
device_raw_mousedev[2] /dev/input/mouse2
device_raw_mousedev[3] /dev/input/mouse3
device_raw_mousetype[0] ps2
device_raw_mousetype[1] ps2
device_raw_mousetype[2] ps2
device_raw_mousetype[3] ps2 
input_map[p1_trackballx] mouse[0,x] mouse[1,x] mouse[2,x] mouse[3,x]
input_map[p1_trackbally] mouse[0,y] mouse[1,y] mouse[2,y] mouse[3,y]
input_map[p1_dialx] mouse[0,y] mouse[1,y] mouse[2,y] mouse[3,y]
input_map[p1_dialy] mouse[0,y] mouse[1,y] mouse[2,y] mouse[3,y] 
input_map[p1_paddlex] mouse[0,y] mouse[1,y] mouse[2,y] mouse[3,y]
input_map[p1_paddley] mouse[0,y] mouse[1,y] mouse[2,y] mouse[3,y] 

 This will ensure no matter which mouse your spinner gets detected as and which interface is used, it will work in the game.

Extremely useful information here if you want to read more :  RetroPi Spinners, Trackballs... 

While we are not using RetroPi, we are using a specially compiled version of AdvanceMAME.  Ignore the RetroArch section and scroll down to AdvanceMAME.

Thursday, March 18, 2021

Fix Vectrex Games to run

Getting an error when attempting to run Vectrex games?

Advance Mess considers vectrex games 'images' not 'roms'.  Two potential solutions:

  • Put your vectrex games and bios, including system.img, in /usr/local/share/advance/image/vectrex
OR
  • If you have already put your vectrex games in rom folder - '/usr/local/share/advance/rom/vectrex'. You can update the dir_image value in the file advmess.rc to look there-
    • dir_image /usr/local/share/advance/rom

Multi-Vector - It's Alive!

 




Spot Killer Killer

   USB Relay     USB Extension Cable     Files       When using a DVG with a WG6100 monitor, some games may appear to be missing all or part...