This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c/2889: ia64 gcc core dumps when compiling xmame-0.37b14.2



>Number:         2889
>Category:       c
>Synopsis:       ia64 gcc core dumps when compiling xmame-0.37b14.2
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Mon May 21 06:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Christian Groessler
>Release:        3.1 20010516 (experimental)
>Organization:
>Environment:
System: Linux muc-ia64 2.4.4 #2 Fri May 18 13:03:49 CEST 2001 ia64 unknown
Architecture: ia64

	
host: ia64-unknown-linux-gnu
build: ia64-unknown-linux-gnu
target: ia64-unknown-linux-gnu
configured with: ../gcc-cvs/gcc/configure --prefix=/opt/gcc-20010516 : (reconfigured) 
>Description:
	When compiling xmame-0.37b14.2 (from x.mame.net), gcc (cc1) segfaults compiling
the file megasys1.c.
>How-To-Repeat:
	Here is the gcc -v output:

Reading specs from /opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/specs
Configured with: ../gcc-cvs/gcc/configure --prefix=/opt/gcc-20010516 : (reconfigured) 
Thread model: single
gcc version 3.1 20010516 (experimental)
 /opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/cpp0 -lang-c -v -I. -Isrc -Imess -Isrc/unix -Ixmame.obj/cpu/m68000 -Isrc/cpu/m68000 -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -D__ia64 -D__ia64__ -D__linux -D__linux__ -D_LONGLONG -Dlinux -Dunix -D__LP64__ -D__ELF__ -D__ia64 -D__ia64__ -D__linux -D__linux__ -D_LONGLONG -D__linux__ -D__unix__ -D__LP64__ -D__ELF__ -D__linux -D__unix -Asystem=linux -Acpu=ia64 -Amachine=ia64 -D__OPTIMIZE__ -D__FAST_MATH__ -D__STDC_HOSTED__=1 -Wall -Wno-unused -D__LONG_MAX__=9223372036854775807L -DINLINE=static __inline__ -DLSB_FIRST -DALIGN_INTS -DALIGN_SHORTS -D__LP64__ -D__ARCH_linux -D__CPU_ia64 -Dx11 -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -DPI=M_PI -DUNIX -DSIGNED_SAMPLES -DHAS_CUSTOM=1 -DHAS_SAMPLES=1 -DHAS_DAC=1 -DHAS_DISCRETE=1 -DHAS_AY8910=1 -DHAS_YM2203=1 -DHAS_YM2151=0 -DHAS_YM2151_ALT=1 -DHAS_YM2608=1 -DHAS_YM2610=1 -DHAS_YM2610B=1 -DHAS_YM2612=1 -DHAS_YM3438=1 -DHAS_YM2413=1 -DHAS_YM3812=1 -DHAS_YM3526=1 -DHAS_Y!
MZ280B=1 -DHAS_Y8950=1 -DHAS_SN76477=1 -DHAS_SN76496=1 -DHAS_POKEY=1 -DHAS_NES=1 -DHAS_ASTROCADE=1 -DHAS_NAMCO=1 -DHAS_TMS36XX=1 -DHAS_TMS5110=1 -DHAS_TMS5220=1 -DHAS_VLM5030=1 -DHAS_ADPCM=1 -DHAS_OKIM6295=1 -DHAS_MSM5205=1 -DHAS_UPD7759=1 -DHAS_HC55516=1 -DHAS_K005289=1 -DHAS_K007232=1 -DHAS_K051649=1 -DHAS_K053260=1 -DHAS_K054539=1 -DHAS_SEGAPCM=1 -DHAS_RF5C68=1 -DHAS_CEM3394=1 -DHAS_C140=1 -DHAS_QSOUND=1 -DHAS_SAA1099=1 -DHAS_IREMGA20=1 -DHAS_ES5505=1 -DHAS_ES5506=1 -DHAS_Z80=1 -DHAS_8080=1 -DHAS_8085A=1 -DHAS_M6502=1 -DHAS_M65C02=1 -DHAS_M65SC02=0 -DHAS_M65CE02=0 -DHAS_M6509=0 -DHAS_M6510=1 -DHAS_M6510T=0 -DHAS_M7501=0 -DHAS_M8502=0 -DHAS_N2A03=1 -DHAS_M4510=0 -DHAS_H6280=1 -DHAS_I86=1 -DHAS_I88=0 -DHAS_I186=1 -DHAS_I188=0 -DHAS_I286=0 -DHAS_V20=1 -DHAS_V30=1 -DHAS_V33=1 -DHAS_I8035=1 -DHAS_I8039=1 -DHAS_I8048=1 -DHAS_N7751=1 -DHAS_I8X41=1 -DHAS_M6800=1 -DHAS_M6801=1 -DHAS_M6802=1 -DHAS_M6803=1 -DHAS_M6808=1 -DHAS_HD63701=1 -DHAS_NSC8105=1 -DHAS_M6805=1 -DHAS_M68705=1 -D!
HAS_HD63705=1 -DHAS_HD6309=1 -DHAS_M6809=1 -DHAS_KONAMI=1 -DHAS_M68000=1 -DHAS_M68010=1 -DHAS_M68EC020=1 -DHAS_M68020=1 -DHAS_T11=1 -DHAS_S2650=1 -DHAS_TMS34010=1 -DHAS_TMS34020=0 -DHAS_TMS9900=0 -DHAS_TMS9940=0 -DHAS_TMS9980=1 -DHAS_TMS9985=0 -DHAS_TMS9989=0 -DHAS_TMS9995=1 -DHAS_TMS99105A=0 -DHAS_TMS99110A=0 -DHAS_Z8000=1 -DHAS_TMS320C10=1 -DHAS_CCPU=1 -DHAS_ADSP2100=1 -DHAS_ADSP2105=1 -DHAS_PSXCPU=1 -DHAS_ASAP=1 -DHAS_UPD7810=1 src/vidhrdw/megasys1.c megasys1.i
ignoring nonexistent directory "mess"
GNU CPP version 3.1 20010516 (experimental) (cpplib) (IA-64)
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/opt/gcc-20010516/ia64-unknown-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 .
 src
 src/unix
 xmame.obj/cpu/m68000
 src/cpu/m68000
 /opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include
 /usr/include
End of search list.
 /opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/cc1 -fpreprocessed megasys1.i -quiet -dumpbase megasys1.c -O3 -Wall -Wno-unused -version -funroll-loops -fstrength-reduce -fomit-frame-pointer -ffast-math -falign-functions=32 -o megasys1.s
GNU CPP version 3.1 20010516 (experimental) (cpplib) (IA-64)
GNU C version 3.1 20010516 (experimental) (ia64-unknown-linux)
	compiled by GNU C version 3.1 20010516 (experimental).
gcc: Internal error: Segmentation fault (program cc1)
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.


Here's the contents of megasys1.i:

# 194 "src/vidhrdw/megasys1.c"
# 1 "src/driver.h" 1



# 1 "src/unix/osd_cpu.h" 1
# 27 "src/unix/osd_cpu.h"
# 1 "/usr/include/time.h" 1 3
# 28 "/usr/include/time.h" 3
# 1 "/usr/include/features.h" 1 3
# 283 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 284 "/usr/include/features.h" 2 3
# 311 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 312 "/usr/include/features.h" 2 3
# 29 "/usr/include/time.h" 2 3
# 38 "/usr/include/time.h" 3
# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 199 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 3
typedef long unsigned int size_t;
# 39 "/usr/include/time.h" 2 3



# 1 "/usr/include/bits/time.h" 1 3
# 39 "/usr/include/bits/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 26 "/usr/include/bits/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/bits/types.h" 2 3


# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 30 "/usr/include/bits/types.h" 2 3


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef unsigned long int __u_quad_t;
typedef long int __quad_t;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
typedef __quad_t *__qaddr_t;

typedef __uint64_t __dev_t;
typedef __uint32_t __uid_t;
typedef __uint32_t __gid_t;
typedef __uint64_t __ino_t;
typedef __uint64_t __ino64_t;
typedef __uint32_t __mode_t;
typedef __uint64_t __nlink_t;
typedef __int64_t __off_t;
typedef __int64_t __off64_t;
typedef __int64_t __loff_t;
typedef __int32_t __pid_t;
typedef __int64_t __ssize_t;
typedef __uint64_t __rlim_t;
typedef __uint64_t __rlim64_t;
typedef __int64_t __blkcnt_t;
typedef __int64_t __blkcnt64_t;
typedef __uint64_t __fsblkcnt_t;
typedef __uint64_t __fsblkcnt64_t;
typedef __uint64_t __fsfilcnt_t;
typedef __uint64_t __fsfilcnt64_t;
typedef __uint32_t __id_t;

typedef struct
  {
    int __val[2];
  } __fsid_t;


typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t;
typedef long int __clock_t;
typedef int __key_t;


typedef int __clockid_t;


typedef int __timer_t;


typedef int __ipc_pid_t;


typedef long int __blksize_t;


typedef unsigned long int __fd_mask;
# 114 "/usr/include/bits/types.h" 3
typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];


  } __fd_set;


typedef int __t_scalar_t;
typedef unsigned int __t_uscalar_t;


typedef long int __intptr_t;


typedef unsigned int __socklen_t;



# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 23 "/usr/include/bits/pthreadtypes.h" 3
# 1 "/usr/include/bits/sched.h" 1 3
# 68 "/usr/include/bits/sched.h" 3
struct __sched_param
  {
    int sched_priority;
  };
# 24 "/usr/include/bits/pthreadtypes.h" 2 3


struct _pthread_fastlock
{
  long int __status;
  int __spinlock;

};



typedef struct _pthread_descr_struct *_pthread_descr;





typedef struct
{
  int __detachstate;
  int __schedpolicy;
  struct __sched_param __schedparam;
  int __inheritsched;
  int __scope;
  size_t __guardsize;
  int __stackaddr_set;
  void *__stackaddr;
  size_t __stacksize;
} pthread_attr_t;



typedef struct
{
  struct _pthread_fastlock __c_lock;
  _pthread_descr __c_waiting;
} pthread_cond_t;



typedef struct
{
  int __dummy;
} pthread_condattr_t;


typedef unsigned int pthread_key_t;





typedef struct
{
  int __m_reserved;
  int __m_count;
  _pthread_descr __m_owner;
  int __m_kind;
  struct _pthread_fastlock __m_lock;
} pthread_mutex_t;



typedef struct
{
  int __mutexkind;
} pthread_mutexattr_t;



typedef int pthread_once_t;
# 140 "/usr/include/bits/pthreadtypes.h" 3
typedef unsigned long int pthread_t;
# 140 "/usr/include/bits/types.h" 2 3
# 40 "/usr/include/bits/time.h" 2 3
extern long int __sysconf (int);
# 43 "/usr/include/time.h" 2 3
# 56 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 57 "/usr/include/time.h" 2 3


typedef __clock_t clock_t;







# 1 "/usr/include/bits/types.h" 1 3
# 68 "/usr/include/time.h" 2 3


typedef __time_t time_t;
# 79 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 80 "/usr/include/time.h" 2 3


typedef __clockid_t clockid_t;
# 91 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 92 "/usr/include/time.h" 2 3


typedef __timer_t timer_t;
# 106 "/usr/include/time.h" 3
struct timespec
  {
    long int tv_sec;
    long int tv_nsec;
  };







struct tm
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;


  long int tm_gmtoff;
  __const char *tm_zone;




};




struct itimerspec
  {
    struct timespec it_interval;
    struct timespec it_value;
  };


struct sigevent;
# 163 "/usr/include/time.h" 3
extern clock_t clock (void) ;


extern time_t time (time_t *__timer) ;


extern double difftime (time_t __time1, time_t __time0)
             __attribute__ ((__const__));


extern time_t mktime (struct tm *__tp) ;





extern size_t strftime (char *__restrict __s, size_t __maxsize,
                        __const char *__restrict __format,
                        __const struct tm *__restrict __tp) ;
# 194 "/usr/include/time.h" 3
extern struct tm *gmtime (__const time_t *__timer) ;



extern struct tm *localtime (__const time_t *__timer) ;




extern struct tm *gmtime_r (__const time_t *__restrict __timer,
                            struct tm *__restrict __tp) ;



extern struct tm *localtime_r (__const time_t *__restrict __timer,
                               struct tm *__restrict __tp) ;




extern char *asctime (__const struct tm *__tp) ;


extern char *ctime (__const time_t *__timer) ;






extern char *asctime_r (__const struct tm *__restrict __tp,
                        char *__restrict __buf) ;


extern char *ctime_r (__const time_t *__restrict __timer,
                      char *__restrict __buf) ;




extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;




extern char *tzname[2];



extern void tzset (void) ;



extern int daylight;
extern long int timezone;





extern int stime (__const time_t *__when) ;
# 271 "/usr/include/time.h" 3
extern time_t timegm (struct tm *__tp) ;


extern time_t timelocal (struct tm *__tp) ;


extern int dysize (int __year) __attribute__ ((__const__));





extern int nanosleep (__const struct timespec *__requested_time,
                      struct timespec *__remaining) ;



extern int clock_getres (clockid_t __clock_id, struct timespec *__res) ;


extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) ;


extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
            ;
# 309 "/usr/include/time.h" 3
extern int timer_create (clockid_t __clock_id,
                         struct sigevent *__restrict __evp,
                         timer_t *__restrict __timerid) ;


extern int timer_delete (timer_t __timerid) ;


extern int timer_settime (timer_t __timerid, int __flags,
                          __const struct itimerspec *__restrict __value,
                          struct itimerspec *__restrict __ovalue) ;


extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
            ;


extern int timer_getoverrun (timer_t __timerid) ;
# 28 "src/unix/osd_cpu.h" 2
# 43 "src/unix/osd_cpu.h"
typedef signed char INT8;
typedef signed short INT16;
typedef signed int INT32;
typedef signed long long INT64;

typedef unsigned char UINT8;
typedef unsigned short UINT16;
typedef unsigned int UINT32;
typedef unsigned long long UINT64;
# 81 "src/unix/osd_cpu.h"
typedef union {

        struct { UINT8 l,h,h2,h3; } b;
        struct { UINT16 l,h; } w;




        UINT32 d;
} PAIR;
# 5 "src/driver.h" 2
# 1 "src/memory.h" 1
# 12 "src/memory.h"
# 1 "src/unix/osd_cpu.h" 1
# 13 "src/memory.h" 2
# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 147 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 3
typedef long int ptrdiff_t;
# 288 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 3
typedef int wchar_t;
# 14 "src/memory.h" 2
# 51 "src/memory.h"
typedef UINT8 data8_t;
typedef UINT16 data16_t;
typedef UINT32 data32_t;
typedef UINT32 offs_t;


typedef data8_t (*read8_handler) (offs_t offset __attribute__((__unused__)));
typedef void (*write8_handler) (offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
typedef data16_t (*read16_handler) (offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
typedef void (*write16_handler)(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
typedef data32_t (*read32_handler) (offs_t offset __attribute__((__unused__)), data32_t mem_mask __attribute__((__unused__)));
typedef void (*write32_handler)(offs_t offset __attribute__((__unused__)), data32_t data __attribute__((__unused__)), data32_t mem_mask __attribute__((__unused__)));
typedef offs_t (*opbase_handler) (offs_t address __attribute__((__unused__)));


typedef read8_handler mem_read_handler;
typedef write8_handler mem_write_handler;
typedef read16_handler mem_read16_handler;
typedef write16_handler mem_write16_handler;
typedef read32_handler mem_read32_handler;
typedef write32_handler mem_write32_handler;


typedef read8_handler port_read_handler;
typedef write8_handler port_write_handler;
typedef read16_handler port_read16_handler;
typedef write16_handler port_write16_handler;
typedef read32_handler port_read32_handler;
typedef write32_handler port_write32_handler;


struct ExtMemory
{
        offs_t start, end;
        UINT8 region;
    UINT8 * data;
};
# 430 "src/memory.h"
struct Memory_ReadAddress
{
        offs_t start, end;
        mem_read_handler handler;
};

struct Memory_ReadAddress16
{
        offs_t start, end;
        mem_read16_handler handler;
};

struct Memory_ReadAddress32
{
        offs_t start, end;
        mem_read32_handler handler;
};


struct Memory_WriteAddress
{
    offs_t start, end;
        mem_write_handler handler;
        data8_t ** base;
    size_t * size;
};

struct Memory_WriteAddress16
{
    offs_t start, end;
        mem_write16_handler handler;
        data16_t ** base;
    size_t * size;
};

struct Memory_WriteAddress32
{
    offs_t start, end;
        mem_write32_handler handler;
        data32_t ** base;
        size_t * size;
};


struct IO_ReadPort
{
        offs_t start, end;
        port_read_handler handler;
};

struct IO_ReadPort16
{
        offs_t start, end;
        port_read16_handler handler;
};

struct IO_ReadPort32
{
        offs_t start, end;
        port_read32_handler handler;
};


struct IO_WritePort
{
        offs_t start, end;
        port_write_handler handler;
};

struct IO_WritePort16
{
        offs_t start, end;
        port_write16_handler handler;
};

struct IO_WritePort32
{
        offs_t start, end;
        port_write32_handler handler;
};
# 660 "src/memory.h"
data8_t cpu_readmem16 (offs_t offset); void cpu_writemem16 (offs_t offset, data8_t data); void cpu_setopbase16 (offs_t pc);
data8_t cpu_readmem17 (offs_t offset); void cpu_writemem17 (offs_t offset, data8_t data); void cpu_setopbase17 (offs_t pc);
data8_t cpu_readmem20 (offs_t offset); void cpu_writemem20 (offs_t offset, data8_t data); void cpu_setopbase20 (offs_t pc);
data8_t cpu_readmem21 (offs_t offset); void cpu_writemem21 (offs_t offset, data8_t data); void cpu_setopbase21 (offs_t pc);
data8_t cpu_readmem24 (offs_t offset); void cpu_writemem24 (offs_t offset, data8_t data); void cpu_setopbase24 (offs_t pc);







data8_t cpu_readmem16bew (offs_t offset); data16_t cpu_readmem16bew_word (offs_t offset); void cpu_writemem16bew (offs_t offset, data8_t data); void cpu_writemem16bew_word (offs_t offset, data16_t data); void cpu_setopbase16bew (offs_t pc);
data8_t cpu_readmem24bew (offs_t offset); data16_t cpu_readmem24bew_word (offs_t offset); void cpu_writemem24bew (offs_t offset, data8_t data); void cpu_writemem24bew_word (offs_t offset, data16_t data); void cpu_setopbase24bew (offs_t pc);
data8_t cpu_readmem32bew (offs_t offset); data16_t cpu_readmem32bew_word (offs_t offset); void cpu_writemem32bew (offs_t offset, data8_t data); void cpu_writemem32bew_word (offs_t offset, data16_t data); void cpu_setopbase32bew (offs_t pc);





data8_t cpu_readmem16lew (offs_t offset); data16_t cpu_readmem16lew_word (offs_t offset); void cpu_writemem16lew (offs_t offset, data8_t data); void cpu_writemem16lew_word (offs_t offset, data16_t data); void cpu_setopbase16lew (offs_t pc);
data8_t cpu_readmem17lew (offs_t offset); data16_t cpu_readmem17lew_word (offs_t offset); void cpu_writemem17lew (offs_t offset, data8_t data); void cpu_writemem17lew_word (offs_t offset, data16_t data); void cpu_setopbase17lew (offs_t pc);
data8_t cpu_readmem29lew (offs_t offset); data16_t cpu_readmem29lew_word (offs_t offset); void cpu_writemem29lew (offs_t offset, data8_t data); void cpu_writemem29lew_word (offs_t offset, data16_t data); void cpu_setopbase29lew (offs_t pc);
data8_t cpu_readmem32lew (offs_t offset); data16_t cpu_readmem32lew_word (offs_t offset); void cpu_writemem32lew (offs_t offset, data8_t data); void cpu_writemem32lew_word (offs_t offset, data16_t data); void cpu_setopbase32lew (offs_t pc);






data8_t cpu_readmem24bedw (offs_t offset); data16_t cpu_readmem24bedw_word (offs_t offset); data32_t cpu_readmem24bedw_dword (offs_t offset); void cpu_writemem24bedw (offs_t offset, data8_t data); void cpu_writemem24bedw_word (offs_t offset, data16_t data); void cpu_writemem24bedw_dword(offs_t offset, data32_t data); void cpu_setopbase24bedw (offs_t pc);
data8_t cpu_readmem29bedw (offs_t offset); data16_t cpu_readmem29bedw_word (offs_t offset); data32_t cpu_readmem29bedw_dword (offs_t offset); void cpu_writemem29bedw (offs_t offset, data8_t data); void cpu_writemem29bedw_word (offs_t offset, data16_t data); void cpu_writemem29bedw_dword(offs_t offset, data32_t data); void cpu_setopbase29bedw (offs_t pc);
data8_t cpu_readmem32bedw (offs_t offset); data16_t cpu_readmem32bedw_word (offs_t offset); data32_t cpu_readmem32bedw_dword (offs_t offset); void cpu_writemem32bedw (offs_t offset, data8_t data); void cpu_writemem32bedw_word (offs_t offset, data16_t data); void cpu_writemem32bedw_dword(offs_t offset, data32_t data); void cpu_setopbase32bedw (offs_t pc);





data8_t cpu_readmem26ledw (offs_t offset); data16_t cpu_readmem26ledw_word (offs_t offset); data32_t cpu_readmem26ledw_dword (offs_t offset); void cpu_writemem26ledw (offs_t offset, data8_t data); void cpu_writemem26ledw_word (offs_t offset, data16_t data); void cpu_writemem26ledw_dword(offs_t offset, data32_t data); void cpu_setopbase26ledw (offs_t pc);
data8_t cpu_readmem29ledw (offs_t offset); data16_t cpu_readmem29ledw_word (offs_t offset); data32_t cpu_readmem29ledw_dword (offs_t offset); void cpu_writemem29ledw (offs_t offset, data8_t data); void cpu_writemem29ledw_word (offs_t offset, data16_t data); void cpu_writemem29ledw_dword(offs_t offset, data32_t data); void cpu_setopbase29ledw (offs_t pc);
data8_t cpu_readmem32ledw (offs_t offset); data16_t cpu_readmem32ledw_word (offs_t offset); data32_t cpu_readmem32ledw_dword (offs_t offset); void cpu_writemem32ledw (offs_t offset, data8_t data); void cpu_writemem32ledw_word (offs_t offset, data16_t data); void cpu_writemem32ledw_dword(offs_t offset, data32_t data); void cpu_setopbase32ledw (offs_t pc);






data8_t cpu_readmem18bedw (offs_t offset); data16_t cpu_readmem18bedw_word (offs_t offset); data32_t cpu_readmem18bedw_dword (offs_t offset); void cpu_writemem18bedw (offs_t offset, data8_t data); void cpu_writemem18bedw_word (offs_t offset, data16_t data); void cpu_writemem18bedw_dword(offs_t offset, data32_t data); void cpu_setopbase18bedw (offs_t pc);
# 718 "src/memory.h"
data8_t cpu_readport16 (offs_t offset);
void cpu_writeport16 (offs_t offset, data8_t data);


data8_t cpu_readport16lew (offs_t offset);
void cpu_writeport16lew (offs_t offset, data8_t data);
data16_t cpu_readport16lew_word (offs_t offset);
void cpu_writeport16lew_word (offs_t offset, data16_t data);


data8_t cpu_readport16bew (offs_t offset);
void cpu_writeport16bew (offs_t offset, data8_t data);
data16_t cpu_readport16bew_word (offs_t offset);
void cpu_writeport16bew_word (offs_t offset, data16_t data);


data8_t cpu_readport16ledw (offs_t offset);
void cpu_writeport16ledw (offs_t offset, data8_t data);
data16_t cpu_readport16ledw_word (offs_t offset);
void cpu_writeport16lew_word (offs_t offset, data16_t data);
data32_t cpu_readport16lew_dword (offs_t offset);
void cpu_writeport16lew_dword (offs_t offset, data32_t data);


data8_t cpu_readport16bedw (offs_t offset);
void cpu_writeport16bedw (offs_t offset, data8_t data);
data16_t cpu_readport16bedw_word (offs_t offset);
void cpu_writeport16bedw_word (offs_t offset, data16_t data);
data32_t cpu_readport16bedw_dword (offs_t offset);
void cpu_writeport16bedw_dword (offs_t offset, data32_t data);
# 756 "src/memory.h"
int memory_init(void);
void memory_shutdown(void);
void memory_set_context(int activecpu);


void memory_set_bankhandler_r(int bank, offs_t offset, mem_read_handler handler);
void memory_set_bankhandler_w(int bank, offs_t offset, mem_write_handler handler);


opbase_handler memory_set_opbase_handler(int cpu, opbase_handler function);


void memory_set_opcode_base(int cpu, void *base);
void memory_set_encrypted_opcode_range(int cpu, offs_t min_address,offs_t max_address);
extern offs_t encrypted_opcode_start[],encrypted_opcode_end[];


void * memory_find_base(int cpu, offs_t offset);


data8_t * install_mem_read_handler (int cpu, offs_t start, offs_t end, mem_read_handler handler);
data16_t * install_mem_read16_handler (int cpu, offs_t start, offs_t end, mem_read16_handler handler);
data32_t * install_mem_read32_handler (int cpu, offs_t start, offs_t end, mem_read32_handler handler);
data8_t * install_mem_write_handler (int cpu, offs_t start, offs_t end, mem_write_handler handler);
data16_t * install_mem_write16_handler (int cpu, offs_t start, offs_t end, mem_write16_handler handler);
data32_t * install_mem_write32_handler (int cpu, offs_t start, offs_t end, mem_write32_handler handler);


void install_port_read_handler (int cpu, offs_t start, offs_t end, port_read_handler handler);
void install_port_read16_handler (int cpu, offs_t start, offs_t end, port_read16_handler handler);
void install_port_read32_handler (int cpu, offs_t start, offs_t end, port_read32_handler handler);
void install_port_write_handler (int cpu, offs_t start, offs_t end, port_write_handler handler);
void install_port_write16_handler(int cpu, offs_t start, offs_t end, port_write16_handler handler);
void install_port_write32_handler(int cpu, offs_t start, offs_t end, port_write32_handler handler);
# 799 "src/memory.h"
extern UINT8 opcode_entry;
extern UINT8 * OP_ROM;
extern UINT8 * OP_RAM;
extern UINT8 * cpu_bankbase[];
extern UINT8 * readmem_lookup;
extern offs_t memory_amask;
extern struct ExtMemory ext_memory[];
# 6 "src/driver.h" 2
# 1 "src/mamedbg.h" 1



# 1 "src/mame.h" 1



# 1 "src/osdepend.h" 1



# 1 "src/unix/osd_cpu.h" 1
# 5 "src/osdepend.h" 2
# 1 "src/inptport.h" 1



# 1 "src/memory.h" 1
# 5 "src/inptport.h" 2
# 1 "src/input.h" 1



typedef unsigned InputCode;

struct KeyboardInfo
{
        char *name;
        unsigned code;
        InputCode standardcode;
};

struct JoystickInfo
{
        char *name;
        unsigned code;
        InputCode standardcode;
};

enum
{

        KEYCODE_A, KEYCODE_B, KEYCODE_C, KEYCODE_D, KEYCODE_E, KEYCODE_F,
        KEYCODE_G, KEYCODE_H, KEYCODE_I, KEYCODE_J, KEYCODE_K, KEYCODE_L,
        KEYCODE_M, KEYCODE_N, KEYCODE_O, KEYCODE_P, KEYCODE_Q, KEYCODE_R,
        KEYCODE_S, KEYCODE_T, KEYCODE_U, KEYCODE_V, KEYCODE_W, KEYCODE_X,
        KEYCODE_Y, KEYCODE_Z, KEYCODE_0, KEYCODE_1, KEYCODE_2, KEYCODE_3,
        KEYCODE_4, KEYCODE_5, KEYCODE_6, KEYCODE_7, KEYCODE_8, KEYCODE_9,
        KEYCODE_0_PAD, KEYCODE_1_PAD, KEYCODE_2_PAD, KEYCODE_3_PAD, KEYCODE_4_PAD,
        KEYCODE_5_PAD, KEYCODE_6_PAD, KEYCODE_7_PAD, KEYCODE_8_PAD, KEYCODE_9_PAD,
        KEYCODE_F1, KEYCODE_F2, KEYCODE_F3, KEYCODE_F4, KEYCODE_F5,
        KEYCODE_F6, KEYCODE_F7, KEYCODE_F8, KEYCODE_F9, KEYCODE_F10,
        KEYCODE_F11, KEYCODE_F12,
        KEYCODE_ESC, KEYCODE_TILDE, KEYCODE_MINUS, KEYCODE_EQUALS, KEYCODE_BACKSPACE,
        KEYCODE_TAB, KEYCODE_OPENBRACE, KEYCODE_CLOSEBRACE, KEYCODE_ENTER, KEYCODE_COLON,
        KEYCODE_QUOTE, KEYCODE_BACKSLASH, KEYCODE_BACKSLASH2, KEYCODE_COMMA, KEYCODE_STOP,
        KEYCODE_SLASH, KEYCODE_SPACE, KEYCODE_INSERT, KEYCODE_DEL,
        KEYCODE_HOME, KEYCODE_END, KEYCODE_PGUP, KEYCODE_PGDN, KEYCODE_LEFT,
        KEYCODE_RIGHT, KEYCODE_UP, KEYCODE_DOWN,
        KEYCODE_SLASH_PAD, KEYCODE_ASTERISK, KEYCODE_MINUS_PAD, KEYCODE_PLUS_PAD,
        KEYCODE_DEL_PAD, KEYCODE_ENTER_PAD, KEYCODE_PRTSCR, KEYCODE_PAUSE,
        KEYCODE_LSHIFT, KEYCODE_RSHIFT, KEYCODE_LCONTROL, KEYCODE_RCONTROL,
        KEYCODE_LALT, KEYCODE_RALT, KEYCODE_SCRLOCK, KEYCODE_NUMLOCK, KEYCODE_CAPSLOCK,
        KEYCODE_LWIN, KEYCODE_RWIN, KEYCODE_MENU,




        JOYCODE_1_LEFT,JOYCODE_1_RIGHT,JOYCODE_1_UP,JOYCODE_1_DOWN,
        JOYCODE_1_BUTTON1,JOYCODE_1_BUTTON2,JOYCODE_1_BUTTON3,
        JOYCODE_1_BUTTON4,JOYCODE_1_BUTTON5,JOYCODE_1_BUTTON6,
        JOYCODE_2_LEFT,JOYCODE_2_RIGHT,JOYCODE_2_UP,JOYCODE_2_DOWN,
        JOYCODE_2_BUTTON1,JOYCODE_2_BUTTON2,JOYCODE_2_BUTTON3,
        JOYCODE_2_BUTTON4,JOYCODE_2_BUTTON5,JOYCODE_2_BUTTON6,
        JOYCODE_3_LEFT,JOYCODE_3_RIGHT,JOYCODE_3_UP,JOYCODE_3_DOWN,
        JOYCODE_3_BUTTON1,JOYCODE_3_BUTTON2,JOYCODE_3_BUTTON3,
        JOYCODE_3_BUTTON4,JOYCODE_3_BUTTON5,JOYCODE_3_BUTTON6,
        JOYCODE_4_LEFT,JOYCODE_4_RIGHT,JOYCODE_4_UP,JOYCODE_4_DOWN,
        JOYCODE_4_BUTTON1,JOYCODE_4_BUTTON2,JOYCODE_4_BUTTON3,
        JOYCODE_4_BUTTON4,JOYCODE_4_BUTTON5,JOYCODE_4_BUTTON6,



        __code_max,


        CODE_NONE = 0x8000,
        CODE_OTHER,
        CODE_DEFAULT,
        CODE_PREVIOUS,
        CODE_NOT,
        CODE_OR
};
# 84 "src/input.h"
int code_init(void);
void code_close(void);

InputCode keyoscode_to_code(unsigned oscode);
InputCode joyoscode_to_code(unsigned oscode);
InputCode savecode_to_code(unsigned savecode);
unsigned code_to_savecode(InputCode code);

const char *code_name(InputCode code);
int code_pressed(InputCode code);
int code_pressed_memory(InputCode code);
int code_pressed_memory_repeat(InputCode code, int speed);
InputCode code_read_async(void);
INT8 code_read_hex_async(void);
# 112 "src/input.h"
typedef InputCode InputSeq[16];

static __inline__ InputCode seq_get_1(InputSeq* a) {
        return (*a)[0];
}

void seq_set_0(InputSeq* seq);
void seq_set_1(InputSeq* seq, InputCode code);
void seq_set_2(InputSeq* seq, InputCode code1, InputCode code2);
void seq_set_3(InputSeq* seq, InputCode code1, InputCode code2, InputCode code3);
void seq_copy(InputSeq* seqdst, InputSeq* seqsrc);
int seq_cmp(InputSeq* seq1, InputSeq* seq2);
void seq_name(InputSeq* seq, char* buffer, unsigned max);
int seq_pressed(InputSeq* seq);
void seq_read_async_start(void);
int seq_read_async(InputSeq* code, int first);
# 141 "src/input.h"
int input_ui_pressed(int code);
int input_ui_pressed_repeat(int code, int speed);
# 6 "src/inptport.h" 2
# 19 "src/inptport.h"
struct InputPortTiny
{
        UINT16 mask;
        UINT16 default_value;

        UINT32 type;
        const char *name;
};

struct InputPort
{
        UINT16 mask;
        UINT16 default_value;

        UINT32 type;
        const char *name;
        InputSeq seq;




};





enum { IPT_END=1,IPT_PORT,

        IPT_JOYSTICK_UP, IPT_JOYSTICK_DOWN, IPT_JOYSTICK_LEFT, IPT_JOYSTICK_RIGHT,

        IPT_JOYSTICKRIGHT_UP, IPT_JOYSTICKRIGHT_DOWN, IPT_JOYSTICKRIGHT_LEFT, IPT_JOYSTICKRIGHT_RIGHT,
        IPT_JOYSTICKLEFT_UP, IPT_JOYSTICKLEFT_DOWN, IPT_JOYSTICKLEFT_LEFT, IPT_JOYSTICKLEFT_RIGHT,
        IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3, IPT_BUTTON4,
        IPT_BUTTON5, IPT_BUTTON6, IPT_BUTTON7, IPT_BUTTON8, IPT_BUTTON9, IPT_BUTTON10,




        IPT_ANALOG_START,
        IPT_PADDLE, IPT_PADDLE_V,
        IPT_DIAL, IPT_DIAL_V,
        IPT_TRACKBALL_X, IPT_TRACKBALL_Y,
        IPT_AD_STICK_X, IPT_AD_STICK_Y,
        IPT_PEDAL,
        IPT_ANALOG_END,

        IPT_START1, IPT_START2, IPT_START3, IPT_START4,
        IPT_COIN1, IPT_COIN2, IPT_COIN3, IPT_COIN4,
        IPT_SERVICE1, IPT_SERVICE2, IPT_SERVICE3, IPT_SERVICE4,
        IPT_SERVICE, IPT_TILT,
        IPT_DIPSWITCH_NAME, IPT_DIPSWITCH_SETTING,



        IPT_VBLANK,
        IPT_UNKNOWN,
        IPT_EXTENSION,



        IPT_UI_CONFIGURE,
        IPT_UI_ON_SCREEN_DISPLAY,
        IPT_UI_PAUSE,
        IPT_UI_RESET_MACHINE,
        IPT_UI_SHOW_GFX,
        IPT_UI_FRAMESKIP_DEC,
        IPT_UI_FRAMESKIP_INC,
        IPT_UI_THROTTLE,
        IPT_UI_SHOW_FPS,
        IPT_UI_SNAPSHOT,
        IPT_UI_TOGGLE_CHEAT,
        IPT_UI_UP,
        IPT_UI_DOWN,
        IPT_UI_LEFT,
        IPT_UI_RIGHT,
        IPT_UI_SELECT,
        IPT_UI_CANCEL,
        IPT_UI_PAN_UP, IPT_UI_PAN_DOWN, IPT_UI_PAN_LEFT, IPT_UI_PAN_RIGHT,
        IPT_UI_SHOW_PROFILER,
        IPT_UI_SHOW_COLORS,
        IPT_UI_TOGGLE_UI,
        IPT_UI_TOGGLE_DEBUG,
        IPT_UI_SAVE_STATE,
        IPT_UI_LOAD_STATE,
        __ipt_max
};
# 235 "src/inptport.h"
extern char ipdn_defaultstrings[][20];


enum {
        STR_Off,
        STR_On,
        STR_No,
        STR_Yes,
        STR_Lives,
        STR_Bonus_Life,
        STR_Difficulty,
        STR_Demo_Sounds,
        STR_Coinage,
        STR_Coin_A,
        STR_Coin_B,
        STR_9C_1C,
        STR_8C_1C,
        STR_7C_1C,
        STR_6C_1C,
        STR_5C_1C,
        STR_4C_1C,
        STR_3C_1C,
        STR_8C_3C,
        STR_4C_2C,
        STR_2C_1C,
        STR_5C_3C,
        STR_3C_2C,
        STR_4C_3C,
        STR_4C_4C,
        STR_3C_3C,
        STR_2C_2C,
        STR_1C_1C,
        STR_4C_5C,
        STR_3C_4C,
        STR_2C_3C,
        STR_4C_7C,
        STR_2C_4C,
        STR_1C_2C,
        STR_2C_5C,
        STR_2C_6C,
        STR_1C_3C,
        STR_2C_7C,
        STR_2C_8C,
        STR_1C_4C,
        STR_1C_5C,
        STR_1C_6C,
        STR_1C_7C,
        STR_1C_8C,
        STR_1C_9C,
        STR_Free_Play,
        STR_Cabinet,
        STR_Upright,
        STR_Cocktail,
        STR_Flip_Screen,
        STR_Service_Mode,
        STR_Unused,
        STR_Unknown,
        STR_TOTAL
};






int load_input_port_settings(void);
void save_input_port_settings(void);

const char *input_port_name(const struct InputPort *in);
InputSeq* input_port_type_seq(int type);
InputSeq* input_port_seq(const struct InputPort *in);

struct InputPort* input_port_allocate(const struct InputPortTiny *src);
void input_port_free(struct InputPort* dst);





void update_analog_port(int port);
void update_input_ports(void);
void inputport_vblank_end(void);

int readinputport(int port);
data8_t input_port_0_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_1_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_2_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_3_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_4_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_5_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_6_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_7_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_8_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_9_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_10_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_11_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_12_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_13_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_14_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_15_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_16_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_17_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_18_r(offs_t offset __attribute__((__unused__)));
data8_t input_port_19_r(offs_t offset __attribute__((__unused__)));

data16_t input_port_0_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_1_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_2_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_3_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_4_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_5_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_6_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_7_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_8_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_9_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_10_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_11_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_12_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_13_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_14_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_15_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_16_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_17_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_18_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t input_port_19_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

struct ipd
{
        UINT32 type;
        const char *name;
        InputSeq seq;
};
# 6 "src/osdepend.h" 2
# 23 "src/osdepend.h"
int osd_init(void);
void osd_exit(void);
# 33 "src/osdepend.h"
struct osd_bitmap
{
        int width,height;
        int depth;
        void *_private;
        UINT8 **line;
};




struct osd_bitmap *osd_alloc_bitmap(int width,int height,int depth);
void osd_free_bitmap(struct osd_bitmap *bitmap);
# 69 "src/osdepend.h"
int osd_create_display(int width,int height,int depth,int fps,int attributes,int orientation);
void osd_close_display(void);
# 87 "src/osdepend.h"
void osd_set_visible_area(int min_x,int max_x,int min_y,int max_y);
# 117 "src/osdepend.h"
int osd_allocate_colors(unsigned int totalcolors,
                const UINT8 *palette,UINT32 *pens,int modifiable,
                const UINT8 *debug_palette,UINT32 *debug_pens);
void osd_modify_pen(int pen,unsigned char red, unsigned char green, unsigned char blue);
void osd_get_pen(int pen,unsigned char *red, unsigned char *green, unsigned char *blue);

void osd_mark_dirty(int xmin,int ymin,int xmax,int ymax);
# 135 "src/osdepend.h"
int osd_skip_this_frame(void);
# 150 "src/osdepend.h"
void osd_update_video_and_audio(
                struct osd_bitmap *game_bitmap,struct osd_bitmap *debug_bitmap,int leds_status);

void osd_debugger_focus(int debugger_has_focus);

void osd_set_gamma(float _gamma);
float osd_get_gamma(void);
void osd_set_brightness(int brightness);
int osd_get_brightness(void);
# 168 "src/osdepend.h"
void osd_save_snapshot(struct osd_bitmap *bitmap);
# 197 "src/osdepend.h"
int osd_start_audio_stream(int stereo);
int osd_update_audio_stream(INT16 *buffer);
void osd_stop_audio_stream(void);
# 208 "src/osdepend.h"
void osd_set_mastervolume(int attenuation);
int osd_get_mastervolume(void);

void osd_sound_enable(int enable);


void osd_opl_control(int chip,int reg);
void osd_opl_write(int chip,int data);
# 227 "src/osdepend.h"
const struct KeyboardInfo *osd_get_key_list(void);





int osd_is_key_pressed(int keycode);
# 244 "src/osdepend.h"
int osd_readkey_unicode(int flush);
# 256 "src/osdepend.h"
const struct JoystickInfo *osd_get_joy_list(void);






int osd_is_joy_pressed(int joycode);
# 273 "src/osdepend.h"
int osd_joystick_needs_calibration (void);

void osd_joystick_start_calibration (void);


const char *osd_joystick_calibrate_next (void);

void osd_joystick_calibrate (void);

void osd_joystick_end_calibration (void);

void osd_trak_read(int player,int *deltax,int *deltay);


void osd_analogjoy_read(int player,int *analog_x, int *analog_y);
# 299 "src/osdepend.h"
void osd_customize_inputport_defaults(struct ipd *defaults);
# 309 "src/osdepend.h"
typedef struct
{
        char name[9];
        char version[3];
        char reserved[20];
} INP_HEADER;



enum
{
        OSD_FILETYPE_ROM = 1,
        OSD_FILETYPE_SAMPLE,
        OSD_FILETYPE_NVRAM,
        OSD_FILETYPE_HIGHSCORE,
        OSD_FILETYPE_HIGHSCORE_DB,
        OSD_FILETYPE_CONFIG,
        OSD_FILETYPE_INPUTLOG,
        OSD_FILETYPE_STATE,
        OSD_FILETYPE_ARTWORK,
        OSD_FILETYPE_MEMCARD,
        OSD_FILETYPE_SCREENSHOT,
        OSD_FILETYPE_HISTORY,
        OSD_FILETYPE_CHEAT,
        OSD_FILETYPE_LANGUAGE,




        OSD_FILETYPE_end
};





int osd_faccess(const char *filename, int filetype);
void *osd_fopen(const char *gamename,const char *filename,int filetype,int read_or_write);
int osd_fread(void *file,void *buffer,int length);
int osd_fwrite(void *file,const void *buffer,int length);
int osd_fread_swap(void *file,void *buffer,int length);
int osd_fwrite_swap(void *file,const void *buffer,int length);
# 362 "src/osdepend.h"
int osd_fread_scatter(void *file,void *buffer,int length,int increment);
int osd_fseek(void *file,int offset,int whence);
void osd_fclose(void *file);
int osd_fchecksum(const char *gamename, const char *filename, unsigned int *length, unsigned int *sum);
int osd_fsize(void *file);
unsigned int osd_fcrc(void *file);

int osd_fgetc(void *file);
int osd_ungetc(int c, void *file);
char *osd_fgets(char *s, int n, void *file);
int osd_feof(void *file);
int osd_ftell(void *file);
# 385 "src/osdepend.h"
int osd_display_loading_rom_message(const char *name,int current,int total);





void osd_pause(int paused);
# 414 "src/osdepend.h"
void logerror(const char *text,...);
# 5 "src/mame.h" 2
# 1 "src/drawgfx.h" 1
# 30 "src/drawgfx.h"
struct GfxLayout
{
        UINT16 width,height;
        UINT32 total;
        UINT16 planes;
        UINT32 planeoffset[8];
        UINT32 xoffset[64];
        UINT32 yoffset[64];
        UINT16 charincrement;
};

struct GfxElement
{
        int width,height;

        unsigned int total_elements;
        int color_granularity;

        UINT32 *colortable;
        int total_colors;
        UINT32 *pen_usage;




        UINT8 *gfxdata;
        int line_modulo;
        int char_modulo;
        int flags;
};





struct GfxDecodeInfo
{
        int memory_region;

        int start;
        struct GfxLayout *gfxlayout;
        int color_codes_start;
        int total_color_codes;
};


struct rectangle
{
        int min_x,max_x;
        int min_y,max_y;
};

struct _alpha_cache {
        const UINT8 *alphas;
        const UINT8 *alphad;
        UINT8 alpha[0x101][0x100];
};

extern struct _alpha_cache alpha_cache;

enum
{
        TRANSPARENCY_NONE,
        TRANSPARENCY_NONE_RAW,
        TRANSPARENCY_PEN,
        TRANSPARENCY_PEN_RAW,
        TRANSPARENCY_PENS,
        TRANSPARENCY_PENS_RAW,
        TRANSPARENCY_COLOR,
        TRANSPARENCY_PEN_TABLE,
        TRANSPARENCY_PEN_TABLE_RAW,
        TRANSPARENCY_BLEND,
        TRANSPARENCY_BLEND_RAW,
        TRANSPARENCY_ALPHAONE,
        TRANSPARENCY_ALPHA,

        TRANSPARENCY_MODES
};


extern UINT8 gfx_drawmode_table[256];
enum
{
        DRAWMODE_NONE,
        DRAWMODE_SOURCE,
        DRAWMODE_SHADOW
};


typedef void (*plot_pixel_proc)(struct osd_bitmap *bitmap,int x,int y,UINT32 pen);
typedef int (*read_pixel_proc)(struct osd_bitmap *bitmap,int x,int y);
typedef void (*plot_box_proc)(struct osd_bitmap *bitmap,int x,int y,int width,int height,UINT32 pen);
typedef void (*mark_dirty_proc)(int sx,int sy,int ex,int ey);




extern plot_pixel_proc plot_pixel;
extern read_pixel_proc read_pixel;
extern plot_box_proc plot_box;
extern mark_dirty_proc mark_dirty;

void decodechar(struct GfxElement *gfx,int num,const unsigned char *src,const struct GfxLayout *gl);
struct GfxElement *decodegfx(const unsigned char *src,const struct GfxLayout *gl);
void set_pixel_functions(void);
void freegfx(struct GfxElement *gfx);
void drawgfx(struct osd_bitmap *dest,const struct GfxElement *gfx,
                unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
                const struct rectangle *clip,int transparency,int transparent_color);
void pdrawgfx(struct osd_bitmap *dest,const struct GfxElement *gfx,
                unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
                const struct rectangle *clip,int transparency,int transparent_color,
                UINT32 priority_mask);
void mdrawgfx(struct osd_bitmap *dest,const struct GfxElement *gfx,
                unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
                const struct rectangle *clip,int transparency,int transparent_color,
                UINT32 priority_mask);
void copybitmap(struct osd_bitmap *dest,struct osd_bitmap *src,int flipx,int flipy,int sx,int sy,
                const struct rectangle *clip,int transparency,int transparent_color);
void copybitmap_remap(struct osd_bitmap *dest,struct osd_bitmap *src,int flipx,int flipy,int sx,int sy,
                const struct rectangle *clip,int transparency,int transparent_color);
void copyscrollbitmap(struct osd_bitmap *dest,struct osd_bitmap *src,
                int rows,const int *rowscroll,int cols,const int *colscroll,
                const struct rectangle *clip,int transparency,int transparent_color);
void copyscrollbitmap_remap(struct osd_bitmap *dest,struct osd_bitmap *src,
                int rows,const int *rowscroll,int cols,const int *colscroll,
                const struct rectangle *clip,int transparency,int transparent_color);
void draw_scanline8(struct osd_bitmap *bitmap,int x,int y,int length,UINT8 *src,UINT32 *pens,int transparent_pen);
void draw_scanline16(struct osd_bitmap *bitmap,int x,int y,int length,UINT16 *src,UINT32 *pens,int transparent_pen);
void pdraw_scanline8(struct osd_bitmap *bitmap,int x,int y,int length,UINT8 *src,UINT32 *pens,int transparent_pen,UINT32 orient,int pri);
void pdraw_scanline16(struct osd_bitmap *bitmap,int x,int y,int length,UINT16 *src,UINT32 *pens,int transparent_pen,UINT32 orient,int pri);



extern int alpha_active;
void alpha_init(void);
static __inline__ void alpha_set_level(int level) {
        if(level == 0)
                level = -1;
        alpha_cache.alphas = alpha_cache.alpha[level+1];
        alpha_cache.alphad = alpha_cache.alpha[255-level];
}

static __inline__ UINT32 alpha_blend16( UINT32 d, UINT32 s )
{
        const UINT8 *alphas = alpha_cache.alphas;
        const UINT8 *alphad = alpha_cache.alphad;
        return (alphas[s & 0x1f] | (alphas[(s>>5) & 0x1f] << 5) | (alphas[(s>>10) & 0x1f] << 10))
                + (alphad[d & 0x1f] | (alphad[(d>>5) & 0x1f] << 5) | (alphad[(d>>10) & 0x1f] << 10));
}


static __inline__ UINT32 alpha_blend32( UINT32 d, UINT32 s )
{
        const UINT8 *alphas = alpha_cache.alphas;
        const UINT8 *alphad = alpha_cache.alphad;
        return (alphas[s & 0xff] | (alphas[(s>>8) & 0xff] << 8) | (alphas[(s>>16) & 0xff] << 16))
                + (alphad[d & 0xff] | (alphad[(d>>8) & 0xff] << 8) | (alphad[(d>>16) & 0xff] << 16));
}
# 219 "src/drawgfx.h"
void copyrozbitmap(struct osd_bitmap *dest,struct osd_bitmap *src,
                UINT32 startx,UINT32 starty,int incxx,int incxy,int incyx,int incyy,int wraparound,
                const struct rectangle *clip,int transparency,int transparent_color,UINT32 priority);

void fillbitmap(struct osd_bitmap *dest,int pen,const struct rectangle *clip);
void plot_pixel2(struct osd_bitmap *bitmap1,struct osd_bitmap *bitmap2,int x,int y,int pen);
void drawgfxzoom( struct osd_bitmap *dest_bmp,const struct GfxElement *gfx,
                unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
                const struct rectangle *clip,int transparency,int transparent_color,int scalex,int scaley);
void pdrawgfxzoom( struct osd_bitmap *dest_bmp,const struct GfxElement *gfx,
                unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
                const struct rectangle *clip,int transparency,int transparent_color,int scalex,int scaley,
                UINT32 priority_mask);
void mdrawgfxzoom( struct osd_bitmap *dest_bmp,const struct GfxElement *gfx,
                unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
                const struct rectangle *clip,int transparency,int transparent_color,int scalex,int scaley,
                UINT32 priority_mask);

void draw_crosshair(struct osd_bitmap *bitmap,int x,int y,const struct rectangle *clip);
# 6 "src/mame.h" 2
# 1 "/usr/include/stdio.h" 1 3
# 27 "/usr/include/stdio.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/stdio.h" 2 3





# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 34 "/usr/include/stdio.h" 2 3




# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stdarg.h" 1 3
# 43 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 39 "/usr/include/stdio.h" 2 3

# 1 "/usr/include/bits/types.h" 1 3
# 41 "/usr/include/stdio.h" 2 3
# 49 "/usr/include/stdio.h" 3
typedef struct _IO_FILE FILE;
# 59 "/usr/include/stdio.h" 3
typedef struct _IO_FILE __FILE;
# 69 "/usr/include/stdio.h" 3
# 1 "/usr/include/libio.h" 1 3
# 30 "/usr/include/libio.h" 3
# 1 "/usr/include/_G_config.h" 1 3
# 9 "/usr/include/_G_config.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 10 "/usr/include/_G_config.h" 2 3




# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 314 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 3
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3
# 24 "/usr/include/_G_config.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 45 "/usr/include/wchar.h" 3
# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 46 "/usr/include/wchar.h" 2 3

# 1 "/usr/include/bits/wchar.h" 1 3
# 48 "/usr/include/wchar.h" 2 3
# 64 "/usr/include/wchar.h" 3
typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3
# 1 "/usr/include/gconv.h" 1 3
# 26 "/usr/include/gconv.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/gconv.h" 2 3

# 1 "/usr/include/wchar.h" 1 3
# 45 "/usr/include/wchar.h" 3
# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 46 "/usr/include/wchar.h" 2 3

# 1 "/usr/include/bits/wchar.h" 1 3
# 48 "/usr/include/wchar.h" 2 3
# 29 "/usr/include/gconv.h" 2 3

# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 31 "/usr/include/gconv.h" 2 3





enum
{
  __GCONV_OK = 0,
  __GCONV_NOCONV,
  __GCONV_NODB,
  __GCONV_NOMEM,

  __GCONV_EMPTY_INPUT,
  __GCONV_FULL_OUTPUT,
  __GCONV_ILLEGAL_INPUT,
  __GCONV_INCOMPLETE_INPUT,

  __GCONV_ILLEGAL_DESCRIPTOR,
  __GCONV_INTERNAL_ERROR
};



enum
{
  __GCONV_IS_LAST = 0x0001,
  __GCONV_IGNORE_ERRORS = 0x0002
};



struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;



typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
                            __const unsigned char **, __const unsigned char *,
                            unsigned char **, size_t *, int, int);


typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);



typedef int (*__gconv_trans_fct) (struct __gconv_step *,
                                  struct __gconv_step_data *, void *,
                                  __const unsigned char *,
                                  __const unsigned char **,
                                  __const unsigned char *, unsigned char **,
                                  size_t *);


typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
                                          __const unsigned char *,
                                          unsigned char *, unsigned char *);


typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
                                        size_t *);


typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);

struct __gconv_trans_data
{

  __gconv_trans_fct __trans_fct;
  __gconv_trans_context_fct __trans_context_fct;
  __gconv_trans_end_fct __trans_end_fct;
  void *__data;
  struct __gconv_trans_data *__next;
};



struct __gconv_step
{
  struct __gconv_loaded_object *__shlib_handle;
  __const char *__modname;

  int __counter;

  __const char *__from_name;
  __const char *__to_name;

  __gconv_fct __fct;
  __gconv_init_fct __init_fct;
  __gconv_end_fct __end_fct;



  int __min_needed_from;
  int __max_needed_from;
  int __min_needed_to;
  int __max_needed_to;


  int __stateful;

  void *__data;
};



struct __gconv_step_data
{
  unsigned char *__outbuf;
  unsigned char *__outbufend;



  int __flags;



  int __invocation_counter;



  int __internal_use;

  __mbstate_t *__statep;
  __mbstate_t __state;



  struct __gconv_trans_data *__trans;
};



typedef struct __gconv_info
{
  size_t __nsteps;
  struct __gconv_step *__steps;
  __extension__ struct __gconv_step_data __data[0];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3
typedef union
{
  struct __gconv_info __cd;
  struct
  {
    struct __gconv_info __cd;
    struct __gconv_step_data __data;
  } __combined;
} _G_iconv_t;

typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 31 "/usr/include/libio.h" 2 3
# 51 "/usr/include/libio.h" 3
# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stdarg.h" 1 3
# 52 "/usr/include/libio.h" 2 3
# 158 "/usr/include/libio.h" 3
struct _IO_jump_t; struct _IO_FILE;
# 168 "/usr/include/libio.h" 3
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 191 "/usr/include/libio.h" 3
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 263 "/usr/include/libio.h" 3
struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 307 "/usr/include/libio.h" 3
  __off64_t _offset;





  void *__pad1;
  void *__pad2;

  int _mode;

  char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 346 "/usr/include/libio.h" 3
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
                                 size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);
# 398 "/usr/include/libio.h" 3
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
extern wint_t __wunderflow (_IO_FILE *) ;
extern wint_t __wuflow (_IO_FILE *) ;
extern wint_t __woverflow (_IO_FILE *, wint_t) ;
# 428 "/usr/include/libio.h" 3
extern int _IO_getc (_IO_FILE *__fp) ;
extern int _IO_putc (int __c, _IO_FILE *__fp) ;
extern int _IO_feof (_IO_FILE *__fp) ;
extern int _IO_ferror (_IO_FILE *__fp) ;

extern int _IO_peekc_locked (_IO_FILE *__fp) ;





extern void _IO_flockfile (_IO_FILE *) ;
extern void _IO_funlockfile (_IO_FILE *) ;
extern int _IO_ftrylockfile (_IO_FILE *) ;
# 458 "/usr/include/libio.h" 3
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
                        __gnuc_va_list, int *__restrict) ;
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
                         __gnuc_va_list) ;
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;

extern void _IO_free_backup_area (_IO_FILE *) ;
# 70 "/usr/include/stdio.h" 2 3



typedef _G_fpos_t fpos_t;
# 122 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 123 "/usr/include/stdio.h" 2 3



extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;






extern int remove (__const char *__filename) ;

extern int rename (__const char *__old, __const char *__new) ;




extern FILE *tmpfile (void) ;
# 154 "/usr/include/stdio.h" 3
extern char *tmpnam (char *__s) ;




extern char *tmpnam_r (char *__s) ;
# 171 "/usr/include/stdio.h" 3
extern char *tempnam (__const char *__dir, __const char *__pfx)
             __attribute__ ((__malloc__));




extern int fclose (FILE *__stream) ;

extern int fflush (FILE *__stream) ;



extern int fflush_unlocked (FILE *__stream) ;
# 194 "/usr/include/stdio.h" 3
extern FILE *fopen (__const char *__restrict __filename,
                    __const char *__restrict __modes) ;

extern FILE *freopen (__const char *__restrict __filename,
                      __const char *__restrict __modes,
                      FILE *__restrict __stream) ;
# 224 "/usr/include/stdio.h" 3
extern FILE *fdopen (int __fd, __const char *__modes) ;
# 247 "/usr/include/stdio.h" 3
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
                    int __modes, size_t __n) ;




extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
                       size_t __size) ;


extern void setlinebuf (FILE *__stream) ;




extern int fprintf (FILE *__restrict __stream,
                    __const char *__restrict __format, ...) ;

extern int printf (__const char *__restrict __format, ...) ;

extern int sprintf (char *__restrict __s,
                    __const char *__restrict __format, ...) ;


extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
                     __gnuc_va_list __arg) ;

extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg)
            ;

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
                     __gnuc_va_list __arg) ;



extern int snprintf (char *__restrict __s, size_t __maxlen,
                     __const char *__restrict __format, ...)
             __attribute__ ((__format__ (__printf__, 3, 4)));

extern int __vsnprintf (char *__restrict __s, size_t __maxlen,
                        __const char *__restrict __format, __gnuc_va_list __arg)
             __attribute__ ((__format__ (__printf__, 3, 0)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
                      __const char *__restrict __format, __gnuc_va_list __arg)
             __attribute__ ((__format__ (__printf__, 3, 0)));
# 321 "/usr/include/stdio.h" 3
extern int fscanf (FILE *__restrict __stream,
                   __const char *__restrict __format, ...) ;

extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s,
                   __const char *__restrict __format, ...) ;
# 347 "/usr/include/stdio.h" 3
extern int fgetc (FILE *__stream) ;
extern int getc (FILE *__stream) ;


extern int getchar (void) ;







extern int getc_unlocked (FILE *__stream) ;
extern int getchar_unlocked (void) ;




extern int fgetc_unlocked (FILE *__stream) ;




extern int fputc (int __c, FILE *__stream) ;
extern int putc (int __c, FILE *__stream) ;


extern int putchar (int __c) ;







extern int fputc_unlocked (int __c, FILE *__stream) ;




extern int putc_unlocked (int __c, FILE *__stream) ;
extern int putchar_unlocked (int __c) ;





extern int getw (FILE *__stream) ;


extern int putw (int __w, FILE *__stream) ;




extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
            ;
# 413 "/usr/include/stdio.h" 3
extern char *gets (char *__s) ;
# 437 "/usr/include/stdio.h" 3
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
            ;
# 447 "/usr/include/stdio.h" 3
extern int puts (__const char *__s) ;



extern int ungetc (int __c, FILE *__stream) ;



extern size_t fread (void *__restrict __ptr, size_t __size,
                     size_t __n, FILE *__restrict __stream) ;

extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
                      size_t __n, FILE *__restrict __s) ;



extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
                              size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
                               size_t __n, FILE *__restrict __stream) ;




extern int fseek (FILE *__stream, long int __off, int __whence) ;

extern long int ftell (FILE *__stream) ;

extern void rewind (FILE *__stream) ;
# 485 "/usr/include/stdio.h" 3
typedef __off_t off_t;
# 507 "/usr/include/stdio.h" 3
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
            ;

extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
# 543 "/usr/include/stdio.h" 3
extern void clearerr (FILE *__stream) ;

extern int feof (FILE *__stream) ;

extern int ferror (FILE *__stream) ;



extern void clearerr_unlocked (FILE *__stream) ;
extern int feof_unlocked (FILE *__stream) ;
extern int ferror_unlocked (FILE *__stream) ;




extern void perror (__const char *__s) ;




extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 574 "/usr/include/stdio.h" 3
extern int fileno (FILE *__stream) ;




extern int fileno_unlocked (FILE *__stream) ;






extern FILE *popen (__const char *__command, __const char *__modes) ;


extern int pclose (FILE *__stream) ;





extern char *ctermid (char *__s) ;
# 621 "/usr/include/stdio.h" 3
extern void flockfile (FILE *__stream) ;



extern int ftrylockfile (FILE *__stream) ;


extern void funlockfile (FILE *__stream) ;
# 642 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio.h" 1 3
# 32 "/usr/include/bits/stdio.h" 3
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}


extern __inline int
getchar (void)
{
  return _IO_getc (stdin);
}




extern __inline int
getc_unlocked (FILE *__fp)
{
  return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


extern __inline int
getchar_unlocked (void)
{
  return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




extern __inline int
putchar (int __c)
{
  return _IO_putc (__c, stdout);
}




extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


extern __inline int
putchar_unlocked (int __c)
{
  return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 110 "/usr/include/bits/stdio.h" 3
extern __inline int
feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x10) != 0);
}


extern __inline int
ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 643 "/usr/include/stdio.h" 2 3
# 7 "src/mame.h" 2
# 1 "/usr/include/string.h" 1 3
# 26 "/usr/include/string.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/string.h" 2 3






# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 34 "/usr/include/string.h" 2 3



extern void *memcpy (void *__restrict __dest,
                     __const void *__restrict __src, size_t __n) ;


extern void *memmove (void *__dest, __const void *__src, size_t __n)
            ;





extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
                      int __c, size_t __n)
            ;




extern void *memset (void *__s, int __c, size_t __n) ;


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
             __attribute__ ((__pure__));


extern void *memchr (__const void *__s, int __c, size_t __n)
              __attribute__ ((__pure__));
# 77 "/usr/include/string.h" 3
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
            ;

extern char *strncpy (char *__restrict __dest,
                      __const char *__restrict __src, size_t __n) ;


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
            ;

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
                      size_t __n) ;


extern int strcmp (__const char *__s1, __const char *__s2)
             __attribute__ ((__pure__));

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
             __attribute__ ((__pure__));


extern int strcoll (__const char *__s1, __const char *__s2)
             __attribute__ ((__pure__));

extern size_t strxfrm (char *__restrict __dest,
                       __const char *__restrict __src, size_t __n) ;
# 120 "/usr/include/string.h" 3
extern char *strdup (__const char *__s) __attribute__ ((__malloc__));
# 155 "/usr/include/string.h" 3
extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__));

extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__));
# 167 "/usr/include/string.h" 3
extern size_t strcspn (__const char *__s, __const char *__reject)
             __attribute__ ((__pure__));


extern size_t strspn (__const char *__s, __const char *__accept)
             __attribute__ ((__pure__));

extern char *strpbrk (__const char *__s, __const char *__accept)
             __attribute__ ((__pure__));

extern char *strstr (__const char *__haystack, __const char *__needle)
             __attribute__ ((__pure__));
# 187 "/usr/include/string.h" 3
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
            ;



extern char *__strtok_r (char *__restrict __s,
                         __const char *__restrict __delim,
                         char **__restrict __save_ptr) ;

extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
                       char **__restrict __save_ptr) ;
# 218 "/usr/include/string.h" 3
extern size_t strlen (__const char *__s) __attribute__ ((__pure__));
# 229 "/usr/include/string.h" 3
extern char *strerror (int __errnum) ;



extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen) ;
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;




extern void __bzero (void *__s, size_t __n) ;



extern void bcopy (__const void *__src, void *__dest, size_t __n) ;


extern void bzero (void *__s, size_t __n) ;


extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
             __attribute__ ((__pure__));


extern char *index (__const char *__s, int __c) __attribute__ ((__pure__));


extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__));



extern int __ffs (int __i) __attribute__ ((const));
extern int ffs (int __i) __attribute__ ((const));
# 274 "/usr/include/string.h" 3
extern int strcasecmp (__const char *__s1, __const char *__s2)
             __attribute__ ((__pure__));


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
             __attribute__ ((__pure__));
# 296 "/usr/include/string.h" 3
extern char *strsep (char **__restrict __stringp,
                     __const char *__restrict __delim) ;
# 358 "/usr/include/string.h" 3
# 1 "/usr/include/bits/string.h" 1 3
# 359 "/usr/include/string.h" 2 3


# 1 "/usr/include/bits/string2.h" 1 3
# 80 "/usr/include/bits/string2.h" 3
typedef struct { unsigned char __arr[2]; } __STRING2_COPY_ARR2 __attribute__ ((packed));
typedef struct { unsigned char __arr[3]; } __STRING2_COPY_ARR3 __attribute__ ((packed));
typedef struct { unsigned char __arr[4]; } __STRING2_COPY_ARR4 __attribute__ ((packed));
typedef struct { unsigned char __arr[5]; } __STRING2_COPY_ARR5 __attribute__ ((packed));
typedef struct { unsigned char __arr[6]; } __STRING2_COPY_ARR6 __attribute__ ((packed));
typedef struct { unsigned char __arr[7]; } __STRING2_COPY_ARR7 __attribute__ ((packed));
typedef struct { unsigned char __arr[8]; } __STRING2_COPY_ARR8 __attribute__ ((packed));
# 371 "/usr/include/bits/string2.h" 3
extern void *__rawmemchr (const void *__s, int __c);
# 477 "/usr/include/bits/string2.h" 3
extern __inline char *__strcpy_small (char *, __STRING2_COPY_ARR2,
                                      __STRING2_COPY_ARR3,
                                      __STRING2_COPY_ARR4,
                                      __STRING2_COPY_ARR5,
                                      __STRING2_COPY_ARR6,
                                      __STRING2_COPY_ARR7,
                                      __STRING2_COPY_ARR8, size_t);
extern __inline char *
__strcpy_small (char *__dest,
                __STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,
                __STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,
                __STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,
                __STRING2_COPY_ARR8 __src8, size_t __srclen)
{
  union {
    char __c;
    __STRING2_COPY_ARR2 __sca2;
    __STRING2_COPY_ARR3 __sca3;
    __STRING2_COPY_ARR4 __sca4;
    __STRING2_COPY_ARR5 __sca5;
    __STRING2_COPY_ARR6 __sca6;
    __STRING2_COPY_ARR7 __sca7;
    __STRING2_COPY_ARR8 __sca8;
  } *__u = (void *) __dest;
  switch ((unsigned int) __srclen)
    {
    case 1:
      __u->__c = '\0';
      break;
    case 2:
      __extension__ __u->__sca2 = __src2;
      break;
    case 3:
      __extension__ __u->__sca3 = __src3;
      break;
    case 4:
      __extension__ __u->__sca4 = __src4;
      break;
    case 5:
      __extension__ __u->__sca5 = __src5;
      break;
    case 6:
      __extension__ __u->__sca6 = __src6;
      break;
    case 7:
      __extension__ __u->__sca7 = __src7;
      break;
    case 8:
      __extension__ __u->__sca8 = __src8;
      break;
  }
  return __dest;
}
# 873 "/usr/include/bits/string2.h" 3
extern __inline size_t __strcspn_c1 (__const char *__s, char __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, char __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1,
                                     char __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, char __reject1, char __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
         && __s[__result] != __reject2)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1,
                                     char __reject2, char __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, char __reject1, char __reject2,
              char __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
         && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}
# 928 "/usr/include/bits/string2.h" 3
extern __inline size_t __strspn_c1 (__const char *__s, char __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, char __accept)
{
  register size_t __result = 0;

  while (__s[__result] == __accept)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c2 (__const char *__s, char __accept1,
                                    char __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, char __accept1, char __accept2)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c3 (__const char *__s, char __accept1,
                                    char __accept2, char __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2
         || __s[__result] == __accept3)
    ++__result;
  return __result;
}
# 983 "/usr/include/bits/string2.h" 3
extern __inline char *__strpbrk_c2 (__const char *__s, char __accept1,
                                     char __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, char __accept1, char __accept2)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}

extern __inline char *__strpbrk_c3 (__const char *__s, char __accept1,
                                     char __accept2, char __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, char __accept1, char __accept2,
              char __accept3)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
         && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1045 "/usr/include/bits/string2.h" 3
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  if (*__s == '\0')
    __result = ((void *)0);
  else
    {
      __result = __s;
      while (*__s != '\0' && *__s != __sep)
        ++__s;
      if (*__s == '\0')
        *__nextp = __s;
      else
        {
          *__s = '\0';
          *__nextp = __s + 1;
        }
    }
  return __result;
}
# 1095 "/usr/include/bits/string2.h" 3
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject)
    *(*__s)++ = '\0';
  else
    if ((*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0))
      *(*__s)++ = '\0';
    else
      *__s = ((void *)0);
  return __retval;
}

extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject1 || *__retval == __reject2)
    *(*__s)++ = '\0';
  else
    {
      register char *__cp = __retval;
      while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2)
        ++__cp;
      if (*__cp != '\0')
        {
          *__s = __cp;
          *(*__s)++ = '\0';
        }
      else
        *__s = ((void *)0);
    }
  return __retval;
}

extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
                                   char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject1 || *__retval == __reject2
      || *__retval == __reject3)
    *(*__s)++ = '\0';
  else
    {
      register char *__cp = __retval;
      while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2
             && *__cp != __reject3)
        ++__cp;
      if (*__cp != '\0')
        {
          *__s = __cp;
          *(*__s)++ = '\0';
        }
      else
        *__s = ((void *)0);
    }
  return __retval;
}

extern __inline char *__strsep_g (char **__s, __const char *__reject);
extern __inline char *
__strsep_g (char **__s, __const char *__reject)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return ((void *)0);
  if ((*__s = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (__reject) && ((size_t)(const void *)((__reject) + 1) - (size_t)(const void *)(__reject) == 1) ? ((__a0 = ((__const char *) (__reject))[0], __a0 == '\0') ? ((void) (__retval), ((void *)0)) : ((__a1 = ((__const char *) (__reject))[1], __a1 == '\0') ? (__extension__ (__builtin_constant_p (__a0) && (__a0) == '\0' ? (char *) __rawmemchr (__retval, __a0) : strchr (__retval, __a0))) : ((__a2 = ((__const char *) (__reject))[2], __a2 == '\0') ? __strpbrk_c2 (__retval, __a0, __a1) : (((__const char *) (__reject))[3] == '\0' ? __strpbrk_c3 (__retval, __a0, __a1, __a2) : strpbrk (__retval, __reject))))) : strpbrk (__retval, __reject)); })) != ((void *)0))
    *(*__s)++ = '\0';
  return __retval;
}
# 1188 "/usr/include/bits/string2.h" 3
# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/include/stdlib.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/stdlib.h" 2 3







# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 34 "/usr/include/stdlib.h" 2 3
# 526 "/usr/include/stdlib.h" 3
extern void *malloc (size_t __size) __attribute__ ((__malloc__));

extern void *calloc (size_t __nmemb, size_t __size)
             __attribute__ ((__malloc__));
# 1189 "/usr/include/bits/string2.h" 2 3




extern char *__strdup (__const char *__string) __attribute__ ((__malloc__));
# 1212 "/usr/include/bits/string2.h" 3
extern char *__strndup (__const char *__string, size_t __n)
             __attribute__ ((__malloc__));
# 362 "/usr/include/string.h" 2 3
# 8 "src/mame.h" 2
# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/include/stdlib.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/stdlib.h" 2 3







# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 34 "/usr/include/stdlib.h" 2 3
# 94 "/usr/include/stdlib.h" 3
typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
# 133 "/usr/include/stdlib.h" 3
extern size_t __ctype_get_mb_cur_max (void) ;



extern double atof (__const char *__nptr) __attribute__ ((__pure__));

extern int atoi (__const char *__nptr) __attribute__ ((__pure__));

extern long int atol (__const char *__nptr) __attribute__ ((__pure__));



__extension__ extern long long int atoll (__const char *__nptr)
             __attribute__ ((__pure__));



extern double strtod (__const char *__restrict __nptr,
                      char **__restrict __endptr) ;
# 163 "/usr/include/stdlib.h" 3
extern long int strtol (__const char *__restrict __nptr,
                        char **__restrict __endptr, int __base) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
                                  char **__restrict __endptr, int __base)
            ;



__extension__
extern long long int strtoq (__const char *__restrict __nptr,
                             char **__restrict __endptr, int __base) ;

__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
                                       char **__restrict __endptr, int __base)
            ;






__extension__
extern long long int strtoll (__const char *__restrict __nptr,
                              char **__restrict __endptr, int __base) ;

__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
                                        char **__restrict __endptr, int __base)
            ;
# 250 "/usr/include/stdlib.h" 3
extern double __strtod_internal (__const char *__restrict __nptr,
                                 char **__restrict __endptr, int __group)
            ;
extern float __strtof_internal (__const char *__restrict __nptr,
                                char **__restrict __endptr, int __group)
            ;
extern long double __strtold_internal (__const char *__restrict __nptr,
                                       char **__restrict __endptr,
                                       int __group) ;

extern long int __strtol_internal (__const char *__restrict __nptr,
                                   char **__restrict __endptr,
                                   int __base, int __group) ;



extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
                                             char **__restrict __endptr,
                                             int __base, int __group) ;




__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
                                         char **__restrict __endptr,
                                         int __base, int __group) ;



__extension__
extern unsigned long long int __strtoull_internal (__const char *
                                                   __restrict __nptr,
                                                   char **__restrict __endptr,
                                                   int __base, int __group)
            ;
# 294 "/usr/include/stdlib.h" 3
extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
  return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base)
{
  return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 326 "/usr/include/stdlib.h" 3
__extension__ extern __inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}



__extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
          int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}


extern __inline double
atof (__const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
atoi (__const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
atol (__const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}


__extension__ extern __inline long long int
atoll (__const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 385 "/usr/include/stdlib.h" 3
extern char *l64a (long int __n) ;


extern long int a64l (__const char *__s) __attribute__ ((__pure__));


# 1 "/usr/include/sys/types.h" 1 3
# 26 "/usr/include/sys/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/sys/types.h" 2 3



# 1 "/usr/include/bits/types.h" 1 3
# 31 "/usr/include/sys/types.h" 2 3


typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;


typedef __loff_t loff_t;



typedef __ino_t ino_t;
# 58 "/usr/include/sys/types.h" 3
typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;
# 96 "/usr/include/sys/types.h" 3
typedef __pid_t pid_t;




typedef __id_t id_t;




typedef __ssize_t ssize_t;




typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;



typedef __key_t key_t;
# 126 "/usr/include/sys/types.h" 3
# 1 "/usr/include/time.h" 1 3
# 127 "/usr/include/sys/types.h" 2 3
# 140 "/usr/include/sys/types.h" 3
# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 141 "/usr/include/sys/types.h" 2 3



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 184 "/usr/include/sys/types.h" 3
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 206 "/usr/include/sys/types.h" 3
# 1 "/usr/include/endian.h" 1 3
# 22 "/usr/include/endian.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/endian.h" 2 3
# 37 "/usr/include/endian.h" 3
# 1 "/usr/include/bits/endian.h" 1 3
# 38 "/usr/include/endian.h" 2 3
# 207 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/select.h" 1 3
# 25 "/usr/include/sys/select.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/types.h" 1 3
# 29 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/select.h" 1 3
# 32 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/sigset.h" 1 3
# 23 "/usr/include/bits/sigset.h" 3
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3



# 1 "/usr/include/time.h" 1 3
# 39 "/usr/include/sys/select.h" 2 3







struct timeval;

typedef __fd_mask fd_mask;


typedef __fd_set fd_set;
# 74 "/usr/include/sys/select.h" 3
extern int select (int __nfds, __fd_set *__restrict __readfds,
                   __fd_set *__restrict __writefds,
                   __fd_set *__restrict __exceptfds,
                   struct timeval *__restrict __timeout) ;
# 210 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/sysmacros.h" 1 3
# 213 "/usr/include/sys/types.h" 2 3
# 224 "/usr/include/sys/types.h" 3
typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 392 "/usr/include/stdlib.h" 2 3






extern int32_t random (void) ;


extern void srandom (unsigned int __seed) ;





extern char *initstate (unsigned int __seed, char *__statebuf,
                        size_t __statelen) ;



extern char *setstate (char *__statebuf) ;







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
                     int32_t *__restrict __result) ;

extern int srandom_r (unsigned int __seed, struct random_data *__buf) ;

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
                        size_t __statelen,
                        struct random_data *__restrict __buf) ;

extern int setstate_r (char *__restrict __statebuf,
                       struct random_data *__restrict __buf) ;





extern int rand (void) ;

extern void srand (unsigned int __seed) ;



extern int rand_r (unsigned int *__seed) ;







extern double drand48 (void) ;
extern double erand48 (unsigned short int __xsubi[3]) ;


extern long int lrand48 (void) ;
extern long int nrand48 (unsigned short int __xsubi[3]) ;


extern long int mrand48 (void) ;
extern long int jrand48 (unsigned short int __xsubi[3]) ;


extern void srand48 (long int __seedval) ;
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ;
extern void lcong48 (unsigned short int __param[7]) ;


struct drand48_data
  {
    unsigned short int x[3];
    unsigned short int a[3];
    unsigned short int c;
    unsigned short int old_x[3];
    int init;
  };



extern int drand48_r (struct drand48_data *__restrict __buffer,
                      double *__restrict __result) ;
extern int erand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      double *__restrict __result) ;


extern int lrand48_r (struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;
extern int nrand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;


extern int mrand48_r (struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;
extern int jrand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
            ;

extern int seed48_r (unsigned short int __seed16v[3],
                     struct drand48_data *__buffer) ;

extern int lcong48_r (unsigned short int __param[7],
                      struct drand48_data *__buffer) ;
# 535 "/usr/include/stdlib.h" 3
extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__));

extern void free (void *__ptr) ;



extern void cfree (void *__ptr) ;



# 1 "/usr/include/alloca.h" 1 3
# 22 "/usr/include/alloca.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/alloca.h" 2 3


# 1 "/opt/gcc-20010516/lib/gcc-lib/ia64-unknown-linux/3.1/include/stddef.h" 1 3
# 26 "/usr/include/alloca.h" 2 3







extern void *alloca (size_t __size) ;
# 546 "/usr/include/stdlib.h" 2 3




extern void *valloc (size_t __size) __attribute__ ((__malloc__));
# 560 "/usr/include/stdlib.h" 3
extern void abort (void) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) ;




extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg)
            ;
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
            ;





extern void exit (int __status) __attribute__ ((__noreturn__));
# 588 "/usr/include/stdlib.h" 3
extern char *getenv (__const char *__name) ;



extern char *__secure_getenv (__const char *__name) ;





extern int putenv (char *__string) ;





extern int setenv (__const char *__name, __const char *__value, int __replace)
            ;


extern void unsetenv (__const char *__name) ;






extern int clearenv (void) ;
# 624 "/usr/include/stdlib.h" 3
extern char *mktemp (char *__template) ;







extern int mkstemp (char *__template) ;
# 651 "/usr/include/stdlib.h" 3
extern char *mkdtemp (char *__template) ;




extern int system (__const char *__command) ;
# 673 "/usr/include/stdlib.h" 3
extern char *realpath (__const char *__restrict __name,
                       char *__restrict __resolved) ;






typedef int (*__compar_fn_t) (__const void *, __const void *);
# 690 "/usr/include/stdlib.h" 3
extern void *bsearch (__const void *__key, __const void *__base,
                      size_t __nmemb, size_t __size, __compar_fn_t __compar);



extern void qsort (void *__base, size_t __nmemb, size_t __size,
                   __compar_fn_t __compar);



extern int abs (int __x) __attribute__ ((__const__));
extern long int labs (long int __x) __attribute__ ((__const__));
# 711 "/usr/include/stdlib.h" 3
extern div_t div (int __numer, int __denom)
             __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
             __attribute__ ((__const__));
# 729 "/usr/include/stdlib.h" 3
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign) ;




extern char *gcvt (double __value, int __ndigit, char *__buf) ;


extern char *qecvt (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign) ;
extern char *qfcvt (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf) ;





extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign, char *__restrict __buf,
                   size_t __len) ;
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign, char *__restrict __buf,
                   size_t __len) ;

extern int qecvt_r (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign,
                    char *__restrict __buf, size_t __len) ;
extern int qfcvt_r (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign,
                    char *__restrict __buf, size_t __len) ;






extern int mblen (__const char *__s, size_t __n) ;


extern int mbtowc (wchar_t *__restrict __pwc,
                   __const char *__restrict __s, size_t __n) ;


extern int wctomb (char *__s, wchar_t __wchar) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
                        __const char *__restrict __s, size_t __n) ;

extern size_t wcstombs (char *__restrict __s,
                        __const wchar_t *__restrict __pwcs, size_t __n)
            ;







extern int rpmatch (__const char *__response) ;
# 851 "/usr/include/stdlib.h" 3
extern int getloadavg (double __loadavg[], int __nelem) ;
# 9 "src/mame.h" 2





extern char build_version[];




struct RegionInfo
{
        UINT8 * base;
        size_t length;
        UINT32 type;
        UINT32 flags;
};

struct RunningMachine
{
        struct RegionInfo memory_region[32];
        struct GfxElement *gfx[32];
        struct osd_bitmap *scrbitmap;
        struct rectangle visible_area;
        UINT32 *pens;




        UINT16 *game_colortable;

        UINT32 *remapped_colortable;

        const struct GameDriver *gamedrv;
        const struct MachineDriver *drv;
        int color_depth;
        int sample_rate;



        struct GameSamples *samples;
        struct InputPort *input_ports;


        struct InputPort *input_ports_default;
        int orientation;
        struct GfxElement *uifont;
        int uifontwidth,uifontheight;
        int uixmin,uiymin;
        int uiwidth,uiheight;
        int ui_orientation;
        struct rectangle absolute_visible_area;


        struct osd_bitmap *debug_bitmap;
        UINT32 *debug_pens;
        UINT32 *debug_remapped_colortable;
        struct GfxElement *debugger_font;
};
# 83 "src/mame.h"
struct GameOptions {
        void *record;
        void *playback;
        void *language_file;

        int mame_debug;
        int cheat;
        int gui_host;

        int samplerate;
        int use_samples;
        int use_emulated_ym3812;
        int use_filter;

        int color_depth;
        int vector_width;
        int vector_height;
        int debug_width;
        int debug_height;
        int norotate;
        int ror;
        int rol;
        int flipx;
        int flipy;
        int beam;
        float vector_flicker;
        int translucency;
        int antialias;
        int use_artwork;
        char savegame;







};

extern struct GameOptions options;
extern struct RunningMachine *Machine;

int run_game (int game);
int updatescreen(void);
void draw_screen(void);



void schedule_full_refresh(void);

void update_video_and_audio(void);

int mame_highscore_enabled(void);
void set_led_status(int num,int on);
# 5 "src/mamedbg.h" 2




extern int mame_debug;
# 7 "src/driver.h" 2
# 1 "src/osdepend.h" 1
# 8 "src/driver.h" 2
# 1 "src/mame.h" 1
# 9 "src/driver.h" 2
# 1 "src/common.h" 1
# 24 "src/common.h"
struct RomModule
{
        const char *_name;
        UINT32 _offset;
        UINT32 _length;
        UINT32 _crc;
};


struct GameSample
{
        int length;
        int smpfreq;
        int resolution;
        signed char data[1];
};


struct GameSamples
{
        int total;
        struct GameSample *sample[1];
};
# 56 "src/common.h"
enum
{
        REGION_INVALID = 0x80,
        REGION_CPU1,
        REGION_CPU2,
        REGION_CPU3,
        REGION_CPU4,
        REGION_CPU5,
        REGION_CPU6,
        REGION_CPU7,
        REGION_CPU8,
        REGION_GFX1,
        REGION_GFX2,
        REGION_GFX3,
        REGION_GFX4,
        REGION_GFX5,
        REGION_GFX6,
        REGION_GFX7,
        REGION_GFX8,
        REGION_PROMS,
        REGION_SOUND1,
        REGION_SOUND2,
        REGION_SOUND3,
        REGION_SOUND4,
        REGION_SOUND5,
        REGION_SOUND6,
        REGION_SOUND7,
        REGION_SOUND8,
        REGION_USER1,
        REGION_USER2,
        REGION_USER3,
        REGION_USER4,
        REGION_USER5,
        REGION_USER6,
        REGION_USER7,
        REGION_USER8,
        REGION_MAX
};
# 303 "src/common.h"
void showdisclaimer(void);

const struct RomModule *rom_first_region(const struct GameDriver *drv);
const struct RomModule *rom_next_region(const struct RomModule *romp);
const struct RomModule *rom_first_file(const struct RomModule *romp);
const struct RomModule *rom_next_file(const struct RomModule *romp);
const struct RomModule *rom_first_chunk(const struct RomModule *romp);
const struct RomModule *rom_next_chunk(const struct RomModule *romp);




void coin_counter_w(int num,int on);
void coin_lockout_w(int num,int on);
void coin_lockout_global_w(int on);


int readroms(void);
void printromlist(const struct RomModule *romp,const char *name);



struct GameSamples *readsamples(const char **samplenames,const char *name);
void freesamples(struct GameSamples *samples);



UINT8 *memory_region(int num);
size_t memory_region_length(int num);


int new_memory_region(int num, size_t length, UINT32 flags);
void free_memory_region(int num);

extern int flip_screen_x, flip_screen_y;

void flip_screen_set(int on);
void flip_screen_x_set(int on);
void flip_screen_y_set(int on);



void set_vh_global_attribute( int *addr, int data );

void set_visible_area(int min_x,int max_x,int min_y,int max_y);

struct osd_bitmap *bitmap_alloc(int width,int height);
struct osd_bitmap *bitmap_alloc_depth(int width,int height,int depth);
void bitmap_free(struct osd_bitmap *bitmap);

void save_screen_snapshot_as(void *fp,struct osd_bitmap *bitmap);
void save_screen_snapshot(struct osd_bitmap *bitmap);
# 10 "src/driver.h" 2
# 1 "src/drawgfx.h" 1
# 11 "src/driver.h" 2
# 1 "src/palette.h" 1
# 126 "src/palette.h"
int palette_start(void);
void palette_stop(void);
int palette_init(void);
void palette_post_screen_update_cb(void);

void palette_change_color(int color,UINT8 red,UINT8 green,UINT8 blue);




extern UINT8 *palette_used_colors;

void palette_increase_usage_count(int table_offset,unsigned int usage_mask,int color_flags);
void palette_decrease_usage_count(int table_offset,unsigned int usage_mask,int color_flags);
void palette_increase_usage_countx(int table_offset,int num_pens,const UINT8 *pen_data,int color_flags);
void palette_decrease_usage_countx(int table_offset,int num_pens,const UINT8 *pen_data,int color_flags);




void palette_init_used_colors(void);

const UINT8 *palette_recalc(void);
# 167 "src/palette.h"
extern UINT16 palette_transparent_pen;


extern UINT16 *palette_shadow_table;






extern data8_t *paletteram;
extern data8_t *paletteram_2;
extern data16_t *paletteram16;
extern data16_t *paletteram16_2;
extern data32_t *paletteram32;

data8_t paletteram_r(offs_t offset __attribute__((__unused__)));
data8_t paletteram_2_r(offs_t offset __attribute__((__unused__)));
data16_t paletteram16_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t paletteram16_2_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data32_t paletteram32_r(offs_t offset __attribute__((__unused__)), data32_t mem_mask __attribute__((__unused__)));

void paletteram_BBGGGRRR_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_RRRGGGBB_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_BBBGGGRR_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_IIBBGGRR_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_BBGGRRII_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));







void paletteram_xxxxBBBBGGGGRRRR_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxBBBBGGGGRRRR_swap_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxBBBBGGGGRRRR_split1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxBBBBGGGGRRRR_split2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram16_xxxxBBBBGGGGRRRR_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram_xxxxBBBBRRRRGGGG_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxBBBBRRRRGGGG_swap_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxBBBBRRRRGGGG_split1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxBBBBRRRRGGGG_split2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxRRRRBBBBGGGG_split1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxRRRRBBBBGGGG_split2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxRRRRGGGGBBBB_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xxxxRRRRGGGGBBBB_swap_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram16_xxxxRRRRGGGGBBBB_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram_RRRRGGGGBBBBxxxx_swap_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_RRRRGGGGBBBBxxxx_split1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_RRRRGGGGBBBBxxxx_split2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram16_RRRRGGGGBBBBxxxx_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram_BBBBGGGGRRRRxxxx_swap_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_BBBBGGGGRRRRxxxx_split1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_BBBBGGGGRRRRxxxx_split2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram16_BBBBGGGGRRRRxxxx_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram_xBBBBBGGGGGRRRRR_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram_xBBBBBGGGGGRRRRR_swap_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram16_xBBBBBGGGGGRRRRR_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram_xRRRRRGGGGGBBBBB_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram16_xRRRRRGGGGGBBBBB_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram16_xGGGGGRRRRRBBBBB_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram_RRRRRGGGGGBBBBBx_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void paletteram16_RRRRRGGGGGBBBBBx_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram16_IIIIRRRRGGGGBBBB_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram16_RRRRGGGGBBBBIIII_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram16_xrgb_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void paletteram16_RRRRGGGGBBBBRGBx_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
# 12 "src/driver.h" 2
# 1 "src/cpuintrf.h" 1



# 1 "src/unix/osd_cpu.h" 1
# 5 "src/cpuintrf.h" 2
# 1 "src/memory.h" 1
# 6 "src/cpuintrf.h" 2
# 1 "src/timer.h" 1
# 17 "src/timer.h"
extern double cycles_to_sec[];
extern double sec_to_cycles[];
# 41 "src/timer.h"
void timer_init(void);
void *timer_pulse(double period, int param, void(*callback)(int));
void *timer_set(double duration, int param, void(*callback)(int));
void timer_reset(void *which, double duration);
void timer_remove(void *which);
int timer_enable(void *which, int enable);
double timer_timeelapsed(void *which);
double timer_timeleft(void *which);
double timer_get_time(void);
double timer_starttime(void *which);
double timer_firetime(void *which);
int timer_schedule_cpu(int *cpu, int *cycles);
void timer_update_cpu(int cpu, int ran);
void timer_suspendcpu(int cpu, int suspend, int reason);
void timer_holdcpu(int cpu, int hold, int reason);
int timer_iscpususpended(int cpu, int reason);
int timer_iscpuheld(int cpunum, int reason);
void timer_suspendcpu_trigger(int cpu, int trigger);
void timer_holdcpu_trigger(int cpu, int trigger);
void timer_trigger(int trigger);
double timer_get_overclock(int cpunum);
void timer_set_overclock(int cpunum, double overclock);
# 7 "src/cpuintrf.h" 2






struct MachineCPU
{
        int cpu_type;
        int cpu_clock;
        const void *memory_read;
        const void *memory_write;
        const void *port_read;
        const void *port_write;
        int (*vblank_interrupt)(void);
        int vblank_interrupts_per_frame;



        int (*timed_interrupt)(void);
        int timed_interrupts_per_second;

        void *reset_param;
};


enum
{
        CPU_DUMMY,

        CPU_Z80,


        CPU_8080,


        CPU_8085A,


        CPU_M6502,


        CPU_M65C02,
# 61 "src/cpuintrf.h"
        CPU_M6510,
# 73 "src/cpuintrf.h"
        CPU_N2A03,





        CPU_H6280,


        CPU_I86,





        CPU_I186,
# 97 "src/cpuintrf.h"
        CPU_V20,


        CPU_V30,


        CPU_V33,


        CPU_I8035,


        CPU_I8039,


        CPU_I8048,


        CPU_N7751,


        CPU_I8X41,


        CPU_M6800,


        CPU_M6801,


        CPU_M6802,


        CPU_M6803,


        CPU_M6808,


        CPU_HD63701,


        CPU_NSC8105,


        CPU_M6805,


        CPU_M68705,


        CPU_HD63705,


        CPU_HD6309,


        CPU_M6809,


        CPU_KONAMI,


        CPU_M68000,


        CPU_M68010,


        CPU_M68EC020,


        CPU_M68020,


        CPU_T11,


        CPU_S2650,


        CPU_TMS34010,
# 190 "src/cpuintrf.h"
        CPU_TMS9980,
# 199 "src/cpuintrf.h"
        CPU_TMS9995,
# 208 "src/cpuintrf.h"
        CPU_Z8000,


        CPU_TMS320C10,


        CPU_CCPU,


        CPU_ADSP2100,


        CPU_ADSP2105,


        CPU_PSXCPU,


        CPU_ASAP,


        CPU_UPD7810,
# 273 "src/cpuintrf.h"
    CPU_COUNT
};
# 300 "src/cpuintrf.h"
enum {
        CPU_INFO_REG,
        CPU_INFO_FLAGS=128,
        CPU_INFO_NAME,
        CPU_INFO_FAMILY,
        CPU_INFO_VERSION,
        CPU_INFO_FILE,
        CPU_INFO_CREDITS,
        CPU_INFO_REG_LAYOUT,
        CPU_INFO_WIN_LAYOUT
};
# 336 "src/cpuintrf.h"
struct cpu_interface
{
        unsigned cpu_num;
        void (*init)(void);
        void (*reset)(void *param);
        void (*exit)(void);
        int (*execute)(int cycles);
        void (*burn)(int cycles);
        unsigned (*get_context)(void *reg);
        void (*set_context)(void *reg);
        void *(*get_cycle_table)(int which);
        void (*set_cycle_table)(int which, void *new_table);
        unsigned (*get_pc)(void);
        void (*set_pc)(unsigned val);
        unsigned (*get_sp)(void);
        void (*set_sp)(unsigned val);
        unsigned (*get_reg)(int regnum);
        void (*set_reg)(int regnum, unsigned val);
        void (*set_nmi_line)(int linestate);
        void (*set_irq_line)(int irqline, int linestate);
        void (*set_irq_callback)(int(*callback)(int irqline));
        void (*internal_interrupt)(int type);
        const char* (*cpu_info)(void *context,int regnum);
        unsigned (*cpu_dasm)(char *buffer,unsigned pc);
        unsigned num_irqs;
        int default_vector;
        int *icount;
        double overclock;
        int no_int, irq_int, nmi_int;
        int databus_width;
        mem_read_handler memory_read;
        mem_write_handler memory_write;
        mem_read_handler internal_read;
        mem_write_handler internal_write;
        offs_t pgm_memory_base;
        void (*set_op_base)(offs_t pc);
        int address_shift;
        unsigned address_bits, endianess, align_unit, max_inst_len;
};

extern struct cpu_interface cpuintf[];

void cpu_init(void);
void cpu_run(void);


void watchdog_reset_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t watchdog_reset_r(offs_t offset __attribute__((__unused__)));
void watchdog_reset16_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t watchdog_reset16_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

void machine_reset(void);

void cpu_set_reset_line(int cpu,int state);

void cpu_set_halt_line(int cpu,int state);


int cpu_getstatus(int cpunum);
int cpu_gettotalcpu(void);
int cpu_getactivecpu(void);
void cpu_setactivecpu(int cpunum);


offs_t cpu_get_pc(void);
offs_t cpu_get_pc_byte(void);

void cpu_set_pc(offs_t val);


offs_t cpu_get_sp(void);

void cpu_set_sp(offs_t val);


unsigned cpu_get_context(void *context);

void cpu_set_context(void *context);


void *cpu_get_cycle_table(int which);

void cpu_set_cycle_tbl(int which, void *new_table);


unsigned cpu_get_reg(int regnum);

void cpu_set_reg(int regnum, unsigned val);
# 434 "src/cpuintrf.h"
int cycles_currently_ran(void);
int cycles_left_to_run(void);
void cpu_set_op_base(unsigned val);


int cpu_gettotalcycles(void);

int cpu_geticount(void);

int cpu_getfcount(void);

int cpu_getfperiod(void);

int cpu_scalebyfcount(int value);

int cpu_getscanline(void);

double cpu_getscanlinetime(int scanline);

double cpu_getscanlineperiod(void);

int cpu_getscanlinecycles(void);

int cpu_getcurrentcycles(void);

int cpu_gethorzbeampos(void);







int cpu_getiloops(void);


int cpu_getvblank(void);


int cpu_getcurrentframe(void);



void cpu_triggertime (double duration, int trigger);

void cpu_trigger (int trigger);


void cpu_spinuntil_trigger (int trigger);

void cpu_spinuntil_int (void);

void cpu_spin (void);

void cpu_spinuntil_time (double duration);


void cpu_yielduntil_trigger (int trigger);

void cpu_yielduntil_int (void);

void cpu_yield (void);

void cpu_yielduntil_time (double duration);


void cpu_set_nmi_line(int cpunum, int state);


void cpu_set_irq_line(int cpunum, int irqline, int state);

void cpu_generate_internal_interrupt(int cpunum, int type);

void cpu_irq_line_vector_w(int cpunum, int irqline, int vector);


void cpu_set_irq_callback(int cpunum, int (*callback)(int irqline));



void cpu_0_irq_line_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void cpu_1_irq_line_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void cpu_2_irq_line_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void cpu_3_irq_line_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void cpu_4_irq_line_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void cpu_5_irq_line_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void cpu_6_irq_line_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void cpu_7_irq_line_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));




void cpu_cause_interrupt(int cpu,int type);
void cpu_clear_pending_interrupts(int cpu);
void cpu_interrupt_enable(int cpu,int enabled);
void interrupt_enable_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void interrupt_vector_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
int interrupt(void);
int nmi_interrupt(void);

int m68_level1_irq(void);
int m68_level2_irq(void);
int m68_level3_irq(void);
int m68_level4_irq(void);
int m68_level5_irq(void);
int m68_level6_irq(void);
int m68_level7_irq(void);

int ignore_interrupt(void);


void* cpu_getcontext (int _activecpu);
int cpu_is_saving_context(int _activecpu);






unsigned cpu_address_bits(void);

unsigned cpu_address_mask(void);

int cpu_address_shift(void);

unsigned cpu_endianess(void);

unsigned cpu_align_unit(void);

unsigned cpu_max_inst_len(void);


const char *cpu_name(void);

const char *cpu_core_family(void);

const char *cpu_core_version(void);

const char *cpu_core_file(void);

const char *cpu_core_credits(void);

const char *cpu_reg_layout(void);

const char *cpu_win_layout(void);


unsigned cpu_dasm(char *buffer, unsigned pc);

const char *cpu_flags(void);


const char *cpu_dump_reg(int regnum);

const char *cpu_dump_state(void);







int cputype_address_shift(int cputype);

unsigned cputype_address_bits(int cputype);

unsigned cputype_address_mask(int cputype);

unsigned cputype_endianess(int cputype);

unsigned cputype_databus_width(int cputype);

unsigned cputype_align_unit(int cputype);

unsigned cputype_max_inst_len(int cputype);


const char *cputype_name(int cputype);

const char *cputype_core_family(int cputype);

const char *cputype_core_version(int cputype);

const char *cputype_core_file(int cputype);

const char *cputype_core_credits(int cputype);

const char *cputype_reg_layout(int cputype);

const char *cputype_win_layout(int cputype);






unsigned cpunum_address_bits(int cpunum);

unsigned cpunum_address_mask(int cpunum);

unsigned cpunum_endianess(int cpunum);

unsigned cpunum_databus_width(int cpunum);

unsigned cpunum_align_unit(int cpunum);

unsigned cpunum_max_inst_len(int cpunum);


unsigned cpunum_get_reg(int cpunum, int regnum);

void cpunum_set_reg(int cpunum, int regnum, unsigned val);


const char *cpunum_reg_layout(int cpunum);

const char *cpunum_win_layout(int cpunum);

unsigned cpunum_dasm(int cpunum,char *buffer,unsigned pc);

const char *cpunum_flags(int cpunum);


const char *cpunum_dump_reg(int cpunum, int regnum);

const char *cpunum_dump_state(int cpunum);

const char *cpunum_name(int cpunum);

const char *cpunum_core_family(int cpunum);

const char *cpunum_core_version(int cpunum);

const char *cpunum_core_file(int cpunum);

const char *cpunum_core_credits(int cpunum);

void cpu_set_m68k_reset(int cpunum, void (*resetfn)(void));


void cpu_dump_states(void);


enum {
        LOADSAVE_NONE = 0,
        LOADSAVE_SAVE = 1,
        LOADSAVE_LOAD = 2
};
void cpu_loadsave_schedule(int type, char id);
void cpu_loadsave_reset(void);


typedef struct {
        void (*reset)(int);
        int (*interrupt_entry)(int);
        void (*interrupt_reti)(int);
        int irq_param;
} Z80_DaisyChain;
# 13 "src/driver.h" 2
# 1 "src/sndintrf.h" 1




struct MachineSound
{
        int sound_type;
        void *sound_interface;
};


# 1 "src/sound/mixer.h" 1
# 72 "src/sound/mixer.h"
int mixer_sh_start(void);
void mixer_sh_stop(void);
void mixer_sh_update(void);
int mixer_allocate_channel(int default_mixing_level);
int mixer_allocate_channels(int channels,const int *default_mixing_levels);
void mixer_set_name(int channel,const char *name);
const char *mixer_get_name(int channel);
# 87 "src/sound/mixer.h"
void mixer_set_volume(int channel,int volume);

void mixer_play_sample(int channel,INT8 *data,int len,int freq,int loop);
void mixer_play_sample_16(int channel,INT16 *data,int len,int freq,int loop);
void mixer_stop_sample(int channel);
int mixer_is_sample_playing(int channel);
void mixer_set_sample_frequency(int channel,int freq);
void mixer_sound_enable_global_w(int enable);

void mixer_play_streamed_sample_16(int channel,INT16 *data,int len,int freq);
int mixer_samples_this_frame(void);
int mixer_need_samples_this_frame(int channel,int freq);
void mixer_set_lowpass_frequency(int ch, int freq);


void mixer_set_mixing_level(int channel,int level);
int mixer_get_mixing_level(int level);
int mixer_get_default_mixing_level(int level);

void mixer_read_config(void *f);
void mixer_write_config(void *f);

void mixer_set_stereo_volume(int ch, int l_vol, int r_vol );
# 13 "src/sndintrf.h" 2
# 1 "src/sound/streams.h" 1







void set_RC_filter(int channel,int R1,int R2,int R3,int C);

int streams_sh_start(void);
void streams_sh_stop(void);
void streams_sh_update(void);

int stream_init(const char *name,int default_mixing_level,
                int sample_rate,
                int param,void (*callback)(int param,INT16 *buffer,int length));
int stream_init_multi(int channels,const char **names,const int *default_mixing_levels,
                int sample_rate,
                int param,void (*callback)(int param,INT16 **buffer,int length));
void stream_update(int channel,int min_interval);
# 14 "src/sndintrf.h" 2


# 1 "src/sound/samples.h" 1



struct Samplesinterface
{
        int channels;
        int volume;
        const char **samplenames;
};





void sample_start(int channel,int samplenum,int loop);
void sample_set_freq(int channel,int freq);
void sample_set_volume(int channel,int volume);
void sample_stop(int channel);
int sample_playing(int channel);

int samples_sh_start(const struct MachineSound *msound);
# 17 "src/sndintrf.h" 2


# 1 "src/sound/dac.h" 1
# 10 "src/sound/dac.h"
struct DACinterface
{
        int num;
        int mixing_level[4];
};

int DAC_sh_start(const struct MachineSound *msound);
void DAC_data_w(int num,int data);
void DAC_signed_data_w(int num,int data);
void DAC_data_16_w(int num,int data);
void DAC_signed_data_16_w(int num,int data);

void DAC_0_data_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void DAC_1_data_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void DAC_0_signed_data_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void DAC_1_signed_data_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 20 "src/sndintrf.h" 2


# 1 "src/sound/discrete.h" 1
# 412 "src/sound/discrete.h"
struct discrete_sound_block
{
        int node;
        int type;
        int input_node0;
        int input_node1;
        int input_node2;
        int input_node3;
        int input_node4;
        int input_node5;
        double initial0;
        double initial1;
        double initial2;
        double initial3;
        double initial4;
        double initial5;
};

struct node_description
{
        int node;
        int module;
        double output;
        struct node_description *input_node0;
        struct node_description *input_node1;
        struct node_description *input_node2;
        struct node_description *input_node3;
        struct node_description *input_node4;
        struct node_description *input_node5;
        double input0;
        double input1;
        double input2;
        double input3;
        double input4;
        double input5;
        void *context;
};

struct discrete_module
{
        int type;
        char *name;
        int (*init) (struct node_description *node);
        int (*kill) (struct node_description *node);
        int (*reset) (struct node_description *node);
        int (*step) (struct node_description *node);
};

enum { NODE_00=0x40000000
              , NODE_01, NODE_02, NODE_03, NODE_04, NODE_05, NODE_06, NODE_07, NODE_08, NODE_09,
       NODE_10, NODE_11, NODE_12, NODE_13, NODE_14, NODE_15, NODE_16, NODE_17, NODE_18, NODE_19,
       NODE_20, NODE_21, NODE_22, NODE_23, NODE_24, NODE_25, NODE_26, NODE_27, NODE_28, NODE_29,
       NODE_30, NODE_31, NODE_32, NODE_33, NODE_34, NODE_35, NODE_36, NODE_37, NODE_38, NODE_39,
       NODE_40, NODE_41, NODE_42, NODE_43, NODE_44, NODE_45, NODE_46, NODE_47, NODE_48, NODE_49,
       NODE_50, NODE_51, NODE_52, NODE_53, NODE_54, NODE_55, NODE_56, NODE_57, NODE_58, NODE_59,
       NODE_60, NODE_61, NODE_62, NODE_63, NODE_64, NODE_65, NODE_66, NODE_67, NODE_68, NODE_69,
       NODE_70, NODE_71, NODE_72, NODE_73, NODE_74, NODE_75, NODE_76, NODE_77, NODE_78, NODE_79,
       NODE_80, NODE_81, NODE_82, NODE_83, NODE_84, NODE_85, NODE_86, NODE_87, NODE_88, NODE_89,
       NODE_90, NODE_91, NODE_92, NODE_93, NODE_94, NODE_95, NODE_96, NODE_97, NODE_98, NODE_99 };
# 490 "src/sound/discrete.h"
enum {

                DSS_NULL,
                DSS_CONSTANT,
                DSS_INPUT,
                DSS_NOISE,
                DSS_SQUAREWAVE,
                DSS_SINEWAVE,
                DSS_ONESHOT,



                DST_RCFILTER,


                DST_GAIN,

                DST_ADDER,


                DSD_NE555,



                DSO_OUTPUT
};
# 555 "src/sound/discrete.h"
int discrete_sh_start (const struct MachineSound *msound);
void discrete_sh_stop (void);
void discrete_sh_reset (void);
void discrete_sh_update (void);

void discrete_sound_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t discrete_sound_r(offs_t offset __attribute__((__unused__)));
# 23 "src/sndintrf.h" 2


# 1 "src/sound/ay8910.h" 1







struct AY8910interface
{
        int num;
        int baseclock;
        int mixing_level[5];
        mem_read_handler portAread[5];
        mem_read_handler portBread[5];
        mem_write_handler portAwrite[5];
        mem_write_handler portBwrite[5];
        void (*handler[5])(int irq);
};

void AY8910_reset(int chip);

void AY8910_set_clock(int chip,int _clock);
void AY8910_set_volume(int chip,int channel,int volume);


void AY8910Write(int chip,int a,int data);
int AY8910Read(int chip);


data8_t AY8910_read_port_0_r(offs_t offset __attribute__((__unused__)));
data8_t AY8910_read_port_1_r(offs_t offset __attribute__((__unused__)));
data8_t AY8910_read_port_2_r(offs_t offset __attribute__((__unused__)));
data8_t AY8910_read_port_3_r(offs_t offset __attribute__((__unused__)));
data8_t AY8910_read_port_4_r(offs_t offset __attribute__((__unused__)));
data16_t AY8910_read_port_0_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_1_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_2_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_3_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_4_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_0_msb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_1_msb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_2_msb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_3_msb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t AY8910_read_port_4_msb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

void AY8910_control_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_control_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_control_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_control_port_3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_control_port_4_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_control_port_0_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_1_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_2_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_3_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_4_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_0_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_1_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_2_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_3_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_control_port_4_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

void AY8910_write_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_write_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_write_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_write_port_3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_write_port_4_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void AY8910_write_port_0_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_1_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_2_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_3_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_4_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_0_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_1_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_2_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_3_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void AY8910_write_port_4_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

int AY8910_sh_start(const struct MachineSound *msound);
# 26 "src/sndintrf.h" 2


# 1 "src/sound/2203intf.h" 1



# 1 "src/sound/ay8910.h" 1
# 5 "src/sound/2203intf.h" 2
# 13 "src/sound/2203intf.h"
data8_t YM2203_status_port_0_r(offs_t offset __attribute__((__unused__)));
data8_t YM2203_status_port_1_r(offs_t offset __attribute__((__unused__)));
data8_t YM2203_status_port_2_r(offs_t offset __attribute__((__unused__)));
data8_t YM2203_status_port_3_r(offs_t offset __attribute__((__unused__)));
data8_t YM2203_status_port_4_r(offs_t offset __attribute__((__unused__)));

data8_t YM2203_read_port_0_r(offs_t offset __attribute__((__unused__)));
data8_t YM2203_read_port_1_r(offs_t offset __attribute__((__unused__)));
data8_t YM2203_read_port_2_r(offs_t offset __attribute__((__unused__)));
data8_t YM2203_read_port_3_r(offs_t offset __attribute__((__unused__)));
data8_t YM2203_read_port_4_r(offs_t offset __attribute__((__unused__)));

void YM2203_control_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2203_control_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2203_control_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2203_control_port_3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2203_control_port_4_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void YM2203_write_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2203_write_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2203_write_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2203_write_port_3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2203_write_port_4_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

int YM2203_sh_start(const struct MachineSound *msound);
void YM2203_sh_stop(void);
void YM2203_sh_reset(void);

void YM2203UpdateRequest(int chip);
# 29 "src/sndintrf.h" 2


# 1 "src/sound/2608intf.h" 1



# 1 "src/sound/fm.h" 1
# 101 "src/sound/fm.h"
typedef INT16 FMSAMPLE;
typedef unsigned long FMSAMPLE_MIX;






typedef void (*FM_TIMERHANDLER)(int n,int c,int cnt,double stepTime);
typedef void (*FM_IRQHANDLER)(int n,int irq);
# 134 "src/sound/fm.h"
int YM2203Init(int num, int baseclock, int rate,
               FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);





void YM2203Shutdown(void);




void YM2203ResetChip(int num);




void YM2203UpdateOne(int num, INT16 *buffer, int length);





int YM2203Write(int n,int a,unsigned char v);




unsigned char YM2203Read(int n,int a);




int YM2203TimerOver(int n, int c);





int YM2608Init(int num, int baseclock, int rate,
               void **pcmroma,int *pcmsizea,short *rhythmrom,int *rhythmpos,
               FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
void YM2608Shutdown(void);
void YM2608ResetChip(int num);
void YM2608UpdateOne(int num, INT16 **buffer, int length);

int YM2608Write(int n, int a,unsigned char v);
unsigned char YM2608Read(int n,int a);
int YM2608TimerOver(int n, int c );




int YM2610Init(int num, int baseclock, int rate,
               void **pcmroma,int *pcmasize,void **pcmromb,int *pcmbsize,
               FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
void YM2610Shutdown(void);
void YM2610ResetChip(int num);
void YM2610UpdateOne(int num, INT16 **buffer, int length);

void YM2610BUpdateOne(int num, INT16 **buffer, int length);


int YM2610Write(int n, int a,unsigned char v);
unsigned char YM2610Read(int n,int a);
int YM2610TimerOver(int n, int c );




int YM2612Init(int num, int baseclock, int rate,
               FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler);
void YM2612Shutdown(void);
void YM2612ResetChip(int num);
void YM2612UpdateOne(int num, INT16 **buffer, int length);
int YM2612Write(int n, int a,unsigned char v);
unsigned char YM2612Read(int n,int a);
int YM2612TimerOver(int n, int c );
# 5 "src/sound/2608intf.h" 2

  void YM2608UpdateRequest(int chip);
# 16 "src/sound/2608intf.h"
struct YM2608interface{
        int num;
        int baseclock;
        int volumeSSG[5];
        mem_read_handler portAread[5];
        mem_read_handler portBread[5];
        mem_write_handler portAwrite[5];
        mem_write_handler portBwrite[5];
        void ( *handler[5] )( int irq );
        int pcmrom[(2)];
        int volumeFM[(2)];
};




int YM2608_sh_start(const struct MachineSound *msound);




void YM2608_sh_stop(void);

void YM2608_sh_reset(void);




data8_t YM2608_status_port_0_A_r(offs_t offset __attribute__((__unused__)));
data8_t YM2608_status_port_0_B_r(offs_t offset __attribute__((__unused__)));
data8_t YM2608_read_port_0_r(offs_t offset __attribute__((__unused__)));
void YM2608_control_port_0_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2608_control_port_0_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2608_data_port_0_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2608_data_port_0_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));




data8_t YM2608_status_port_1_A_r(offs_t offset __attribute__((__unused__)));
data8_t YM2608_status_port_1_B_r(offs_t offset __attribute__((__unused__)));
data8_t YM2608_read_port_1_r(offs_t offset __attribute__((__unused__)));
void YM2608_control_port_1_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2608_control_port_1_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2608_data_port_1_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2608_data_port_1_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 32 "src/sndintrf.h" 2


# 1 "src/sound/2612intf.h" 1



# 1 "src/sound/fm.h" 1
# 5 "src/sound/2612intf.h" 2

  void YM2612UpdateRequest(int chip);

# 1 "src/sound/ay8910.h" 1
# 9 "src/sound/2612intf.h" 2





int YM2612_sh_start(const struct MachineSound *msound);
void YM2612_sh_stop(void);
void YM2612_sh_reset(void);




data8_t YM2612_status_port_0_A_r(offs_t offset __attribute__((__unused__)));
data8_t YM2612_status_port_0_B_r(offs_t offset __attribute__((__unused__)));
data8_t YM2612_read_port_0_r(offs_t offset __attribute__((__unused__)));
void YM2612_control_port_0_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2612_control_port_0_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2612_data_port_0_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2612_data_port_0_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));




data8_t YM2612_status_port_1_A_r(offs_t offset __attribute__((__unused__)));
data8_t YM2612_status_port_1_B_r(offs_t offset __attribute__((__unused__)));
data8_t YM2612_read_port_1_r(offs_t offset __attribute__((__unused__)));
void YM2612_control_port_1_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2612_control_port_1_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2612_data_port_1_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2612_data_port_1_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 35 "src/sndintrf.h" 2


# 1 "src/sound/2151intf.h" 1
# 12 "src/sound/2151intf.h"
struct YM2151interface
{
        int num;
        int baseclock;
        int volume[2];
        void (*irqhandler[2])(int irq);
        mem_write_handler portwritehandler[2];
};

data8_t YM2151_status_port_0_r(offs_t offset __attribute__((__unused__)));
data8_t YM2151_status_port_1_r(offs_t offset __attribute__((__unused__)));
data8_t YM2151_status_port_2_r(offs_t offset __attribute__((__unused__)));

void YM2151_register_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2151_register_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2151_register_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void YM2151_data_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2151_data_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2151_data_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

data16_t YM2151_status_port_0_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t YM2151_status_port_1_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t YM2151_status_port_2_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

void YM2151_register_port_0_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2151_register_port_1_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2151_register_port_2_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

void YM2151_data_port_0_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2151_data_port_1_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2151_data_port_2_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

int YM2151_sh_start(const struct MachineSound *msound);
void YM2151_sh_stop(void);
void YM2151_sh_reset(void);

void YM2151UpdateRequest(int chip);
# 38 "src/sndintrf.h" 2


# 1 "src/sound/2608intf.h" 1
# 41 "src/sndintrf.h" 2


# 1 "src/sound/2610intf.h" 1



# 1 "src/sound/fm.h" 1
# 5 "src/sound/2610intf.h" 2

  void YM2610UpdateRequest(int chip);
# 16 "src/sound/2610intf.h"
struct YM2610interface
{
        int num;
        int baseclock;
        int volumeSSG[5];
        mem_read_handler portAread[5];
        mem_read_handler portBread[5];
        mem_write_handler portAwrite[5];
        mem_write_handler portBwrite[5];
        void ( *handler[5] )( int irq );
        int pcmromb[(2)];
        int pcmroma[(2)];
        int volumeFM[(2)];
};




int YM2610_sh_start(const struct MachineSound *msound);
int YM2610B_sh_start(const struct MachineSound *msound);




void YM2610_sh_stop(void);

void YM2610_sh_reset(void);




data8_t YM2610_status_port_0_A_r(offs_t offset __attribute__((__unused__)));
data16_t YM2610_status_port_0_A_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data8_t YM2610_status_port_0_B_r(offs_t offset __attribute__((__unused__)));
data16_t YM2610_status_port_0_B_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data8_t YM2610_read_port_0_r(offs_t offset __attribute__((__unused__)));
data16_t YM2610_read_port_0_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2610_control_port_0_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2610_control_port_0_A_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2610_control_port_0_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2610_control_port_0_B_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2610_data_port_0_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2610_data_port_0_A_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2610_data_port_0_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2610_data_port_0_B_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));




data8_t YM2610_status_port_1_A_r(offs_t offset __attribute__((__unused__)));
data16_t YM2610_status_port_1_A_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data8_t YM2610_status_port_1_B_r(offs_t offset __attribute__((__unused__)));
data16_t YM2610_status_port_1_B_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data8_t YM2610_read_port_1_r(offs_t offset __attribute__((__unused__)));
data16_t YM2610_read_port_1_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2610_control_port_1_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2610_control_port_1_A_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2610_control_port_1_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2610_control_port_1_B_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2610_data_port_1_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2610_data_port_1_A_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2610_data_port_1_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2610_data_port_1_B_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
# 44 "src/sndintrf.h" 2


# 1 "src/sound/3812intf.h" 1







struct YM3812interface
{
        int num;
        int baseclock;
        int mixing_level[2];
        void (*handler[2])(int linestate);
};

struct Y8950interface
{
        int num;
        int baseclock;
        int mixing_level[2];
        void (*handler[2])(int linestate);

        int rom_region[2];
        mem_read_handler keyboardread[2];
        mem_write_handler keyboardwrite[2];
        mem_read_handler portread[2];
        mem_write_handler portwrite[2];
};




data8_t YM3812_status_port_0_r(offs_t offset __attribute__((__unused__)));
void YM3812_control_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM3812_write_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t YM3812_status_port_1_r(offs_t offset __attribute__((__unused__)));
void YM3812_control_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM3812_write_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

int YM3812_sh_start(const struct MachineSound *msound);
void YM3812_sh_stop(void);
void YM3812_sh_reset(void);
# 51 "src/sound/3812intf.h"
int YM3526_sh_start(const struct MachineSound *msound);






data8_t Y8950_read_port_0_r(offs_t offset __attribute__((__unused__)));



data8_t Y8950_read_port_1_r(offs_t offset __attribute__((__unused__)));

int Y8950_sh_start(const struct MachineSound *msound);
# 47 "src/sndintrf.h" 2


# 1 "src/sound/2413intf.h" 1





struct YM2413interface
{
        int num;
        int baseclock;
        int mixing_level[(4)];
};

void YM2413_register_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2413_register_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2413_register_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2413_register_port_3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2413_data_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2413_data_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2413_data_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YM2413_data_port_3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void YM2413_register_port_0_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2413_register_port_1_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2413_register_port_2_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2413_register_port_3_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2413_data_port_0_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2413_data_port_1_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2413_data_port_2_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void YM2413_data_port_3_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

int YM2413_sh_start (const struct MachineSound *msound);
void YM2413_sh_stop (void);
void YM2413_sh_reset (void);
# 50 "src/sndintrf.h" 2


# 1 "src/sound/ymz280b.h" 1
# 17 "src/sound/ymz280b.h"
struct YMZ280Binterface
{
        int num;
        int baseclock[2];
        int region[2];
        int mixing_level[2];
        void (*irq_callback[2])(int state);
};

int YMZ280B_sh_start(const struct MachineSound *msound);
void YMZ280B_sh_stop(void);
void YMZ280B_set_sample_base(int which, void *base);

data8_t YMZ280B_status_0_r(offs_t offset __attribute__((__unused__)));
data8_t YMZ280B_status_1_r(offs_t offset __attribute__((__unused__)));
void YMZ280B_register_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YMZ280B_register_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YMZ280B_data_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void YMZ280B_data_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 53 "src/sndintrf.h" 2


# 1 "src/sound/sn76477.h" 1
# 40 "src/sound/sn76477.h"
struct SN76477interface {
        int num;
        int mixing_level[4];
        double noise_res[4];
        double filter_res[4];
        double filter_cap[4];
        double decay_res[4];
        double attack_decay_cap[4];
        double attack_res[4];
        double amplitude_res[4];
        double feedback_res[4];
        double vco_voltage[4];
    double vco_cap[4];
    double vco_res[4];
    double pitch_voltage[4];
    double slf_res[4];
    double slf_cap[4];
    double oneshot_cap[4];
    double oneshot_res[4];
};


extern void SN76477_noise_clock_w(int chip, int data);


extern void SN76477_enable_w(int chip, int data);


extern void SN76477_mixer_w(int chip, int data);


extern void SN76477_mixer_a_w(int chip, int data);
extern void SN76477_mixer_b_w(int chip, int data);
extern void SN76477_mixer_c_w(int chip, int data);


extern void SN76477_envelope_w(int chip, int data);


extern void SN76477_envelope_1_w(int chip, int data);
extern void SN76477_envelope_2_w(int chip, int data);


extern void SN76477_vco_w(int chip, int data);

void SN76477_set_noise_res(int chip, double res);
void SN76477_set_filter_res(int chip, double res);
void SN76477_set_filter_cap(int chip, double cap);
void SN76477_set_decay_res(int chip, double res);
void SN76477_set_attack_decay_cap(int chip, double cap);
void SN76477_set_attack_res(int chip, double res);
void SN76477_set_amplitude_res(int chip, double res);
void SN76477_set_feedback_res(int chip, double res);
void SN76477_set_slf_res(int chip, double res);
void SN76477_set_slf_cap(int chip, double cap);
void SN76477_set_oneshot_res(int chip, double res);
void SN76477_set_oneshot_cap(int chip, double cap);
void SN76477_set_vco_res(int chip, double res);
void SN76477_set_vco_cap(int chip, double cap);
void SN76477_set_pitch_voltage(int chip, double voltage);
void SN76477_set_vco_voltage(int chip, double voltage);

int SN76477_sh_start(const struct MachineSound *msound);
void SN76477_sh_stop(void);
void SN76477_sh_update(void);
# 56 "src/sndintrf.h" 2


# 1 "src/sound/sn76496.h" 1





struct SN76496interface
{
        int num;
        int baseclock[4];
        int volume[4];
};

int SN76496_sh_start(const struct MachineSound *msound);
void SN76496_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void SN76496_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void SN76496_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void SN76496_3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 59 "src/sndintrf.h" 2


# 1 "src/sound/pokey.h" 1
# 20 "src/sound/pokey.h"
# 1 "src/unix/osd_cpu.h" 1
# 21 "src/sound/pokey.h" 2
# 81 "src/sound/pokey.h"
struct POKEYinterface {
        int num;
        int baseclock;
        int mixing_level[4];
        mem_read_handler pot0_r[4];
        mem_read_handler pot1_r[4];
        mem_read_handler pot2_r[4];
        mem_read_handler pot3_r[4];
        mem_read_handler pot4_r[4];
        mem_read_handler pot5_r[4];
        mem_read_handler pot6_r[4];
        mem_read_handler pot7_r[4];
        mem_read_handler allpot_r[4];
        mem_read_handler serin_r[4];
        mem_write_handler serout_w[4];
        void (*interrupt_cb[4])(int mask);
};


int pokey_sh_start (const struct MachineSound *msound);
void pokey_sh_stop (void);

data8_t pokey1_r(offs_t offset __attribute__((__unused__)));
data8_t pokey2_r(offs_t offset __attribute__((__unused__)));
data8_t pokey3_r(offs_t offset __attribute__((__unused__)));
data8_t pokey4_r(offs_t offset __attribute__((__unused__)));
data8_t quad_pokey_r(offs_t offset __attribute__((__unused__)));

void pokey1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void pokey2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void pokey3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void pokey4_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void quad_pokey_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void pokey1_serin_ready (int after);
void pokey2_serin_ready (int after);
void pokey3_serin_ready (int after);
void pokey4_serin_ready (int after);

void pokey1_break_w (int shift);
void pokey2_break_w (int shift);
void pokey3_break_w (int shift);
void pokey4_break_w (int shift);

void pokey1_kbcode_w (int kbcode, int make);
void pokey2_kbcode_w (int kbcode, int make);
void pokey3_kbcode_w (int kbcode, int make);
void pokey4_kbcode_w (int kbcode, int make);
# 62 "src/sndintrf.h" 2



# 1 "src/sound/nes_apu.h" 1
# 27 "src/sound/nes_apu.h"
# 1 "src/driver.h" 1
# 28 "src/sound/nes_apu.h" 2
# 37 "src/sound/nes_apu.h"
struct NESinterface
{
   int num;
   int region[2];
   int volume[2];
};

data8_t NESPSG_0_r(offs_t offset __attribute__((__unused__)));
data8_t NESPSG_1_r(offs_t offset __attribute__((__unused__)));
void NESPSG_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void NESPSG_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

extern int NESPSG_sh_start(const struct MachineSound *);
extern void NESPSG_sh_stop(void);
extern void NESPSG_sh_update(void);
# 66 "src/sndintrf.h" 2





# 1 "src/sound/astrocde.h" 1






struct astrocade_interface
{
        int num;
        int baseclock;
        int volume[2];
};

int astrocade_sh_start(const struct MachineSound *msound);
void astrocade_sh_stop(void);
void astrocade_sh_update(void);

void astrocade_sound1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void astrocade_sound2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 72 "src/sndintrf.h" 2


# 1 "src/sound/namco.h" 1



struct namco_interface
{
        int samplerate;
        int voices;
        int volume;
        int region;
        int stereo;
};

int namco_sh_start(const struct MachineSound *msound);
void namco_sh_stop(void);

void pengo_sound_enable_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void pengo_sound_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void polepos_sound_enable_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void polepos_sound_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void mappy_sound_enable_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void mappy_sound_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void namcos1_sound_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void namcos1_wavedata_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t namcos1_sound_r(offs_t offset __attribute__((__unused__)));
data8_t namcos1_wavedata_r(offs_t offset __attribute__((__unused__)));

extern unsigned char *namco_soundregs;
extern unsigned char *namco_wavedata;
# 75 "src/sndintrf.h" 2


# 1 "src/sound/tms36xx.h" 1
# 12 "src/sound/tms36xx.h"
struct TMS36XXinterface {
        int num;
        int mixing_level[4];
        int subtype[4];
        int basefreq[4];
        double decay[4][6];
        double speed[4];
};

extern int tms36xx_sh_start(const struct MachineSound *msound);
extern void tms36xx_sh_stop(void);
extern void tms36xx_sh_update(void);


extern void mm6221aa_tune_w(int chip, int tune);


extern void tms36xx_note_w(int chip, int octave, int note);


extern void tms3617_enable_w(int chip, int enable);
# 78 "src/sndintrf.h" 2


# 1 "src/sound/5110intf.h" 1



struct TMS5110interface
{
        int baseclock;


        int mixing_level;
        void (*irq)(int state);
        int (*M0_callback)(void);
};

int tms5110_sh_start(const struct MachineSound *msound);
void tms5110_sh_stop(void);
void tms5110_sh_update(void);

void tms5110_CTL_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void tms5110_PDC_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

data8_t tms5110_status_r(offs_t offset __attribute__((__unused__)));
int tms5110_ready_r(void);

void tms5110_reset(void);
void tms5110_set_frequency(int frequency);
# 81 "src/sndintrf.h" 2


# 1 "src/sound/5220intf.h" 1



struct TMS5220interface
{
        int baseclock;


        int mixing_level;
        void (*irq)(int state);
};

int tms5220_sh_start(const struct MachineSound *msound);
void tms5220_sh_stop(void);
void tms5220_sh_update(void);

void tms5220_data_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t tms5220_status_r(offs_t offset __attribute__((__unused__)));
int tms5220_ready_r(void);
int tms5220_int_r(void);

void tms5220_reset(void);
void tms5220_set_frequency(int frequency);
# 84 "src/sndintrf.h" 2


# 1 "src/sound/vlm5030.h" 1



struct VLM5030interface
{
        int baseclock;
        int volume;
        int memory_region;
        int memory_size;
        const char **samplenames;
};


int VLM5030_sh_start(const struct MachineSound *msound);
void VLM5030_sh_stop (void);
void VLM5030_sh_update (void);


void VLM5030_set_rom(void *speech_rom);


int VLM5030_BSY(void);

void VLM5030_data_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void VLM5030_RST (int pin );

void VLM5030_VCU(int pin );

void VLM5030_ST(int pin );
# 87 "src/sndintrf.h" 2


# 1 "src/sound/adpcm.h" 1
# 9 "src/sound/adpcm.h"
struct ADPCMinterface
{
        int num;
        int frequency;
        int region;
        int mixing_level[8];
};

int ADPCM_sh_start(const struct MachineSound *msound);
void ADPCM_sh_stop(void);
void ADPCM_sh_update(void);

void ADPCM_play(int num, int offset, int length);
void ADPCM_setvol(int num, int vol);
void ADPCM_stop(int num);
int ADPCM_playing(int num);
# 37 "src/sound/adpcm.h"
struct OKIM6295interface
{
        int num;
        int frequency[2];
        int region[2];
        int mixing_level[2];
};

int OKIM6295_sh_start(const struct MachineSound *msound);
void OKIM6295_sh_stop(void);
void OKIM6295_sh_update(void);
void OKIM6295_set_bank_base(int which, int base);
void OKIM6295_set_frequency(int which, int frequency);

data8_t OKIM6295_status_0_r(offs_t offset __attribute__((__unused__)));
data8_t OKIM6295_status_1_r(offs_t offset __attribute__((__unused__)));
data16_t OKIM6295_status_0_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t OKIM6295_status_1_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t OKIM6295_status_0_msb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t OKIM6295_status_1_msb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void OKIM6295_data_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void OKIM6295_data_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void OKIM6295_data_0_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void OKIM6295_data_1_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void OKIM6295_data_0_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void OKIM6295_data_1_msb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
# 90 "src/sndintrf.h" 2


# 1 "src/sound/msm5205.h" 1
# 19 "src/sound/msm5205.h"
struct MSM5205interface
{
        int num;
        int baseclock;
        void (*vclk_interrupt[4])(int);
        int select[4];
        int mixing_level[4];
};

int MSM5205_sh_start (const struct MachineSound *msound);
void MSM5205_sh_stop (void);
void MSM5205_sh_update (void);
void MSM5205_sh_reset (void);


void MSM5205_reset_w (int num, int reset);

void MSM5205_data_w (int num, int data);



void MSM5205_vclk_w (int num, int reset);

void MSM5205_playmode_w(int num,int _select);

void MSM5205_set_volume(int num,int volume);
# 93 "src/sndintrf.h" 2


# 1 "src/sound/upd7759.h" 1
# 16 "src/sound/upd7759.h"
struct UPD7759_interface
{
        int num;
        int clock_rate;
        int volume[2];
        int region[2];
        int mode;
        void (*irqcallback[2])(int param);
};

int UPD7759_sh_start (const struct MachineSound *msound);
void UPD7759_sh_stop (void);

void UPD7759_set_bank_base(int which, offs_t base);

void UPD7759_reset_w (int num, int data);
void UPD7759_message_w (int num, int which);
void UPD7759_start_w (int num, int playback);
int UPD7759_busy_r (int num);
int UPD7759_data_r (int num, int offs);

void UPD7759_0_message_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void UPD7759_0_start_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t UPD7759_0_busy_r(offs_t offset __attribute__((__unused__)));
data8_t UPD7759_0_data_r(offs_t offset __attribute__((__unused__)));
data8_t UPD7759_1_data_r(offs_t offset __attribute__((__unused__)));
# 96 "src/sndintrf.h" 2


# 1 "src/sound/hc55516.h" 1





struct hc55516_interface
{
        int num;
        int volume[4];
};

int hc55516_sh_start(const struct MachineSound *msound);


void hc55516_digit_w(int num, int data);


void hc55516_clock_w(int num, int state);


void hc55516_clock_clear_w(int num, int data);
void hc55516_clock_set_w(int num, int data);


void hc55516_digit_clock_clear_w(int num, int data);

void hc55516_0_digit_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void hc55516_0_clock_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void hc55516_0_clock_clear_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void hc55516_0_clock_set_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void hc55516_0_digit_clock_clear_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 99 "src/sndintrf.h" 2


# 1 "src/sound/k005289.h" 1



struct k005289_interface
{
        int master_clock;
        int volume;
        int region;
};

int K005289_sh_start(const struct MachineSound *msound);
void K005289_sh_stop(void);

void k005289_control_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void k005289_control_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void k005289_pitch_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void k005289_pitch_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void k005289_keylatch_A_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void k005289_keylatch_B_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 102 "src/sndintrf.h" 2


# 1 "src/sound/k007232.h" 1
# 10 "src/sound/k007232.h"
struct K007232_interface
{
        int num_chips;
        int bank[3];
        int volume[3];
        void (*portwritehandler[3])(int);
};



int K007232_sh_start(const struct MachineSound *msound);

void K007232_write_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void K007232_write_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void K007232_write_port_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t K007232_read_port_0_r(offs_t offset __attribute__((__unused__)));
data8_t K007232_read_port_1_r(offs_t offset __attribute__((__unused__)));
data8_t K007232_read_port_2_r(offs_t offset __attribute__((__unused__)));

void K007232_bankswitch(int chip,unsigned char *ptr_A,unsigned char *ptr_B);
# 39 "src/sound/k007232.h"
void K007232_set_volume(int chip,int channel,int volumeA,int volumeB);
# 105 "src/sndintrf.h" 2


# 1 "src/sound/k051649.h" 1



struct k051649_interface
{
        int master_clock;
        int volume;
};

int K051649_sh_start(const struct MachineSound *msound);
void K051649_sh_stop(void);

void K051649_waveform_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void K051649_volume_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void K051649_frequency_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void K051649_keyonoff_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void K052539_waveform_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 108 "src/sndintrf.h" 2


# 1 "src/sound/k053260.h" 1
# 11 "src/sound/k053260.h"
struct K053260_interface {
        int num;
        int clock[2];
        int region[2];
        int mixing_level[2][2];
        void (*irq[2])( int param );
};


int K053260_sh_start( const struct MachineSound *msound );
void K053260_sh_stop( void );

void K053260_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void K053260_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t K053260_0_r(offs_t offset __attribute__((__unused__)));
data8_t K053260_1_r(offs_t offset __attribute__((__unused__)));
void K053260_0_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t K053260_0_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void K053260_1_lsb_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t K053260_1_lsb_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
# 111 "src/sndintrf.h" 2


# 1 "src/sound/k054539.h" 1
# 11 "src/sound/k054539.h"
struct K054539interface {
        int num;
        int clock;
        int region[2];
        int mixing_level[2][2];
        void (*apan[2])(double, double);
        void (*irq[2])( void );
};


int K054539_sh_start( const struct MachineSound *msound );
void K054539_sh_stop( void );
void K054539_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t K054539_0_r(offs_t offset __attribute__((__unused__)));
void K054539_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t K054539_1_r(offs_t offset __attribute__((__unused__)));
# 114 "src/sndintrf.h" 2


# 1 "src/sound/segapcm.h" 1
# 18 "src/sound/segapcm.h"
enum
{
        L_PAN = 0,
        R_PAN = 1,
        LR_PAN = 2
};





typedef struct segapcm
{
        char writeram[0x1000];

        unsigned char gain[(16)][LR_PAN];
        unsigned char addr_l[(16)];
        unsigned char addr_h[(16)];
        unsigned char bank[(16)];
        unsigned char end_h[(16)];
        unsigned char delta_t[(16)];

        int vol[(16)][LR_PAN];

        unsigned int add_addr[(16)];
        unsigned int step[(16)];
        int flag[(16)];
        int bankshift;
        int bankmask;

        int pcmd[(16)];
        int pcma[(16)];
} SEGAPCM;

struct SEGAPCMinterface
{
        int mode;
        int bank;
        int region;
        int volume;
};

enum SEGAPCM_samplerate
{
        SEGAPCM_SAMPLE15K,
        SEGAPCM_SAMPLE32K
};


int SEGAPCM_sh_start( const struct MachineSound *msound );
void SEGAPCM_sh_stop( void );
void SEGAPCM_sh_update( void );

int SEGAPCMInit( const struct MachineSound *msound, int banksize, int mode, unsigned char *inpcm, int volume );
void SEGAPCMShutdown( void );
void SEGAPCMResetChip( void );
void SegaPCM_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t SegaPCM_r(offs_t offset __attribute__((__unused__)));
# 117 "src/sndintrf.h" 2


# 1 "src/sound/rf5c68.h" 1
# 11 "src/sound/rf5c68.h"
typedef struct rf5c68pcm
{
        int clock;
        unsigned char env[(8)];
        unsigned char pan[(8)];
        unsigned int addr[(8)];
        unsigned int start[(8)];
        unsigned int step[(8)];
        unsigned int loop[(8)];
        int pcmx[2][(8)];
        int flag[(8)];

        int pcmd[(8)];
        int pcma[(8)];
} RF5C68PCM;

struct RF5C68interface
{
        int clock;
        int volume;
};


int RF5C68_sh_start( const struct MachineSound *msound );
void RF5C68_sh_stop( void );
void RF5C68_reg_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

data8_t RF5C68_r(offs_t offset __attribute__((__unused__)));
void RF5C68_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 120 "src/sndintrf.h" 2


# 1 "src/sound/cem3394.h" 1






struct cem3394_interface
{
        int numchips;
        int volume[6];
        double vco_zero_freq[6];
        double filter_zero_freq[6];
        void (*external[6])(int, int, short *);
};


enum
{
        CEM3394_VCO_FREQUENCY = 0,
        CEM3394_MODULATION_AMOUNT,
        CEM3394_WAVE_SELECT,
        CEM3394_PULSE_WIDTH,
        CEM3394_MIXER_BALANCE,
        CEM3394_FILTER_RESONANCE,
        CEM3394_FILTER_FREQENCY,
        CEM3394_FINAL_GAIN
};

int cem3394_sh_start(const struct MachineSound *msound);
void cem3394_sh_stop(void);


void cem3394_set_voltage(int chip, int input, double voltage);
# 44 "src/sound/cem3394.h"
double cem3394_get_parameter(int chip, int input);
# 123 "src/sndintrf.h" 2


# 1 "src/sound/c140.h" 1





int C140_sh_start( const struct MachineSound *msound );
void C140_sh_stop( void );
void C140_sh_update( void );
data8_t C140_r(offs_t offset __attribute__((__unused__)));
void C140_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

struct C140interface {
    int frequency;
    int region;
    int mixing_level;
};
# 126 "src/sndintrf.h" 2


# 1 "src/sound/qsound.h" 1
# 12 "src/sound/qsound.h"
struct QSound_interface {
        int clock;
        int region;
        int mixing_level[2];
};

int qsound_sh_start( const struct MachineSound *msound );
void qsound_sh_stop( void );

void qsound_data_h_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void qsound_data_l_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void qsound_cmd_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t qsound_status_r(offs_t offset __attribute__((__unused__)));
# 129 "src/sndintrf.h" 2


# 1 "src/sound/saa1099.h" 1
# 11 "src/sound/saa1099.h"
struct SAA1099_interface
{
        int numchips;
        int volume[2][2];
};





int saa1099_sh_start(const struct MachineSound *msound);
void saa1099_sh_stop(void);

void saa1099_control_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void saa1099_write_port_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void saa1099_control_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void saa1099_write_port_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
# 132 "src/sndintrf.h" 2


# 1 "src/sound/iremga20.h" 1
# 9 "src/sound/iremga20.h"
struct IremGA20_interface {
        int clock;
        int region;
        int mixing_level[2];
};

int IremGA20_sh_start( const struct MachineSound *msound );
void IremGA20_sh_stop( void );
void IremGA20_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t IremGA20_r(offs_t offset __attribute__((__unused__)));
# 135 "src/sndintrf.h" 2


# 1 "src/sound/es5506.h" 1
# 13 "src/sound/es5506.h"
struct ES5505interface
{
        int num;
        int baseclock[2];
        int region0[2];
        int region1[2];
        int mixing_level[2];
        void (*irq_callback[2])(int state);
        UINT16 (*read_port[2])(void);
};

int ES5505_sh_start(const struct MachineSound *msound);
void ES5505_sh_stop(void);

data16_t ES5505_data_0_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t ES5505_data_1_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void ES5505_data_0_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void ES5505_data_1_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));






struct ES5506interface
{
        int num;
        int baseclock[2];
        int region0[2];
        int region1[2];
        int region2[2];
        int region3[2];
        int mixing_level[2];
        void (*irq_callback[2])(int state);
        UINT16 (*read_port[2])(void);
};

int ES5506_sh_start(const struct MachineSound *msound);
void ES5506_sh_stop(void);

data8_t ES5506_data_0_r(offs_t offset __attribute__((__unused__)));
data8_t ES5506_data_1_r(offs_t offset __attribute__((__unused__)));
void ES5506_data_0_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void ES5506_data_1_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));

void ES5506_voice_bank_0_w(int voice, int bank);
void ES5506_voice_bank_1_w(int voice, int bank);
# 138 "src/sndintrf.h" 2
# 159 "src/sndintrf.h"
enum
{
        SOUND_DUMMY,

        SOUND_CUSTOM,


        SOUND_SAMPLES,


        SOUND_DAC,


        SOUND_DISCRETE,


        SOUND_AY8910,


        SOUND_YM2203,





        SOUND_YM2151,


        SOUND_YM2608,


        SOUND_YM2610,


        SOUND_YM2610B,


        SOUND_YM2612,


        SOUND_YM3438,


        SOUND_YM2413,


        SOUND_YM3812,


        SOUND_YM3526,


        SOUND_YMZ280B,


        SOUND_Y8950,


        SOUND_SN76477,


        SOUND_SN76496,


        SOUND_POKEY,


        SOUND_NES,


        SOUND_ASTROCADE,


        SOUND_NAMCO,


        SOUND_TMS36XX,


        SOUND_TMS5110,


        SOUND_TMS5220,


        SOUND_VLM5030,


        SOUND_ADPCM,


        SOUND_OKIM6295,


        SOUND_MSM5205,


        SOUND_UPD7759,


        SOUND_HC55516,


        SOUND_K005289,


        SOUND_K007232,


        SOUND_K051649,


        SOUND_K053260,


        SOUND_K054539,


        SOUND_SEGAPCM,


        SOUND_RF5C68,


        SOUND_CEM3394,


        SOUND_C140,


        SOUND_QSOUND,


        SOUND_SAA1099,


        SOUND_IREMGA20,


        SOUND_ES5505,


        SOUND_ES5506,
# 318 "src/sndintrf.h"
        SOUND_COUNT
};



struct CustomSound_interface
{
        int (*sh_start)(const struct MachineSound *msound);
        void (*sh_stop)(void);
        void (*sh_update)(void);
};


int sound_start(void);
void sound_stop(void);
void sound_update(void);
void sound_reset(void);


const char *sound_name(const struct MachineSound *msound);

int sound_num(const struct MachineSound *msound);

int sound_clock(const struct MachineSound *msound);

int sound_scalebufferpos(int value);


data8_t soundlatch_r(offs_t offset __attribute__((__unused__)));
data8_t soundlatch2_r(offs_t offset __attribute__((__unused__)));
data8_t soundlatch3_r(offs_t offset __attribute__((__unused__)));
data8_t soundlatch4_r(offs_t offset __attribute__((__unused__)));
data16_t soundlatch_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t soundlatch2_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t soundlatch3_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data16_t soundlatch4_word_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

void soundlatch_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void soundlatch2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void soundlatch3_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void soundlatch4_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void soundlatch_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void soundlatch2_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void soundlatch3_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void soundlatch4_word_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

void soundlatch_clear_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void soundlatch2_clear_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void soundlatch3_clear_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void soundlatch4_clear_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));





void soundlatch_setclearedvalue(int value);
# 14 "src/driver.h" 2
# 1 "src/input.h" 1
# 15 "src/driver.h" 2
# 1 "src/inptport.h" 1
# 16 "src/driver.h" 2
# 1 "src/usrintrf.h" 1
# 12 "src/usrintrf.h"
struct DisplayText
{
        const char *text;
        int color;
        int x;
        int y;
};
# 28 "src/usrintrf.h"
struct GfxElement *builduifont(void);
void pick_uifont_colors(void);
void displaytext(struct osd_bitmap *bitmap,const struct DisplayText *dt);
void ui_text(struct osd_bitmap *bitmap,const char *buf,int x,int y);
void ui_drawbox(struct osd_bitmap *bitmap,int leftx,int topy,int width,int height);
void ui_displaymessagewindow(struct osd_bitmap *bitmap,const char *text);
void ui_displaymenu(struct osd_bitmap *bitmap,const char **items,const char **subitems,char *flag,int selected,int arrowize_subitem);
int showcopyright(struct osd_bitmap *bitmap);
int showgamewarnings(struct osd_bitmap *bitmap);
void set_ui_visarea (int xmin, int ymin, int xmax, int ymax);

void init_user_interface(void);
int handle_user_interface(struct osd_bitmap *bitmap);

int onscrd_active(void);
int setup_active(void);

void usrintf_showmessage(const char *text,...);
void usrintf_showmessage_secs(int seconds, const char *text,...);
# 17 "src/driver.h" 2
# 1 "src/cheat.h" 1
# 10 "src/cheat.h"
extern int he_did_cheat;

void InitCheat(void);
void StopCheat(void);

int cheat_menu(struct osd_bitmap *bitmap, int selection);
void DoCheat(struct osd_bitmap *bitmap);
# 18 "src/driver.h" 2
# 1 "src/tilemap.h" 1





struct tilemap;
# 42 "src/tilemap.h"
extern struct tile_info {






        UINT32 tile_number;
        const UINT8 *pen_data;
        const UINT32 *pal_data;
        UINT32 pen_usage;
        UINT32 flags;
        UINT32 priority;
        UINT8 *mask_data;
} tile_info;
# 91 "src/tilemap.h"
extern struct osd_bitmap *priority_bitmap;


int tilemap_init( void );
void tilemap_close( void );

void tilemap_debug( struct tilemap *tilemap );

struct tilemap *tilemap_create(
        void (*tile_get_info)( int memory_offset ),
        UINT32 (*get_memory_offset)( UINT32 col, UINT32 row, UINT32 num_cols, UINT32 num_rows ),
        int type,
        int tile_width, int tile_height,
        int num_cols, int num_rows
);

void tilemap_dispose( struct tilemap *tilemap );





void tilemap_set_transparent_pen( struct tilemap *tilemap, int pen );
void tilemap_set_transmask( struct tilemap *tilemap, int which, UINT32 penmask );
void tilemap_set_depth( struct tilemap *tilemap, int tile_depth, int tile_granularity );

void tilemap_mark_tile_dirty( struct tilemap *tilemap, int memory_offset );
void tilemap_mark_all_tiles_dirty( struct tilemap *tilemap );

void tilemap_dirty_palette( const UINT8 *dirty_pens );
void tilemap_dirty_color( int color );

void tilemap_set_scroll_rows( struct tilemap *tilemap, int scroll_rows );
void tilemap_set_scrolldx( struct tilemap *tilemap, int dx, int dx_if_flipped );
void tilemap_set_scrollx( struct tilemap *tilemap, int row, int value );

void tilemap_set_scroll_cols( struct tilemap *tilemap, int scroll_cols );
void tilemap_set_scrolldy( struct tilemap *tilemap, int dy, int dy_if_flipped );
void tilemap_set_scrolly( struct tilemap *tilemap, int col, int value );



void tilemap_set_flip( struct tilemap *tilemap, int attributes );
void tilemap_set_clip( struct tilemap *tilemap, const struct rectangle *clip );
void tilemap_set_enable( struct tilemap *tilemap, int enable );

void tilemap_update( struct tilemap *tilemap );
void tilemap_draw( struct osd_bitmap *dest, struct tilemap *tilemap, UINT32 flags, UINT32 priority );

struct osd_bitmap *tilemap_get_pixmap( struct tilemap * tilemap );



UINT32 tilemap_scan_cols( UINT32 col, UINT32 row, UINT32 num_cols, UINT32 num_rows );
UINT32 tilemap_scan_rows( UINT32 col, UINT32 row, UINT32 num_cols, UINT32 num_rows );
# 19 "src/driver.h" 2
# 1 "src/sprite.h" 1
# 13 "src/sprite.h"
typedef enum {
        SPRITE_TYPE_STACK = 0,
        SPRITE_TYPE_UNPACK,
        SPRITE_TYPE_ZOOM
} SpriteType;

struct sprite {
        int priority, flags;

        const UINT8 *pen_data;
        int line_offset;

        const UINT32 *pal_data;
        UINT32 pen_usage;

        int x_offset, y_offset;
        int tile_width, tile_height;
        int total_width, total_height;
        int x, y;

        int shadow_pen;

                      const struct sprite *next;
                      long mask_offset;
};
# 46 "src/sprite.h"
struct sprite_list {
        SpriteType sprite_type;
        int num_sprites;
        int flags;
        int max_priority;
        int transparent_pen;
        int special_pen;

        struct sprite *sprite;
        struct sprite_list *next;
};

void sprite_init( void );
void sprite_close( void );

struct sprite_list *sprite_list_create( int num_sprites, int flags );
void sprite_update( void );
void sprite_draw( struct sprite_list *sprite_list, int priority );

void sprite_set_shade_table(UINT32 *table);
# 20 "src/driver.h" 2
# 1 "src/profiler.h" 1




enum {
        PROFILER_END = -1,
        PROFILER_CPU1 = 0,
        PROFILER_CPU2,
        PROFILER_CPU3,
        PROFILER_CPU4,
        PROFILER_CPU5,
        PROFILER_CPU6,
        PROFILER_CPU7,
        PROFILER_CPU8,
        PROFILER_MEMREAD,
        PROFILER_MEMWRITE,
        PROFILER_VIDEO,
        PROFILER_DRAWGFX,
        PROFILER_COPYBITMAP,
        PROFILER_TILEMAP_UPDATE,
        PROFILER_TILEMAP_DRAW,
        PROFILER_BLIT,
        PROFILER_SOUND,
        PROFILER_MIXER,
        PROFILER_TIMER_CALLBACK,
        PROFILER_HISCORE,
        PROFILER_INPUT,
        PROFILER_EXTRA,



        PROFILER_USER1,
        PROFILER_USER2,
        PROFILER_USER3,
        PROFILER_USER4,

        PROFILER_PROFILER,
        PROFILER_IDLE,
        PROFILER_TOTAL
};
# 59 "src/profiler.h"
void profiler__mark(int type);


void profiler_start(void);
void profiler_stop(void);
void profiler_show(struct osd_bitmap *bitmap);
# 21 "src/driver.h" 2
# 35 "src/driver.h"
struct MachineDriver
{

        const struct MachineCPU cpu[8];
        float frames_per_second;
        int vblank_duration;
        int cpu_slices_per_frame;






        void (*init_machine)(void);





        int screen_width,screen_height;
        const struct rectangle default_visible_area;



        const struct GfxDecodeInfo *gfxdecodeinfo;
        unsigned int total_colors;
        unsigned int color_table_len;
        void (*vh_init_palette)(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);

        int video_attributes;

        void (*vh_eof_callback)(void);



        int (*vh_start)(void);
        void (*vh_stop)(void);
        void (*vh_update)(struct osd_bitmap *bitmap,int full_refresh);


        int sound_attributes;
        int obsolete1;
        int obsolete2;
        int obsolete3;
        const struct MachineSound sound[5];
# 90 "src/driver.h"
        void (*nvram_handler)(void *file,int read_or_write);
};
# 161 "src/driver.h"
struct GameDriver
{
        const char *source_file;
        const struct GameDriver *clone_of;

        const char *name;
        const char *description;
        const char *year;
        const char *manufacturer;
        const struct MachineDriver *drv;
        const struct InputPortTiny *input_ports;
        void (*driver_init)(void);



        const struct RomModule *rom;




        UINT32 flags;
};
# 259 "src/driver.h"
extern const struct GameDriver *drivers[];
# 195 "src/vidhrdw/megasys1.c" 2
# 1 "src/vidhrdw/generic.h" 1
# 1 "src/driver.h" 1
# 2 "src/vidhrdw/generic.h" 2





extern data8_t *videoram;
extern data16_t *videoram16;
extern data32_t *videoram32;
extern size_t videoram_size;
extern data8_t *colorram;
extern data16_t *colorram16;
extern data32_t *colorram32;
extern data8_t *spriteram;
extern data16_t *spriteram16;
extern data32_t *spriteram32;
extern data8_t *spriteram_2;
extern data16_t *spriteram16_2;
extern data32_t *spriteram32_2;
extern data8_t *spriteram_3;
extern data16_t *spriteram16_3;
extern data32_t *spriteram32_3;
extern data8_t *buffered_spriteram;
extern data16_t *buffered_spriteram16;
extern data32_t *buffered_spriteram32;
extern data8_t *buffered_spriteram_2;
extern data16_t *buffered_spriteram16_2;
extern data32_t *buffered_spriteram32_2;
extern size_t spriteram_size;
extern size_t spriteram_2_size;
extern size_t spriteram_3_size;
extern data8_t *dirtybuffer;
extern data16_t *dirtybuffer16;
extern data32_t *dirtybuffer32;
extern struct osd_bitmap *tmpbitmap;


int generic_vh_start(void);
int generic_bitmapped_vh_start(void);
void generic_vh_stop(void);
void generic_bitmapped_vh_stop(void);
void generic_bitmapped_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
data8_t videoram_r(offs_t offset __attribute__((__unused__)));
data8_t colorram_r(offs_t offset __attribute__((__unused__)));
void videoram_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void colorram_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data8_t spriteram_r(offs_t offset __attribute__((__unused__)));
void spriteram_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
data16_t spriteram16_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void spriteram16_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
data8_t spriteram_2_r(offs_t offset __attribute__((__unused__)));
void spriteram_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void buffer_spriteram_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void buffer_spriteram16_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void buffer_spriteram32_w(offs_t offset __attribute__((__unused__)), data32_t data __attribute__((__unused__)), data32_t mem_mask __attribute__((__unused__)));
void buffer_spriteram_2_w(offs_t offset __attribute__((__unused__)), data8_t data __attribute__((__unused__)));
void buffer_spriteram16_2_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void buffer_spriteram32_2_w(offs_t offset __attribute__((__unused__)), data32_t data __attribute__((__unused__)), data32_t mem_mask __attribute__((__unused__)));
void buffer_spriteram(unsigned char *ptr,int length);
void buffer_spriteram_2(unsigned char *ptr,int length);
# 196 "src/vidhrdw/megasys1.c" 2
# 1 "src/drivers/megasys1.h" 1
# 176 "src/drivers/megasys1.h"
extern data16_t *megasys1_scrollram_0, *megasys1_scrollram_1, *megasys1_scrollram_2;
extern data16_t *megasys1_objectram, *megasys1_vregs, *megasys1_ram;

extern int megasys1_scroll_flag[3], megasys1_scrollx[3], megasys1_scrolly[3], megasys1_pages_per_tmap_x[3], megasys1_pages_per_tmap_y[3];
extern int megasys1_active_layers, megasys1_sprite_bank;
extern int megasys1_screen_flag, megasys1_sprite_flag;
extern int megasys1_bits_per_color_code;
extern int megasys1_8x8_scroll_0_factor, megasys1_16x16_scroll_0_factor;
extern int megasys1_8x8_scroll_1_factor, megasys1_16x16_scroll_1_factor;
extern int megasys1_8x8_scroll_2_factor, megasys1_16x16_scroll_2_factor;



int megasys1_vh_start(void);

void megasys1_scrollram_0_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void megasys1_scrollram_1_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));
void megasys1_scrollram_2_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)));

void megasys1_scroll_0_flag_w(int data);
void megasys1_scroll_1_flag_w(int data);
void megasys1_scroll_2_flag_w(int data);
# 197 "src/vidhrdw/megasys1.c" 2


static struct tilemap *megasys1_tmap[3];

data16_t *megasys1_scrollram_0, *megasys1_scrollram_1, *megasys1_scrollram_2;
data16_t *megasys1_objectram, *megasys1_vregs, *megasys1_ram;

int megasys1_scroll_flag[3], megasys1_scrollx[3], megasys1_scrolly[3], megasys1_pages_per_tmap_x[3], megasys1_pages_per_tmap_y[3];
int megasys1_active_layers, megasys1_sprite_bank;
int megasys1_screen_flag, megasys1_sprite_flag;
int megasys1_bits_per_color_code;
int megasys1_8x8_scroll_0_factor, megasys1_16x16_scroll_0_factor;
int megasys1_8x8_scroll_1_factor, megasys1_16x16_scroll_1_factor;
int megasys1_8x8_scroll_2_factor, megasys1_16x16_scroll_2_factor;



static int hardware_type_z;
# 248 "src/vidhrdw/megasys1.c"
extern struct GameDriver driver_lomakai;
extern struct GameDriver driver_soldamj;


int megasys1_vh_start(void)
{
        int i;

        spriteram16 = &megasys1_ram[0x8000/2];
        megasys1_tmap[0] = megasys1_tmap[1] = megasys1_tmap[2] = ((void *)0);

        megasys1_active_layers = megasys1_sprite_bank = megasys1_screen_flag = megasys1_sprite_flag = 0;

        for (i = 0; i < 3; i ++)
        {
                megasys1_scroll_flag[i] = megasys1_scrollx[i] = megasys1_scrolly[i] = 0;
                megasys1_pages_per_tmap_x[i] = megasys1_pages_per_tmap_y[i] = 0;
        }

        megasys1_bits_per_color_code = 4;
# 286 "src/vidhrdw/megasys1.c"
        megasys1_8x8_scroll_0_factor = 1; megasys1_16x16_scroll_0_factor = 4;
        megasys1_8x8_scroll_1_factor = 1; megasys1_16x16_scroll_1_factor = 4;
        megasys1_8x8_scroll_2_factor = 1; megasys1_16x16_scroll_2_factor = 4;

        if (Machine->gamedrv == &driver_soldamj)
        {
                megasys1_8x8_scroll_1_factor = 4; megasys1_16x16_scroll_1_factor = 4;
        }

        hardware_type_z = 0;
        if (Machine->gamedrv == &driver_lomakai ||
                Machine->gamedrv->clone_of == &driver_lomakai )
                hardware_type_z = 1;

        return 0;
}
# 371 "src/vidhrdw/megasys1.c"
void megasys1_get_scroll_0_tile_info_8x8(int tile_index) { data16_t code = megasys1_scrollram_0[tile_index]; { const struct GfxElement *gfx = Machine->gfx[(0)]; int _code = ((code & 0xfff) * megasys1_8x8_scroll_0_factor) % gfx->total_elements; tile_info.tile_number = _code; tile_info.pen_data = gfx->gfxdata + _code*gfx->char_modulo; tile_info.pal_data = &gfx->colortable[gfx->color_granularity * (code >> (16 - megasys1_bits_per_color_code))]; tile_info.pen_usage = gfx->pen_usage?gfx->pen_usage[_code]:0; } } void megasys1_get_scroll_0_tile_info_16x16(int tile_index) { data16_t code = megasys1_scrollram_0[tile_index/4]; { const struct GfxElement *gfx = Machine->gfx[(0)]; int _code = ((code & 0xfff) * megasys1_16x16_scroll_0_factor + (tile_index & 3)) % gfx->total_elements; tile_info.tile_number = _code; tile_info.pen_data = gfx->gfxdata + _code*gfx->char_modulo; tile_info.pal_data = &gfx->colortable[gfx->color_granularity * (code >> (16-megasys1_bits_per_color_code))]; tile_inf!
o.pen_usage = gfx->pen_usage?gfx->pen_usage[_code]:0; }; } UINT32 megasys1_0_scan_8x8(UINT32 col,UINT32 row,UINT32 num_cols,UINT32 num_rows) { return (col * (0x20)) + (row / (0x20)) * ((0x20) * (0x20)) * megasys1_pages_per_tmap_x[0] + (row % (0x20)); }UINT32 megasys1_0_scan_16x16(UINT32 col,UINT32 row,UINT32 num_cols,UINT32 num_rows) { return ( ((col / 2) * ((0x20) / 2)) + ((row / 2) / ((0x20) / 2)) * (((0x20) * (0x20)) / 4) * megasys1_pages_per_tmap_x[0] + ((row / 2) % ((0x20) / 2)) )*4 + (row&1) + (col&1)*2; }
void megasys1_get_scroll_1_tile_info_8x8(int tile_index) { data16_t code = megasys1_scrollram_1[tile_index]; { const struct GfxElement *gfx = Machine->gfx[(1)]; int _code = ((code & 0xfff) * megasys1_8x8_scroll_1_factor) % gfx->total_elements; tile_info.tile_number = _code; tile_info.pen_data = gfx->gfxdata + _code*gfx->char_modulo; tile_info.pal_data = &gfx->colortable[gfx->color_granularity * (code >> (16 - megasys1_bits_per_color_code))]; tile_info.pen_usage = gfx->pen_usage?gfx->pen_usage[_code]:0; } } void megasys1_get_scroll_1_tile_info_16x16(int tile_index) { data16_t code = megasys1_scrollram_1[tile_index/4]; { const struct GfxElement *gfx = Machine->gfx[(1)]; int _code = ((code & 0xfff) * megasys1_16x16_scroll_1_factor + (tile_index & 3)) % gfx->total_elements; tile_info.tile_number = _code; tile_info.pen_data = gfx->gfxdata + _code*gfx->char_modulo; tile_info.pal_data = &gfx->colortable[gfx->color_granularity * (code >> (16-megasys1_bits_per_color_code))]; tile_inf!
o.pen_usage = gfx->pen_usage?gfx->pen_usage[_code]:0; }; } UINT32 megasys1_1_scan_8x8(UINT32 col,UINT32 row,UINT32 num_cols,UINT32 num_rows) { return (col * (0x20)) + (row / (0x20)) * ((0x20) * (0x20)) * megasys1_pages_per_tmap_x[1] + (row % (0x20)); }UINT32 megasys1_1_scan_16x16(UINT32 col,UINT32 row,UINT32 num_cols,UINT32 num_rows) { return ( ((col / 2) * ((0x20) / 2)) + ((row / 2) / ((0x20) / 2)) * (((0x20) * (0x20)) / 4) * megasys1_pages_per_tmap_x[1] + ((row / 2) % ((0x20) / 2)) )*4 + (row&1) + (col&1)*2; }
void megasys1_get_scroll_2_tile_info_8x8(int tile_index) { data16_t code = megasys1_scrollram_2[tile_index]; { const struct GfxElement *gfx = Machine->gfx[(2)]; int _code = ((code & 0xfff) * megasys1_8x8_scroll_2_factor) % gfx->total_elements; tile_info.tile_number = _code; tile_info.pen_data = gfx->gfxdata + _code*gfx->char_modulo; tile_info.pal_data = &gfx->colortable[gfx->color_granularity * (code >> (16 - megasys1_bits_per_color_code))]; tile_info.pen_usage = gfx->pen_usage?gfx->pen_usage[_code]:0; } } void megasys1_get_scroll_2_tile_info_16x16(int tile_index) { data16_t code = megasys1_scrollram_2[tile_index/4]; { const struct GfxElement *gfx = Machine->gfx[(2)]; int _code = ((code & 0xfff) * megasys1_16x16_scroll_2_factor + (tile_index & 3)) % gfx->total_elements; tile_info.tile_number = _code; tile_info.pen_data = gfx->gfxdata + _code*gfx->char_modulo; tile_info.pal_data = &gfx->colortable[gfx->color_granularity * (code >> (16-megasys1_bits_per_color_code))]; tile_inf!
o.pen_usage = gfx->pen_usage?gfx->pen_usage[_code]:0; }; } UINT32 megasys1_2_scan_8x8(UINT32 col,UINT32 row,UINT32 num_cols,UINT32 num_rows) { return (col * (0x20)) + (row / (0x20)) * ((0x20) * (0x20)) * megasys1_pages_per_tmap_x[2] + (row % (0x20)); }UINT32 megasys1_2_scan_16x16(UINT32 col,UINT32 row,UINT32 num_cols,UINT32 num_rows) { return ( ((col / 2) * ((0x20) / 2)) + ((row / 2) / ((0x20) / 2)) * (((0x20) * (0x20)) / 4) * megasys1_pages_per_tmap_x[2] + ((row / 2) % ((0x20) / 2)) )*4 + (row&1) + (col&1)*2; }

void megasys1_scrollram_0_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__))) { data16_t old_data = megasys1_scrollram_0[offset]; data16_t new_data = (*(&megasys1_scrollram_0[offset]) = (*(&megasys1_scrollram_0[offset]) & mem_mask) | (data & ~mem_mask)); if (old_data != new_data) { if ( (offset < 0x40000/2) && (megasys1_tmap[0]) ) { int tile_index = offset; if (megasys1_scroll_flag[0] & 0x10) { tilemap_mark_tile_dirty(megasys1_tmap[0], tile_index ); } else { tilemap_mark_tile_dirty(megasys1_tmap[0], tile_index*4 + 0); tilemap_mark_tile_dirty(megasys1_tmap[0], tile_index*4 + 1); tilemap_mark_tile_dirty(megasys1_tmap[0], tile_index*4 + 2); tilemap_mark_tile_dirty(megasys1_tmap[0], tile_index*4 + 3); } } }}
void megasys1_scrollram_1_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__))) { data16_t old_data = megasys1_scrollram_1[offset]; data16_t new_data = (*(&megasys1_scrollram_1[offset]) = (*(&megasys1_scrollram_1[offset]) & mem_mask) | (data & ~mem_mask)); if (old_data != new_data) { if ( (offset < 0x40000/2) && (megasys1_tmap[1]) ) { int tile_index = offset; if (megasys1_scroll_flag[1] & 0x10) { tilemap_mark_tile_dirty(megasys1_tmap[1], tile_index ); } else { tilemap_mark_tile_dirty(megasys1_tmap[1], tile_index*4 + 0); tilemap_mark_tile_dirty(megasys1_tmap[1], tile_index*4 + 1); tilemap_mark_tile_dirty(megasys1_tmap[1], tile_index*4 + 2); tilemap_mark_tile_dirty(megasys1_tmap[1], tile_index*4 + 3); } } }}
void megasys1_scrollram_2_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__))) { data16_t old_data = megasys1_scrollram_2[offset]; data16_t new_data = (*(&megasys1_scrollram_2[offset]) = (*(&megasys1_scrollram_2[offset]) & mem_mask) | (data & ~mem_mask)); if (old_data != new_data) { if ( (offset < 0x40000/2) && (megasys1_tmap[2]) ) { int tile_index = offset; if (megasys1_scroll_flag[2] & 0x10) { tilemap_mark_tile_dirty(megasys1_tmap[2], tile_index ); } else { tilemap_mark_tile_dirty(megasys1_tmap[2], tile_index*4 + 0); tilemap_mark_tile_dirty(megasys1_tmap[2], tile_index*4 + 1); tilemap_mark_tile_dirty(megasys1_tmap[2], tile_index*4 + 2); tilemap_mark_tile_dirty(megasys1_tmap[2], tile_index*4 + 3); } } }}
# 424 "src/vidhrdw/megasys1.c"
void megasys1_scroll_0_flag_w(int data) { if ((megasys1_scroll_flag[0] != data) || (megasys1_tmap[0] == 0) ) { megasys1_scroll_flag[0] = data; if (megasys1_tmap[0]) tilemap_dispose(megasys1_tmap[0]); megasys1_pages_per_tmap_x[0] = 16 / ( 1 << (megasys1_scroll_flag[0] & 0x3) ); megasys1_pages_per_tmap_y[0] = 32 / megasys1_pages_per_tmap_x[0]; if (megasys1_scroll_flag[0] & 0x10) { if (megasys1_pages_per_tmap_y[0] > 4) { megasys1_pages_per_tmap_x[0] /= 1; megasys1_pages_per_tmap_y[0] /= 4;} else { megasys1_pages_per_tmap_x[0] /= 2; megasys1_pages_per_tmap_y[0] /= 2;} } if ((megasys1_tmap[0] = tilemap_create ( (megasys1_scroll_flag[0] & 0x10) ? megasys1_get_scroll_0_tile_info_8x8 : megasys1_get_scroll_0_tile_info_16x16, (megasys1_scroll_flag[0] & 0x10) ? megasys1_0_scan_8x8 : megasys1_0_scan_16x16, 0x01, 8,8, (0x20) * megasys1_pages_per_tmap_x[0], (0x20) * megasys1_pages_per_tmap_y[0] ) )) tilemap_set_transparent_pen(megasys1_tmap[0],15); } }
void megasys1_scroll_1_flag_w(int data) { if ((megasys1_scroll_flag[1] != data) || (megasys1_tmap[1] == 0) ) { megasys1_scroll_flag[1] = data; if (megasys1_tmap[1]) tilemap_dispose(megasys1_tmap[1]); megasys1_pages_per_tmap_x[1] = 16 / ( 1 << (megasys1_scroll_flag[1] & 0x3) ); megasys1_pages_per_tmap_y[1] = 32 / megasys1_pages_per_tmap_x[1]; if (megasys1_scroll_flag[1] & 0x10) { if (megasys1_pages_per_tmap_y[1] > 4) { megasys1_pages_per_tmap_x[1] /= 1; megasys1_pages_per_tmap_y[1] /= 4;} else { megasys1_pages_per_tmap_x[1] /= 2; megasys1_pages_per_tmap_y[1] /= 2;} } if ((megasys1_tmap[1] = tilemap_create ( (megasys1_scroll_flag[1] & 0x10) ? megasys1_get_scroll_1_tile_info_8x8 : megasys1_get_scroll_1_tile_info_16x16, (megasys1_scroll_flag[1] & 0x10) ? megasys1_1_scan_8x8 : megasys1_1_scan_16x16, 0x01, 8,8, (0x20) * megasys1_pages_per_tmap_x[1], (0x20) * megasys1_pages_per_tmap_y[1] ) )) tilemap_set_transparent_pen(megasys1_tmap[1],15); } }
void megasys1_scroll_2_flag_w(int data) { if ((megasys1_scroll_flag[2] != data) || (megasys1_tmap[2] == 0) ) { megasys1_scroll_flag[2] = data; if (megasys1_tmap[2]) tilemap_dispose(megasys1_tmap[2]); megasys1_pages_per_tmap_x[2] = 16 / ( 1 << (megasys1_scroll_flag[2] & 0x3) ); megasys1_pages_per_tmap_y[2] = 32 / megasys1_pages_per_tmap_x[2]; if (megasys1_scroll_flag[2] & 0x10) { if (megasys1_pages_per_tmap_y[2] > 4) { megasys1_pages_per_tmap_x[2] /= 1; megasys1_pages_per_tmap_y[2] /= 4;} else { megasys1_pages_per_tmap_x[2] /= 2; megasys1_pages_per_tmap_y[2] /= 2;} } if ((megasys1_tmap[2] = tilemap_create ( (megasys1_scroll_flag[2] & 0x10) ? megasys1_get_scroll_2_tile_info_8x8 : megasys1_get_scroll_2_tile_info_16x16, (megasys1_scroll_flag[2] & 0x10) ? megasys1_2_scan_8x8 : megasys1_2_scan_16x16, 0x01, 8,8, (0x20) * megasys1_pages_per_tmap_x[2], (0x20) * megasys1_pages_per_tmap_y[2] ) )) tilemap_set_transparent_pen(megasys1_tmap[2],15); } }



void megasys1_vregs_A_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)))
{
        data16_t new_data = (*(&megasys1_vregs[offset]) = (*(&megasys1_vregs[offset]) & mem_mask) | (data & ~mem_mask));

        switch (offset)
        {
                case 0x000/2 : megasys1_active_layers = new_data; break;

                case 0x008/2+0 : megasys1_scrollx[2] = new_data; break;
                case 0x008/2+1 : megasys1_scrolly[2] = new_data; break;
                case 0x008/2+2 : megasys1_scroll_2_flag_w(new_data); if (megasys1_tmap[2] == 0) { char buf[80]; sprintf(buf,"vreg %04X <- %04X NO MEMORY FOR SCREEN",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); }; break;

                case 0x200/2+0 : megasys1_scrollx[0] = new_data; break;
                case 0x200/2+1 : megasys1_scrolly[0] = new_data; break;
                case 0x200/2+2 : megasys1_scroll_0_flag_w(new_data); if (megasys1_tmap[0] == 0) { char buf[80]; sprintf(buf,"vreg %04X <- %04X NO MEMORY FOR SCREEN",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); }; break;

                case 0x208/2+0 : megasys1_scrollx[1] = new_data; break;
                case 0x208/2+1 : megasys1_scrolly[1] = new_data; break;
                case 0x208/2+2 : megasys1_scroll_1_flag_w(new_data); if (megasys1_tmap[1] == 0) { char buf[80]; sprintf(buf,"vreg %04X <- %04X NO MEMORY FOR SCREEN",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); }; break;

                case 0x100/2 : megasys1_sprite_flag = new_data; break;

                case 0x300/2 : megasys1_screen_flag = new_data;
                                                        if (new_data & 0x10)
                                                                cpu_set_reset_line(1,1);
                                                        else
                                                                cpu_set_reset_line(1,0);
                                                        break;

                case 0x308/2 : soundlatch_word_w(0,new_data,0);
                                                        cpu_cause_interrupt(1,4);
                                                        break;

                default : { char buf[80]; sprintf(buf,"vreg %04X <- %04X",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); };
        }

}





data16_t megasys1_vregs_C_r(offs_t offset __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)))
{
        switch (offset)
        {
                case 0x8000/2: return soundlatch2_word_r(0,0);
                default: return megasys1_vregs[offset];
        }
}

void megasys1_vregs_C_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)))
{
        data16_t new_data = (*(&megasys1_vregs[offset]) = (*(&megasys1_vregs[offset]) & mem_mask) | (data & ~mem_mask));

        switch (offset)
        {
                case 0x2000/2+0 : megasys1_scrollx[0] = new_data; break;
                case 0x2000/2+1 : megasys1_scrolly[0] = new_data; break;
                case 0x2000/2+2 : megasys1_scroll_0_flag_w(new_data); if (megasys1_tmap[0] == 0) { char buf[80]; sprintf(buf,"vreg %04X <- %04X NO MEMORY FOR SCREEN",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); }; break;

                case 0x2008/2+0 : megasys1_scrollx[1] = new_data; break;
                case 0x2008/2+1 : megasys1_scrolly[1] = new_data; break;
                case 0x2008/2+2 : megasys1_scroll_1_flag_w(new_data); if (megasys1_tmap[1] == 0) { char buf[80]; sprintf(buf,"vreg %04X <- %04X NO MEMORY FOR SCREEN",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); }; break;

                case 0x2100/2+0 : megasys1_scrollx[2] = new_data; break;
                case 0x2100/2+1 : megasys1_scrolly[2] = new_data; break;
                case 0x2100/2+2 : megasys1_scroll_2_flag_w(new_data); if (megasys1_tmap[2] == 0) { char buf[80]; sprintf(buf,"vreg %04X <- %04X NO MEMORY FOR SCREEN",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); }; break;

                case 0x2108/2 : megasys1_sprite_bank = new_data; break;
                case 0x2200/2 : megasys1_sprite_flag = new_data; break;
                case 0x2208/2 : megasys1_active_layers = new_data; break;

                case 0x2308/2 : megasys1_screen_flag = new_data;
                                                        if (new_data & 0x10)
                                                                cpu_set_reset_line(1,1);
                                                        else
                                                                cpu_set_reset_line(1,0);
                                                        break;

                case 0x8000/2 :
                                                        soundlatch_word_w(0,new_data,0);
                                                        cpu_cause_interrupt(1,2);
                                                        break;

                default: { char buf[80]; sprintf(buf,"vreg %04X <- %04X",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); };
        }
}




void megasys1_vregs_D_w(offs_t offset __attribute__((__unused__)), data16_t data __attribute__((__unused__)), data16_t mem_mask __attribute__((__unused__)))
{
        data16_t new_data = (*(&megasys1_vregs[offset]) = (*(&megasys1_vregs[offset]) & mem_mask) | (data & ~mem_mask));

        switch (offset)
        {
                case 0x2000/2+0 : megasys1_scrollx[0] = new_data; break;
                case 0x2000/2+1 : megasys1_scrolly[0] = new_data; break;
                case 0x2000/2+2 : megasys1_scroll_0_flag_w(new_data); if (megasys1_tmap[0] == 0) { char buf[80]; sprintf(buf,"vreg %04X <- %04X NO MEMORY FOR SCREEN",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); }; break;

                case 0x2008/2+0 : megasys1_scrollx[1] = new_data; break;
                case 0x2008/2+1 : megasys1_scrolly[1] = new_data; break;
                case 0x2008/2+2 : megasys1_scroll_1_flag_w(new_data); if (megasys1_tmap[1] == 0) { char buf[80]; sprintf(buf,"vreg %04X <- %04X NO MEMORY FOR SCREEN",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); }; break;





                case 0x2108/2 : megasys1_sprite_bank = new_data; break;
                case 0x2200/2 : megasys1_sprite_flag = new_data; break;
                case 0x2208/2 : megasys1_active_layers = new_data; break;
                case 0x2308/2 : megasys1_screen_flag = new_data; break;

                default: { char buf[80]; sprintf(buf,"vreg %04X <- %04X",offset*2,data); logerror("CPU #0 PC %06X : Warning, %s\n",cpu_get_pc(), buf); };
        }
}
# 576 "src/vidhrdw/megasys1.c"
static void draw_sprites(struct osd_bitmap *bitmap)
{
        int color,code,sx,sy,flipx,flipy,attr,sprite,offs,color_mask;





        if (hardware_type_z == 0)
        {
                color_mask = (megasys1_sprite_flag & 0x100) ? 0x07 : 0x0f;

                for (offs = (0x800-8)/2;offs >= 0;offs -= 8/2)
                {
                        for (sprite = 0; sprite < 4 ; sprite ++)
                        {
                                data16_t *objectdata = &megasys1_objectram[offs + (0x800/2) * sprite];
                                data16_t *spritedata = &spriteram16[ (objectdata[ 0 ] & 0x7f) * 0x10/2];

                                attr = spritedata[ 8/2 ];
                                if (((attr & 0xc0)>>6) != sprite) continue;


                                sx = ( spritedata[0x0A/2] + objectdata[0x02/2] ) % 512;
                                sy = ( spritedata[0x0C/2] + objectdata[0x04/2] ) % 512;

                                if (sx > 256-1) sx -= 512;
                                if (sy > 256-1) sy -= 512;

                                flipx = attr & 0x40;
                                flipy = attr & 0x80;

                                if (megasys1_screen_flag & 1)
                                {
                                        flipx = !flipx; flipy = !flipy;
                                        sx = 240-sx; sy = 240-sy;
                                }


                                code = spritedata[0x0E/2] + objectdata[0x06/2];
                                color = (attr & color_mask);

                                pdrawgfx(bitmap,Machine->gfx[3],
                                                (code & 0xfff ) + ((megasys1_sprite_bank & 1) << 12),
                                                color,
                                                flipx, flipy,
                                                sx, sy,
                                                &Machine->visible_area,
                                                TRANSPARENCY_PEN,15,
                                                (attr & 0x08) ? 0x0c : 0x0a);
                        }
                }
        }
        else
        {



                for (sprite = 0x80-1;sprite >= 0;sprite--)
                {
                        data16_t *spritedata = &spriteram16[ sprite * 0x10/2];

                        attr = spritedata[ 8/2 ];

                        sx = spritedata[0x0A/2] % 512;
                        sy = spritedata[0x0C/2] % 512;

                        if (sx > 256-1) sx -= 512;
                        if (sy > 256-1) sy -= 512;

                        code = spritedata[0x0E/2];
                        color = (attr & 0x0F);

                        flipx = attr & 0x40;
                        flipy = attr & 0x80;

                        if (megasys1_screen_flag & 1)
                        {
                                flipx = !flipx; flipy = !flipy;
                                sx = 240-sx; sy = 240-sy;
                        }

                        pdrawgfx(bitmap,Machine->gfx[2],
                                        code,
                                        color,
                                        flipx, flipy,
                                        sx, sy,
                                        &Machine->visible_area,
                                        TRANSPARENCY_PEN,15,
                                        (attr & 0x08) ? 0x0c : 0x0a);
                }
        }

}
# 679 "src/vidhrdw/megasys1.c"
static void mark_sprite_colors(void)
{
        int color_codes_start, color, penmask[16];
        int offs, sx, sy, code, attr, i;
        int color_mask;

        int xmin = Machine->visible_area.min_x - (16 - 1);
        int xmax = Machine->visible_area.max_x;
        int ymin = Machine->visible_area.min_y - (16 - 1);
        int ymax = Machine->visible_area.max_y;

        for (color = 0 ; color < 16 ; color++) penmask[color] = 0;

        color_mask = (megasys1_sprite_flag & 0x100) ? 0x07 : 0x0f;

        if (hardware_type_z == 0)
        {
                unsigned int *pen_usage = Machine->gfx[3]->pen_usage;
                int total_elements = Machine->gfx[3]->total_elements;
                color_codes_start = Machine->drv->gfxdecodeinfo[3].color_codes_start;

                for (offs = 0; offs < 0x2000/2 ; offs += 8/2)
                {
                        data16_t sprite = megasys1_objectram[offs+0x00];
                        data16_t *spritedata = &spriteram16[ (sprite&0x7F) * 16/2];

                        attr = spritedata[ 8/2 ];
                        if ( (attr & 0xc0) != ((offs/(0x800/2))<<6) ) continue;

                        sx = ( spritedata[0x0A/2] + megasys1_objectram[0x02/2] ) % 512;
                        sy = ( spritedata[0x0C/2] + megasys1_objectram[0x04/2] ) % 512;

                        if (sx > 256-1) sx -= 512;
                        if (sy > 256-1) sy -= 512;

                        if ((sx > xmax) ||(sy > ymax) ||(sx < xmin) ||(sy < ymin)) continue;

                        code = spritedata[0x0E/2] + megasys1_objectram[offs+0x06/2];
                        code = (code & 0xfff );
                        color = (attr & color_mask);

                        penmask[color] |= pen_usage[code % total_elements];
                }
        }
        else
        {
                int sprite;
                unsigned int *pen_usage = Machine->gfx[2]->pen_usage;
                int total_elements = Machine->gfx[2]->total_elements;
                color_codes_start = Machine->drv->gfxdecodeinfo[2].color_codes_start;

                for (sprite = 0; sprite < 0x80 ; sprite++)
                {
                        data16_t *spritedata = &spriteram16[ sprite * 16/2 ];

                        sx = spritedata[0x0A/2] % 512;
                        sy = spritedata[0x0C/2] % 512;
                        code = spritedata[0x0E/2];
                        color = spritedata[0x08/2] & 0x0F;

                        if (sx > 256-1) sx -= 512;
                        if (sy > 256-1) sy -= 512;

                        if ((sx > xmax) ||(sy > ymax) ||(sx < xmin) ||(sy < ymin)) continue;

                        penmask[color] |= pen_usage[code % total_elements];
                }
        }


        for (color = 0; color < 16; color++)
         for (i = 0; i < 16; i++)
          if (penmask[color] & (1 << i)) palette_used_colors[16 * color + i + color_codes_start] = (1 | 2);
}
# 761 "src/vidhrdw/megasys1.c"
struct priority
{
        struct GameDriver *driver;
        int priorities[16];
};

int megasys1_layers_order[16];


extern struct GameDriver driver_64street;
extern struct GameDriver driver_astyanax;
extern struct GameDriver driver_bigstrik;
extern struct GameDriver driver_chimerab;
extern struct GameDriver driver_hachoo;
extern struct GameDriver driver_iganinju;
extern struct GameDriver driver_kickoff;
extern struct GameDriver driver_tshingen;
# 798 "src/vidhrdw/megasys1.c"
static struct priority priorities[] =
{
        { &driver_64street,
                { 0xfffff,0x03142,0xfffff,0x04132,0xfffff,0x04132,0xfffff,0xfffff,
                  0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
        },
        { &driver_astyanax,
                { 0x04132,0x03142,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,
                  0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
        },
        { &driver_bigstrik,
                { 0xfffff,0x03142,0xfffff,0x04132,0xfffff,0x04132,0xfffff,0xfffff,
                  0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
        },
        { &driver_chimerab,
                { 0x14032,0x04132,0x14032,0x04132,0xfffff,0xfffff,0xfffff,0xfffff,
                  0xfffff,0xfffff,0x01324,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
        },
        { &driver_hachoo,
                { 0x24130,0x01423,0xfffff,0x02413,0x04132,0xfffff,0x24130,0x13240,
                  0x24103,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
        },
        { &driver_iganinju,
                { 0x04132,0xfffff,0xfffff,0x01423,0xfffff,0xfffff,0xfffff,0xfffff,
                  0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
        },
        { &driver_kickoff,
                { 0x04132,0x02413,0x03142,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,
                  0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
        },
        { &driver_tshingen,
                { 0x04132,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,
                  0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
        },
        { 0 }
};
# 880 "src/vidhrdw/megasys1.c"
void megasys1_convert_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *prom)
{
        int pri_code, offset, i, order;





        i = 0;
        while ( priorities[i].driver &&
                        priorities[i].driver != Machine->gamedrv &&
                        priorities[i].driver != Machine->gamedrv->clone_of)
                i++;

        if (priorities[i].driver)
        {
                memcpy (megasys1_layers_order, priorities[i].priorities, 16 * sizeof(int));

                logerror("WARNING: using an hand-crafted priorities scheme\n");

                return;
        }



        for (pri_code = 0; pri_code < 0x10 ; pri_code++)
        {
                int layers_order[2];

                for (offset = 0; offset < 2; offset ++)
                {
                        int enable_mask = 0xf;

                        layers_order[offset] = 0xfffff;

                        do
                        {
                                int top = prom[pri_code * 0x20 + offset + enable_mask * 2] & 3;
                                int top_mask = 1 << top;

                                int result = 0;

                                for (i = 0; i < 0x10 ; i++)
                                {
                                        int opacity = i & enable_mask;
                                        int layer = prom[pri_code * 0x20 + offset + opacity * 2];

                                        if (opacity)
                                        {
                                                if (opacity & top_mask)
                                                {
                                                        if (layer != top ) result |= 1;
                                                }
                                                else
                                                {
                                                        if (layer == top) result |= 2;
                                                        else result |= 4;
                                                }
                                        }
                                }




                                layers_order[offset] = ( (layers_order[offset] << 4) | top ) & 0xfffff;
                                enable_mask &= ~top_mask;

                                if (result & 1)
                                {
                                        logerror("WARNING, pri $%X split %d - layer %d's opaque pens not totally opaque\n",pri_code,offset,top);

                                        layers_order[offset] = 0xfffff;
                                        break;
                                }

                                if ((result & 6) == 6)
                                {
                                        logerror("WARNING, pri $%X split %d - layer %d's transparent pens aren't always transparent nor always opaque\n",pri_code,offset,top);

                                        layers_order[offset] = 0xfffff;
                                        break;
                                }

                                if (result == 2) enable_mask = 0;

                        } while (enable_mask);

        }



                order = 0xfffff;

                for (i = 5; i > 0 ; )
                {
                        int layer;
                        int layer0 = layers_order[0] & 0x0f;
                        int layer1 = layers_order[1] & 0x0f;

                        if (layer0 != 3)
                        {
                                if (layer1 == 3)
                                {
                                        layer = 4;
                                        layers_order[0] <<= 4;
                                }
                                else
                                {
                                        layer = layer0;
                                        if (layer0 != layer1)
                                        {
                                                logerror("WARNING, pri $%X - 'sprite splitting' does not simply split sprites\n",pri_code);

                                                order = 0xfffff;
                                                break;
                                        }

                                }
                        }
                        else
                        {
                                if (layer1 == 3)
                                {
                                        layer = 0x43;
                                        order <<= 4;
                                        i --;
                                }
                                else
                                {
                                        layer = 3;
                                        layers_order[1] <<= 4;
                                }
                        }


                        order = (order << 4 ) | layer;

                        i --;

                        layers_order[0] >>= 4;
                        layers_order[1] >>= 4;

                }

                megasys1_layers_order[pri_code] = order & 0xfffff;

        }
# 1037 "src/vidhrdw/megasys1.c"
}
# 1048 "src/vidhrdw/megasys1.c"
void megasys1_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
{
        int i,flag,pri,primask;
        int active_layers;

        if (hardware_type_z)
        {

                active_layers = 0x000b;
                pri = 0x0314f;
        }
        else
        {
                int reallyactive = 0;


                pri = megasys1_layers_order[(megasys1_active_layers & 0x0f0f) >> 8];
# 1073 "src/vidhrdw/megasys1.c"
                if (pri == 0xfffff) pri = 0x04132;


                for (i = 0;i < 5;i++)
                        reallyactive |= 1 << ((pri >> (4*i)) & 0x0f);

                active_layers = megasys1_active_layers & reallyactive;
                active_layers |= 1 << ((pri & 0xf0000) >> 16);
        }

        tilemap_set_flip( 0, (megasys1_screen_flag & 1) ? (0x2 | 0x1) : 0 );

        for (i = 0;i < 3;i++)
        {
                if (megasys1_tmap[i])
                {
                        tilemap_set_enable(megasys1_tmap[i],active_layers & (1 << i));

                        tilemap_set_scrollx(megasys1_tmap[i],0,megasys1_scrollx[i]);
                        tilemap_set_scrolly(megasys1_tmap[i],0,megasys1_scrolly[i]);
                }
        }

        tilemap_update(0);

        palette_init_used_colors();

        mark_sprite_colors();

        palette_recalc();

        fillbitmap(priority_bitmap,0,((void *)0));

        flag = 0x10;
        primask = 0;

        for (i = 0;i < 5;i++)
        {
                int layer = (pri & 0xf0000) >> 16;
                pri <<= 4;

                switch (layer)
                {
                        case 0:
                        case 1:
                        case 2:
                                if ( (megasys1_tmap[layer]) && (active_layers & (1 << layer) ) )
                                {
                                        tilemap_draw(bitmap,megasys1_tmap[layer],flag,primask);
                                        flag = 0;
                                }
                                break;
                        case 3:
                        case 4:
                                if (flag != 0)
                                {
                                        flag = 0;
                                        fillbitmap(bitmap,palette_transparent_pen,&Machine->visible_area);
                                }

                                if (megasys1_sprite_flag & 0x100)
                                {

                                        primask |= 1 << (layer-3);
                                }
                                else

                                        if (layer == 3) primask |= 3;

                                break;
                }
        }

        if (active_layers & 0x08)
                draw_sprites(bitmap);
}

>Fix:
	not known
>Release-Note:
>Audit-Trail:
>Unformatted:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]