summaryrefslogblamecommitdiffstatshomepage
path: root/src/mame/drivers/itech8.cpp
blob: c74dd6645272843ddca205421a1d3580f9402b13 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13

                                










                                                                            
                      












                                         
              























































































































                                                                            
                                                                        






                                              

                                                                  


                                                
                                                                         



                                                             
                                              



                                                                




                                                       



































                                                                            


                                    


































                                                                   
























                                                
                             











                                                                   




































                                             


                                  








































































































































































                                                                            
                

                            
                              
                             
                            
                        
                            
                            
                          
                           
                           

                           
 

                    
 
                         
 

                                  




                                      



                                       
                                                                             
 
                                                      
 
                               


                                                      

                                  
                                                               

                                                         


                                                                                                                   




                                   

                                                                                        










                                       
                                            
 
                                     


 
                                             
 




                                                                
 








                                                                                                          


 
                                      

                                                          
                                                            


 






                                       
 

 
                                          
 
                                                       

                                                                            
 






                                                                                                         
 










                                                                           

 
                                  
 
                                                      
 
                                          
                                                               
         
                                               
                                   
         
 
                                  
                                  
         
                                                                                                               
                                          



         



















                                                                                           
                                                                                 


         






                                       
                                                           




                                                            
                                           





                                                    
                                                                                                           









                                       
                                           


                                                        
                                                             

                                                       
                                       


 
                                            

                                                                         
                                              









                                       
                                            
 
                                       


 





                                       
                                          

                                                    
                                


 
                                          






                                                     
                                

                                                                


 
                                             






                                                       
                                

                                                                









                                       
                                                         
 
                             
                                                                


 
                                         
 
                                                    


 
                                              


                                                                  


                                              
                                                    


 
                                        
 
                                                               
                            


 





                                        


                                      
                            


                                       
                                           
 
                                
                                        


 
                                              
 
                                
                                             

 

                                           
                                                         


                                                                   
 
                                              
 





                                                    


 


                                      




                                                     













                                                                                                               


                                                     













                                                                                                               


                                                













                                                                                                               
 
                                     














                                                                                                                                         









                                       








                                                                                                              

 
                                     







                                                                                               

 
                                    









                                                                                                 


                                                   









                                                                                                     








                                       



                                                    

 




                                                                                                         








                                       
                                    
                        
                                                                                                                                                  
                                                   


                                                       


                                                     
                        






                                                                                              
                        

                                                   
                                          

                                                                                              
                                          



                                                                                                            

                                   
                                                                                                                                                  


































                                                                          
                                   
                        
                                                                                                                                                  
                                                   


                                                       


                                                     
                        








                                                                                                            
                        

                                                   

                                                                                                                
 

                                                                                                                             
 

                                                                                                                              
 

                                                                                                                                           

               










                                                                                                                              
 
                                          
 

                                                   
                                                           

 
                               
                        
                                                                                                                                                  
                                                   


                                                       


                                                     
                        

                                                                           
                                                                                                                    



                                                   
                        

                                                   
                        





                                                                                         
                        




                                                                                                       



                                
                        
                                                                                                                                                  


                                                     
                        








                                                                                           
                        

                                                   

                                                                                                                
 

                                                                                                                             



                                 
                        
                                                                                                                                                  
                                                   


                                                       


                                                     
                        








                                                                                                            
                        

                                                   

                                                                                                                
 

                                                                                                                             
 

                                                                                                                              
 

                                                                                                                                           



                                    
                        
                                                                                                                                                  


                                                     
                        

                                                  
                                                    





                                                                        
                        

                                                    
                                      
                                                                                                                
 
                                      
                                                                                                                              



                                   
                        
                                                                                                                                                  


                                                     
                        
                                                                      
                                                  
                                                                        





                                                    
                        

                                                    
                                      
                                                                                                                
 
                                      
                                                                                                                              



                                   
                        
                                                                                                                                                  


                                                     
                        

                                                  
                                                    





                                                                            
                        

                                                    
                                      
                                                                                                                
 
                                      
                                                                                                                              



                                    
                        
                                                                                                                                                  

                                                                                                      





                                                       


                                                     
                        








                                                                                                      
                        
                                                   



                                    
                        
                                                                                                                                                  
                                                   


                                                       
                                                                              

                                                  


                                                     
                        
                                                  
                                                                                        






                                                                                        
                        







                                                                                        



                                    
                        
                                                                                                                                                  
                                                   
                                                                              

                                                  


                                                     
                        








                                                                         
                        






                                                                           



                                  
                        
                                                                                                                                                  


                                                     
                        







                                                                          
                        


                                                    



                                   
                        
                                                                                                                                                  


                                                     
                        




                                                    
                        



                                                    
                                              
                                                                                                         



                                    
                        
                                                                                                                                                  
                                                   
                                                                              

                                                  


                                                     
                        








                                                                         
                        






                                                                         



                                    
                        

                                                    
                        






                                                     
                                                                                                                                                  
 
                        

                                                    
                                             








                                                                                         
                                             








                                                                                         
                                             








                                                                                         
                                             








                                                                                         
                                             


                                                     
                                                      














                                                    
                        






                                                       
                        








                                                                                           
                        







                                                                                           



                                
                        




                                                     


                                                       

                                                   
                        





                                                                                              
                        





                                                                                                            

                                                                                                                
 

                                                                                                                             
 

                                                                                                                              
 

                                                                                                                                           



                                  
                        




                                                     


                                                       

                                                   
                        








                                                                                         
                        
                                                   

               





                                       
                                                            
 
                                         
 
                                                                                                                

 







                                              
                                                  

                                    

                                                      
 
                                           
 
                                                                                                                         

                            
                                                     
 
                                         
                                                                
                                    
                                  
                                                                                 
 

                                                                                
                                                        
                                                                                                                                 
 
                            
                                               

                 
                                                           
                                                                                
                                                                        
                  

 

                                                  

                                    

                                          
                  

 
                                                       

                                    

                                                       

                            
                                                      
                                                                       
                                                                                  




                                         
                                                                                                                                         
                                                   
                  

 
                                                        

                                    

                                                       

                            
                                                    
                                                                       
                                                                                  
                                                   
                  

 
                                                       

                                    

                                                       
 
                                          


                                                                                    

                            
                                                      
                                                                       
                                                   
 
                                                                                                                                         
                                                   
                  

 
                                                                

                                    

                                                       

                            
                                                      
                                                                       
                                                   
 
                                                                                                                                         
                                                   
                  



                                               

                                            

                                    
                                    

                            

                                                
                                                                     

 
                  

 

                                           

                                    
                                     

                            

                                                
                                                                      
 
                             
                                                                                                             
 
                  

 

                                              

                                    
                                    

                            

                                                
                                                                     
 
                  

 

                                              

                                    
                                    

                            

                                                
                                                                     
                  

 

                                               

                                    
                                    
 


                                                 

                            

                                                
                                                                       
                                                        
                  

 

                                               

                                    
                                    
 


                                                 

                            

                                                
                                                                       
                                                        
                  

 

                                                     

                                    
                                    

                            

                                                
                                                                    
                  

 

                                           

                                    
                                                         
 
                  

 

                                               

                                    
                                    

                            

                                                
                                                                          
                  

 

                                               

                                    
                                    

                            

                                                
                                                                          
                  

 

                                            

                                    
                                             
 

                                                           

                            

                                                 
                                                                          
                  

 

                                            

                                    
                                             
 

                                                           

                            

                                                 
                                                                          
                                                                                 
                  

 

                                        

                                    
                                             
 

                                         

                            

                                                
                                                                     
                  









                                       
                                           

                                                                                                           
                                                      
 
                                            

                                                                                                           
                                        




                                                                                                              
                                       



                                                                                                              
                      
                                           

                                                                                                                 
                                                      
 
                                            

                                                                                                           
                                        




                                                                                                              
                                       



                                                                                                              
                    
                                           

                                                                                                                   
                                                      
 
                                            










                                                                                                                    
                                         



                                                                                                               
                    
                                           

                                                                                                                                                      
 
                                            
                                                                                                                                                   
 
                                        


                                                                                                                      
 
                                       
                                                                                                                    



                     
                                           

                                                                                                                                                       
 
                                            
                                                                                                                                                   
 
                                        


                                                                                                                      
 
                                       
                                                                                                                    



                
                                           

                                                                                                                                          
                                                      
 
                                            

                                                                                                            
                                        





                                                                                                                      
 
                                       


                                                                                                               
                 
                                           

                                                                                                                                          





                                                                                                                 





                                                                                                                      

                                       
                                                                                                                    



                                           

                                                                                                                                           
                                                      
 
                                            

                                                                                                                
                                        





                                                                                                                      
 
                                       





                                                                                                               
                                           

                                                                                                                                            
                                                      
 
                                            

                                                                                                            
                                        






                                                                                                               
                                       

                                                                                                                
                                       



                                                                                                                  
 
                  
                                           

                                                                                                                                           
                                                      
 
                                            

                                                                                                            
                                        






                                                                                                               
                                       

                                                                                                               
                                       




                                                                                                                  
                                           
                                                                                                                   
                                                
                                                      
 
                                            

                                                                                                            
                                       




                                                                                                            
                                        


                                                                                                               
                                       



                                                                                                               
                       
                                           

                                                                                                                  
                                                      
 
                                            

                                                                                                            
                                       




                                                                                                            
                                        


                                                                                                               
                                       



                                                                                                               
                       
                                           
                                                                                                                  

                                                      
 
                                            

                                                                                                            
                                       




                                                                                                            
                                        




                                                                                                                 
                                       




                                                                                                               
                                           


                                                                                                                       
 
                                            
                                                                                                                     
 
                                       




                                                                                                                
                                        

                                                                                                                       
 
                                       
                                                                                                                         



                    
                                           

                                                                                                                                                         
 
                                            
                                                                                                                                                            
 
                                       
                                                                                                                 



                                              
                                        


                                                                                                                              
 
                                       
                                                                                                                              


       

                                           
                                                                                                                    













                                                                                                                      
                                                                                                               





                                                                                                              
                     
                                           

                                                                                                              
                                                      
 
                                            

                                                                                                               
                                        


                                                                                                                  
                                       




                                                                                                               
                                           

                                                                                                               
                                                      
 
                                            

                                                                                                              
                                        





                                                                                                               
                                       

                                                                                                               
                                       



                                                                                                                    
                       
                                           

                                                                                                               
                                                      
 
                                            

                                                                                                              
                                        





                                                                                                               
                                       

                                                                                                               
                                       



                                                                                                                    
                                                 
                                                                                                         

                                                                                                                                                                 
                                                      
 
                                            
                                                                                                                     
 
                                        



                                                                                                                 
 
                                       
                                                                                                                 



                   
                                           

                                                                                                               
                                                      
 
                                            

                                                                                                              
                                        



                                                                                                               
                                       




                                                                                                           
                                           

                                                                                                                
                                                      
 
                                            

                                                                                                              
                                        



                                                                                                               
                                       





                                                                                                           
                                           

                                                                                                                
                                                      
 
                                            

                                                                                                                 
                                        




                                                                                                                  
                                       




                                                                                                                  
                                           




                                                                                                                   


                                                       
 
                                            
                                                                                                                                                   
 
                                         



                                                                                                                  
 
                                       
                                                                                                               
 
                                       





                                                                                      
                       
                                           




                                                                                                                   


                                                       
 
                                            
                                                                                                                                                   
 
                                         



                                                                                                                  
 
                                       
                                                                                                               


       
                       
                                           




                                                                                                                  


                                                       
 
                                            
                                                                                                                                                   
 
                                         



                                                                                                                
 
                                       
                                                                                                               


       
                       
                                           




                                                                                                                  


                                                       
 
                                            

                                                                                                                 
                                         



                                                                                                                
 
                                       
                                                                                                               



                     
                                           

                                                                                                                  
 
                                            

                                                                                                           
                                         






                                                                                                               
                                       




                                                                                                               
                                           

                                                                                                                                       
                                                      
 
                                            

                                                                                                              
                                        
                                                                                                                
                                                                                                                

                                                                                                                
                                       





                                                                                                                
                                           

                                                                                                                                         
                                                      
 
                                            

                                                                                                              
                                        






                                                                                                               
                                       

                                                                                                                
                                       










                                                                                         
                                 
 


                                                                                                                                        
 


                                              


 
                                  
 


                                                                                                                                             
 
                                                                             
 















                                             


 
                                 
 


                                                                                                                                             


 
                                  
 
                                      


 
                                  
 
                                       


 
                                
 
                                       


 
                                  
 
                                      


 
                                  

                                    




                                                                               

                                                               
                                                                                                 
                                                                                                                                      
                                                                                                                                










                                       

                                                                                                                                              
 
                            
                                                                                                                                                                          
 
                              






                                                                                                                                                                                                  

                          






                                                                                                                                                                                                                                                                                                                                      

                                





                                                                                                                                                                             

                                      



                                                                                                                                                                          

                            
                                                                                                                                                                     

                                  

                                                                                                                                                                                 
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
/***************************************************************************

    Incredible Technologies/Strata system
    (8-bit blitter variant)

    driver by Aaron Giles

    Games supported:
        * Strata Bowling [2 sets]
        * Super Strike Bowling
        * Wheel of Fortune [2 sets]
        * Grudge Match
        * Golden Tee Golf [2 sets]
        * Golden Tee Golf II [3 sets]
        * Slick Shot [3 sets]
        * Dyno-Bop
        * Arlington Horse Racing
        * Neck & Neck
        * Peggle [2 sets]
        * Poker Dice
        * Hot Shots Tennis [2 sets]
        * Rim Rockin' Basketball [4 sets]
        * Ninja Clowns

    Known issues:
        * None

****************************************************************************

    Memory map

****************************************************************************

    ========================================================================
    CPU #1 (6809 games)
    ========================================================================
    Note that many games have the regions 0000-0FFF and 1000-1FFF swapped.
    Also, Golden Tee Golf II (V2.2) has most of the addresses in the
    0000-0FFF range swizzled randomly.
    ========================================================================
    0100          W   xxxxxxxx    Unknown
    0120          W   xxxxxxxx    Sound data
    0140        R     xxxxxxxx    Input port
    0140          W   xxxxxxxx    GROM blitter bank select
    0160        R     xxxxxxxx    Input port
    0160          W   xx------    Display page select
                  W   x-------       (upper page select)
                  W   -x------       (unknown)
    0180        R     xxxxxxxx    Input port/DIP switches
    0180          W   xxxxxxxx    Video RAM upper data latch
    01A0          W   --------    NMI acknowledge (on some boards)
    01C0-01C1   R/W   xxxxxxxx    Blitter chip address high
    01C2-01C3   R/W   xxxxxxxx    Blitter chip address low
    01C4-01C5   R/W   ---xxxxx    Blitter chip flags
                R/W   ---x----       (render transparent)
                R/W   ----x---       (expand RLE compressed data)
                R/W   -----x--       (flip vertically)
                R/W   ------x-       (flip horizontally)
                R/W   -------x       (shift data left 4 bits)
    01C6-01C7   R     x-------    Blitter chip status (1=busy)
    01C6-01C7     W   --------    Blitter chip trigger
    01C8-01C9   R/W   xxxxxxxx    Blitter chip source width
    01CA-01CB   R/W   xxxxxxxx    Blitter chip source height
    01CC-01CD   R/W   xxxxxxxx    Blitter chip source data mask
    01CE-01CF   R/W   xxxxxxxx    Blitter chip output port
                  W   --x-----       (main program ROM bank select)
    01D0-01D1   R/W   xxxxxxxx    Blitter chip X starting coordinate
    01D2-01D3   R/W   xxxxxxxx    Blitter chip maximum scanline count
    01D4-01D5   R/W   xxxxxxxx    Blitter chip X ending coordinate
    01D6-01D7   R/W   xxxxxxxx    Blitter chip initial scanline skip
    01D8-01DF   R     xxxxxxxx    Blitter chip input ports
    01E0          W   xxxxxxxx    Palette address latch
    01E2-01E3     W   --xxxxxx    Palette data latches
    1000-11FF   R/W   xxxxxxxx    TMS34061 register access
    1200-13FF   R/W   xxxxxxxx    TMS34061 XY addressing access
    1400-15FF   R/W   xxxxxxxx    TMS34061 register access
    1600-17FF   R/W   xxxxxxxx    TMS34061 direct access
    1800-19FF   R/W   xxxxxxxx    TMS34061 shift register read
    1A00-1BFF   R/W   xxxxxxxx    TMS34061 shift register write
    2000-3FFF   R/W   xxxxxxxx    RAM (battery-backed)
    4000-7FFF   R     xxxxxxxx    Banked program ROM
    8000-FFFF   R     xxxxxxxx    Fixed program ROM
    ========================================================================
    Interrupts:
        NMI generated by VBLANK
        IRQ generated by TMS34061 scanline interrupt
        FIRQ generated by blitter when finished
    ========================================================================

    ========================================================================
    CPU #1 (68000 games)
    ========================================================================
    000000-003FFF   R/W   xxxxxxxx xxxxxxxx   RAM (battery-backed)
    004000-03FFFF   R     xxxxxxxx xxxxxxxx   Main program ROM
    100080          W     xxxxxxxx --------   Sound data
    100100          R     xxxxxxxx --------   Input port
    100100            W   xxxxxxxx --------   GROM blitter bank select
    100180          R     xxxxxxxx --------   Input port
    100100            W   xx------ --------   Display page select
                      W   x------- --------       (upper page select)
                      W   -x------ --------       (unknown)
    100240            W   xxxxxxxx --------   Video RAM upper data latch
    100280          R     xxxxxxxx --------   Input port/DIP switches
    100280            W   -------- --------   Unknown
    100300-10031F   R/W   xxxxxxxx xxxxxxxx   Blitter chip (as above)
    100380            W   xxxxxxxx --------   Palette address latch
    1003a0            W   --xxxxxx --------   Palette data latches
    110000-1101FF   R/W   xxxxxxxx xxxxxxxx   TMS34061 register access
    110200-1103FF   R/W   xxxxxxxx xxxxxxxx   TMS34061 XY addressing access
    110400-1105FF   R/W   xxxxxxxx xxxxxxxx   TMS34061 register access
    110600-1107FF   R/W   xxxxxxxx xxxxxxxx   TMS34061 direct access
    110800-1109FF   R/W   xxxxxxxx xxxxxxxx   TMS34061 shift register read
    110A00-110BFF   R/W   xxxxxxxx xxxxxxxx   TMS34061 shift register write
    ========================================================================
    Interrupts:
        INT 3 generated by VBLANK
        INT 2 generated by blitter when finished
        INT 1 generated by ???
    ========================================================================

    ========================================================================
    CPU #2
    ========================================================================
    0000          W   xxxxxxxx    Unknown
    1000        R     xxxxxxxx    Sound command input
    2000-2003   R/W   xxxxxxxx    Yamaha chip I/O
    3000-37FF   R/W   xxxxxxxx    RAM
    4000        R/W   xxxxxxxx    OKI 6295 I/O
    5000-5003   R/W   xxxxxxxx    6521 PIA chip (on early YM3812 boards)
    5000-500F   R/W   xxxxxxxx    6522 VIA chip (on later YM3812 boards)
    8000-FFFF   R     xxxxxxxx    Program ROM
    ========================================================================
    Interrupts:
        NMI not connected
        IRQ generated by write to sound command input
        FIRQ generated by Yamaha chip, or by 6522 VIA (if present)
    ========================================================================

****************************************************************************

    PCB layouts

****************************************************************************

    Summary:

        There are 8 known variants of PCBs for these games. All the PCBs
        have the following features in common:

            68B09 @ 2 MHz for the main CPU
            8k RAM for the main CPU

            68B09 @ 2 MHz for the sound CPU
            2k RAM for the sound CPU
            YM2203C, YM2608B or YM3812 for music
            OKI M6295 for speech (except for YM2608B-based system)

            TMS34061 for the video controller
            ITV4400 custom blitter for rendering
            6-bit RAMDAC for palette, or 2xTMS34070NL (Grudge Match only)
            From 2-8 64k x 4-bit VRAM chips for frame buffers

        An overview of each style PCB is given below:

        Wheel Watcher (Wheel of Fortune)-style
            * Single board
            * YM2203C for music
            * 2 VRAM chips for a single 8-bit 256x256 video page

        Grudge Match-style
            * Single board
            * YM2608B for music
            * 4 VRAM chips for two 4-bit 512x256 layers

        Strata Bowling-style
            * Single board
            * YM2203C for music
            * 3 VRAM chips for an 8-bit 256x256 video background
              plus a 4-bit 256x256 video foreground layer

        Slick Shot-style
            * Single board
            * YM2203C for music
            * 4 VRAM chips for two 8-bit 256x256 video pages
            * additional Z80 and program ROM for sensor reading

        Hot Shots Tennis-style
            * Single board
            * YM3812 for music
            * 8 VRAM chips for two 8-bit 512x256 video pages

        Rim Rockin' Basketball-style
            * Separate main and sound boards
            * HD63C09 @ 3MHz replaces 68B09 for main CPU
            * YM3812 for music
            * 8 VRAM chips for two 8-bit 512x256 video pages

        Ninja Clowns-style
            * Separate main and sound boards
            * 68000 @ 12MHz replaces 68B09 for main CPU
            * YM3812 for music
            * 8 VRAM chips for two 8-bit 512x256 video pages

        Golden Tee Golf II-style
            * Separate main and sound boards
            * YM3812 for music
            * I haven't see one yet, so I can't provide additional details

****************************************************************************

    --------------------------------
    Wheel Watcher (Wheel of Fortune)
    --------------------------------

        +------------------------------------+-+
        |    Bt476KP35                       | |
        |      12MHz  DIPSW4                 | |
        |(MT42C4064Z-10)                     | |
        |(MT42C4064Z-10)                     | |
        | MT42C4064Z-10                      | |
        | MT42C4064Z-10                      | |
        |                                    | |
        |       TMS34061                     +-
        |                                      |
        |          ITV4400   ITVS              |
        |                          YM2203C     |
        |                              OKI6295 |
        | (GROM4)  Battery                     |
        |  GROM3    CDM6264LE12      SROM0     |
        |  GROM2    WOF-PGM   HY6116           |
        |  GROM1              WOFSND      8MHz |
        |  GROM0                               |
        |        MC68B09         MC68B09       |
        +--------------------------------------+

        GROM0-3 = AM27C256
        WOF-PGM = ???
        WOFSND = AM27C256
        SROM0 = AM27C010
        ITVS = ???
        MT42C4064Z = 64k x 4 VRAM (2 populated on Wheel of Fortune)
        CDM6464 = 8k x 8 RAM
        HY6116 = 2k x 8 RAM
        Bt476 = 6-bit DAC
        TMS34061 = video controller
        ITV4400 = IT custom blitter


    -------------
    Grudge Match
    ------------

        +------------------------------------+-+
        | TMS34070NL                         | |
        | TMS34070NL  DIPSW4                 | |
        | TMS4461-15   8MHz                  | |
        | TMS4461-15                         | |
        | TMS4461-15                         | |
        | TMS4461-15                         | |
        |                                    | |
        |       TMS34061                     +-
        |                                      |
        |          ITV4400                     |
        |  GROM6                     SROM0     |
        |  GROM5                               |
        |  GROM4                               |
        |  GROM3    MK40702B-20      YM2608B   |
        |  GROM2    U5-PGM    MK6116           |
        |  GROM1              U27-SND          |
        |  GROM0                               |
        |        MC68B09         MC68B09       |
        +--------------------------------------+

        GROM0-6 = AM27C010-25
        U5-PGM = D27512-25
        U27-SND = 27C256-20
        SROM0 = AM27C010-25
        ITVS = ???
        MT42C4064Z = 64k x 4 VRAM (2 populated on Wheel of Fortune)
        MK40702B = zero-power RAM
        MK6116 = 2k x 8 RAM
        TMS34070NL = 16-color RAMDAC
        TMS34061 = video controller
        ITV4400 = IT custom blitter


    ------------------------------
    Strata Bowling/Golden Tee Golf
    ------------------------------

        +---------------------------------+-+
        |                       IMSG176   | |
        | MT42C4064Z-10                   | |
        | MT42C4064Z-10                   | |
        | MT42C4064Z-10    12MHz          | |
        |                                 | |
        |       TMS34061         DIPSW4   | |
        |                                 | |
        |    ITV4400                      +-
        |                                   |
        |        Battery        ITVS        |
        | (GROM5)                           |
        | (GROM4)                           |
        | (GROM3)   P5164                   |
        |  GROM2   SBPROG   MS6516   SROM0  |
        |  GROM1            SBSNDS          |
        |  GROM0                      8MHz  |
        |        MC68B09          MC68B09   |
        +-----------------------------------+

        GROM0-3 = AM27C010
        SBPROG = 27C256
        SBSNDS = 27C256
        SROM0 = AM27C010
        ITVS = ???
        MT42C4064Z = 64k x 4 VRAM
        P5164 = 8k x 8 RAM
        MS6516 = 2k x 8 RAM
        IMSG176 = 6-bit DAC
        TMS34061 = video controller
        ITV4400 = IT custom blitter


    ------------------------------
    Slick Shot/Poker Dice/Dyno Bop
    ------------------------------

        +------------------------------------+-+
        |   Z80PGM   4Mhz      itvs5         | |
        |            Z80       rev.1         | |
        |                                    | |
        | MT42C4064Z-10   MS176-50           | |
        | MT42C4064Z-10                      | |
        | MT42C4064Z-10   12MHz              | |
        | MT42C4064Z-10           DIPSW4     | |
        |                                    +-
        |      TMS34061                        |
        |                                      |
        |         ITV4400    ITVS              |
        |                          YM2203C     |
        |                              OKI6295 |
        | (GROM4)  Battery                     |
        | (GROM3)   P5164S           SROM0     |
        | (GROM2)   POOLPGM   P5116            |
        |  GROM1             POOLSND      8MHz |
        |  GROM0                               |
        |        MC68B09         MC68B09       |
        +--------------------------------------+

        (lower half is almost identical to Wheel of Fortune)
        (top contains extra Z80 and logic)
        (Z80 and ROM not populated on Poker Dice)

        GROM0-1 = AM27C010
        POOLPGM = ???
        POOLSND = AM27C256
        SROM0 = 27C512
        ITVS = ???
        MT42C4064Z = 64k x 4 VRAM
        P5164S = 8k x 8 RAM
        P5116 = 2k x 8 RAM
        MS176 = 6-bit DAC
        TMS34061 = video controller
        ITV4400 = IT custom blitter


    -----------------------------------
    Hot Shots Tennis/Peggle/Neck & Neck
    -----------------------------------
    (Likely Arlington Horse Racing as well)

        +------------------------------------------------+-+
        | MT42C4064Z-10    8MHz     MS176-50             | |
        | MT42C4064Z-10                                  | |
        | MT42C4064Z-10                                  | |
        | MT42C4064Z-10                                  | |
        | MT42C4064Z-10                                  | |
        | MT42C4064Z-10   TMS34061    DIPSW4             | |
        | MT42C4064Z-10           12MHz                  +-
        | MT42C4064Z-10                                    |
        |                 ITV4400                          |
        |  (GROM5)                        YM3812  OKI6295  |
        |  (GROM4) Battery  ITVS-3        MS6516           |
        |  (GROM3)   P5164              PEG-SND    SROM0   |
        |   GROM2    PEGGLE.BIN                    6821    |
        |   GROM1                                          |
        |   GROM0                                          |
        |         EF68B09     8MHz      EF68B09            |
        +--------------------------------------------------+

        GROM0-5 = AM27C010
        POOLPGM = ???
        POOLSND = AM27C256
        SROM0 = 27C512
        ITVS = ???
        MT42C4064Z = 64k x 4 VRAM
        P5164S = 8k x 8 RAM
        P5116 = 2k x 8 RAM
        MS176 = 6-bit DAC
        TMS34061 = video controller
        ITV4400 = IT custom blitter


    ----------------------
    Rim Rockin' Basketball
    ----------------------

        Lower board

        +--------------- --------------------------------+
        |               |                                |
        +---------------+   MT42C4064Z-10  MT42C4064Z-10 |
        |                   MT42C4064Z-10  MT42C4064Z-10 |
        |      IMSG176      MT42C4064Z-10  MT42C4064Z-10 |
        |                   MT42C4064Z-10  MT42C4064Z-10 |
        |  DIPSW4 8MHz ITBP-1                            |
        |                                                |
        |    MS6264-10                                   |
        |     RRB.BIM          TM34061       ITV4400     |
        |         ITVS-2                                 |
        |                      GROM02        GROM00      |
        |  Battery                                       |
        |  HD63C09   12MHz     GROM03        GROM01      |
        +------------------------------------------------+

        GROM0-3 =
        RRB.BIM =
        ITVS-2 = ???
        MT42C4064Z-10 = 64k x 4 VRAM
        MS6264 = 8k x 8 RAM
        IMSG176 = 6-bit DAC
        TMS34061 = video controller
        ITV4400 = IT custom blitter


        Sound board

        +---------------------------------+
        |         YM3812  OKI6295  SROM0  |
        | ITVS-4 MS6516-10                |
        |         NCSND                   |
        |                                 |
        |  EF68B09                        |
        |                                 |
        |   6522                          |
        | P/N 1038 REV2                   |
        +---------------------------------+

        SROM0 = M27C2001
        NCSND = AM27C256
        MS6516-10 = 2k x 8 RAM
        6522 = VIA


    ------------
    Ninja Clowns
    ------------

        Lower board

        +-----------------------------------------------------+-+-
        |  MS6264   PROM1  (PROM3)   DIPSW4                   | |
        |  MS6264   PROM0  (PROM2)                            | |
        |                                                     | |
        |  Battery        MC68000P12                          | |
        |                                                     | |
        |           12MHz   ITVS-5  ITMP-1                    | |
        |                                                     | |
        |  (GROM7)                                            +-
        |  (GROM6)          8MHz                                |
        |   GROM5                                      MS176-50 |
        |   GROM4                                               |
        |   GROM3   TMS34061   MT42C4064Z-10  MT42C4064Z-10     |
        |   GROM2              MT42C4064Z-10  MT42C4064Z-10     |
        |   GROM1   ITV4400    MT42C4064Z-10  MT42C4064Z-10     |
        |   GROM0              MT42C4064Z-10  MT42C4064Z-10     |
        | P/N 1029 REV3A                                        |
        +-------------------------------------------------------+

        GROM0-5 = M27C2001
        PROM0-1 = AM27C010
        ITVS-5 = PAL16L8
        ITMP-1 = PAL20R4
        MT42C4064Z = 64k x 4 VRAM
        MS6264 = 8k x 8 RAM
        MS176 = 6-bit DAC
        TMS34061 = video controller
        ITV4400 = IT custom blitter


        Sound board - same as Rim Rockin' Basketball

***************************************************************************/


#include "emu.h"
#include "includes/itech8.h"

#include "cpu/m68000/m68000.h"
#include "cpu/m6809/hd6309.h"
#include "cpu/m6809/m6809.h"
#include "cpu/z80/z80.h"
#include "machine/6522via.h"
#include "machine/6821pia.h"
#include "machine/nvram.h"
#include "sound/2203intf.h"
#include "sound/2608intf.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"

#include "speaker.h"


#define FULL_LOGGING    0

#define CLOCK_8MHz      (8000000)
#define CLOCK_12MHz     (12000000)



/*************************************
 *
 *  Interrupt handling
 *
 *************************************/

void itech8_state::update_interrupts(int periodic, int tms34061, int blitter)
{
	device_type main_cpu_type = m_maincpu->type();

	/* update the states */
	if (periodic != -1) m_periodic_int = periodic;
	if (tms34061 != -1) m_tms34061_int = tms34061;
	if (blitter != -1) m_blitter_int = blitter;

	/* handle the 6809 case */
	if (main_cpu_type == MC6809 || main_cpu_type == HD6309)
	{
		/* just modify lines that have changed */
		if (periodic != -1) m_maincpu->set_input_line(INPUT_LINE_NMI, periodic ? ASSERT_LINE : CLEAR_LINE);
		if (tms34061 != -1) m_maincpu->set_input_line(M6809_IRQ_LINE, tms34061 ? ASSERT_LINE : CLEAR_LINE);
		if (blitter != -1) m_maincpu->set_input_line(M6809_FIRQ_LINE, blitter ? ASSERT_LINE : CLEAR_LINE);
	}

	/* handle the 68000 case */
	else
	{
		m_maincpu->set_input_line(2, m_blitter_int ? ASSERT_LINE : CLEAR_LINE);
		m_maincpu->set_input_line(3, m_periodic_int ? ASSERT_LINE : CLEAR_LINE);
	}
}



/*************************************
 *
 *  Interrupt generation
 *
 *************************************/

TIMER_CALLBACK_MEMBER(itech8_state::irq_off)
{
	update_interrupts(0, -1, -1);
}


WRITE_LINE_MEMBER(itech8_state::generate_nmi)
{
	if (state)
	{
		/* signal the NMI */
		update_interrupts(1, -1, -1);
		m_irq_off_timer->adjust(attotime::from_usec(1));

		if (FULL_LOGGING) logerror("------------ VBLANK (%d) --------------\n", m_screen->vpos());
	}
}

WRITE_LINE_MEMBER(itech8_state::ninclown_irq)
{
	// definitely doesn't like the generate_nmi code, so we just generate VBlank irq here instead
	if (state)
		m_maincpu->set_input_line(3, HOLD_LINE);
}


WRITE8_MEMBER(itech8_state::nmi_ack_w)
{
/* doesn't seem to hold for every game (e.g., hstennis) */
/*  m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);*/
}



/*************************************
 *
 *  Machine initialization
 *
 *************************************/




MACHINE_START_MEMBER(itech8_state,sstrike)
{
	/* we need to update behind the beam as well */
	m_behind_beam_update_timer = timer_alloc(TIMER_BEHIND_BEAM_UPDATE);
	m_behind_beam_update_timer->adjust(m_screen->time_until_pos(0), 32);

	itech8_state::machine_start();
}

void itech8_state::machine_start()
{
	if (membank("bank1"))
		membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x4000, 0xc000);

	m_irq_off_timer = timer_alloc(TIMER_IRQ_OFF);
	m_delayed_sound_data_timer = timer_alloc(TIMER_DELAYED_SOUND_DATA);
	m_blitter_done_timer = timer_alloc(TIMER_BLITTER_DONE);

	save_item(NAME(m_grom_bank));
	save_item(NAME(m_blitter_int));
	save_item(NAME(m_tms34061_int));
	save_item(NAME(m_periodic_int));
	save_item(NAME(m_sound_data));
	save_item(NAME(m_pia_porta_data));
	save_item(NAME(m_pia_portb_data));
}

void itech8_state::machine_reset()
{
	device_type main_cpu_type = m_maincpu->type();

	/* make sure bank 0 is selected */
	if (main_cpu_type == MC6809 || main_cpu_type == HD6309)
	{
		membank("bank1")->set_entry(0);
		m_maincpu->reset();
	}

	/* set the visible area */
	if (m_visarea.width() > 1)
	{
		m_screen->set_visible_area(m_visarea.min_x, m_visarea.max_x, m_visarea.min_y, m_visarea.max_y);
		m_visarea.set(0, 0, 0, 0);
	}
}


void itech8_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
	switch (id)
	{
	case TIMER_IRQ_OFF:
		irq_off(ptr, param);
		break;
	case TIMER_BEHIND_BEAM_UPDATE:
		behind_the_beam_update(ptr, param);
		break;
	case TIMER_DELAYED_SOUND_DATA:
		delayed_sound_data_w(ptr, param);
		break;
	case TIMER_BLITTER_DONE:
		blitter_done(ptr, param);
		break;
	case TIMER_DELAYED_Z80_CONTROL:
		delayed_z80_control_w(ptr, param);
		break;
	default:
		assert_always(false, "Unknown id in itech8_state::device_timer");
	}
}


/*************************************
 *
 *  Bank switching
 *
 *************************************/

TIMER_CALLBACK_MEMBER(itech8_state::behind_the_beam_update)
{
	int scanline = param >> 8;
	int interval = param & 0xff;

	/* force a partial update to the current scanline */
	m_screen->update_partial(scanline);

	/* advance by the interval, and wrap to 0 */
	scanline += interval;
	if (scanline >= 256) scanline = 0;

	/* set a new timer */
	m_behind_beam_update_timer->adjust(m_screen->time_until_pos(scanline), (scanline << 8) + interval);
}



/*************************************
 *
 *  Bank switching
 *
 *************************************/

WRITE8_MEMBER(itech8_state::blitter_bank_w)
{
	/* bit 0x20 on address 7 controls CPU banking */
	if (offset / 2 == 7)
		membank("bank1")->set_entry((data >> 5) & 1);

	/* the rest is handled by the video hardware */
	blitter_w(space, offset, data);
}


WRITE8_MEMBER(itech8_state::rimrockn_bank_w)
{
	/* banking is controlled here instead of by the blitter output */
	membank("bank1")->set_entry(data & 3);
}



/*************************************
 *
 *  Input handling
 *
 *************************************/

CUSTOM_INPUT_MEMBER(itech8_state::special_r)
{
	return m_pia_portb_data & 0x01;
}


/*************************************
 *
 *  6821 PIA handling
 *
 *************************************/

WRITE8_MEMBER(itech8_state::pia_porta_out)
{
	logerror("PIA port A write = %02x\n", data);
	m_pia_porta_data = data;
}


WRITE8_MEMBER(itech8_state::pia_portb_out)
{
	logerror("PIA port B write = %02x\n", data);

	/* bit 0 provides feedback to the main CPU */
	/* bit 4 controls the ticket dispenser */
	/* bit 5 controls the coin counter */
	/* bit 6 controls the diagnostic sound LED */
	m_pia_portb_data = data;
	m_ticket->motor_w(BIT(data, 4));
	machine().bookkeeping().coin_counter_w(0, BIT(data, 5));
}


WRITE8_MEMBER(itech8_state::ym2203_portb_out)
{
	logerror("YM2203 port B write = %02x\n", data);

	/* bit 0 provides feedback to the main CPU */
	/* bit 5 controls the coin counter */
	/* bit 6 controls the diagnostic sound LED */
	/* bit 7 controls the ticket dispenser */
	m_pia_portb_data = data;
	m_ticket->motor_w(BIT(data, 7));
	machine().bookkeeping().coin_counter_w(0, BIT(data, 5));
}



/*************************************
 *
 *  Sound communication
 *
 *************************************/

TIMER_CALLBACK_MEMBER(itech8_state::delayed_sound_data_w)
{
	m_sound_data = param;
	m_soundcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
}


WRITE8_MEMBER(itech8_state::sound_data_w)
{
	synchronize(TIMER_DELAYED_SOUND_DATA, data);
}


WRITE8_MEMBER(itech8_state::gtg2_sound_data_w)
{
	/* on the later GTG2 board, they swizzle the data lines */
	data = ((data & 0x80) >> 7) |
			((data & 0x5d) << 1) |
			((data & 0x20) >> 3) |
			((data & 0x02) << 5);
	synchronize(TIMER_DELAYED_SOUND_DATA, data);
}


READ8_MEMBER(itech8_state::sound_data_r)
{
	m_soundcpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
	return m_sound_data;
}


WRITE8_MEMBER(itech8_state::grom_bank_w)
{
	m_grom_bank = data;
}



/*************************************
 *
 *  16-bit-specific handlers
 *
 *************************************/

WRITE16_MEMBER(itech8_state::grom_bank16_w)
{
	if (ACCESSING_BITS_8_15)
		m_grom_bank = data >> 8;
}


WRITE16_MEMBER(itech8_state::display_page16_w)
{
	if (ACCESSING_BITS_8_15)
		page_w(space, 0, ~data >> 8);
}

READ16_MEMBER(itech8_state::rom_constant_r)
{
//  Ninja Clowns reads this area for program ROM checksum
	logerror("Read ROM constant area %04x\n",offset*2+0x40000);
	return 0xd840;
}

READ8_MEMBER(itech8_state::ninclown_palette_r)
{
	return m_tlc34076->read(space, offset / 16);
}

WRITE8_MEMBER(itech8_state::ninclown_palette_w)
{
	m_tlc34076->write(space, offset / 16, data);
}



/*************************************
 *
 *  Main CPU memory handlers
 *
 *************************************/

/*------ common layout with TMS34061 at 0000 ------*/
void itech8_state::tmslo_map(address_map &map)
{
	map(0x0000, 0x0fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w));
	map(0x1100, 0x1100).nopw();
	map(0x1120, 0x1120).w(this, FUNC(itech8_state::sound_data_w));
	map(0x1140, 0x1140).portr("40").w(this, FUNC(itech8_state::grom_bank_w));
	map(0x1160, 0x1160).portr("60").w(this, FUNC(itech8_state::page_w));
	map(0x1180, 0x1180).portr("80").w(m_tms34061, FUNC(tms34061_device::latch_w));
	map(0x11a0, 0x11a0).w(this, FUNC(itech8_state::nmi_ack_w));
	map(0x11c0, 0x11df).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w));
	map(0x11e0, 0x11ff).w(this, FUNC(itech8_state::palette_w));
	map(0x2000, 0x3fff).ram().share("nvram");
	map(0x4000, 0xffff).bankr("bank1");
}


/*------ common layout with TMS34061 at 1000 ------*/
void itech8_state::tmshi_map(address_map &map)
{
	map(0x1000, 0x1fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w));
	map(0x0100, 0x0100).nopw();
	map(0x0120, 0x0120).w(this, FUNC(itech8_state::sound_data_w));
	map(0x0140, 0x0140).portr("40").w(this, FUNC(itech8_state::grom_bank_w));
	map(0x0160, 0x0160).portr("60").w(this, FUNC(itech8_state::page_w));
	map(0x0180, 0x0180).portr("80").w(m_tms34061, FUNC(tms34061_device::latch_w));
	map(0x01a0, 0x01a0).w(this, FUNC(itech8_state::nmi_ack_w));
	map(0x01c0, 0x01df).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w));
	map(0x01e0, 0x01ff).w(this, FUNC(itech8_state::palette_w));
	map(0x2000, 0x3fff).ram().share("nvram");
	map(0x4000, 0xffff).bankr("bank1");
}


/*------ Golden Tee Golf II 1992 layout ------*/
void itech8_state::gtg2_map(address_map &map)
{
	map(0x0100, 0x0100).portr("40").w(this, FUNC(itech8_state::nmi_ack_w));
	map(0x0120, 0x0120).portr("60").w(this, FUNC(itech8_state::page_w));
	map(0x0140, 0x015f).w(this, FUNC(itech8_state::palette_w));
	map(0x0140, 0x0140).portr("80");
	map(0x0160, 0x0160).w(this, FUNC(itech8_state::grom_bank_w));
	map(0x0180, 0x019f).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w));
	map(0x01c0, 0x01c0).w(this, FUNC(itech8_state::gtg2_sound_data_w));
	map(0x01e0, 0x01e0).w(m_tms34061, FUNC(tms34061_device::latch_w));
	map(0x1000, 0x1fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w));
	map(0x2000, 0x3fff).ram().share("nvram");
	map(0x4000, 0xffff).bankr("bank1");
}

/*------ Ninja Clowns layout ------*/
void itech8_state::ninclown_map(address_map &map)
{
	map(0x000000, 0x00007f).ram().region("maincpu", 0);
	map(0x000080, 0x003fff).ram().share("nvram");
	map(0x004000, 0x03ffff).rom();
	map(0x040000, 0x07ffff).r(this, FUNC(itech8_state::rom_constant_r));
	map(0x100080, 0x100080).w(this, FUNC(itech8_state::sound_data_w));
	map(0x100100, 0x100101).portr("40").w(this, FUNC(itech8_state::grom_bank16_w));
	map(0x100180, 0x100181).portr("60").w(this, FUNC(itech8_state::display_page16_w));
	map(0x100240, 0x100240).w(m_tms34061, FUNC(tms34061_device::latch_w));
	map(0x100280, 0x100281).portr("80").nopw();
	map(0x100300, 0x10031f).rw(this, FUNC(itech8_state::blitter_r), FUNC(itech8_state::blitter_w));
	map(0x100380, 0x1003ff).rw(this, FUNC(itech8_state::ninclown_palette_r), FUNC(itech8_state::ninclown_palette_w)).umask16(0xff00);
	map(0x110000, 0x110fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w));
}



/*************************************
 *
 *  Sound CPU memory handlers
 *
 *************************************/

/*------ YM2203-based sound ------*/
void itech8_state::sound2203_map(address_map &map)
{
	map(0x0000, 0x0000).nopw();
	map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r));
	map(0x2000, 0x2001).mirror(0x0002).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
	map(0x3000, 0x37ff).ram();
	map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
	map(0x8000, 0xffff).rom();
}


/*------ YM2608B-based sound ------*/
void itech8_state::sound2608b_map(address_map &map)
{
	map(0x1000, 0x1000).nopw();
	map(0x2000, 0x2000).r(this, FUNC(itech8_state::sound_data_r));
	map(0x4000, 0x4003).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write));
	map(0x6000, 0x67ff).ram();
	map(0x8000, 0xffff).rom();
}


/*------ YM3812-based sound ------*/
void itech8_state::sound3812_map(address_map &map)
{
	map(0x0000, 0x0000).nopw();
	map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r));
	map(0x2000, 0x2001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
	map(0x3000, 0x37ff).ram();
	map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
	map(0x5000, 0x5003).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
	map(0x8000, 0xffff).rom();
}


/*------ external YM3812-based sound board ------*/
void itech8_state::sound3812_external_map(address_map &map)
{
	map(0x0000, 0x0000).nopw();
	map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r));
	map(0x2000, 0x2001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
	map(0x3000, 0x37ff).ram();
	map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
	map(0x5000, 0x500f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write));
	map(0x8000, 0xffff).rom();
}



/*************************************
 *
 *  Other CPU memory handlers
 *
 *************************************/

void itech8_state::slikz80_mem_map(address_map &map)
{
	map(0x0000, 0x7ff).rom();
}


void itech8_state::slikz80_io_map(address_map &map)
{
	map.global_mask(0xff);
	map(0x00, 0x00).rw(this, FUNC(itech8_state::slikz80_port_r), FUNC(itech8_state::slikz80_port_w));
}



/*************************************
 *
 *  Port definitions
 *
 *************************************/

static INPUT_PORTS_START( wfortune )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x08, DEF_STR( Upright ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
	PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Blue Player") PORT_PLAYER(3)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Yellow Player") PORT_PLAYER(2)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Red Player") PORT_PLAYER(1)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )

	PORT_START("AN_D")  /* analog D */
	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(75) PORT_KEYDELTA(10) PORT_PLAYER(1)

	PORT_START("AN_F")  /* analog F */
	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(75) PORT_KEYDELTA(10) PORT_COCKTAIL PORT_PLAYER(2)
INPUT_PORTS_END


static INPUT_PORTS_START( grmatch )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x08, "Adjustments Lockout" )
	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Coinage ) )
	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
	PORT_DIPSETTING(    0x10, DEF_STR( 1C_1C ) )
	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Difficulty ) )
	PORT_DIPSETTING(    0x20, "1" )
	PORT_DIPSETTING(    0x00, "3" )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
INPUT_PORTS_END


static INPUT_PORTS_START( stratab )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x08, DEF_STR( Upright ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
	PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Right Hook") PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Left Hook") PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Right Hook") PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Left Hook") PORT_PLAYER(1)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )

	PORT_START("AN_C")  /* analog C */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_PLAYER(1)

	PORT_START("AN_D")  /* analog D */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_REVERSE PORT_PLAYER(1)

	PORT_START("AN_E")  /* analog E */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_COCKTAIL PORT_PLAYER(2)

	PORT_START("AN_F")  /* analog F */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_REVERSE PORT_COCKTAIL PORT_PLAYER(2)
INPUT_PORTS_END

static INPUT_PORTS_START( stratabs )
	PORT_INCLUDE( stratab )

	PORT_START("FAKEX") /* fake */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_RESET PORT_PLAYER(1)

	PORT_START("FAKEY") /* fake */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(100) PORT_RESET PORT_REVERSE PORT_PLAYER(1)
INPUT_PORTS_END



CUSTOM_INPUT_MEMBER(itech8_state::gtg_mux)
{
	const char *tag1 = (const char *)param;
	const char *tag2 = tag1 + strlen(tag1) + 1;
	return ioport(tag1)->read() & ioport(tag2)->read();
}

static INPUT_PORTS_START( gtg )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x08, DEF_STR( Upright ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
	PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	/* it is still unknown how the second player inputs are muxed in */
	/* currently we map both sets of controls to the same inputs */
	PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,gtg_mux, "P1\0P2")
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )

	PORT_START("P1")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Swing") PORT_PLAYER(1)

	PORT_START("P2")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Swing") PORT_COCKTAIL PORT_PLAYER(2)
INPUT_PORTS_END


static INPUT_PORTS_START( gtgt )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Face Right") PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Face Left") PORT_PLAYER(1)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )

	PORT_START("AN_C")  /* analog C */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_PLAYER(1)

	PORT_START("AN_D")  /* analog D */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_REVERSE PORT_PLAYER(1)
INPUT_PORTS_END


static INPUT_PORTS_START( gtg2t )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x08, DEF_STR( Upright ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
	PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Face Right") PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Face Left") PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Face Right") PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Face Left") PORT_PLAYER(1)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )

	PORT_START("AN_C")  /* analog C */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_PLAYER(1)

	PORT_START("AN_D")  /* analog D */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_REVERSE PORT_PLAYER(1)

	PORT_START("AN_E")  /* analog E */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_COCKTAIL PORT_PLAYER(2)

	PORT_START("AN_F")  /* analog F */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_REVERSE PORT_COCKTAIL PORT_PLAYER(2)
INPUT_PORTS_END


static INPUT_PORTS_START( slikshot )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN4 )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Yellow")
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Red")
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Green")
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )

	PORT_START("FAKEX") /* fake */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_RESET PORT_PLAYER(1)

	PORT_START("FAKEY") /* fake */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(100) PORT_RESET PORT_REVERSE PORT_PLAYER(1)
INPUT_PORTS_END


static INPUT_PORTS_START( dynobop )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* ball gate */
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM )   /* ball detect */
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 )
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )

	PORT_START("FAKEX") /* fake */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_RESET PORT_PLAYER(1)

	PORT_START("FAKEY") /* fake */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(100) PORT_RESET PORT_REVERSE PORT_PLAYER(1)
INPUT_PORTS_END


static INPUT_PORTS_START( sstrike )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN4 )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Left Hook")
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Hook")
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )

	PORT_START("FAKEX") /* fake */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_RESET PORT_PLAYER(1)

	PORT_START("FAKEY") /* fake */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(100) PORT_RESET PORT_REVERSE PORT_PLAYER(1)
INPUT_PORTS_END


static INPUT_PORTS_START( pokrdice )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Lower Right") PORT_CODE(KEYCODE_3_PAD)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x08, DEF_STR( Upright ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
	PORT_BIT( 0x60, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Upper Right") PORT_CODE(KEYCODE_9_PAD)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Middle") PORT_CODE(KEYCODE_5_PAD)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Lower Left") PORT_CODE(KEYCODE_1_PAD)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Raise")
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Upper Left") PORT_CODE(KEYCODE_7_PAD)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Play")
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END


static INPUT_PORTS_START( hstennis )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x08, DEF_STR( Upright ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )  /* see code at fbb5 */
	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
	PORT_BIT( 0x60, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Soft") PORT_PLAYER(1)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Hard") PORT_PLAYER(1)
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN4 )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Soft") PORT_PLAYER(2)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Hard") PORT_PLAYER(2)
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
INPUT_PORTS_END


static INPUT_PORTS_START( arlingtn )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )  /* see code at e23c */
	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
	PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Place")
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Win")
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN4 )
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Show")
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start Race")
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Collect")
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
INPUT_PORTS_END


static INPUT_PORTS_START( peggle )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
	PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN4 )
	PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
INPUT_PORTS_END


static INPUT_PORTS_START( pegglet )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x3e, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN4 )
	PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )

	PORT_START("AN_D")      /* analog D */
	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_RESET PORT_PLAYER(1)
INPUT_PORTS_END


static INPUT_PORTS_START( neckneck )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )  /* see code at e23c */
	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
	PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Horse 3")
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Horse 2")
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Horse 1")
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )

	PORT_START("80")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN4 )
	PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Horse 4")
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Horse 6")
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Horse 5")
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
INPUT_PORTS_END


static INPUT_PORTS_START( rimrockn )
	PORT_START("40")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
	PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 )
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN4 )
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, itech8_state,special_r, nullptr) /* input from sound board */

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )

	PORT_START("161")   /* special 161 */
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Pass") PORT_PLAYER(1)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Shoot") PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )

	PORT_START("162")   /* special 162 */
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Pass") PORT_PLAYER(2)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Shoot") PORT_PLAYER(2)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )

	PORT_START("163")   /* special 163 */
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P3 Shoot") PORT_PLAYER(3)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P3 Pass") PORT_PLAYER(3)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )

	PORT_START("164")   /* special 164 */
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P4 Shoot") PORT_PLAYER(4)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P4 Pass") PORT_PLAYER(4)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4)
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )

	PORT_START("165")   /* special 165 */
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE3 )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE4 )
	PORT_DIPNAME( 0x18, 0x00, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x18, "1 player" )
	PORT_DIPSETTING(    0x10, "2 players" )
	PORT_DIPSETTING(    0x08, "3 players" )
	PORT_DIPSETTING(    0x00, "4 players" )
	PORT_DIPNAME( 0x20, 0x00, "Coin Slots" )
	PORT_DIPSETTING(    0x04, "Common" )
	PORT_DIPSETTING(    0x00, "Individual" )
	PORT_DIPNAME( 0x40, 0x00, "Video Sync" )
	PORT_DIPSETTING(    0x02, "Positive" )
	PORT_DIPSETTING(    0x00, "Negative" )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END


static INPUT_PORTS_START( ninclown )
	PORT_START("40")
	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_SERVICE1 )
	PORT_SERVICE_NO_TOGGLE( 0x0200, IP_ACTIVE_LOW )
	PORT_BIT( 0x0c00, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN1 )
	PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNKNOWN )

	PORT_START("60")
	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Throw") PORT_PLAYER(1)
	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START1 )
	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Kick") PORT_PLAYER(1)
	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Punch") PORT_PLAYER(1)

	PORT_START("80")
	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Throw") PORT_PLAYER(2)
	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Kick") PORT_PLAYER(2)
	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Punch") PORT_PLAYER(2)
INPUT_PORTS_END


static INPUT_PORTS_START( gtg2 )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x40, DEF_STR( Upright ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Face Right") PORT_PLAYER(1)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Face Left") PORT_PLAYER(1)
	PORT_BIT( 0x78, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )

	PORT_START("80")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Face Right") PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Face Left") PORT_COCKTAIL PORT_PLAYER(2)
	PORT_BIT( 0x78, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )

	PORT_START("AN_C")  /* analog C */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_PLAYER(1)

	PORT_START("AN_D")  /* analog D */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_REVERSE PORT_PLAYER(1)

	PORT_START("AN_E")  /* analog E */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_COCKTAIL PORT_PLAYER(2)

	PORT_START("AN_F")  /* analog F */
	PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_REVERSE PORT_COCKTAIL PORT_PLAYER(2)
INPUT_PORTS_END


static INPUT_PORTS_START( gpgolf )
	PORT_START("40")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
	PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
	PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) )
	PORT_DIPSETTING(    0x40, DEF_STR( Upright ) )
	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )

	PORT_START("60")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Swing") PORT_PLAYER(1)
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )

	PORT_START("80")
	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END

/*************************************
 *
 *  TMS34061 interfacing
 *
 *************************************/

WRITE_LINE_MEMBER(itech8_state::generate_tms34061_interrupt)
{
	update_interrupts(-1, state, -1);

	if (FULL_LOGGING && state) logerror("------------ DISPLAY INT (%d) --------------\n", m_screen->vpos());
}

/*************************************
 *
 *  Machine driver
 *
 *************************************/

/************* core pieces ******************/

MACHINE_CONFIG_START(itech8_state::itech8_core_lo)

	/* basic machine hardware */
	MCFG_DEVICE_ADD("maincpu", MC6809, CLOCK_8MHz)
	MCFG_DEVICE_PROGRAM_MAP(tmslo_map)

	MCFG_NVRAM_ADD_RANDOM_FILL("nvram")

	MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)

	/* video hardware */
	MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)

	MCFG_SCREEN_ADD("screen", RASTER)
	MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
	MCFG_SCREEN_REFRESH_RATE(60)
	MCFG_SCREEN_SIZE(512, 263)
	MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, itech8_state, generate_nmi))

	MCFG_DEVICE_ADD("tms34061", TMS34061, 0)
	MCFG_TMS34061_ROWSHIFT(8)  /* VRAM address is (row << rowshift) | col */
	MCFG_TMS34061_VRAM_SIZE(itech8_state::VRAM_SIZE)
	MCFG_TMS34061_INTERRUPT_CB(WRITELINE(*this, itech8_state, generate_tms34061_interrupt))      /* interrupt gen callback */

	/* sound hardware */
	SPEAKER(config, "mono").front_center();

	/* via */
	MCFG_DEVICE_ADD("via6522_0", VIA6522, CLOCK_8MHz/4)
	MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, itech8_state, pia_portb_out))
	MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::itech8_core_hi)
	itech8_core_lo(config);

	/* basic machine hardware */
	MCFG_DEVICE_MODIFY("maincpu")
	MCFG_DEVICE_PROGRAM_MAP(tmshi_map)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::itech8_sound_ym2203)

	/* basic machine hardware */
	MCFG_DEVICE_ADD("soundcpu", MC6809, CLOCK_8MHz)
	MCFG_DEVICE_PROGRAM_MAP(sound2203_map)

	/* sound hardware */
	MCFG_DEVICE_ADD("ymsnd", YM2203, CLOCK_8MHz/2)
	MCFG_YM2203_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
	MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(*this, itech8_state, ym2203_portb_out))
	MCFG_SOUND_ROUTE(0, "mono", 0.07)
	MCFG_SOUND_ROUTE(1, "mono", 0.07)
	MCFG_SOUND_ROUTE(2, "mono", 0.07)
	MCFG_SOUND_ROUTE(3, "mono", 0.75)

	MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_8MHz/8, okim6295_device::PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::itech8_sound_ym2608b)

	/* basic machine hardware */
	MCFG_DEVICE_ADD("soundcpu", MC6809, CLOCK_8MHz)
	MCFG_DEVICE_PROGRAM_MAP(sound2608b_map)

	/* sound hardware */
	MCFG_DEVICE_ADD("ymsnd", YM2608, CLOCK_8MHz)
	MCFG_YM2608_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
	MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(*this, itech8_state, ym2203_portb_out))
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::itech8_sound_ym3812)

	/* basic machine hardware */
	MCFG_DEVICE_ADD("soundcpu", MC6809, CLOCK_8MHz)
	MCFG_DEVICE_PROGRAM_MAP(sound3812_map)

	MCFG_DEVICE_ADD("pia", PIA6821, 0)
	MCFG_PIA_READPB_HANDLER(READLINE("ticket", ticket_dispenser_device, line_r))
	MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, itech8_state, pia_porta_out))
	MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, itech8_state, pia_portb_out))

	/* sound hardware */
	MCFG_DEVICE_ADD("ymsnd", YM3812, CLOCK_8MHz/2)
	MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)

	MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_8MHz/8, okim6295_device::PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::itech8_sound_ym3812_external)

	/* basic machine hardware */
	MCFG_DEVICE_ADD("soundcpu", MC6809, CLOCK_8MHz)
	MCFG_DEVICE_PROGRAM_MAP(sound3812_external_map)

	/* sound hardware */
	MCFG_DEVICE_ADD("ymsnd", YM3812, CLOCK_8MHz/2)
	MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE))
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)

	MCFG_DEVICE_ADD("oki", OKIM6295, CLOCK_8MHz/8, okim6295_device::PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified
	MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END


/************* full drivers ******************/

MACHINE_CONFIG_START(itech8_state::wfortune)
	itech8_core_hi(config);

	/* basic machine hardware */
	itech8_sound_ym2203(config);

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2layer)


MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::grmatch)
	itech8_core_hi(config);

	/* basic machine hardware */
	itech8_sound_ym2608b(config);

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_grmatch)

	/* palette updater */
	MCFG_TIMER_DRIVER_ADD_SCANLINE("palette_timer", itech8_state, grmatch_palette_update, "screen", 0, 0)

MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::stratab_hi)
	itech8_core_hi(config);

	/* basic machine hardware */
	itech8_sound_ym2203(config);

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2layer)

MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::stratab_lo)
	itech8_core_lo(config);

	/* basic machine hardware */
	itech8_sound_ym2203(config);

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2layer)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::slikshot_hi)
	itech8_core_hi(config);

	/* basic machine hardware */
	itech8_sound_ym2203(config);

	MCFG_DEVICE_ADD("sub", Z80, CLOCK_8MHz/2)
	MCFG_DEVICE_PROGRAM_MAP(slikz80_mem_map)
	MCFG_DEVICE_IO_MAP(slikz80_io_map)

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_slikshot)
	MCFG_VIDEO_START_OVERRIDE(itech8_state,slikshot)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::slikshot_lo)
	itech8_core_lo(config);

	/* basic machine hardware */
	itech8_sound_ym2203(config);

	MCFG_DEVICE_ADD("sub", Z80, CLOCK_8MHz/2)
	MCFG_DEVICE_PROGRAM_MAP(slikz80_mem_map)
	MCFG_DEVICE_IO_MAP(slikz80_io_map)

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_slikshot)
	MCFG_VIDEO_START_OVERRIDE(itech8_state,slikshot)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::slikshot_lo_noz80)
	itech8_core_lo(config);

	/* basic machine hardware */
	itech8_sound_ym2203(config);

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2page)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::sstrike)
	slikshot_lo(config);

	/* basic machine hardware */
	MCFG_MACHINE_START_OVERRIDE(itech8_state,sstrike)

MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::hstennis_hi)
	itech8_core_hi(config);

	/* basic machine hardware */
	itech8_sound_ym3812(config);

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2page_large)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::hstennis_lo)
	itech8_core_lo(config);

	/* basic machine hardware */
	itech8_sound_ym3812(config);

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2page_large)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::rimrockn)
	itech8_core_hi(config);

	/* basic machine hardware */
	itech8_sound_ym3812_external(config);

	MCFG_DEVICE_REPLACE("maincpu", HD6309, CLOCK_12MHz)
	MCFG_DEVICE_PROGRAM_MAP(tmshi_map)

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(24, 375, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2page_large)
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::ninclown)
	itech8_core_hi(config);

	/* basic machine hardware */
	itech8_sound_ym3812_external(config);

	MCFG_DEVICE_REPLACE("maincpu", M68000, CLOCK_12MHz)
	MCFG_DEVICE_PROGRAM_MAP(ninclown_map)

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(64, 423, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2page_large)
	MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, itech8_state, ninclown_irq))
MACHINE_CONFIG_END


MACHINE_CONFIG_START(itech8_state::gtg2)
	itech8_core_lo(config);

	/* basic machine hardware */
	itech8_sound_ym3812_external(config);

	MCFG_DEVICE_MODIFY("maincpu")
	MCFG_DEVICE_PROGRAM_MAP(gtg2_map)

	/* video hardware */
	MCFG_SCREEN_MODIFY("screen")
	MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
	MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_2layer)
MACHINE_CONFIG_END



/*************************************
 *
 *  ROM definitions
 *
 *************************************/

ROM_START( wfortune )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "wofpgm", 0x04000, 0x4000, CRC(bd984654) SHA1(8e16d2feb26e9a6f86c4a36bf0f03db80ded03f6) )
	ROM_CONTINUE(       0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "wofsnd", 0x08000, 0x8000, CRC(0a6aa5dc) SHA1(42eef40a4300d6d16d9e2af678432a02be05f104) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "wofgrom0", 0x00000, 0x10000, CRC(9a157b2c) SHA1(c349b41ba00cf6e2fec32872627c8cfdd8b5c1b9) )
	ROM_LOAD( "wofgrom1", 0x10000, 0x10000, CRC(5064739b) SHA1(424e3f94333f8ca21ac39b64b684cf6b487164d3) )
	ROM_LOAD( "wofgrom2", 0x20000, 0x10000, CRC(3d393b2b) SHA1(2c94d2dab7369c099c470cf96391b033f39add78) )
	ROM_LOAD( "wofgrom3", 0x30000, 0x10000, CRC(117a2ce9) SHA1(8d601c1cf9f783a42617f13c6862a5835553ac4f) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "wofsbom0", 0x00000, 0x20000, CRC(5c28c3fe) SHA1(eba64ede749fb26f9926f644d66860b54b4c76e7) )
ROM_END


ROM_START( wfortunea )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "wofpgmr1.bin", 0x04000, 0x4000, CRC(c3d3eb21) SHA1(21137663afd19fba875e188640f0347fc8c5dcf0) )
	ROM_CONTINUE(             0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "wofsnd", 0x08000, 0x8000, CRC(0a6aa5dc) SHA1(42eef40a4300d6d16d9e2af678432a02be05f104) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "wofgrom0", 0x00000, 0x10000, CRC(9a157b2c) SHA1(c349b41ba00cf6e2fec32872627c8cfdd8b5c1b9) )
	ROM_LOAD( "wofgrom1", 0x10000, 0x10000, CRC(5064739b) SHA1(424e3f94333f8ca21ac39b64b684cf6b487164d3) )
	ROM_LOAD( "wofgrom2", 0x20000, 0x10000, CRC(3d393b2b) SHA1(2c94d2dab7369c099c470cf96391b033f39add78) )
	ROM_LOAD( "wofgrom3", 0x30000, 0x10000, CRC(117a2ce9) SHA1(8d601c1cf9f783a42617f13c6862a5835553ac4f) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "wofsbom0", 0x00000, 0x20000, CRC(5c28c3fe) SHA1(eba64ede749fb26f9926f644d66860b54b4c76e7) )
ROM_END


ROM_START( grmatch )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "grudgematch.u5", 0x04000, 0x4000, CRC(11cadec9) SHA1(e21df623d1311ea63bafa2d6d0d94eb7d13232da) )
	ROM_CONTINUE(               0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "grudgematch.u27", 0x08000, 0x8000, CRC(59c18e63) SHA1(0d00c9cc683ff17e3213ba343ae65d533b57a243) )

	ROM_REGION( 0xe0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(9064eff9) SHA1(4c80432ef359266c43b4691b503f529ed018a655) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(6919c314) SHA1(e4a7ca77ee27ea8e41a236806e689c964d981210) )
	ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(36b1682c) SHA1(6098b8aa576522c3cea66b5ac8f9406bf4222008) )
	ROM_LOAD( "grom3.bin", 0x60000, 0x20000, CRC(7bf05f61) SHA1(269e1cacf319d9f2a2b865ac6573e690f36827a1) )
	ROM_LOAD( "grom4.bin", 0x80000, 0x20000, CRC(55bded89) SHA1(61e0c60e391327a5fdda704c7756fcd6e11253c5) )
	ROM_LOAD( "grom5.bin", 0xa0000, 0x20000, CRC(37b47b2e) SHA1(352204d3e95e6db556aacf053c42d0d5871245a7) )
	ROM_LOAD( "grom6.bin", 0xc0000, 0x20000, CRC(860ee822) SHA1(2ca821c2fa220065b99b99b7487fe9666f338c75) )

	ROM_REGION( 0x20000, "ymsnd", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x20000, CRC(49bce954) SHA1(68a8b11c03722349d673f7383288c63054f0d6f6) )
ROM_END


ROM_START( stratab )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "sb_prog_v3_u5.u5", 0x08000, 0x8000, CRC(a5ae728f) SHA1(85098eef1614d5148e8082df4c936883662292ee) ) /* Labeled as SB PROG V3 (U5) */
	ROM_COPY( "maincpu", 0x8000, 0x14000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "sb_snds_u27.u27", 0x08000, 0x8000, CRC(b36c8f0a) SHA1(c4c3edf3352d95561f76705087338c1946137447) ) /* Labeled as SB SNDS (U27) */

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "sb_grom0_0.grom0", 0x00000, 0x20000, CRC(a915b0bd) SHA1(0955c7ebb48e97ccffc18c5deec6eccce1d68de8) )
	ROM_LOAD( "sb_grom0_1.grom1", 0x20000, 0x20000, CRC(340c661f) SHA1(150f9158fa6d956d08051c67c17723b1d8c66867) )
	ROM_LOAD( "sb_grom0_2.grom2", 0x40000, 0x20000, CRC(5df9f1cf) SHA1(cad87f63ac0e902dffeeaa42538fc73f792d87d9) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "sb_srom0.srom0", 0x00000, 0x20000, CRC(6ff390b9) SHA1(f31dae9e31f3fc83b9253e49fd4204820db3587e) )
ROM_END


ROM_START( stratab1 )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "sb_prog_v1_u5.u5",  0x08000, 0x8000, CRC(46d51604) SHA1(de7b6306fdcee4907b07667baf874bd195822e6a) ) /* Labeled as SB PROG V1 (U5) */
	ROM_COPY( "maincpu", 0x8000, 0x14000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "sb_snds_u27.u27", 0x08000, 0x8000, CRC(b36c8f0a) SHA1(c4c3edf3352d95561f76705087338c1946137447) ) /* Labeled as SB SNDS (U27) */

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "sb_grom0_0.grom0", 0x00000, 0x20000, CRC(a915b0bd) SHA1(0955c7ebb48e97ccffc18c5deec6eccce1d68de8) )
	ROM_LOAD( "sb_grom0_1.grom1", 0x20000, 0x20000, CRC(340c661f) SHA1(150f9158fa6d956d08051c67c17723b1d8c66867) )
	ROM_LOAD( "sb_grom0_2.grom2", 0x40000, 0x20000, CRC(5df9f1cf) SHA1(cad87f63ac0e902dffeeaa42538fc73f792d87d9) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "sb_srom0.srom0", 0x00000, 0x20000, CRC(6ff390b9) SHA1(f31dae9e31f3fc83b9253e49fd4204820db3587e) )
ROM_END


ROM_START( gtg )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "gtg.bin_3.1.u5", 0x04000, 0x4000, CRC(61984272) SHA1(be735f8576fb2cccc0e9e6ea6f2fd54b6c0b3bb3) ) /* Joystick version */
	ROM_CONTINUE(        0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(358d2440) SHA1(7b09350c89f9d2c86dc187d8812bbf26b576a38f) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "golf-grom0.grom0", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
	ROM_LOAD( "golf-grom1.grom1", 0x20000, 0x20000, CRC(b52a23f6) SHA1(092961acf47875179b44342e2dd8955670e67ea2) )
	ROM_LOAD( "golf-grom2.grom2", 0x40000, 0x20000, CRC(9b8e3a61) SHA1(1b5682b1328d6c97b604fb71512e8f72322a688f) )
	ROM_LOAD( "golf-grom3.grom3", 0x60000, 0x20000, CRC(b6e9fb15) SHA1(c1b28ea911696cb4ed56bfba212848693530b59f) )
	ROM_LOAD( "golf-grom4.grom4", 0x80000, 0x20000, CRC(faa16729) SHA1(5d46cddda66b6d23c9ebdf2fb4cebce15586b4ad) )
	ROM_LOAD( "grom5.bin",        0xa0000, 0x20000, CRC(5b393314) SHA1(9e314a75ea52373369904915ec786f09eee725a9) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x20000, CRC(1cccbfdf) SHA1(546059fea2e7cd5627a666d80b1fc3ed8fcc0762) )
ROM_END

ROM_START( gtgt )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "gtg.bin_2.0.u5", 0x4000, 0x4000, CRC(4c907166) SHA1(338a599645fa49c9fcbfbe5ba3431dafffddacc7) ) /* Trackball version */
	ROM_CONTINUE(        0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "golf-snd.u27", 0x08000, 0x8000, CRC(f6a7429b) SHA1(0fb378606c12c3543aa1ff603101e262acb9c692) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "golf-grom0.grom0", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
	ROM_LOAD( "golf-grom1.grom1", 0x20000, 0x20000, CRC(b52a23f6) SHA1(092961acf47875179b44342e2dd8955670e67ea2) )
	ROM_LOAD( "golf-grom2.grom2", 0x40000, 0x20000, CRC(9b8e3a61) SHA1(1b5682b1328d6c97b604fb71512e8f72322a688f) )
	ROM_LOAD( "golf-grom3.grom3", 0x60000, 0x20000, CRC(b6e9fb15) SHA1(c1b28ea911696cb4ed56bfba212848693530b59f) )
	ROM_LOAD( "golf-grom4.grom4", 0x80000, 0x20000, CRC(faa16729) SHA1(5d46cddda66b6d23c9ebdf2fb4cebce15586b4ad) )
	ROM_LOAD( "golf-grom5.grom5", 0xa0000, 0x10000, CRC(62a523d2) SHA1(431f89fa044bf0ed3c197745d9c1a61f666da658) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "golf-srom0.bin", 0x00000, 0x20000, CRC(1cccbfdf) SHA1(546059fea2e7cd5627a666d80b1fc3ed8fcc0762) )
ROM_END

ROM_START( gtgt1 )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "gtg.bin_1.0.u5", 0x04000, 0x4000, CRC(ec70b510) SHA1(318984d77eb1df6258b855781ae1c9a09aa74f15) ) /* Trackball version */
	ROM_CONTINUE(        0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "snd-u27.256", 0x08000, 0x8000, CRC(471da557) SHA1(32bfe450a42d9eb6c14edcfa2b4e33f65a11126e) )

	ROM_REGION( 0xb0000, "grom", 0 )
	ROM_LOAD( "golf-grom0.grom0", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
	ROM_LOAD( "golf-grom1.grom1", 0x20000, 0x20000, CRC(b52a23f6) SHA1(092961acf47875179b44342e2dd8955670e67ea2) )
	ROM_LOAD( "golf-grom2.grom2", 0x40000, 0x20000, CRC(9b8e3a61) SHA1(1b5682b1328d6c97b604fb71512e8f72322a688f) )
	ROM_LOAD( "golf-grom3.grom3", 0x60000, 0x20000, CRC(b6e9fb15) SHA1(c1b28ea911696cb4ed56bfba212848693530b59f) )
	ROM_LOAD( "golf-grom4.grom4", 0x80000, 0x20000, CRC(faa16729) SHA1(5d46cddda66b6d23c9ebdf2fb4cebce15586b4ad) )
	ROM_LOAD( "grom5.512",        0xa0000, 0x10000, CRC(44b47015) SHA1(5dde4c932a697b51fe02eab8d948889b3fe7baff) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.010", 0x00000, 0x20000, CRC(d041e0c9) SHA1(1d90f37071d92c714ff69ab2b0337c7c66147995) )
ROM_END


ROM_START( gtg2t )
	/* banks are loaded in the opposite order from the others, */
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "gtg2.bin_1.1.u5", 0x10000, 0x4000, CRC(c7b3a9f3) SHA1(5edaca6fd6ee58bd1676dc9b2c86da4dd2f51687) ) /* Trackball version */
	ROM_CONTINUE(        0x04000, 0xc000 )
	ROM_COPY( "maincpu", 0x8000, 0x14000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(dd2a5905) SHA1(dc93f13de3953852a6757361eb9683a57d3ed326) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(a4182776) SHA1(9f4704d1a61a4fffce454c82cb3eb4629d9a2006) )
	ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(0580bb99) SHA1(012d473bc63632a5ed1a250daa54a00a4e30e8b2) )
	ROM_LOAD( "grom3.bin", 0x60000, 0x20000, CRC(89edb624) SHA1(e77d5ecd04f44f184e76eb2506660a04b6bc7fe8) )
	ROM_LOAD( "grom4.bin", 0x80000, 0x20000, CRC(f6557950) SHA1(fd2bbd6b852a9f2775a23d9fdaa20d31d6766d7f) )
	ROM_LOAD( "grom5.bin", 0xa0000, 0x20000, CRC(a680ce6a) SHA1(fe51546933c093cea81858b213afb0e926e9eb4e) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom00.bin", 0x00000, 0x20000, CRC(4dd4db42) SHA1(0dffb51e8de36d8747f443fd65fe9927815eaff0) )

	ROM_REGION( 0x0200, "plds", 0 )
	ROM_LOAD( "tibpal16l8.u11", 0x0000, 0x0104, CRC(9bf5a75f) SHA1(79786f7ce656f30a33a92887a290b767a7cbbf31) )
ROM_END



ROM_START( gtg2j )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "gtg2.bin_1.0.u5", 0x04000, 0x4000, CRC(9c95ceaa) SHA1(d9fd2b2419c026822a07d2ba51d6ab40b7cd0d49) ) /* Joystick version */
	ROM_CONTINUE(        0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(dd2a5905) SHA1(dc93f13de3953852a6757361eb9683a57d3ed326) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(a4182776) SHA1(9f4704d1a61a4fffce454c82cb3eb4629d9a2006) )
	ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(0580bb99) SHA1(012d473bc63632a5ed1a250daa54a00a4e30e8b2) )
	ROM_LOAD( "grom3.bin", 0x60000, 0x20000, CRC(89edb624) SHA1(e77d5ecd04f44f184e76eb2506660a04b6bc7fe8) )
	ROM_LOAD( "grom4.bin", 0x80000, 0x20000, CRC(f6557950) SHA1(fd2bbd6b852a9f2775a23d9fdaa20d31d6766d7f) )
	ROM_LOAD( "grom5.bin", 0xa0000, 0x20000, CRC(a680ce6a) SHA1(fe51546933c093cea81858b213afb0e926e9eb4e) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x20000, CRC(1cccbfdf) SHA1(546059fea2e7cd5627a666d80b1fc3ed8fcc0762) )

	ROM_REGION( 0x0200, "plds", 0 )
	ROM_LOAD( "tibpal16l8.u11", 0x0000, 0x0104, CRC(9bf5a75f) SHA1(79786f7ce656f30a33a92887a290b767a7cbbf31) )
ROM_END


ROM_START( slikshot )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "poolpgm-20.u5",  0x04000, 0x4000, CRC(370a00eb) SHA1(b2878f161f4931d9fc3979a84b29660941e2608f) )
	ROM_CONTINUE(          0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(a96ce0f7) SHA1(c1fec3aeef97c846fd1a20b91af54f6bf9723a71) )

	ROM_REGION( 0x10000, "sub", 0 )
	ROM_LOAD( "u53.bin", 0x00000, 0x0800, CRC(04b85918) SHA1(409aef2e71937c7654334999df9313909d757966) )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(e60c2804) SHA1(e62d11b6c4439a70a2f32df72c8c64e2f110351e) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(d764d542) SHA1(43fc0c9b627484a670d87da91e212741b137e995) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x10000, CRC(4b075f5e) SHA1(d1ac2c06352a5b96486a7e8cf8baae0c0e5b1883) )
ROM_END


ROM_START( slikshot17 )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "poolpgm-17.u5", 0x04000, 0x4000, CRC(09d70554) SHA1(a009cd3b22261c60f1028694baef51f61713154f) )
	ROM_CONTINUE(        0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(a96ce0f7) SHA1(c1fec3aeef97c846fd1a20b91af54f6bf9723a71) )

	ROM_REGION( 0x10000, "sub", 0 )
	ROM_LOAD( "u53.bin", 0x00000, 0x0800, CRC(04b85918) SHA1(409aef2e71937c7654334999df9313909d757966) )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(e60c2804) SHA1(e62d11b6c4439a70a2f32df72c8c64e2f110351e) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(d764d542) SHA1(43fc0c9b627484a670d87da91e212741b137e995) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x10000, CRC(4b075f5e) SHA1(d1ac2c06352a5b96486a7e8cf8baae0c0e5b1883) )
ROM_END


ROM_START( slikshot16 )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "poolpgm-16.u5", 0x04000, 0x4000, CRC(c0f17012) SHA1(5d466e058daf91b4f52e634498df9d2a03627aaa) )
	ROM_CONTINUE(        0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "u27.bin", 0x08000, 0x8000, CRC(a96ce0f7) SHA1(c1fec3aeef97c846fd1a20b91af54f6bf9723a71) )

	ROM_REGION( 0x10000, "sub", 0 )
	ROM_LOAD( "u53.bin", 0x00000, 0x0800, CRC(04b85918) SHA1(409aef2e71937c7654334999df9313909d757966) )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "pool-grom.0", 0x00000, 0x10000, CRC(e6d0edc6) SHA1(5287a31bbdde1e4291d8e9e6b99d3aa12bfb6e18) )
	ROM_LOAD( "pool-grom.1", 0x10000, 0x10000, CRC(5a071aa2) SHA1(9c5506e37625d213429b1231d457d7ce8a7a81ff) )
	ROM_LOAD( "pool-grom.2", 0x20000, 0x10000, CRC(c0bdf4e0) SHA1(3b7c635375c5e5fddcbc1bd1b186c960081ec37e) )
	ROM_LOAD( "pool-grom.3", 0x30000, 0x10000, CRC(cb0bd9a3) SHA1(107ff127f9adad84a5f92077851423249fce8e30) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x10000, CRC(4b075f5e) SHA1(d1ac2c06352a5b96486a7e8cf8baae0c0e5b1883) )
ROM_END


ROM_START( dynobop )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "dyno_pgm_1.1_u5.u5", 0x04000, 0x4000, CRC(98452c40) SHA1(9b9316fc258792e0d825f16e0fadf8e0c35a864e) )
	ROM_CONTINUE(                   0x10000, 0xc000 )
	ROM_COPY( "maincpu",   0x14000, 0x08000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "dyno_snd-u27.u27", 0x08000, 0x8000, CRC(a37d862b) SHA1(922eeae184df2c5c28040da27699dd55744f8dca) )

	ROM_REGION( 0x10000, "sub", 0 )
	ROM_LOAD( "dynobop.u53", 0x00000, 0x0800, CRC(04b85918) SHA1(409aef2e71937c7654334999df9313909d757966) )
	ROM_CONTINUE(            0x00000, 0x0800 )
	ROM_CONTINUE(            0x00000, 0x0800 )
	ROM_CONTINUE(            0x00000, 0x0800 )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom00-dyno.grom0", 0x00000, 0x20000, CRC(3525a7a3) SHA1(fe0b08203c135d55507506936dc34e1503e4906b) )
	ROM_LOAD( "grom01-dyno.grom1", 0x20000, 0x20000, CRC(1544a232) SHA1(60bba76537c82887db8e38c6a87c528afdd385d0) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "dyno_vr-srom0.srom0", 0x00000, 0x10000, CRC(b355bf1d) SHA1(c9745638feb33ec181b8d9a894421f9854286cd9) )
ROM_END


ROM_START( sstrike )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "sstrik_prg-v1_u5.u5", 0x08000, 0x8000, CRC(af00cddf) SHA1(b866e8dfce1449f7462a79efa385ea6b55cdc6e7) ) /* labeled SSTRIKE PRG-V1(U5) */
	ROM_COPY( "maincpu",     0x8000, 0x14000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "sstrik_snd1.4_u27.u27", 0x08000, 0x8000, CRC(efab7252) SHA1(eb3b2002531e551e3d67958ea3cc56a69fa660e2) ) /* labeled SSTRIKE SND1.4(U27) */

	ROM_REGION( 0x10000, "sub", 0 )
	ROM_LOAD( "spstku53.u53", 0x00000, 0x0800, CRC(04b85918) SHA1(409aef2e71937c7654334999df9313909d757966) )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "super_strike_grom0.grom0", 0x00000, 0x20000, CRC(9cfb9849) SHA1(5aa860c0c6e3916ebdb8898ee44f633bf3347ca8) )
	ROM_LOAD( "super_strike_grom1.grom1", 0x20000, 0x20000, CRC(d9ea14e1) SHA1(4cddf3237c203b0a3f7ae770f85f1be35e9e1b78) )
	ROM_LOAD( "super_strike_grom2.grom2", 0x40000, 0x20000, CRC(dcd97bf7) SHA1(95361222ac58bf74539f2a7e80574bcd848c615e) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "super_strike_srom0.srom0", 0x00000, 0x20000, CRC(6ff390b9) SHA1(f31dae9e31f3fc83b9253e49fd4204820db3587e) )
ROM_END


ROM_START( stratabs )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "sb_prog-v4t.u5",  0x08000, 0x8000, CRC(38ddae75) SHA1(71a9cbd36cf7b180a88bab3ab92a4dff93ce365f) )
	ROM_COPY( "maincpu", 0x8000, 0x14000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "sb_snds_1.4.u27", 0x08000, 0x8000, CRC(526ef093) SHA1(884f9149b3d5eb33e47258e466ad9cd9ce5ffddb) )

	ROM_REGION( 0x10000, "sub", 0 )
	ROM_LOAD( "z80_prg_v1.0t.u53", 0x00000, 0x0800, CRC(08203f9f) SHA1(be5044938c73bf6fc1a6130dc473997e8c219b24) )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )
	ROM_CONTINUE(        0x00000, 0x0800 )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "sb_grom00", 0x00000, 0x20000, CRC(22f6ce56) SHA1(8e423122384257d9c5d8f48192ff6fa1f544fd97) )
	ROM_LOAD( "sb_grom01", 0x20000, 0x20000, CRC(6cc7ad6f) SHA1(d601b9bb81f26ad86e5cc053cab055831331ccde) )
	ROM_LOAD( "sb_grom02", 0x40000, 0x20000, CRC(475134ef) SHA1(5920e7a211f1b2234e8a3f51e570303c3787d8fd) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "sb_srom0", 0x00000, 0x20000, CRC(6ff390b9) SHA1(f31dae9e31f3fc83b9253e49fd4204820db3587e) )
ROM_END


ROM_START( pokrdice )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "pd-v17.u5", 0x04000, 0x4000, CRC(5e24be82) SHA1(97e50cc023ff651fb09cc5e85a1bef1bc234ccb9) )
	ROM_CONTINUE(          0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "pd-snd.bin", 0x08000, 0x8000, CRC(4925401c) SHA1(e35983bec4a0dd4cb1d942fd909790b1adeb415d) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "pd-grom0.bin", 0x00000, 0x20000, CRC(7c2573e7) SHA1(d6a2a16277ad854c66927d88c5617d05eefe1057) )
	ROM_LOAD( "pd-grom1.bin", 0x20000, 0x20000, CRC(e7c06aeb) SHA1(4be54b078d886359bf6ed376019cc1f6f04f52d6) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "pd-srom.0", 0x00000, 0x10000, CRC(f85dbd6f) SHA1(fce53019432e4a84e52f0ae1996b2e0d94b32bc0) )
ROM_END


ROM_START( hstennis )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "tenbim.v11", 0x04000, 0x4000, CRC(faffab5c) SHA1(4de525f6adb16205c47788b78aecdebd57008295) )
	ROM_CONTINUE(           0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "tensnd.v1", 0x08000, 0x8000, CRC(f034a694) SHA1(3540e2edff2ce47504260ec856bab9b638d9260d) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(1e69ebae) SHA1(a32e2c2f4e4a527ae6b57adeccd2c4d2045ab5fe) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(4e6a22d5) SHA1(3c2d51dd874f61c0a557ea2c1968afa02d9bfc42) )
	ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(c0b643a9) SHA1(d240f703a55c39ce4a969612fbb9cd76e4b849ac) )
	ROM_LOAD( "grom3.bin", 0x60000, 0x20000, CRC(54afb456) SHA1(0a7f10b1a490825a85489ac3f678eb1e11a0ac65) )
	ROM_LOAD( "grom4.bin", 0x80000, 0x20000, CRC(ee09d645) SHA1(8233cfbd17d9de548ae3ca5e30928061712e0781) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x20000, CRC(d9ce58c3) SHA1(92574e60497d86b8608fba6278ccfc9036cb7f22) )

	ROM_REGION( 0x0200, "plds", 0 )
	ROM_LOAD( "pal16l8-itvs.u11", 0x0000, 0x0104, CRC(fee03727) SHA1(e784ff18505cdccc1020dbe5cb0e7cc9efc068a4) )
ROM_END


ROM_START( hstennis10 )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "tenbim.v10", 0x04000, 0x4000, CRC(d108a6e0) SHA1(1041e1d95b10245fc50f6484e710803db2706f9a) )
	ROM_CONTINUE(           0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "tensnd.v1", 0x08000, 0x8000, CRC(f034a694) SHA1(3540e2edff2ce47504260ec856bab9b638d9260d) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(1e69ebae) SHA1(a32e2c2f4e4a527ae6b57adeccd2c4d2045ab5fe) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(4e6a22d5) SHA1(3c2d51dd874f61c0a557ea2c1968afa02d9bfc42) )
	ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(c0b643a9) SHA1(d240f703a55c39ce4a969612fbb9cd76e4b849ac) )
	ROM_LOAD( "grom3.bin", 0x60000, 0x20000, CRC(54afb456) SHA1(0a7f10b1a490825a85489ac3f678eb1e11a0ac65) )
	ROM_LOAD( "grom4.bin", 0x80000, 0x20000, CRC(ee09d645) SHA1(8233cfbd17d9de548ae3ca5e30928061712e0781) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x20000, CRC(d9ce58c3) SHA1(92574e60497d86b8608fba6278ccfc9036cb7f22) )

	ROM_REGION( 0x0200, "plds", 0 )
	ROM_LOAD( "pal16l8-itvs.u11", 0x0000, 0x0104, CRC(fee03727) SHA1(e784ff18505cdccc1020dbe5cb0e7cc9efc068a4) )
ROM_END


ROM_START( arlingtn ) /* PCB  p/n 1030 rev. 1A */
	ROM_REGION( 0x1c000, "maincpu", 0 ) /* banks are loaded in the opposite order from the others, */
	ROM_LOAD( "ahr-d_v_1.21.u5", 0x10000, 0x4000, CRC(00aae02e) SHA1(3bcfbd256c34ae222dde24ba9544f19da70b698e) ) /* Service menu reports version as 1.21-D */
	ROM_CONTINUE(                0x04000, 0xc000 )
	ROM_COPY( "maincpu", 0x8000, 0x14000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "ahr_snd_v1.1.u27", 0x08000, 0x8000, CRC(dec57dca) SHA1(21a8ead10b0434629f41f6b067c49b6622569a6c) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.grom0", 0x00000, 0x20000, CRC(5ef57fe5) SHA1(e877979e034a61968b432037501e25a302a17a9a) )
	ROM_LOAD( "grom1.grom1", 0x20000, 0x20000, CRC(6aca95c0) SHA1(da7a899bf0812a7af178e48b5a626ce56a836579) )
	ROM_LOAD( "grom2.grom2", 0x40000, 0x10000, CRC(6d6fde1b) SHA1(aaabc45d4b566be42e8d28d767e4771a96d9caae) )
	/* GROM3, GROM4 & GROM5 are unpopulated */

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.srom0", 0x00000, 0x40000, CRC(56087f81) SHA1(1d4a1f396ee9d8ed51d0417ea94b0b379312d72f) )
ROM_END


ROM_START( peggle )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "j-stick.u5", 0x04000, 0x4000, CRC(140d5a9c) SHA1(841e5f45c6f306d9bd286e7d3e3c75b169c932e1) )
	ROM_CONTINUE(           0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "sound.u27", 0x08000, 0x8000, CRC(b99beb70) SHA1(8d82c3b081a1afb236afa658abb3aa605c6c2264) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(5c02348d) SHA1(c85352728d94b3a5ca78c2493e98bdb4b3206bed) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(85a7a3a2) SHA1(7fb7be67c75867fcccf4272f1ce42f2af94c16e6) )
	ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(bfe11f18) SHA1(5e8d36c6a86a8eb883f50620fbfcea3d8398faeb) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0", 0x00000, 0x20000, CRC(001846ea) SHA1(6a6b77f6d51c4a68105c935804b896aad9981719) )
ROM_END


ROM_START( pegglet )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "trakball.u5", 0x04000, 0x4000, CRC(d2694868) SHA1(9945a308550c9d89a647d80257e3ab14f793ac6f) )
	ROM_CONTINUE(            0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "sound.u27", 0x08000, 0x8000, CRC(b99beb70) SHA1(8d82c3b081a1afb236afa658abb3aa605c6c2264) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(5c02348d) SHA1(c85352728d94b3a5ca78c2493e98bdb4b3206bed) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(85a7a3a2) SHA1(7fb7be67c75867fcccf4272f1ce42f2af94c16e6) )
	ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(bfe11f18) SHA1(5e8d36c6a86a8eb883f50620fbfcea3d8398faeb) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0", 0x00000, 0x20000, CRC(001846ea) SHA1(6a6b77f6d51c4a68105c935804b896aad9981719) )
ROM_END


ROM_START( neckneck )
	/* banks are loaded in the opposite order from the others, */
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "nn_prg12.u5", 0x04000, 0x4000, CRC(8e51734a) SHA1(c184af73670235a9245bfdeec2b58acfe93170e3) )
	ROM_CONTINUE(            0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "nn_snd10.u27", 0x08000, 0x8000, CRC(74771b2f) SHA1(0a963d2962699bb1b4d08bd486979151d0a228da) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "nn_grom0.bin", 0x00000, 0x20000, CRC(064d1464) SHA1(4ce5bcadad93586c9af2b0c499d7a7140b080cdb) )
	ROM_LOAD( "nn_grom1.bin", 0x20000, 0x20000, CRC(622d9a0b) SHA1(f084dcf194cfc658f97f36972f2b2ff30e834fc5) )
	ROM_LOAD( "nn_grom2.bin", 0x40000, 0x20000, CRC(e7eb4020) SHA1(29ceb535d1dfddf8c12cf78919ea10f6b956b8b3) )
	ROM_LOAD( "nn_grom3.bin", 0x60000, 0x20000, CRC(765c8593) SHA1(a39d757a01d61b637b264bdb4449e090a1e90219) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "nn_srom0.bin", 0x00000, 0x40000, CRC(33687201) SHA1(7c84d453fb7e59b0a27cd68a049d019ff65f6f19) )
ROM_END


ROM_START( rimrockn )
	ROM_REGION( 0x34000, "maincpu", 0 )
	ROM_LOAD( "rrb.bin_2.2.u5", 0x04000, 0x4000, CRC(97777683) SHA1(0998dde26daaa2d2b78e83647e03ba01b0ef31f2) )
	ROM_CONTINUE(        0x10000, 0x4000 )
	ROM_CONTINUE(        0x1c000, 0x4000 )
	ROM_CONTINUE(        0x28000, 0xc000 )
	ROM_CONTINUE(        0x2c000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x08000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x14000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x20000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "rrbsndv11.u27", 0x08000, 0x8000, CRC(59f87f0e) SHA1(46f38aca35a7c2faee227b4c950d20a6076c6fa7) ) /* Labeled as RRBSND V1.1 U27 */

	ROM_REGION( 0x100000, "grom", 0 )
	ROM_LOAD( "rbb-grom00",   0x00000, 0x40000, CRC(3eacbad9) SHA1(bff1ec6a24ccf983434e4e9453c30f36fa397534) )
	ROM_LOAD( "rbb-grom01",   0x40000, 0x40000, CRC(864cc269) SHA1(06f92889cd20881faeb59ec06ca1578ead2294f4) )
	ROM_LOAD( "rbb-grom02-2", 0x80000, 0x40000, CRC(47904233) SHA1(6a4d10e8f7b75582f706a74b37d59788613ffc61) )
	ROM_LOAD( "rbb-grom03-2", 0xc0000, 0x40000, CRC(f005f118) SHA1(aa39f12d07827e21eceb286557e37973e519b433) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "rbb-srom0", 0x00000, 0x40000, CRC(7ad42be0) SHA1(c9b519bad3c5c9a3315d1bf3292cc30ee0771db7) )

	ROM_REGION( 0x0600, "plds", 0 )
	ROM_LOAD( "pal16l8.u14", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
	ROM_LOAD( "pal16r4.u45", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */
	ROM_LOAD( "pal16l8.u29", 0x0400, 0x0104, NO_DUMP ) /* PAL is read protected */
ROM_END


ROM_START( rimrockn20 )
	ROM_REGION( 0x34000, "maincpu", 0 )
	ROM_LOAD( "rrb.bin_2.0.u5", 0x04000, 0x4000, CRC(7e9d5545) SHA1(2aa028b3f5d05bec4ee289e7d39eaad30b3d4d5f) )
	ROM_CONTINUE(        0x10000, 0x4000 )
	ROM_CONTINUE(        0x1c000, 0x4000 )
	ROM_CONTINUE(        0x28000, 0xc000 )
	ROM_CONTINUE(        0x2c000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x08000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x14000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x20000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "rrbsndv11.u27", 0x08000, 0x8000, CRC(59f87f0e) SHA1(46f38aca35a7c2faee227b4c950d20a6076c6fa7) ) /* Labeled as RRBSND V1.1 U27 */

	ROM_REGION( 0x100000, "grom", 0 )
	ROM_LOAD( "rbb-grom00",   0x00000, 0x40000, CRC(3eacbad9) SHA1(bff1ec6a24ccf983434e4e9453c30f36fa397534) )
	ROM_LOAD( "rbb-grom01",   0x40000, 0x40000, CRC(864cc269) SHA1(06f92889cd20881faeb59ec06ca1578ead2294f4) )
	ROM_LOAD( "rbb-grom02-2", 0x80000, 0x40000, CRC(47904233) SHA1(6a4d10e8f7b75582f706a74b37d59788613ffc61) )
	ROM_LOAD( "rbb-grom03-2", 0xc0000, 0x40000, CRC(f005f118) SHA1(aa39f12d07827e21eceb286557e37973e519b433) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "rbb-srom0", 0x00000, 0x40000, CRC(7ad42be0) SHA1(c9b519bad3c5c9a3315d1bf3292cc30ee0771db7) )
ROM_END


ROM_START( rimrockn16 )
	ROM_REGION( 0x34000, "maincpu", 0 )
	ROM_LOAD( "rrb.bin_1.6.u5",0x04000, 0x4000, CRC(999cd502) SHA1(8ad0d641a9f853eff27be1d4de04ab86b9275d57) )
	ROM_CONTINUE(        0x10000, 0x4000 )
	ROM_CONTINUE(        0x1c000, 0x4000 )
	ROM_CONTINUE(        0x28000, 0xc000 )
	ROM_CONTINUE(        0x2c000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x08000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x14000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x20000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "rrbsndv11.u27", 0x08000, 0x8000, CRC(59f87f0e) SHA1(46f38aca35a7c2faee227b4c950d20a6076c6fa7) ) /* Labeled as RRBSND V1.1 U27 */

	ROM_REGION( 0x100000, "grom", 0 )
	ROM_LOAD( "rbb-grom00", 0x00000, 0x40000, CRC(3eacbad9) SHA1(bff1ec6a24ccf983434e4e9453c30f36fa397534) )
	ROM_LOAD( "rbb-grom01", 0x40000, 0x40000, CRC(864cc269) SHA1(06f92889cd20881faeb59ec06ca1578ead2294f4) )
	ROM_LOAD( "rbb-grom02", 0x80000, 0x40000, CRC(34e567d5) SHA1(d0eb6fd0da8b9c3bfe7d4ecfb4bd903e4926b63a) )
	ROM_LOAD( "rbb-grom03", 0xc0000, 0x40000, CRC(fd18045d) SHA1(a1b98e4a2aa6f3cd33a3e2f5744160e05cc9f8d1) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "rbb-srom0", 0x00000, 0x40000, CRC(7ad42be0) SHA1(c9b519bad3c5c9a3315d1bf3292cc30ee0771db7) )
ROM_END


ROM_START( rimrockn12 )
	ROM_REGION( 0x34000, "maincpu", 0 )
	ROM_LOAD( "rrb.bin_1.2.u5",0x04000, 0x4000, CRC(661761a6) SHA1(7224b1eac2fd0969d70657448ab241a433143df4) )
	ROM_CONTINUE(        0x10000, 0x4000 )
	ROM_CONTINUE(        0x1c000, 0x4000 )
	ROM_CONTINUE(        0x28000, 0xc000 )
	ROM_CONTINUE(        0x2c000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x08000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x14000, 0x8000 )
	ROM_COPY( "maincpu", 0x2c000, 0x20000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "rrbsndv1.u27", 0x08000, 0x8000, CRC(8eda5f53) SHA1(f256544a8c87125587719460ed0fef14efef9015) )

	ROM_REGION( 0x100000, "grom", 0 )
	ROM_LOAD( "rbb-grom00", 0x00000, 0x40000, CRC(3eacbad9) SHA1(bff1ec6a24ccf983434e4e9453c30f36fa397534) )
	ROM_LOAD( "rbb-grom01", 0x40000, 0x40000, CRC(864cc269) SHA1(06f92889cd20881faeb59ec06ca1578ead2294f4) )
	ROM_LOAD( "rbb-grom02", 0x80000, 0x40000, CRC(34e567d5) SHA1(d0eb6fd0da8b9c3bfe7d4ecfb4bd903e4926b63a) )
	ROM_LOAD( "rbb-grom03", 0xc0000, 0x40000, CRC(fd18045d) SHA1(a1b98e4a2aa6f3cd33a3e2f5744160e05cc9f8d1) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "rbb-srom0", 0x00000, 0x40000, CRC(7ad42be0) SHA1(c9b519bad3c5c9a3315d1bf3292cc30ee0771db7) )
ROM_END


ROM_START( ninclown )
	ROM_REGION( 0x40000, "maincpu", 0 )
	ROM_LOAD16_BYTE( "prog1", 0x00000, 0x20000, CRC(fabfdcd2) SHA1(7a9852838cf7772d8f8f956b03823c4222520a5a) )
	ROM_LOAD16_BYTE( "prog0", 0x00001, 0x20000, CRC(eca63db5) SHA1(b86d75ee81e155a21de18c2e0fa898f15d61560d) )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "nc-snd", 0x08000, 0x8000, CRC(f9d5b4e1) SHA1(e5c3774db349b60baf11baecf55ac432871e612c) )

	ROM_REGION( 0x180000, "grom", 0 )
	ROM_LOAD( "nc-grom0", 0x000000, 0x40000, CRC(532f7bff) SHA1(cc7a64ad1581f37ff4bcad78c11aad355a6e9aa8) )
	ROM_LOAD( "nc-grom1", 0x040000, 0x40000, CRC(45640d4a) SHA1(1b59ae2a74fef535c646586422f17b39c9ae247b) )
	ROM_LOAD( "nc-grom2", 0x080000, 0x40000, CRC(c8281d06) SHA1(f75d4e858f9bc19e5234f184b75818e448638c15) )
	ROM_LOAD( "nc-grom3", 0x0c0000, 0x40000, CRC(2a6d33ac) SHA1(0773a53ece0b09e7c33f0e5beb4518059f76b7af) )
	ROM_LOAD( "nc-grom4", 0x100000, 0x40000, CRC(910876ba) SHA1(d65d0a5043afe2239596ba76174a27fea60ffb35) )
	ROM_LOAD( "nc-grom5", 0x140000, 0x40000, CRC(2533279b) SHA1(c21b218b11d20f2cdac2321ffcb1334ec9ec9ffc) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom0.bin", 0x00000, 0x40000, CRC(f6b501e1) SHA1(0f1eb6f40f891d11822f1255c0a84975526b2b1b) )
ROM_END


ROM_START( gpgolf )
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "gpgv1_1.bin", 0x04000, 0x4000, CRC(631e77e0) SHA1(847ba1e00d31441620a2a1f45a9aa58df84bde8b) ) /* Joystick version */
	ROM_CONTINUE(        0x10000, 0xc000 )
	ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "sndv1.u27", 0x08000, 0x8000, CRC(55734876) SHA1(eb5ef816acbc6e35642749e38a2908b7ba359b9d) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom00.bin", 0x00000, 0x40000, CRC(c3a7b54b) SHA1(414d693bc5337d578d2630817dd647cf7e5cbcf7) )
	ROM_LOAD( "grom01.bin", 0x40000, 0x40000, CRC(b7fe172d) SHA1(1ad0f3ce0f240ac1a23c0c5bdd9f99ec81bc14f1) )
	ROM_LOAD( "grom02.bin", 0x80000, 0x40000, CRC(aebe6c45) SHA1(15e64fcb36cb1064988ee5cd45699d501a6e7f01) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom00.bin", 0x00000, 0x20000, CRC(4dd4db42) SHA1(0dffb51e8de36d8747f443fd65fe9927815eaff0) )
ROM_END


ROM_START( gtg2 )
	/* banks are loaded in the opposite order from the others, */
	ROM_REGION( 0x1c000, "maincpu", 0 )
	ROM_LOAD( "gtg2_v2_2.u5", 0x10000, 0x4000, CRC(4a61580f) SHA1(7c64648d47418fbcc0f9b5bd91f88856209bc0f5) ) /* Trackball version */
	ROM_CONTINUE(        0x04000, 0xc000 )
	ROM_COPY( "maincpu", 0x8000, 0x14000, 0x8000 )

	ROM_REGION( 0x10000, "soundcpu", 0 )
	ROM_LOAD( "sndv1.u27", 0x08000, 0x8000, CRC(55734876) SHA1(eb5ef816acbc6e35642749e38a2908b7ba359b9d) )

	ROM_REGION( 0xc0000, "grom", 0 )
	ROM_LOAD( "grom0.bin", 0x00000, 0x20000, CRC(a29c688a) SHA1(32dbb996a5e4c23cfd44b79312ac4a767658f20a) )
	ROM_LOAD( "grom1.bin", 0x20000, 0x20000, CRC(a4182776) SHA1(9f4704d1a61a4fffce454c82cb3eb4629d9a2006) )
	ROM_LOAD( "grom2.bin", 0x40000, 0x20000, CRC(0580bb99) SHA1(012d473bc63632a5ed1a250daa54a00a4e30e8b2) )
	ROM_LOAD( "grom3.bin", 0x60000, 0x20000, CRC(89edb624) SHA1(e77d5ecd04f44f184e76eb2506660a04b6bc7fe8) )
	ROM_LOAD( "grom4.bin", 0x80000, 0x20000, CRC(f6557950) SHA1(fd2bbd6b852a9f2775a23d9fdaa20d31d6766d7f) )
	ROM_LOAD( "grom5.bin", 0xa0000, 0x20000, CRC(a680ce6a) SHA1(fe51546933c093cea81858b213afb0e926e9eb4e) )

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "srom00.bin", 0x00000, 0x20000, CRC(4dd4db42) SHA1(0dffb51e8de36d8747f443fd65fe9927815eaff0) )

	ROM_REGION( 0x0200, "plds", 0 )
	ROM_LOAD( "tibpal16l8.u29", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
ROM_END



/*************************************
 *
 *  Driver-specific init
 *
 *************************************/

void itech8_state::init_grmatch()
{
	m_maincpu->space(AS_PROGRAM).install_write_handler(0x0160, 0x0160, write8_delegate(FUNC(itech8_state::grmatch_palette_w),this));
	m_maincpu->space(AS_PROGRAM).install_write_handler(0x0180, 0x0180, write8_delegate(FUNC(itech8_state::grmatch_xscroll_w),this));
	m_maincpu->space(AS_PROGRAM).unmap_write(0x01e0, 0x01ff);

	save_item(NAME(m_grmatch_palcontrol));
	save_item(NAME(m_grmatch_xscroll));
	save_item(NAME(m_grmatch_palette));
}


void itech8_state::init_slikshot()
{
	m_maincpu->space(AS_PROGRAM).install_read_handler (0x0180, 0x0180, read8_delegate(FUNC(itech8_state::slikshot_z80_r),this));
	m_maincpu->space(AS_PROGRAM).install_read_handler (0x01cf, 0x01cf, read8_delegate(FUNC(itech8_state::slikshot_z80_control_r),this));
	m_maincpu->space(AS_PROGRAM).install_write_handler(0x01cf, 0x01cf, write8_delegate(FUNC(itech8_state::slikshot_z80_control_w),this));

	m_delayed_z80_control_timer = timer_alloc(TIMER_DELAYED_Z80_CONTROL);

	save_item(NAME(m_z80_ctrl));
	save_item(NAME(m_z80_port_val));
	save_item(NAME(m_z80_clear_to_send));
	save_item(NAME(m_sensor0));
	save_item(NAME(m_sensor1));
	save_item(NAME(m_sensor2));
	save_item(NAME(m_sensor3));
	save_item(NAME(m_curvx));
	save_item(NAME(m_curvy));
	save_item(NAME(m_curx));
	save_item(NAME(m_xbuffer));
	save_item(NAME(m_ybuffer));
	save_item(NAME(m_ybuffer_next));
	save_item(NAME(m_curxpos));
	save_item(NAME(m_last_ytotal));
	save_item(NAME(m_crosshair_vis));
}


void itech8_state::init_sstrike()
{
	m_maincpu->space(AS_PROGRAM).install_read_handler (0x1180, 0x1180, read8_delegate(FUNC(itech8_state::slikshot_z80_r),this));
	m_maincpu->space(AS_PROGRAM).install_read_handler (0x11cf, 0x11cf, read8_delegate(FUNC(itech8_state::slikshot_z80_control_r),this));
	m_maincpu->space(AS_PROGRAM).install_write_handler(0x11cf, 0x11cf, write8_delegate(FUNC(itech8_state::slikshot_z80_control_w),this));
}


void itech8_state::init_hstennis()
{
	m_visarea.set(0, 375, 0, 239);
}


void itech8_state::init_arligntn()
{
	m_visarea.set(16, 389, 0, 239);
}


void itech8_state::init_peggle()
{
	m_visarea.set(18, 367, 0, 239);
}


void itech8_state::init_neckneck()
{
	m_visarea.set(8, 375, 0, 239);
}


void itech8_state::init_rimrockn()
{
	/* additional input ports */
	m_maincpu->space(AS_PROGRAM).install_read_port (0x0161, 0x0161, "161");
	m_maincpu->space(AS_PROGRAM).install_read_port (0x0162, 0x0162, "162");
	m_maincpu->space(AS_PROGRAM).install_read_port (0x0163, 0x0163, "163");
	m_maincpu->space(AS_PROGRAM).install_read_port (0x0164, 0x0164, "164");
	m_maincpu->space(AS_PROGRAM).install_read_port (0x0165, 0x0165, "165");

	/* different banking mechanism (disable the old one) */
	membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x4000, 0xc000);
	m_maincpu->space(AS_PROGRAM).install_write_handler(0x01a0, 0x01a0, write8_delegate(FUNC(itech8_state::rimrockn_bank_w),this));
	m_maincpu->space(AS_PROGRAM).install_write_handler(0x01c0, 0x01df, write8_delegate(FUNC(itech8_state::blitter_w),this));
}



/*************************************
 *
 *  Game drivers
 *
 *************************************/

/* Wheel of Fortune-style PCB */
GAME( 1989, wfortune,   0,        wfortune,          wfortune, itech8_state, empty_init,    ROT0,   "GameTek", "Wheel Of Fortune (set 1)", 0 )
GAME( 1989, wfortunea,  wfortune, wfortune,          wfortune, itech8_state, empty_init,    ROT0,   "GameTek", "Wheel Of Fortune (set 2)", 0 )

/* Grudge Match-style PCB */
GAME( 1989, grmatch,    0,        grmatch,           grmatch,  itech8_state, init_grmatch,  ROT0,   "Yankee Game Technology", "Grudge Match (Yankee Game Technology)", 0 )

/* Strata Bowling-style PCB */
GAME( 1990, stratab,    0,        stratab_hi,        stratab,  itech8_state, empty_init,    ROT270, "Strata/Incredible Technologies", "Strata Bowling (V3)", 0 ) // still says V1 in service mode?
GAME( 1990, stratab1,   stratab,  stratab_hi,        stratab,  itech8_state, empty_init,    ROT270, "Strata/Incredible Technologies", "Strata Bowling (V1)", 0 )
GAME( 1990, gtg,        0,        stratab_hi,        gtg,      itech8_state, empty_init,    ROT0,   "Strata/Incredible Technologies", "Golden Tee Golf (Joystick, v3.1)", 0 )
GAME( 1989, gtgt,       gtg,      stratab_hi,        gtgt,     itech8_state, empty_init,    ROT0,   "Strata/Incredible Technologies", "Golden Tee Golf (Trackball, v2.0)", 0 )
GAME( 1989, gtgt1,      gtg,      stratab_hi,        gtgt,     itech8_state, empty_init,    ROT0,   "Strata/Incredible Technologies", "Golden Tee Golf (Trackball, v1.0)", 0 )
GAME( 1989, gtg2t,      gtg2,     stratab_hi,        gtg2t,    itech8_state, empty_init,    ROT0,   "Strata/Incredible Technologies", "Golden Tee Golf II (Trackball, V1.1)", 0 )
GAME( 1991, gtg2j,      gtg2,     stratab_lo,        gtg,      itech8_state, empty_init,    ROT0,   "Strata/Incredible Technologies", "Golden Tee Golf II (Joystick, V1.0)", 0 )

/* Slick Shot-style PCB */
GAME( 1990, slikshot,   0,        slikshot_hi,       slikshot, itech8_state, init_slikshot, ROT90,  "Grand Products/Incredible Technologies", "Slick Shot (V2.2)", MACHINE_MECHANICAL )
GAME( 1990, slikshot17, slikshot, slikshot_hi,       slikshot, itech8_state, init_slikshot, ROT90,  "Grand Products/Incredible Technologies", "Slick Shot (V1.7)", MACHINE_MECHANICAL )
GAME( 1990, slikshot16, slikshot, slikshot_hi,       slikshot, itech8_state, init_slikshot, ROT90,  "Grand Products/Incredible Technologies", "Slick Shot (V1.6)", MACHINE_MECHANICAL )
GAME( 1990, dynobop,    0,        slikshot_hi,       dynobop,  itech8_state, init_slikshot, ROT90,  "Grand Products/Incredible Technologies", "Dyno Bop (V1.1)", MACHINE_MECHANICAL )
GAME( 1990, sstrike,    0,        sstrike,           sstrike,  itech8_state, init_sstrike,  ROT270, "Strata/Incredible Technologies", "Super Strike Bowling (V1)", MACHINE_MECHANICAL )
GAME( 1990, stratabs,   stratab,  sstrike,           stratabs, itech8_state, init_sstrike,  ROT270, "Strata/Incredible Technologies", "Strata Bowling (V1 4T, Super Strike Bowling type PCB)", MACHINE_NOT_WORKING ) // need to figure out the control hookup for this set, service mode indicates it's still a trackball like stratab
GAME( 1991, pokrdice,   0,        slikshot_lo_noz80, pokrdice, itech8_state, empty_init,    ROT90,  "Strata/Incredible Technologies", "Poker Dice", 0 )

/* Hot Shots Tennis-style PCB */
GAME( 1990, hstennis,   0,        hstennis_hi,       hstennis, itech8_state, init_hstennis, ROT90,  "Strata/Incredible Technologies", "Hot Shots Tennis (V1.1)", 0 )
GAME( 1990, hstennis10, hstennis, hstennis_hi,       hstennis, itech8_state, init_hstennis, ROT90,  "Strata/Incredible Technologies", "Hot Shots Tennis (V1.0)", 0 )
GAME( 1991, arlingtn,   0,        hstennis_hi,       arlingtn, itech8_state, init_arligntn, ROT0,   "Strata/Incredible Technologies", "Arlington Horse Racing (v1.21-D)", 0 )
GAME( 1991, peggle,     0,        hstennis_lo,       peggle,   itech8_state, init_peggle,   ROT90,  "Strata/Incredible Technologies", "Peggle (Joystick, v1.0)", 0 )
GAME( 1991, pegglet,    peggle,   hstennis_lo,       pegglet,  itech8_state, init_peggle,   ROT90,  "Strata/Incredible Technologies", "Peggle (Trackball, v1.0)", 0 )
GAME( 1992, neckneck,   0,        hstennis_lo,       neckneck, itech8_state, init_neckneck, ROT0,   "Bundra Games/Incredible Technologies", "Neck-n-Neck (v1.2)", 0 )

/* Rim Rockin' Basketball-style PCB */
GAME( 1991, rimrockn,   0,        rimrockn,          rimrockn, itech8_state, init_rimrockn, ROT0,   "Strata/Incredible Technologies", "Rim Rockin' Basketball (V2.2)", 0 )
GAME( 1991, rimrockn20, rimrockn, rimrockn,          rimrockn, itech8_state, init_rimrockn, ROT0,   "Strata/Incredible Technologies", "Rim Rockin' Basketball (V2.0)", 0 )
GAME( 1991, rimrockn16, rimrockn, rimrockn,          rimrockn, itech8_state, init_rimrockn, ROT0,   "Strata/Incredible Technologies", "Rim Rockin' Basketball (V1.6)", 0 )
GAME( 1991, rimrockn12, rimrockn, rimrockn,          rimrockn, itech8_state, init_rimrockn, ROT0,   "Strata/Incredible Technologies", "Rim Rockin' Basketball (V1.2)", 0 )

/* Ninja Clowns-style PCB */
GAME( 1991, ninclown,   0,        ninclown,          ninclown, itech8_state, empty_init,    ROT0,   "Strata/Incredible Technologies", "Ninja Clowns (27 oct 91)", 0 )

/* Golden Tee Golf II-style PCB */
GAME( 1992, gpgolf,     0,        gtg2,              gpgolf,   itech8_state, empty_init,    ROT0,   "Strata/Incredible Technologies", "Golden Par Golf (Joystick, V1.1)", 0 )
GAME( 1992, gtg2,       0,        gtg2,              gtg2,     itech8_state, empty_init,    ROT0,   "Strata/Incredible Technologies", "Golden Tee Golf II (Trackball, V2.2)", 0 )