This is an old revision of the document!


Gunfight

Gunfight Program Flow Chart

Bally's patent for the Arcade includes a pseudo-code flow chart for Gunfight. Though not every game will function the same way, it does lay out a set of best practices for initialization, game states, the game loop, input handling, and interrupts.

<code>

      Get Maximum Score
      Clear RAM
      Set vertical blank, horizontal color boundary, interrupt mode
      Set colors
      Play Streets of Laredo        

STRND: Start round

      Initialize bullets and timers
      Set up screen
      Display scores
      Display "Get Ready"
      Put up proper number of Cacti, Trees, and Wagon
      Set up vectors so cowboys walk out
      Start interrupts
      Pause until cowboys walk out
      Erase "Get Ready"    

LOOP: Call SENTRY (check for a change of input)

      Call DOIT
      If bullet hit anything...
              Kill object
              If cowboy killed...
                      Set Death Flag
      Got to LOOP
      
      DOIT:
              If time up for round
                      Exit
                      Go to STRND
              Else
              If Death Flag set
                      Exit
                      Go to STRND
              Else
              If Player 1 or Player 2 Pot moved
                      Update new arm angle
              Else
              If Player 1 or Player 2 Joystick moved
                      Update new velocity
              Else
              If key depressed
                      Coffee break
              Else
              If Player 1 or Player 2 trigger pulled
                      Fire bullet
              Else
              If 1 second has elapsed
                      Update new time
              ENDIF
      Exit
      
      Interrupt Routine:
              Bump all time bases
              Erase all active bullets
              Vector bullets
              Write bullets to new location
              Set each bullets' hit flag if it hit something
              Erase next object in write queue
              Vector that object
              Write that object to a new location
              Put object back in queue
              Schedule next interrupt
      Exit