Previous 199869 Revisions Next

r35008 Friday 13th February, 2015 at 20:38:58 UTC by Couriersud
Merge branch 'master' of https://github.com/mamedev/mame.git
[/trunk]makefile
[src/build]build.mak makelist.c makelist.py* verinfo.c verinfo.py*
[src/emu]audit.c fileio.c fileio.h
[src/emu/cpu/amis2000]amis2000.h amis2000op.inc
[src/emu/cpu/ucom4]ucom4.c ucom4.h ucom4op.inc
[src/mame]mame.lst
[src/mame/drivers]alg.c chaknpop.c champbas.c equites.c igs_m027.c shougi.c
[src/mame/includes]chaknpop.h
[src/mame/machine]chaknpop.c pgmcrypt.c pgmcrypt.h
[src/mame/video]chaknpop.c
[src/mess/drivers]advision.c alnchase.c mbee.c tmtennis.c wildfire.c
[src/mess/includes]mbee.h
[src/mess/layout]alnchase.lay edracula.lay tmtennis.lay wildfire.lay
[src/mess/machine]mbee.c
[src/mess/osd/windows]windows.mak
[src/mess/video]mbee.c
[src/osd/sdl]draw13.c
[src/osd/windows]windows.mak
[src/ume/osd/windows]windows.mak

trunk/makefile
r243519r243520
10121012   @$(CPPCHECK) $(CPPCHECKFLAGS) $<
10131013endif
10141014
1015$(DRIVLISTSRC): $(SRC)/$(TARGET)/$(SUBTARGET).lst $(MAKELIST_TARGET)
1015$(DRIVLISTSRC): $(SRC)/$(TARGET)/$(SUBTARGET).lst $(SRC)/build/makelist.py
10161016   @echo Building driver list $<...
1017   @$(MAKELIST) $< >$@
1017   $(PYTHON) $(SRC)/build/makelist.py $< >$@
10181018
10191019ifeq ($(TARGETOS),emscripten)
10201020# Avoid using .a files with Emscripten, link to bitcode instead
trunk/src/build/build.mak
r243519r243520
2020
2121MAKEDEP_TARGET = $(BUILDOUT)/makedep$(BUILD_EXE)
2222MAKEMAK_TARGET = $(BUILDOUT)/makemak$(BUILD_EXE)
23MAKELIST_TARGET = $(BUILDOUT)/makelist$(BUILD_EXE)
24VERINFO_TARGET = $(BUILDOUT)/verinfo$(BUILD_EXE)
2523
2624MAKEDEP = $(MAKEDEP_TARGET)
2725MAKEMAK = $(MAKEMAK_TARGET)
28MAKELIST = $(MAKELIST_TARGET)
29VERINFO = $(VERINFO_TARGET)
3026
3127ifneq ($(TERM),cygwin)
3228ifeq ($(OS),Windows_NT)
3329MAKEDEP = $(subst /,\,$(MAKEDEP_TARGET))
3430MAKEMAK = $(subst /,\,$(MAKEMAK_TARGET))
35MAKELIST = $(subst /,\,$(MAKELIST_TARGET))
36VERINFO = $(subst /,\,$(VERINFO_TARGET))
3731endif
3832endif
3933
r243519r243520
4135BUILD += \
4236   $(MAKEDEP_TARGET) \
4337   $(MAKEMAK_TARGET) \
44   $(MAKELIST_TARGET) \
45   $(VERINFO_TARGET) \
4638
4739
4840
r243519r243520
8274   $(LD) $(LDFLAGS) $^ $(BASELIBS) -o $@
8375
8476
85
86#-------------------------------------------------
87# makelist
88#-------------------------------------------------
89
90MAKELISTOBJS = \
91   $(BUILDOBJ)/makelist.o \
92   $(OBJ)/lib/util/astring.o \
93   $(OBJ)/lib/util/corealloc.o \
94   $(OBJ)/lib/util/cstrpool.o \
95   $(OBJ)/lib/util/corefile.o \
96   $(OBJ)/lib/util/unicode.o \
97   $(OBJ)/lib/util/tagmap.o \
98
99$(MAKELIST_TARGET): $(MAKELISTOBJS) $(LIBOCORE) $(ZLIB)
100   @echo Linking $@...
101   $(LD) $(LDFLAGS) $^ $(BASELIBS) -o $@
102
103
104
105#-------------------------------------------------
106# verinfo
107#-------------------------------------------------
108
109VERINFOOBJS = \
110   $(BUILDOBJ)/verinfo.o
111
112$(VERINFO_TARGET): $(VERINFOOBJS) $(LIBOCORE)
113   @echo Linking $@...
114   $(LD) $(LDFLAGS) $^ $(BASELIBS) -o $@
115
11677else
11778#-------------------------------------------------
11879# It's a CROSS_BUILD. Ensure the targets exist.
r243519r243520
12081$(MAKEDEP_TARGET):
12182   @echo $@ should be built natively. Nothing to do.
12283
123$(MAKELIST_TARGET):
124   @echo $@ should be built natively. Nothing to do.
125
126$(VERINFO_TARGET):
127   @echo $@ should be built natively. Nothing to do.
128
12984endif # CROSS_BUILD
trunk/src/build/makelist.c
r243519r243520
1// license:BSD-3-Clause
2// copyright-holders:Aaron Giles
3/***************************************************************************
4
5    makelist.c
6
7    Create and sort the driver list.
8
9***************************************************************************/
10
11#include <stdio.h>
12#include <stdlib.h>
13#include <ctype.h>
14#include "corefile.h"
15#include "cstrpool.h"
16
17
18static dynamic_array<const char *> drivlist;
19static dynamic_array<const char *> ignorelst;
20static const_string_pool string_pool;
21
22
23//-------------------------------------------------
24//  driver_sort_callback - compare two items in
25//  a string array
26//-------------------------------------------------
27
28int sort_callback(const void *elem1, const void *elem2)
29{
30   const char **item1 = (const char **)elem1;
31   const char **item2 = (const char **)elem2;
32   return strcmp(*item1, *item2);
33}
34
35//-------------------------------------------------
36//  isignored - return info if item is in ignore
37//  list or not
38//-------------------------------------------------
39
40bool isignored(const char *drivname)
41{
42   for (int i = 0; i < ignorelst.count(); i++)
43      if (strcmp(ignorelst[i], drivname) == 0)
44         return true;
45   return false;
46}
47
48//-------------------------------------------------
49//  parse_file - parse a single file, may be
50//  called recursively
51//-------------------------------------------------
52
53int parse_file(const char *srcfile)
54{
55   // read source file
56   dynamic_buffer buffer;
57   file_error filerr = core_fload(srcfile, buffer);
58   if (filerr != FILERR_NONE)
59   {
60      fprintf(stderr, "Unable to read source file '%s'\n", srcfile);
61      return 1;
62   }
63
64   // rip through it to find all drivers
65   char *srcptr = (char *)&buffer[0];
66   char *endptr = srcptr + buffer.count();
67   int linenum = 1;
68   bool in_comment = false;
69   while (srcptr < endptr)
70   {
71      char c = *srcptr++;
72
73      // count newlines
74      if (c == 13 || c == 10)
75      {
76         if (c == 13 && *srcptr == 10)
77            srcptr++;
78         linenum++;
79         continue;
80      }
81
82      // skip any spaces
83      if (isspace(c))
84         continue;
85
86      // look for end of C comment
87      if (in_comment && c == '*' && *srcptr == '/')
88      {
89         srcptr++;
90         in_comment = false;
91         continue;
92      }
93
94      // skip anything else inside a C comment
95      if (in_comment)
96         continue;
97
98      // look for start of C comment
99      if (c == '/' && *srcptr == '*')
100      {
101         srcptr++;
102         in_comment = true;
103         continue;
104      }
105
106      // if we hit a C++ comment, scan to the end of line
107      if (c == '/' && *srcptr == '/')
108      {
109         while (srcptr < endptr && *srcptr != 13 && *srcptr != 10)
110            srcptr++;
111         continue;
112      }
113
114      // look for an import directive
115      if (c == '#')
116      {
117         char filename[256];
118         filename[0] = 0;
119         for (int pos = 0; srcptr < endptr && pos < ARRAY_LENGTH(filename) - 1 && !isspace(*srcptr); pos++)
120         {
121            filename[pos] = *srcptr++;
122            filename[pos+1] = 0;
123         }
124         fprintf(stderr, "Importing drivers from '%s'\n", filename);
125         parse_file(filename);
126         continue;
127      }
128      if (c == '!')
129      {
130         char drivname[256];
131         drivname[0] = 0;
132         for (int pos = 0; srcptr < endptr && pos < ARRAY_LENGTH(drivname) - 1 && !isspace(*srcptr); pos++)
133         {
134            drivname[pos] = *srcptr++;
135            drivname[pos+1] = 0;
136         }
137         fprintf(stderr, "Place driver '%s' to ignore list\n", drivname);
138         ignorelst.append(string_pool.add(drivname));
139         continue;
140      }
141
142      // otherwise treat as a driver name
143      char drivname[32];
144      drivname[0] = 0;
145      srcptr--;
146      for (int pos = 0; srcptr < endptr && pos < ARRAY_LENGTH(drivname) - 1 && !isspace(*srcptr); pos++)
147      {
148         drivname[pos] = *srcptr++;
149         drivname[pos+1] = 0;
150      }
151
152      // verify the name as valid
153      for (char *drivch = drivname; *drivch != 0; drivch++)
154      {
155         if ((*drivch >= 'a' && *drivch <= 'z') || (*drivch >= '0' && *drivch <= '9') || *drivch == '_')
156            continue;
157         fprintf(stderr, "%s:%d - Invalid character '%c' in driver \"%s\"\n", srcfile, linenum, *drivch, drivname);
158         return 1;
159      }
160
161      // add it to the list
162      if (!isignored(drivname))
163         drivlist.append(string_pool.add(drivname));
164   }
165
166   return 0;
167}
168
169
170//-------------------------------------------------
171//  main - primary entry point
172//-------------------------------------------------
173
174int main(int argc, char *argv[])
175{
176   // needs at least 1 argument
177   if (argc < 2)
178   {
179      fprintf(stderr,
180         "Usage:\n"
181         "  makelist <source.lst>\n"
182      );
183      return 0;
184   }
185
186   // extract arguments
187   const char *srcfile = argv[1];
188
189   // parse the root file, exit early upon failure
190   if (parse_file(srcfile))
191      return 1;
192
193   // output a count
194   if (drivlist.count() == 0)
195   {
196      fprintf(stderr, "No drivers found\n");
197      return 1;
198   }
199   fprintf(stderr, "%d drivers found\n", drivlist.count());
200
201   // add a reference to the ___empty driver
202   drivlist.append("___empty");
203
204   // sort the list
205   qsort(drivlist, drivlist.count(), sizeof(drivlist[0]), sort_callback);
206
207   // start with a header
208   printf("#include \"emu.h\"\n\n");
209   printf("#include \"drivenum.h\"\n\n");
210
211   // output the list of externs first
212   for (int index = 0; index < drivlist.count(); index++)
213      printf("GAME_EXTERN(%s);\n", drivlist[index]);
214   printf("\n");
215
216   // then output the array
217   printf("const game_driver * const driver_list::s_drivers_sorted[%d] =\n", drivlist.count());
218   printf("{\n");
219   for (int index = 0; index < drivlist.count(); index++)
220      printf("\t&GAME_NAME(%s)%s\n", drivlist[index], (index == drivlist.count() - 1) ? "" : ",");
221   printf("};\n");
222   printf("\n");
223
224   // also output a global count
225   printf("int driver_list::s_driver_count = %d;\n", drivlist.count());
226
227   return 0;
228}
trunk/src/build/makelist.py
r0r243520
1#!/usr/bin/python
2
3from __future__ import with_statement
4
5import sys
6import os
7
8drivlist = []
9
10def parse_file(srcfile):
11    try:
12        fp = open(srcfile, 'rb')
13    except IOError:
14        print("Unable to open source file '%s'" % srcfile)
15        return 1
16    in_comment = 0
17    linenum = 0
18    for line in fp.readlines():
19        drivname = ''
20        linenum+=1
21        srcptr = 0
22        while srcptr < len(line):
23            c = line[srcptr]
24            srcptr+=1
25            if c==13 or c==10:
26                if c==13 and line[srcptr]==10:
27                    srcptr+=1
28                continue
29            if c==' ':
30                continue;
31            if in_comment==1 and c=='*' and line[srcptr]=='/' :
32                srcptr+=1
33                in_comment = 0;
34                continue
35            if (in_comment):
36                continue
37            if c=='/' and line[srcptr]=='*' :
38                srcptr+=1
39                in_comment = 1;
40                continue
41            if c=='/' and line[srcptr]=='/' :
42                break
43            drivname += c
44        drivname = drivname.strip()
45        if (len(drivname)>0):
46            if drivname[0]=='#':
47               sys.stderr.write("Importing drivers from '%s'\n" % drivname[1:])
48               parse_file(drivname[1:])
49               continue
50            if not all(((c >='a' and c<='z') or (c>='0' and c<='9') or c=='_') for c in drivname):
51               sys.stderr.write("%s:%d - Invalid character in driver \"%s\"\n" % (srcfile,  linenum,  drivname))
52               return 1
53            else:           
54               drivlist.append(drivname)
55    return 0
56
57
58if (len(sys.argv) < 2) :
59    print('Usage:')
60    print('  makelist <source.lst>')
61    sys.exit(0)
62
63if (parse_file(sys.argv[1])) :
64    sys.exit(1)
65
66# output a count
67if (len(drivlist)==0) :
68    sys.stderr.write("No drivers found\n")
69    sys.exit(1)
70
71sys.stderr.write("%d drivers found\n" % len(drivlist))
72
73# add a reference to the ___empty driver
74drivlist.append("___empty")
75
76# start with a header
77print('#include "emu.h"\n');
78print('#include "drivenum.h"\n');
79
80#output the list of externs first
81for drv in sorted(drivlist):
82   print("GAME_EXTERN(%s);" % drv)
83print("")
84
85# then output the array
86print("const game_driver * const driver_list::s_drivers_sorted[%d] =" % len(drivlist))
87print("{")
88for drv in sorted(drivlist):
89   print("\t&GAME_NAME(%s)," % drv)
90print("};");
91print("");
92
93# also output a global count
94print("int driver_list::s_driver_count = %d;\n" % len(drivlist))
trunk/src/build/verinfo.c
r243519r243520
1//============================================================
2//
3//  verinfo.c - Version resource emitter code
4//
5//  Copyright Nicola Salmoria and the MAME Team.
6//  Visit http://mamedev.org for licensing and usage restrictions.
7//
8//============================================================
9
10#include <stdio.h>
11#include <ctype.h>
12
13#include <string.h>
14#include <stdlib.h>
15
16typedef unsigned char UINT8;
17
18#define ARRAY_LENGTH(x)     (sizeof(x) / sizeof(x[0]))
19#define BUILD_MAME      (0)
20#define BUILD_MESS          (1)
21#define BUILD_UME           (2)
22
23//============================================================
24//  TYPE DEFINITIONS
25//============================================================
26
27struct version_info
28{
29   int version_major;
30   int version_minor;
31   int version_build;
32   int version_subbuild;
33   const char *version_string;
34   const char *author;
35   const char *comments;
36   const char *company_name;
37   const char *file_description;
38   const char *internal_name;
39   const char *legal_copyright;
40   const char *original_filename;
41   const char *product_name;
42};
43
44
45
46//============================================================
47// STATIC
48//============================================================
49
50static int build;
51
52
53//============================================================
54//  emit_version_info
55//============================================================
56
57static void emit_version_info(const version_info *v)
58{
59   printf("VS_VERSION_INFO VERSIONINFO\n");
60   printf("\tFILEVERSION %d,%d,%d,%d\n", v->version_major, v->version_minor, v->version_build, v->version_subbuild);
61   printf("\tPRODUCTVERSION %d,%d,%d,%d\n", v->version_major, v->version_minor, v->version_build, v->version_subbuild);
62   printf("\tFILEFLAGSMASK 0x3fL\n");
63#ifdef MAME_DEBUG
64   if (v->version_build == 0)
65      printf("\tFILEFLAGS VS_FF_DEBUG\n");
66   else
67      printf("\tFILEFLAGS VS_FF_PRERELEASE | VS_FF_DEBUG\n");
68#else
69   if (v->version_build == 0)
70      printf("\tFILEFLAGS 0x0L\n");
71   else
72      printf("\tFILEFLAGS VS_FF_PRERELEASE\n");
73#endif
74   printf("\tFILEOS VOS_NT_WINDOWS32\n");
75   printf("\tFILETYPE VFT_APP\n");
76   printf("\tFILESUBTYPE VFT2_UNKNOWN\n");
77   printf("BEGIN\n");
78   printf("\tBLOCK \"StringFileInfo\"\n");
79   printf("\tBEGIN\n");
80   printf("#ifdef UNICODE\n");
81   printf("\t\tBLOCK \"040904b0\"\n");
82   printf("#else\n");
83   printf("\t\tBLOCK \"040904E4\"\n");
84   printf("#endif\n");
85   printf("\t\tBEGIN\n");
86   if (v->author != NULL)
87      printf("\t\t\tVALUE \"Author\", \"%s\\0\"\n", v->author);
88   if (v->comments != NULL)
89      printf("\t\t\tVALUE \"Comments\", \"%s\\0\"\n", v->comments);
90   if (v->company_name != NULL)
91      printf("\t\t\tVALUE \"CompanyName\", \"%s\\0\"\n", v->company_name);
92   if (v->file_description != NULL)
93      printf("\t\t\tVALUE \"FileDescription\", \"%s\\0\"\n", v->file_description);
94   printf("\t\t\tVALUE \"FileVersion\", \"%d, %d, %d, %d\\0\"\n", v->version_major, v->version_minor, v->version_build, v->version_subbuild);
95   if (v->internal_name != NULL)
96      printf("\t\t\tVALUE \"InternalName\", \"%s\\0\"\n", v->internal_name);
97   if (v->legal_copyright != NULL)
98      printf("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"\n", v->legal_copyright);
99   if (v->original_filename != NULL)
100      printf("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"\n", v->original_filename);
101   if (v->product_name != NULL)
102      printf("\t\t\tVALUE \"ProductName\", \"%s\\0\"\n", v->product_name);
103   printf("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"\n", v->version_string);
104   printf("\t\tEND\n");
105   printf("\tEND\n");
106   printf("\tBLOCK \"VarFileInfo\"\n");
107   printf("\tBEGIN\n");
108   printf("#ifdef UNICODE\n");
109   printf("\t\tVALUE \"Translation\", 0x409, 1200\n");
110   printf("#else\n");
111   printf("\t\tVALUE \"Translation\", 0x409, 1252\n");
112   printf("#endif\n");
113   printf("\tEND\n");
114   printf("END\n");
115}
116
117
118
119//============================================================
120//  parse_version_digit
121//============================================================
122
123static bool parse_version_digit(const char *str, int *position, int* value)
124{
125   int res = 0;
126
127   while (str[*position] != 0 && !isspace((UINT8)str[*position]) && !isdigit((UINT8)str[*position]))
128      (*position)++;
129
130   if (str[*position] != 0 && isdigit((UINT8)str[*position]))
131   {
132      res = sscanf(&str[*position], "%d", value);
133      while (isdigit((UINT8)str[*position]))
134         (*position)++;
135   }
136   return res == 1;
137}
138
139
140
141//============================================================
142//  parse_version
143//============================================================
144
145static int parse_version(char *str, int *version_major, int *version_minor, const char **version_string)
146{
147   char *version;
148   int position = 0;
149
150   // find the version string
151   version = strstr(str, "BARE_BUILD_VERSION");
152   if (version != NULL)
153      version = strchr(version, '"');
154   if (version == NULL || *version == '\0' || strchr(version, '.') == NULL)
155   {
156      fprintf(stderr, "Unable to find version string\n");
157      return 1;
158   }
159   version++;
160   *strchr(version, '"') = 0;
161
162   *version_string = version;
163   if (!parse_version_digit(version, &position, version_major))
164   {
165      fprintf(stderr, "Unable to parse major version\n");
166      return 1;
167   }
168   if (!parse_version_digit(version, &position, version_minor))
169   {
170      fprintf(stderr, "Unable to parse minor version\n");
171      return 1;
172   }
173   return 0;
174}
175
176
177
178//============================================================
179//  main
180//============================================================
181static int usage(char *me)
182{
183   fprintf(stderr, "Usage: %s [-b mame|mess|ume] <filename>\n", me);
184   return 1;
185}
186
187
188//============================================================
189//  main
190//============================================================
191
192int main(int argc, char *argv[])
193{
194   version_info v;
195   char legal_copyright[512];
196   char *buffer;
197   size_t size;
198   int opt;
199   FILE *f;
200
201   memset(&v, 0, sizeof(v));
202   build = BUILD_MAME;
203
204   // validate parameters
205   opt = 1;
206   while (opt < argc && *argv[opt] == '-')
207   {
208      if (!strcmp(argv[opt], "-b"))
209      {
210         char *p = argv[++opt];
211         if (!strcmp(p,"mame"))
212            build = BUILD_MAME;
213         else if (!strcmp(p,"mess"))
214            build = BUILD_MESS;
215         else if (!strcmp(p,"ume"))
216            build = BUILD_UME;
217         else
218            return usage(argv[0]);
219      }
220      else
221         return usage(argv[0]);
222      opt++;
223   }
224
225   if (opt != argc-1 )
226   {
227      return usage(argv[0]);
228   }
229
230   // open the file
231   f = fopen(argv[argc-1], "rb");
232   if (f == NULL)
233   {
234      fprintf(stderr, "Error opening file %s\n", argv[argc-1]);
235      return 1;
236   }
237
238   // get the file size
239   fseek(f, 0, SEEK_END);
240   size = ftell(f);
241   fseek(f, 0, SEEK_SET);
242
243   // allocate a buffer
244   buffer = (char *)malloc(size + 1);
245   if (buffer == NULL)
246   {
247      fclose(f);
248      fprintf(stderr, "Error allocating %ld bytes\n", (long) size + 1);
249      return 1;
250   }
251
252   // read the file contents and NULL-terminate
253   fread(buffer, 1, size, f);
254   fclose(f);
255   buffer[size] = 0;
256
257   // parse out version string
258   if (parse_version(buffer, &v.version_major, &v.version_minor, &v.version_string))
259   {
260      fprintf(stderr, "Error parsing version\n");
261      free(buffer);
262      return 1;
263   }
264
265   if (build == BUILD_MESS)
266   {
267      // MESS
268      v.author = "MESS Team";
269      v.comments = "Multi Emulation Super System";
270      v.company_name = "MESS Team";
271      v.file_description = "Multi Emulation Super System";
272      v.internal_name = "MESS";
273      v.original_filename = "MESS";
274      v.product_name = "MESS";
275   }
276   else if (build == BUILD_UME)
277   {
278      // UME
279      v.author = "MAME and MESS Team";
280      v.comments = "Universal Machine Emulator";
281      v.company_name = "MAME and MESS Team";
282      v.file_description = "Universal Machine Emulator";
283      v.internal_name = "UME";
284      v.original_filename = "UME";
285      v.product_name = "UME";
286   }
287   else
288   {
289      // MAME
290      v.author = "Nicola Salmoria and the MAME Team";
291      v.comments = "Multiple Arcade Machine Emulator";
292      v.company_name = "MAME Team";
293      v.file_description = "Multiple Arcade Machine Emulator";
294      v.internal_name = "MAME";
295      v.original_filename = "MAME";
296      v.product_name = "MAME";
297   }
298
299   // build legal_copyright string
300   v.legal_copyright = legal_copyright;
301   snprintf(legal_copyright, ARRAY_LENGTH(legal_copyright), "Copyright Nicola Salmoria and the MAME team");
302
303   // emit the info
304   emit_version_info(&v);
305
306   free(buffer);
307   return 0;
308}
trunk/src/build/verinfo.py
r0r243520
1#!/usr/bin/python
2
3from __future__ import with_statement
4
5import sys
6import os
7
8def usage():
9    sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] <filename>\n')
10    return 0
11   
12build = "mame"
13
14if (len(sys.argv)==1):
15   usage()
16   sys.exit(1)
17
18if (sys.argv[1]=='-b'):
19    if (sys.argv[2]=='mame'):
20        build = "mame"
21    elif (sys.argv[2]=='mess'):
22        build = "mess"
23    elif (sys.argv[2]=='ume'):
24        build = "ume"
25    else :
26      usage()
27      sys.exit(1)
28
29srcfile = sys.argv[len(sys.argv)-1]
30try:
31   fp = open(srcfile, 'rb')
32except IOError:
33   sys.stderr.write("Unable to open source file '%s'" % srcfile)
34   sys.exit(1)
35
36for line in fp.readlines():
37    if line.find("BARE_BUILD_VERSION")!=-1 and line.find('"')!=-1 and line.find('.')!=-1:
38        version_string = line[line.find('"')+1:]
39        version_string = version_string[0:version_string.find('"')]
40        break
41
42version_major = version_string[0:version_string.find('.')]
43version_minor = version_string[version_string.find('.')+1:]
44version_build = "0"
45version_subbuild = "0"
46if (build == "mess") :
47    # MESS
48    author = "MESS Team";
49    comments = "Multi Emulation Super System";
50    company_name = "MESS Team";
51    file_description = "Multi Emulation Super System";
52    internal_name = "MESS";
53    original_filename = "MESS";
54    product_name = "MESS";
55elif (build == "ume") :
56    # UME
57    author = "MAME and MESS Team"
58    comments = "Universal Machine Emulator"
59    company_name = "MAME and MESS Team"
60    file_description = "Universal Machine Emulator"
61    internal_name = "UME"
62    original_filename = "UME"
63    product_name = "UME"
64else :
65    # MAME
66    author = "Nicola Salmoria and the MAME Team"
67    comments = "Multiple Arcade Machine Emulator"
68    company_name = "MAME Team"
69    file_description = "Multiple Arcade Machine Emulator"
70    internal_name = "MAME"
71    original_filename = "MAME"
72    product_name = "MAME"
73
74legal_copyright = "Copyright Nicola Salmoria and the MAME team"
75
76print("VS_VERSION_INFO VERSIONINFO")
77print("\tFILEVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
78print("\tPRODUCTVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
79print("\tFILEFLAGSMASK 0x3fL")
80if (version_build == 0) :
81    print("\tFILEFLAGS 0x0L")
82else :
83    print("\tFILEFLAGS VS_FF_PRERELEASE")
84print("\tFILEOS VOS_NT_WINDOWS32")
85print("\tFILETYPE VFT_APP")
86print("\tFILESUBTYPE VFT2_UNKNOWN")
87print("BEGIN")
88print("\tBLOCK \"StringFileInfo\"")
89print("\tBEGIN")
90print("#ifdef UNICODE")
91print("\t\tBLOCK \"040904b0\"")
92print("#else")
93print("\t\tBLOCK \"040904E4\"")
94print("#endif")
95print("\t\tBEGIN")
96print("\t\t\tVALUE \"Author\", \"%s\\0\"" % author)
97print("\t\t\tVALUE \"Comments\", \"%s\\0\"" % comments)
98print("\t\t\tVALUE \"CompanyName\", \"%s\\0\"" % company_name)
99print("\t\t\tVALUE \"FileDescription\", \"%s\\0\"" % file_description)
100print("\t\t\tVALUE \"FileVersion\", \"%s, %s, %s, %s\\0\"" % (version_major, version_minor, version_build, version_subbuild))
101print("\t\t\tVALUE \"InternalName\", \"%s\\0\"" % internal_name)
102print("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"" % legal_copyright)
103print("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"" % original_filename)
104print("\t\t\tVALUE \"ProductName\", \"%s\\0\"" % product_name)
105print("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"" % version_string)
106print("\t\tEND")
107print("\tEND")
108print("\tBLOCK \"VarFileInfo\"")
109print("\tBEGIN")
110print("#ifdef UNICODE")
111print("\t\tVALUE \"Translation\", 0x409, 1200")
112print("#else")
113print("\t\tVALUE \"Translation\", 0x409, 1252")
114print("#endif")
115print("\tEND")
116print("END")
No newline at end of file
trunk/src/emu/audit.c
r243519r243520
421421
422422   // find the file and checksum it, getting the file length along the way
423423   emu_file file(m_enumerator.options().media_path(), OPEN_FLAG_READ | OPEN_FLAG_NO_PRELOAD);
424   file.set_restrict_to_mediapath(true);
424425   path_iterator path(m_searchpath);
425426   astring curpath;
426427   while (path.next(curpath, record.name()))
trunk/src/emu/cpu/amis2000/amis2000.h
r243519r243520
7777   UINT8 m_callstack_bits;     // number of program counter bits held in callstack
7878   UINT16 m_callstack_mask;
7979   UINT8 m_callstack_depth;    // callstack levels: 3 on 2000/2150, 5 on 2200/2400
80   UINT16 m_callstack[5+1];    // max 5
80   UINT16 m_callstack[5];      // max 5
8181   int m_icount;
8282   UINT16 m_pc;                // 13-bit program counter
8383   UINT8 m_ppr;                // prepared page register (PP 1)
trunk/src/emu/cpu/amis2000/amis2000op.inc
r243519r243520
1717void amis2000_device::pop_callstack()
1818{
1919   m_pc = (m_pc & ~m_callstack_mask) | (m_callstack[0] & m_callstack_mask);
20   for (int i = 0; i < m_callstack_depth; i++)
21   {
20   for (int i = 0; i < m_callstack_depth-1; i++)
2221      m_callstack[i] = m_callstack[i+1];
23      m_callstack[i+1] = 0;
24   }
2522}
2623
2724void amis2000_device::push_callstack()
trunk/src/emu/cpu/ucom4/ucom4.c
r243519r243520
1010  I've also looked at asterick's JavaScript D553 emulator for verification, with permission.
1111
1212  TODO:
13  - add external interrupt
1314  - what happens with uCOM-43 opcodes on an uCOM-44/45 MCU?
1415  - what's the data after the ROM data for? (eg. 2000-2047, official ROM size is 2000)
1516
r243519r243520
122123   m_datamask = (1 << m_datawidth) - 1;
123124   m_dph_mask = m_datamask >> 4;
124125
126   m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ucom4_cpu_device::simple_timer_cb), this));
127
125128   m_read_a.resolve_safe(0xf);
126129   m_read_b.resolve_safe(0xf);
127130   m_read_c.resolve_safe(0xf);
r243519r243520
187190
188191void ucom4_cpu_device::device_reset()
189192{
190   m_inte_f = 1;
191193   m_pc = 0;
192194   m_op = 0;
193195   m_skip = false;
194196
197   m_timer->adjust(attotime::never);
198
195199   // clear i/o
196200   for (int i = NEC_UCOM4_PORTC; i <= NEC_UCOM4_PORTI; i++)
197201      output_w(i, 0xf);
trunk/src/emu/cpu/ucom4/ucom4.h
r243519r243520
133133   int m_datamask;
134134   int m_family;           // MCU family (43/44/45)
135135   int m_stack_levels;     // number of callstack levels
136   UINT16 m_stack[3+1];    // max 3
136   UINT16 m_stack[3];      // max 3
137137   UINT8 m_port_out[0x10]; // last value written to output port
138138   UINT8 m_op;
139139   UINT8 m_prev_op;        // previous opcode
r243519r243520
141141   UINT8 m_bitmask;        // opcode bit argument
142142   bool m_skip;            // skip next opcode
143143   int m_icount;
144   emu_timer *m_timer;
144145   
145146   UINT16 m_pc;            // program counter
146147   UINT8 m_acc;            // 4-bit accumulator
r243519r243520
179180   void output_w(int index, UINT8 data);
180181
181182   bool check_op_43();
183   TIMER_CALLBACK_MEMBER( simple_timer_cb );
182184   UINT8 ucom43_reg_r(int index);
183185   void ucom43_reg_w(int index, UINT8 data);
184186
trunk/src/emu/cpu/ucom4/ucom4op.inc
r243519r243520
1717void ucom4_cpu_device::pop_stack()
1818{
1919   m_pc = m_stack[0] & m_prgmask;
20   for (int i = 0; i < m_stack_levels; i++)
21   {
20   for (int i = 0; i < m_stack_levels-1; i++)
2221      m_stack[i] = m_stack[i+1];
23      m_stack[i+1] = 0;
24   }
2522}
2623
2724void ucom4_cpu_device::push_stack()
r243519r243520
429426void ucom4_cpu_device::op_tit()
430427{
431428   // TIT: skip next on Interrupt F/F, reset Interrupt F/F
432   op_illegal();
429   m_skip = (m_int_f != 0);
430   m_int_f = 0;
433431}
434432
435433
r243519r243520
489487   return (m_family == NEC_UCOM43);
490488}
491489
490TIMER_CALLBACK_MEMBER( ucom4_cpu_device::simple_timer_cb )
491{
492   m_timer_f = 1;
493}
494
492495// extra registers reside in RAM
493496enum
494497{
r243519r243520
512515}
513516
514517
518
515519// Transfer
516520
517521void ucom4_cpu_device::op_taw()
r243519r243520
712716   if (!check_op_43()) return;
713717   
714718   // STM X: Reset Timer F/F, Start Timer with X
715   op_illegal();
719   m_timer_f = 0;
716720
721   // on the default clockrate of 400kHz, the minimum time interval is
722   // 630usec and the maximum interval is 40320usec(630*64)
723   attotime base = attotime::from_hz(unscaled_clock() / 4 / 63);
724   m_timer->adjust(base * ((m_arg & 0x3f) + 1));
725
717726   if ((m_arg & 0xc0) != 0x80)
718727      logerror("%s STM opcode unexpected upper arg $%02X at $%03X\n", tag(), m_arg & 0xc0, m_pc);
719728}
r243519r243520
723732   if (!check_op_43()) return;
724733   
725734   // TTM: skip next on Timer F/F
726   op_illegal();
735   m_skip = (m_timer_f != 0);
727736}
728737
729738
r243519r243520
734743   if (!check_op_43()) return;
735744   
736745   // EI: Set Interrupt Enable F/F
737   op_illegal();
746   m_inte_f = 1;
738747}
739748
740749void ucom4_cpu_device::op_di()
r243519r243520
742751   if (!check_op_43()) return;
743752   
744753   // DI: Reset Interrupt Enable F/F
745   op_illegal();
754   m_inte_f = 0;
746755}
trunk/src/emu/fileio.c
r243519r243520
141141emu_file::emu_file(UINT32 openflags)
142142   : m_file(NULL),
143143      m_iterator(""),
144      m_mediapaths(""),
144145      m_crc(0),
145146      m_openflags(openflags),
146147      m_zipfile(NULL),
147148      m_ziplength(0),
148149      m__7zfile(NULL),
149150      m__7zlength(0),
150      m_remove_on_close(false)
151      m_remove_on_close(false),
152      m_restrict_to_mediapath(false)
151153{
152154   // sanity check the open flags
153155   if ((m_openflags & OPEN_FLAG_HAS_CRC) && (m_openflags & OPEN_FLAG_WRITE))
r243519r243520
157159emu_file::emu_file(const char *searchpath, UINT32 openflags)
158160   : m_file(NULL),
159161      m_iterator(searchpath),
162      m_mediapaths(searchpath),
160163      m_crc(0),
161164      m_openflags(openflags),
162165      m_zipfile(NULL),
163166      m_ziplength(0),
164167      m__7zfile(NULL),
165168      m__7zlength(0),
166      m_remove_on_close(false)
169      m_remove_on_close(false),
170      m_restrict_to_mediapath(false)
167171{
168172   // sanity check the open flags
169173   if ((m_openflags & OPEN_FLAG_HAS_CRC) && (m_openflags & OPEN_FLAG_WRITE))
r243519r243520
354358      {
355359         astring tempfullpath = m_fullpath;
356360
357         filerr = attempt__7zped();
361         filerr = attempt_zipped();
358362         if (filerr == FILERR_NONE)
359363            break;
360364
361365         m_fullpath = tempfullpath;
362366
363         filerr = attempt_zipped();
367         filerr = attempt__7zped();
364368         if (filerr == FILERR_NONE)
365369            break;
366
367
368370      }
369371   }
370372   return filerr;
r243519r243520
650652}
651653
652654
655//-------------------------------------------------
656//  part_of_mediapath - checks if 'path' is part of
657//  any media path
658//-------------------------------------------------
653659
660bool emu_file::part_of_mediapath(astring path)
661{
662   bool result = false;
663   astring mediapath;
664   m_mediapaths.reset();
665   while (m_mediapaths.next(mediapath, NULL) && !result)
666      if (path.cmpsubstr(mediapath, 0, mediapath.len()))
667         result = true;
668   return result;
669}
670
654671//-------------------------------------------------
655672//  attempt_zipped - attempt to open a ZIPped file
656673//-------------------------------------------------
r243519r243520
667684      if (dirsep == -1)
668685         return FILERR_NOT_FOUND;
669686
687      if (restrict_to_mediapath())
688         if ( !part_of_mediapath(m_fullpath) )
689            return FILERR_NOT_FOUND;
690
670691      // insert the part from the right of the separator into the head of the filename
671692      if (filename.len() > 0)
672693         filename.ins(0, "/");
r243519r243520
798819      if (dirsep == -1)
799820         return FILERR_NOT_FOUND;
800821
822      if (restrict_to_mediapath())
823         if ( !part_of_mediapath(m_fullpath) )
824            return FILERR_NOT_FOUND;
825
801826      // insert the part from the right of the separator into the head of the filename
802827      if (filename.len() > 0)
803828         filename.ins(0, "/");
trunk/src/emu/fileio.h
r243519r243520
9797   const char *fullpath() const { return m_fullpath; }
9898   UINT32 openflags() const { return m_openflags; }
9999   hash_collection &hashes(const char *types);
100   bool restrict_to_mediapath() { return m_restrict_to_mediapath; }
101   bool part_of_mediapath(astring path);
100102
101103   // setters
102104   void remove_on_close() { m_remove_on_close = true; }
103105   void set_openflags(UINT32 openflags) { assert(m_file == NULL); m_openflags = openflags; }
106   void set_restrict_to_mediapath(bool rtmp = true) { m_restrict_to_mediapath = rtmp; }
104107
105108   // open/close
106109   file_error open(const char *name);
r243519r243520
151154   astring         m_fullpath;                     // full filename
152155   core_file *     m_file;                         // core file pointer
153156   path_iterator   m_iterator;                     // iterator for paths
154   UINT32          m_crc;                          // iterator for paths
157   path_iterator   m_mediapaths;         // media-path iterator
158   UINT32          m_crc;                          // file's CRC
155159   UINT32          m_openflags;                    // flags we used for the open
156160   hash_collection m_hashes;                       // collection of hashes
157161
r243519r243520
164168   UINT64          m__7zlength;                    // 7Z file length
165169
166170   bool            m_remove_on_close;              // flag: remove the file when closing
171   bool      m_restrict_to_mediapath;   // flag: restrict to paths inside the media-path
167172};
168173
169174
trunk/src/mame/drivers/alg.c
r243519r243520
810810   /* works ok but uses right player (2) controls only for trigger and holster */
811811
812812/* NOVA games on ALG hardware with own address scramble */
813GAME( 199?, aplatoon, alg_bios, alg_r2,   alg, alg_state,    aplatoon, ROT0,  "Nova?", "Platoon V.?.? US", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
813GAME( 199?, aplatoon, alg_bios, alg_r2,   alg, alg_state,    aplatoon, ROT0,  "Nova?", "Platoon V.3.1 US", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
814814
815815/* Web Picmatic games PAL tv standard, own rom board */
816816GAME( 1993, zortonbr, alg_bios, picmatic, alg, alg_state,    pal,     ROT0,  "Web Picmatic", "Zorton Brothers (Los Justicieros)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
trunk/src/mame/drivers/chaknpop.c
r243519r243520
143143static ADDRESS_MAP_START( chaknpop_map, AS_PROGRAM, 8, chaknpop_state )
144144   AM_RANGE(0x0000, 0x7fff) AM_ROM
145145   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("mcu_ram")
146   AM_RANGE(0x8800, 0x8800) AM_READWRITE(chaknpop_mcu_port_a_r, chaknpop_mcu_port_a_w)
147   AM_RANGE(0x8801, 0x8801) AM_READWRITE(chaknpop_mcu_port_b_r, chaknpop_mcu_port_b_w)
148   AM_RANGE(0x8802, 0x8802) AM_READWRITE(chaknpop_mcu_port_c_r, chaknpop_mcu_port_c_w)
146   AM_RANGE(0x8800, 0x8800) AM_READWRITE(mcu_port_a_r, mcu_port_a_w)
147   AM_RANGE(0x8801, 0x8801) AM_READWRITE(mcu_port_b_r, mcu_port_b_w)
148   AM_RANGE(0x8802, 0x8802) AM_READWRITE(mcu_port_c_r, mcu_port_c_w)
149149   AM_RANGE(0x8804, 0x8805) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
150150   AM_RANGE(0x8806, 0x8807) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
151151   AM_RANGE(0x8808, 0x8808) AM_READ_PORT("DSWC")
152152   AM_RANGE(0x8809, 0x8809) AM_READ_PORT("P1")
153153   AM_RANGE(0x880a, 0x880a) AM_READ_PORT("SYSTEM")
154154   AM_RANGE(0x880b, 0x880b) AM_READ_PORT("P2")
155   AM_RANGE(0x880c, 0x880c) AM_READWRITE(chaknpop_gfxmode_r, chaknpop_gfxmode_w)
155   AM_RANGE(0x880c, 0x880c) AM_READWRITE(gfxmode_r, gfxmode_w)
156156   AM_RANGE(0x880d, 0x880d) AM_WRITE(coinlock_w)                                               // coin lock out
157   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(chaknpop_txram_w) AM_SHARE("tx_ram")          // TX tilemap
158   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(chaknpop_attrram_w) AM_SHARE("attr_ram")      // Color attribute
157   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(txram_w) AM_SHARE("tx_ram")          // TX tilemap
158   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(attrram_w) AM_SHARE("attr_ram")      // Color attribute
159159   AM_RANGE(0x9840, 0x98ff) AM_RAM AM_SHARE("spr_ram") // sprite
160160   AM_RANGE(0xa000, 0xbfff) AM_ROM
161161   AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank1")                                                        // bitmap plane 1-4
r243519r243520
362362   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
363363   MCFG_SCREEN_SIZE(32*8, 32*8)
364364   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
365   MCFG_SCREEN_UPDATE_DRIVER(chaknpop_state, screen_update_chaknpop)
365   MCFG_SCREEN_UPDATE_DRIVER(chaknpop_state, screen_update)
366366   MCFG_SCREEN_PALETTE("palette")
367367
368368   MCFG_GFXDECODE_ADD("gfxdecode", "palette", chaknpop)
r243519r243520
416416
417417
418418/*  ( YEAR  NAME      PARENT    MACHINE   INPUT     INIT      MONITOR  COMPANY              FULLNAME ) */
419GAME( 1983, chaknpop, 0,        chaknpop, chaknpop, driver_device, 0,        ROT0,    "Taito Corporation", "Chack'n Pop", 0 )
419GAME( 1983, chaknpop, 0,        chaknpop, chaknpop, driver_device, 0,        ROT0,    "Taito Corporation", "Chack'n Pop", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/champbas.c
r243519r243520
801801   ROM_LOAD( "16.11i", 0x5000, 0x1000, CRC(1612adf5) SHA1(9adeb21d5d1692f6e31460062f03f2008076b307) )
802802
803803   ROM_REGION( 0x2000, "mcu", 0 )
804   ROM_LOAD( "8201.bin", 0x0000, 0x2000, CRC(b77931ac) SHA1(405b02585e80d95a2821455538c5c2c31ce262d1) )
804   ROM_LOAD( "alpha-8201__44801a75__2f25.bin", 0x0000, 0x2000, CRC(b77931ac) SHA1(405b02585e80d95a2821455538c5c2c31ce262d1) )
805805
806806   ROM_REGION( 0x1000, "gfx1", 0 ) // chars
807807   ROM_LOAD( "7.6a", 0x0000, 0x1000, CRC(bde14194) SHA1(f8f569342a3094eb5450a30b8ab87901b98e6061) )
r243519r243520
848848   ROM_LOAD( "18.2n", 0x4000, 0x2000, CRC(2dc484dd) SHA1(28bd68c787d7e6989849ca52009948dbd5cdcc79) )
849849
850850   ROM_REGION( 0x2000, "mcu", 0 )
851   ROM_LOAD( "8201.bin", 0x0000, 0x2000, CRC(b77931ac) SHA1(405b02585e80d95a2821455538c5c2c31ce262d1) )
851   ROM_LOAD( "alpha-8201__44801a75__2f25.bin", 0x0000, 0x2000, CRC(b77931ac) SHA1(405b02585e80d95a2821455538c5c2c31ce262d1) )
852852
853853   ROM_REGION( 0x2000, "gfx1", 0 ) // chars + sprites: rearranged by DRIVER_INIT to leave only chars
854854   ROM_LOAD( "14.5e", 0x0000, 0x2000, CRC(1b8202b3) SHA1(889b77fc3d0cb029baf8c47be260f513f3ed59bd) )
r243519r243520
897897
898898   // the pcb has a 8302 on it, though only the 8201 instructions are used
899899   ROM_REGION( 0x2000, "mcu", 0 )
900   ROM_LOAD( "8302.bin", 0x0000, 0x2000, CRC(edabac6c) SHA1(eaf1c51b63023256df526b0d3fd53cffc919c901) )
900   ROM_LOAD( "alpha-8302__44801b35.bin", 0x0000, 0x2000, CRC(edabac6c) SHA1(eaf1c51b63023256df526b0d3fd53cffc919c901) )
901901
902902   ROM_REGION( 0x2000, "gfx1", 0 ) // chars + sprites: rearranged by DRIVER_INIT to leave only chars
903903   ROM_LOAD( "epr5936", 0x0000, 0x2000, CRC(c4a4df75) SHA1(7b85dbf405697b0b8881f910c08f6db6c828b19a) )
r243519r243520
925925
926926   // the pcb has a 8302 on it, though only the 8201 instructions are used
927927   ROM_REGION( 0x2000, "mcu", 0 )
928   ROM_LOAD( "8302.bin", 0x0000, 0x2000, CRC(edabac6c) SHA1(eaf1c51b63023256df526b0d3fd53cffc919c901) )
928   ROM_LOAD( "alpha-8302__44801b35.bin", 0x0000, 0x2000, CRC(edabac6c) SHA1(eaf1c51b63023256df526b0d3fd53cffc919c901) )
929929
930930   ROM_REGION( 0x2000, "gfx1", 0 ) // chars + sprites: rearranged by DRIVER_INIT to leave only chars
931931   ROM_LOAD( "epr5936", 0x0000, 0x2000, CRC(c4a4df75) SHA1(7b85dbf405697b0b8881f910c08f6db6c828b19a) )
r243519r243520
953953
954954   // the pcb has a 8302 on it, though only the 8201 instructions are used
955955   ROM_REGION( 0x2000, "mcu", 0 )
956   ROM_LOAD( "8302.bin", 0x0000, 0x2000, CRC(edabac6c) SHA1(eaf1c51b63023256df526b0d3fd53cffc919c901) )
956   ROM_LOAD( "alpha-8302__44801b35.bin", 0x0000, 0x2000, CRC(edabac6c) SHA1(eaf1c51b63023256df526b0d3fd53cffc919c901) )
957957
958958   ROM_REGION( 0x2000, "gfx1", 0 ) // chars + sprites: rearranged by DRIVER_INIT to leave only chars
959959   ROM_LOAD( "4.6a", 0x0000, 0x2000, CRC(c4a4df75) SHA1(7b85dbf405697b0b8881f910c08f6db6c828b19a) )
trunk/src/mame/drivers/equites.c
r243519r243520
12851285
12861286Main processor   - 68000 2.988MHz
12871287
1288Video processor  - ALPHA-8303 custom
1288Protection processor  - ALPHA-8303 custom
12891289
12901290Sound processor  - 8085 3.073MHz
12911291                 - TMP8155 RIOTs    (RAM & I/O Timers)
r243519r243520
13101310   ROM_LOAD( "ev4.1h", 0x06000, 0x2000, CRC(b7917264) SHA1(e58345fda088b171fd348959de15082f3cb42514) )
13111311
13121312   ROM_REGION( 0x2000, "mcu", 0 )
1313   ROM_LOAD( "8303.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
1313   ROM_LOAD( "alpha-8303__44801b42.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
13141314
13151315   ROM_REGION( 0x1000, "gfx1", 0 ) // chars
13161316   ROM_LOAD( "ep9",  0x00000, 0x1000, CRC(0325be11) SHA1(d95667b439e3d97b08efeaf08022348546a4f385) )
r243519r243520
13741374   ROM_LOAD( "ev4.1h", 0x06000, 0x2000, CRC(b7917264) SHA1(e58345fda088b171fd348959de15082f3cb42514) )
13751375
13761376   ROM_REGION( 0x2000, "mcu", 0 )
1377   ROM_LOAD( "8303.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
1377   ROM_LOAD( "alpha-8303__44801b42.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
13781378
13791379   ROM_REGION( 0x1000, "gfx1", 0 ) // chars
13801380   ROM_LOAD( "epr-ep0.3e",  0x00000, 0x1000, CRC(3f5a81c3) SHA1(8fd5bc621f483bfa46be7e40e6480b25243bdf70) )
r243519r243520
14321432   ROM_LOAD( "hv4vr.bin", 0x06000, 0x2000, CRC(62c7a25b) SHA1(237d3cbdfbf45b33c2f65d30faba151380866a93) )
14331433
14341434   ROM_REGION( 0x2000, "mcu", 0 )
1435   ROM_LOAD( "8303.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
1435   ROM_LOAD( "alpha-8303__44801b42.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
14361436
14371437   ROM_REGION( 0x1000, "gfx1", 0 ) // chars
14381438   ROM_LOAD( "h.bin", 0x000000, 0x1000, CRC(c6894c9a) SHA1(0d5a55cded4fd833211bdc733a78c6c8423897de) )
r243519r243520
15141514   ROM_LOAD( "hv4vr.bin", 0x06000, 0x2000, CRC(62c7a25b) SHA1(237d3cbdfbf45b33c2f65d30faba151380866a93) )
15151515
15161516   ROM_REGION( 0x2000, "mcu", 0 )
1517   ROM_LOAD( "8303.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
1517   ROM_LOAD( "alpha-8303__44801b42.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
15181518
15191519   ROM_REGION( 0x1000, "gfx1", 0 ) // chars
15201520   ROM_LOAD( "h.bin", 0x000000, 0x1000, CRC(c6894c9a) SHA1(0d5a55cded4fd833211bdc733a78c6c8423897de) )
r243519r243520
17121712   ROM_LOAD( "4_v.1h", 0x06000, 0x2000, CRC(10f45af4) SHA1(00fa599bad8bf3ba6deee54165f381403096e8f9) )
17131713
17141714   ROM_REGION( 0x2000, "mcu", 0 )
1715   ROM_LOAD( "8303.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
1715   ROM_LOAD( "alpha-8303__44801b42.bin", 0x0000, 0x2000, CRC(66adcb37) SHA1(e1c72ecb161129dcbddc0b16dd90e716d0c79311) )
17161716
17171717   ROM_REGION( 0x2000, "gfx1", 0 ) // chars
17181718   ROM_LOAD( "10.8c",  0x00000, 0x2000, CRC(501887d4) SHA1(3cf4401d6fddff1500066219a71ac3b30ecbdd28) )
r243519r243520
17771777   ROM_LOAD( "6_v.1h", 0x04000, 0x4000, CRC(e9542211) SHA1(482f2c90e842fe5cc31cc6a39025adf65ba47ce9) )
17781778   ROM_LOAD( "7_v.1e", 0x08000, 0x4000, CRC(44d38554) SHA1(6765971376eafa218fda1accb1e173a7c1850cc8) )
17791779
1780   ROM_REGION( 0x2000, "mcu", 0 )
1781   ROM_LOAD( "alpha-8304__44801bxx.bin", 0x0000, 0x2000, NO_DUMP )
1782
17801783   ROM_REGION( 0x2000, "gfx1", 0 ) // chars
17811784   ROM_LOAD( "5.8c",   0x00000, 0x2000, CRC(656d53cd) SHA1(9971ed7e7da0e8bf46e97e8f75a2c2201b33fc2f) )
17821785
trunk/src/mame/drivers/igs_m027.c
r243519r243520
6161   DECLARE_DRIVER_INIT(gonefsh2);
6262   DECLARE_DRIVER_INIT(sddz);
6363   DECLARE_DRIVER_INIT(hauntedh);
64   DECLARE_DRIVER_INIT(bigd2);
64   DECLARE_DRIVER_INIT(zhongguo);
6565   DECLARE_DRIVER_INIT(klxyj);
6666   DECLARE_DRIVER_INIT(fearless);
6767   TILE_GET_INFO_MEMBER(get_tx_tilemap_tile_info);
r243519r243520
569569
570570/*
571571
572Big D2
572Zhong Guo Chu Da D
573573IGS, 2000
574574
575575PCB Layout
r243519r243520
612612
613613*/
614614
615ROM_START( bigd2 )
615ROM_START( zhongguo )
616616   ROM_REGION( 0x04000, "maincpu", 0 )
617617   /* Internal rom of IGS027A ARM based MCU */
618   ROM_LOAD( "bigd2_igs027a", 0x00000, 0x4000, NO_DUMP )
618   ROM_LOAD( "zhongguo_igs027a", 0x00000, 0x4000, NO_DUMP )
619619
620620   ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
621621   ROM_LOAD( "p2600.u10", 0x000000, 0x80000, CRC(9ad34135) SHA1(54717753d1296efe49946369fd4a27181f19dbc0) )
r243519r243520
953953   pgm_create_dummy_internal_arm_region();
954954}
955955
956DRIVER_INIT_MEMBER(igs_m027_state,bigd2)
956DRIVER_INIT_MEMBER(igs_m027_state,zhongguo)
957957{
958   big2_decrypt(machine());
958   zhongguo_decrypt(machine());
959959   //sdwx_gfx_decrypt(machine());
960960   pgm_create_dummy_internal_arm_region();
961961}
r243519r243520
968968
969969GAME( 2002,  sdwx,      0, igs_majhong, sdwx, igs_m027_state, sdwx,        ROT0, "IGS", "Sheng Dan Wu Xian", GAME_IS_SKELETON ) // aka Christmas 5 Line?
970970GAME( 200?,  sddz,      0, igs_majhong, sdwx, igs_m027_state, sddz,        ROT0, "IGS", "Super Dou Di Zhu",  GAME_IS_SKELETON )
971GAME( 2000,  bigd2   0, igs_majhong, sdwx, igs_m027_state, bigd2,       ROT0, "IGS", "Big D2",  GAME_IS_SKELETON )
971GAME( 2000,  zhongguo,  0, igs_majhong, sdwx, igs_m027_state, zhongguo,    ROT0, "IGS", "Zhong Guo Chu Da D",  GAME_IS_SKELETON )
972972GAME( 200?,  lhzb3,     0, igs_majhong, sdwx, igs_m027_state, lhzb3,       ROT0, "IGS", "Long Hu Zheng Ba 3", GAME_IS_SKELETON )
973973GAME( 200?,  lhzb4,     0, igs_majhong, sdwx, igs_m027_state, lhzb4,       ROT0, "IGS", "Long Hu Zheng Ba 4", GAME_IS_SKELETON )
974974GAME( 200?,  klxyj,     0, igs_majhong, sdwx, igs_m027_state, klxyj,       ROT0, "IGS", "Kuai Le Xi You Ji",  GAME_IS_SKELETON )
trunk/src/mame/drivers/shougi.c
r243519r243520
459459   /* shougi has one socket empty */
460460
461461   ROM_REGION( 0x2000, "mcu", 0 )
462   ROM_LOAD( "8201.bin", 0x0000, 0x2000, CRC(b77931ac) SHA1(405b02585e80d95a2821455538c5c2c31ce262d1) )
462   ROM_LOAD( "alpha-8201__44801a75__2f25.bin", 0x0000, 0x2000, CRC(b77931ac) SHA1(405b02585e80d95a2821455538c5c2c31ce262d1) )
463463
464464   ROM_REGION( 0x0020, "proms", 0 )
465465   ROM_LOAD( "pr.2l",   0x0000, 0x0020, CRC(cd3559ff) SHA1(a1291b06a8a337943660b2ef62c94c49d58a6fb5) )
r243519r243520
481481   ROM_LOAD( "10-2.3l",   0x5000, 0x1000, CRC(a26385fd) SHA1(2adb21bb4f67a378014bc1edda48daca349d17e1) )
482482
483483   ROM_REGION( 0x2000, "mcu", 0 )
484   ROM_LOAD( "8201.bin", 0x0000, 0x2000, CRC(b77931ac) SHA1(405b02585e80d95a2821455538c5c2c31ce262d1) )
484   ROM_LOAD( "alpha-8201__44801a75__2f25.bin", 0x0000, 0x2000, CRC(b77931ac) SHA1(405b02585e80d95a2821455538c5c2c31ce262d1) )
485485
486486   ROM_REGION( 0x0020, "proms", 0 )
487487   ROM_LOAD( "pr.2l",   0x0000, 0x0020, CRC(cd3559ff) SHA1(a1291b06a8a337943660b2ef62c94c49d58a6fb5) )
trunk/src/mame/includes/chaknpop.h
r243519r243520
88public:
99   chaknpop_state(const machine_config &mconfig, device_type type, const char *tag)
1010      : driver_device(mconfig, type, tag),
11      m_maincpu(*this, "maincpu"),
12      m_gfxdecode(*this, "gfxdecode"),
13      m_palette(*this, "palette"),
1114      m_mcu_ram(*this, "mcu_ram"),
1215      m_tx_ram(*this, "tx_ram"),
1316      m_attr_ram(*this, "attr_ram"),
14      m_spr_ram(*this, "spr_ram"),
15      m_maincpu(*this, "maincpu"),
16      m_gfxdecode(*this, "gfxdecode"),
17      m_palette(*this, "palette") { }
17      m_spr_ram(*this, "spr_ram") { }
1818
19   /* devices */
20   required_device<cpu_device> m_maincpu;
21   required_device<gfxdecode_device> m_gfxdecode;
22   required_device<palette_device> m_palette;
23
1924   /* memory pointers */
2025   required_shared_ptr<UINT8> m_mcu_ram;
2126   required_shared_ptr<UINT8> m_tx_ram;
r243519r243520
3742   UINT8    m_gfxmode;
3843   UINT8    m_flip_x;
3944   UINT8    m_flip_y;
45   
4046   DECLARE_WRITE8_MEMBER(coinlock_w);
41   DECLARE_READ8_MEMBER(chaknpop_mcu_port_a_r);
42   DECLARE_READ8_MEMBER(chaknpop_mcu_port_b_r);
43   DECLARE_READ8_MEMBER(chaknpop_mcu_port_c_r);
44   DECLARE_WRITE8_MEMBER(chaknpop_mcu_port_a_w);
45   DECLARE_WRITE8_MEMBER(chaknpop_mcu_port_b_w);
46   DECLARE_WRITE8_MEMBER(chaknpop_mcu_port_c_w);
47   DECLARE_READ8_MEMBER(chaknpop_gfxmode_r);
48   DECLARE_WRITE8_MEMBER(chaknpop_gfxmode_w);
49   DECLARE_WRITE8_MEMBER(chaknpop_txram_w);
50   DECLARE_WRITE8_MEMBER(chaknpop_attrram_w);
47   DECLARE_READ8_MEMBER(mcu_port_a_r);
48   DECLARE_READ8_MEMBER(mcu_port_b_r);
49   DECLARE_READ8_MEMBER(mcu_port_c_r);
50   DECLARE_WRITE8_MEMBER(mcu_port_a_w);
51   DECLARE_WRITE8_MEMBER(mcu_port_b_w);
52   DECLARE_WRITE8_MEMBER(mcu_port_c_w);
53   DECLARE_READ8_MEMBER(gfxmode_r);
54   DECLARE_WRITE8_MEMBER(gfxmode_w);
55   DECLARE_WRITE8_MEMBER(txram_w);
56   DECLARE_WRITE8_MEMBER(attrram_w);
5157   DECLARE_WRITE8_MEMBER(unknown_port_1_w);
5258   DECLARE_WRITE8_MEMBER(unknown_port_2_w);
53   TILE_GET_INFO_MEMBER(chaknpop_get_tx_tile_info);
59   TILE_GET_INFO_MEMBER(get_tx_tile_info);
60   
5461   virtual void machine_start();
5562   virtual void machine_reset();
5663   virtual void video_start();
5764   DECLARE_PALETTE_INIT(chaknpop);
58   UINT32 screen_update_chaknpop(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
65   
66   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5967   void tx_tilemap_mark_all_dirty();
60   void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
61   void draw_bitmap( bitmap_ind16 &bitmap, const rectangle &cliprect );
62   void mcu_update_seed( UINT8 data );
63   required_device<cpu_device> m_maincpu;
64   required_device<gfxdecode_device> m_gfxdecode;
65   required_device<palette_device> m_palette;
68   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
69   void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
70   
71   void mcu_update_seed(UINT8 data);
6672};
trunk/src/mame/machine/chaknpop.c
r243519r243520
6363  Memory handlers
6464***************************************************************************/
6565
66READ8_MEMBER(chaknpop_state::chaknpop_mcu_port_a_r)
66READ8_MEMBER(chaknpop_state::mcu_port_a_r)
6767{
6868   //logerror("%04x: MCU port_a read\n", space.device().safe_pc());
6969   return m_mcu_result;
7070}
7171
7272
73READ8_MEMBER(chaknpop_state::chaknpop_mcu_port_b_r)
73READ8_MEMBER(chaknpop_state::mcu_port_b_r)
7474{
7575   //logerror("%04x: MCU port_b read\n", space.device().safe_pc());
7676
7777   return 0xff;
7878}
7979
80READ8_MEMBER(chaknpop_state::chaknpop_mcu_port_c_r)
80READ8_MEMBER(chaknpop_state::mcu_port_c_r)
8181{
8282   //logerror("%04x: MCU port_c read\n", space.device().safe_pc());
8383   return 0x00;
8484}
8585
86WRITE8_MEMBER(chaknpop_state::chaknpop_mcu_port_a_w)
86WRITE8_MEMBER(chaknpop_state::mcu_port_a_w)
8787{
8888   UINT8 mcu_command;
8989
r243519r243520
131131   }
132132}
133133
134WRITE8_MEMBER(chaknpop_state::chaknpop_mcu_port_b_w)
134WRITE8_MEMBER(chaknpop_state::mcu_port_b_w)
135135{
136136   //logerror("%04x: MCU port_b write 0x%02x\n", space.device().safe_pc(), data);
137137}
138138
139WRITE8_MEMBER(chaknpop_state::chaknpop_mcu_port_c_w)
139WRITE8_MEMBER(chaknpop_state::mcu_port_c_w)
140140{
141141   //logerror("%04x: MCU port_c write 0x%02x\n", space.device().safe_pc(), data);
142142}
trunk/src/mame/machine/pgmcrypt.c
r243519r243520
11201120   }
11211121}
11221122
1123static const UINT8 big2_tab[0x100] = {
1123static const UINT8 zhongguo_tab[0x100] = {
11241124   0x68, 0x56, 0xC2, 0x54, 0xA2, 0x8C, 0x7B, 0x4F, 0x37, 0xAC, 0x60, 0xF8, 0x24, 0xDF, 0x3E, 0x6B,
11251125   0xE2, 0x89, 0x3D, 0xF3, 0x31, 0x83, 0x4A, 0x65, 0x27, 0x98, 0xC5, 0xBF, 0x78, 0x3E, 0x6C, 0x02,
11261126   0x07, 0x96, 0x88, 0x4D, 0xAE, 0xA6, 0x56, 0x3A, 0x4A, 0xD5, 0xB8, 0x7E, 0x0B, 0xA7, 0x1D, 0xBC,
r243519r243520
11391139   0x1E, 0xA6, 0xFC, 0xFE, 0xE3, 0x8E, 0xB1, 0xB7, 0x0F, 0x32, 0xF1, 0xCF, 0x36, 0xFE, 0x65, 0x8E
11401140};
11411141
1142void big2_decrypt(running_machine &machine)
1142void zhongguo_decrypt(running_machine &machine)
11431143{
11441144   int i;
11451145   UINT16 *src = (UINT16 *) machine.root_device().memregion("user1")->base();
r243519r243520
11581158      IGS27_CRYPT7
11591159      IGS27_CRYPT8
11601160
1161      x ^= big2_tab[(i>> 1) & 0xff] << 8;
1161      x ^= zhongguo_tab[(i>> 1) & 0xff] << 8;
11621162
11631163      src[i] = x;
11641164   }
trunk/src/mame/machine/pgmcrypt.h
r243519r243520
2424void hauntedh_decrypt(running_machine &machine);
2525void chessc2_decrypt(running_machine &machine);
2626void klxyj_decrypt(running_machine &machine);
27void big2_decrypt(running_machine &machine);
27void zhongguo_decrypt(running_machine &machine);
2828void gonefsh2_decrypt(running_machine &machine);
2929void sddz_decrypt(running_machine &machine);
3030void lhzb3_decrypt(running_machine &machine);
trunk/src/mame/mame.lst
r243519r243520
97669766starzan         // (c) 2000?
97679767
97689768// IGS027A Cpu Games
9769bigd2           // (c) 2000
9769zhongguo        // (c) 2000
97709770sdwx            // (c) 2002
97719771sddz            // (c) 200?
97729772lhzb3           // (c) 200?
trunk/src/mame/video/chaknpop.c
r243519r243520
2525PALETTE_INIT_MEMBER(chaknpop_state, chaknpop)
2626{
2727   const UINT8 *color_prom = memregion("proms")->base();
28   int i;
29
30   for (i = 0; i < 1024; i++)
28   
29   for (int i = 0; i < 1024; i++)
3130   {
3231      int col, r, g, b;
3332      int bit0, bit1, bit2;
r243519r243520
6665   m_tx_tilemap->set_flip(m_flip_x | m_flip_y);
6766}
6867
69READ8_MEMBER(chaknpop_state::chaknpop_gfxmode_r)
68READ8_MEMBER(chaknpop_state::gfxmode_r)
7069{
7170   return m_gfxmode;
7271}
7372
74WRITE8_MEMBER(chaknpop_state::chaknpop_gfxmode_w)
73WRITE8_MEMBER(chaknpop_state::gfxmode_w)
7574{
7675   if (m_gfxmode != data)
7776   {
r243519r243520
9796   }
9897}
9998
100WRITE8_MEMBER(chaknpop_state::chaknpop_txram_w)
99WRITE8_MEMBER(chaknpop_state::txram_w)
101100{
102101   m_tx_ram[offset] = data;
103102   m_tx_tilemap->mark_tile_dirty(offset);
104103}
105104
106WRITE8_MEMBER(chaknpop_state::chaknpop_attrram_w)
105WRITE8_MEMBER(chaknpop_state::attrram_w)
107106{
108107   if (m_attr_ram[offset] != data)
109108   {
r243519r243520
123122 *  I'm not sure how to handle attributes about color
124123 */
125124
126TILE_GET_INFO_MEMBER(chaknpop_state::chaknpop_get_tx_tile_info)
125TILE_GET_INFO_MEMBER(chaknpop_state::get_tx_tile_info)
127126{
128127   int tile = m_tx_ram[tile_index];
129128   int tile_h_bank = (m_gfxmode & GFX_TX_BANK2) << 2;  /* 0x00-0xff -> 0x200-0x2ff */
r243519r243520
150149   UINT8 *RAM = memregion("maincpu")->base();
151150
152151   /*                          info                       offset             type             w   h  col row */
153   m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(chaknpop_state::chaknpop_get_tx_tile_info),this), TILEMAP_SCAN_ROWS,   8,  8, 32, 32);
152   m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(chaknpop_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS,   8,  8, 32, 32);
154153
155154   m_vram1 = &RAM[0x10000];
156155   m_vram2 = &RAM[0x12000];
r243519r243520
175174
176175void chaknpop_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
177176{
178   int offs;
179
180177   /* Draw the sprites */
181   for (offs = 0; offs < m_spr_ram.bytes(); offs += 4)
178   for (int offs = 0; offs < m_spr_ram.bytes(); offs += 4)
182179   {
183180      int sx = m_spr_ram[offs + 3];
184181      int sy = 256 - 15 - m_spr_ram[offs];
r243519r243520
246243   }
247244}
248245
249UINT32 chaknpop_state::screen_update_chaknpop(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
246UINT32 chaknpop_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
250247{
251248   m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
252249   draw_sprites(bitmap, cliprect);
trunk/src/mess/drivers/advision.c
r243519r243520
105105
106106ROM_START( advision )
107107   ROM_REGION( 0x1000, I8048_TAG, ROMREGION_ERASE00 )
108   ROM_LOAD( "avbios.u5", 0x000, 0x400, CRC(279e33d1) SHA1(bf7b0663e9125c9bfb950232eab627d9dbda8460) )
108   ROM_LOAD( "b225__ins8048-11kdp_n.u5", 0x000, 0x400, CRC(279e33d1) SHA1(bf7b0663e9125c9bfb950232eab627d9dbda8460) ) // "<natsemi logo> /B225 \\ INS8048-11KDP/N"
109109
110110   ROM_REGION( 0x200, COP411_TAG, 0 )
111   ROM_LOAD( "avsound.u8", 0x000, 0x200, CRC(81e95975) SHA1(8b6f8c30dd3e9d8e43f1ea20fba2361b383790eb) )
111   ROM_LOAD( "b8223__cop411l-kcn_n.u8", 0x000, 0x200, CRC(81e95975) SHA1(8b6f8c30dd3e9d8e43f1ea20fba2361b383790eb) ) // "<natsemi logo> /B8223 \\ COP411L-KCN/N"
112112ROM_END
113113
114114/* Game Driver */
trunk/src/mess/drivers/alnchase.c
r243519r243520
55  Tomy Alien Chase (manufactured in Japan)
66  * boards are labeled TN-16
77  * NEC uCOM-43 MCU, labeled D553C 258
8  * red/green VFD display with color overlay, 2-sided (opposing player sees a mirrored image)
8  * red/green VFD display with color overlay, 2-sided*
9 
10  *Player one views the VFD from the front (grid+filament side) while the
11  opposite player views it from the back side (through the conductive traces),
12  basically a mirror-image.
13 
14  This is a space-themed tabletop VFD electronic game. To start, simply
15  press [UP]. Hold a joystick direction to move around.
916
17  NOTE!: MESS external artwork is required to be able to play
1018
1119***************************************************************************/
1220
r243519r243520
2331   alnchase_state(const machine_config &mconfig, device_type type, const char *tag)
2432      : driver_device(mconfig, type, tag),
2533      m_maincpu(*this, "maincpu"),
34      m_button_matrix(*this, "IN"),
2635      m_speaker(*this, "speaker")
2736   { }
2837
2938   required_device<cpu_device> m_maincpu;
39   required_ioport_array<2> m_button_matrix;
3040   required_device<speaker_sound_device> m_speaker;
3141   
42   UINT8 m_input_mux;
43   UINT32 m_plate;
44   UINT16 m_grid;
45
46   DECLARE_READ8_MEMBER(input_r);
47   DECLARE_WRITE8_MEMBER(display_w);
48   DECLARE_WRITE8_MEMBER(port_e_w);
49
50   UINT32 m_vfd_state[0x10];
51   void update_vfd();
52
3253   virtual void machine_start();
3354};
3455
3556
3657
58/***************************************************************************
59
60  Display
61
62***************************************************************************/
63
64void alnchase_state::update_vfd()
65{
66   for (int i = 0; i < 9; i++)
67      if (m_grid & (1 << i) && m_vfd_state[i] != m_plate)
68      {
69         // on difference, send to output
70         for (int j = 0; j < 17; j++)
71            output_set_lamp_value(i*100 + j, m_plate >> j & 1);
72         
73         m_vfd_state[i] = m_plate;
74      }
75}
76
77
78
79/***************************************************************************
80
81  I/O
82
83***************************************************************************/
84
85READ8_MEMBER(alnchase_state::input_r)
86{
87   UINT8 inp = 0;
88
89   // read selected button rows
90   for (int i = 0; i < 2; i++)
91      if (m_input_mux >> i & 1)
92         inp |= m_button_matrix[i]->read();
93
94   return inp;
95}
96
97WRITE8_MEMBER(alnchase_state::display_w)
98{
99   int shift;
100   
101   if (offset <= NEC_UCOM4_PORTE)
102   {
103      // C/D/E0: vfd matrix grid
104      shift = (offset - NEC_UCOM4_PORTC) * 4;
105      m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
106     
107      // C0(grid 0): input enable PL1
108      // D0(grid 4): input enable PL2
109      m_input_mux = (m_grid & 1) | (m_grid >> 3 & 2);
110   }
111   
112   if (offset >= NEC_UCOM4_PORTE)
113   {
114      // E23/F/G/H/I: vfd matrix plate
115      shift = (offset - NEC_UCOM4_PORTE) * 4;
116      m_plate = ((m_plate << 2 & ~(0xf << shift)) | (data << shift)) >> 2;
117   }
118   
119   update_vfd();
120}
121
122WRITE8_MEMBER(alnchase_state::port_e_w)
123{
124   display_w(space, offset, data);
125
126   // E1: speaker out
127   m_speaker->level_w(data >> 1 & 1);
128}
129
130
131
132/***************************************************************************
133
134  Inputs
135
136***************************************************************************/
137
138/* physical button layout and labels is like this:
139
140    POWER SOUND LEVEL PLAYER
141     ON    ON    PRO   TWO        START
142      o     o     |     |   
143      |     |     |     |       [joystick]
144      |     |     o     o
145     OFF   OFF   AMA   ONE     GAME 0,1,2,3
146   
147    1 PLAYER SIDE
148   
149    other player side only has a joystick
150*/
151
37152static INPUT_PORTS_START( alnchase )
153   PORT_START("IN.0") // C0 port A
154   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
155   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
156   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
157   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
158
159   PORT_START("IN.1") // D0 port A
160   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) // on non-mirrored view, swap P2 left/right
161   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) // "
162   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
163   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
164
165   PORT_START("SW") // port B
166   PORT_CONFNAME( 0x01, 0x01, "Players" )
167   PORT_CONFSETTING(    0x01, "1" )
168   PORT_CONFSETTING(    0x00, "2" )
169   PORT_CONFNAME( 0x02, 0x00, DEF_STR( Difficulty ) )
170   PORT_CONFSETTING(    0x00, "Amateur" )
171   PORT_CONFSETTING(    0x02, "Professional" )
172   PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
38173INPUT_PORTS_END
39174
40175
r243519r243520
47182
48183void alnchase_state::machine_start()
49184{
185   // zerofill
186   memset(m_vfd_state, 0, sizeof(m_vfd_state));
187   m_input_mux = 0;
188   m_plate = 0;
189   m_grid = 0;
190
191   // register for savestates
192   save_item(NAME(m_vfd_state));
193   save_item(NAME(m_input_mux));
194   save_item(NAME(m_plate));
195   save_item(NAME(m_grid));
50196}
51197
52198
r243519r243520
54200
55201   /* basic machine hardware */
56202   MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
203   MCFG_UCOM4_READ_A_CB(READ8(alnchase_state, input_r))
204   MCFG_UCOM4_READ_B_CB(IOPORT("SW"))
205   MCFG_UCOM4_WRITE_C_CB(WRITE8(alnchase_state, display_w))
206   MCFG_UCOM4_WRITE_D_CB(WRITE8(alnchase_state, display_w))
207   MCFG_UCOM4_WRITE_E_CB(WRITE8(alnchase_state, port_e_w))
208   MCFG_UCOM4_WRITE_F_CB(WRITE8(alnchase_state, display_w))
209   MCFG_UCOM4_WRITE_G_CB(WRITE8(alnchase_state, display_w))
210   MCFG_UCOM4_WRITE_H_CB(WRITE8(alnchase_state, display_w))
211   MCFG_UCOM4_WRITE_I_CB(WRITE8(alnchase_state, display_w))
57212
58213   MCFG_DEFAULT_LAYOUT(layout_alnchase)
59214
r243519r243520
79234ROM_END
80235
81236
82CONS( 1984, alnchase, 0, 0, alnchase, alnchase, driver_device, 0, "Tomy", "Alien Chase", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
237CONS( 1984, alnchase, 0, 0, alnchase, alnchase, driver_device, 0, "Tomy", "Alien Chase", GAME_NOT_WORKING )
trunk/src/mess/drivers/mbee.c
r243519r243520
3030    - Although certain models came with particular drives as standard, users could add
3131      the other size if they wished. We support both sizes on any model.
3232
33    Microbee Standard / Plus memory map
34
35        0000-7FFF RAM
36        8000-BFFF SYSTEM roms
37        C000-DFFF Edasm or WBee (edasm.rom or wbeee12.rom, optional)
38        E000-EFFF Telcom 1.2 (netrom.ic34; optional)
39        F000-F7FF Video RAM
40        F800-FFFF PCG RAM (graphics)
41
42    Microbee IC memory map (preliminary)
43
44        0000-7FFF RAM
45        8000-BFFF SYSTEM roms (bas522a.rom, bas522b.rom)
46        C000-DFFF Edasm or WBee (edasm.rom or wbeee12.rom, optional)
47        E000-EFFF Telcom (optional)
48        F000-F7FF Video RAM
49        F800-FFFF PCG RAM (graphics), Colour RAM (banked)
50
51    Microbee 56KB ROM memory map (preliminary)
52
53        0000-DFFF RAM
54        E000-EFFF ROM 56kb.rom CP/M bootstrap loader
55        F000-F7FF Video RAM
56        F800-FFFF PCG RAM (graphics), Colour RAM (banked)
57
5833    Early machines have 'standard' video (128 hires characters).
5934    Later machines had the option of 'premium' video which
6035    provides thousands of hires characters, enough to simulate
r243519r243520
6540          This rom can be replaced with the Dreamdisk Chip-8 rom.
6641        Note that Telcom 3.21 is 8k, it uses a rombank switch
6742        (by reading port 0A) to swap between the two halves.
68   See Telcom notes below.
43        See Telcom notes below.
6944
7045    EDASM - Jump to C000, usually the Editor/Assembler package.
7146
r243519r243520
7550
7651    These early colour computers have a PROM to create the foreground palette.
7752
78
7953    Notes about the printer:
8054    - When computer turned on, defaults to 1200 baud serial printer
8155    - Change it to parallel by entering OUTL#1
r243519r243520
9670    - Telcom 1.2 (used in mbeeic) has a bug. If you enter NET CLOCK, the status line is
9771      filled with inverse K. You can fix this from Basic by doing NET CLOCK 3 times.
9872
73    Notes about Disk System
74    - Ports 44 to 47 are for standard connection to FD2793.
75    - Port 48 is used for drive/side/density select on write, and intrq/drq on read.
76      intrq and drq are OR'd together, then gated to bit 7 of the data bus whenever
77      port 48 is activated on read. There are no interrupts used.
78
79    Tests of old keyboard. Start mbeeic.
80    1. Load ASTEROIDS PLUS, stay in attract mode, hold down spacebar,
81       it should only fire bullets. If it sometimes starts turning,
82       thrusting or using the shield, then there is a problem.
83
84    2. Load SCAVENGER and make sure it doesn't go to the next level
85       until you find the Exit.
86
87    3. At the Basic prompt, type in EDASM press enter. At the memory size
88       prompt press enter. Now, make sure the keyboard works properly.
89
9990***************************************************************************
10091
10192    TODO/not working:
10293
10394    - Printer needs to be understood and fixed.
104    - Keyboard loses characters if you type at a normal rate.
105    - Fix Paste (it loses most of the characters)
10695
96    - 256tc: Paste ignores shift key
97    - All others: Paste drops most characters, shift operates randomly.
98
10799    - various fdc issues:
108100        - B drive doesn't work.
109101        - some disks cause MESS to freeze.
110102        - ENMF pin missing from wd_fdc.
111103        - incorrect timing for track register causes 256tc failure to boot a disk.
112        - 56k model takes about 2 minutes to boot a disk if loaded via command line.
113   
104        - 56k model takes 120 seconds to boot a disk if loaded via command line.
105
106    - mbeeppc, mbee128p: In Basic, keyboard loses characters. Works fine in Wordbee.
107
114108    - 256tc: At the menu, if F2 pressed to activate the Monitor, the emulated machine
115109      crashes due to a bug in z80pio emulation.
116   
110
117111    - 256tc: Keyboard ROM U60 needs to be dumped.
118112    - 128k: GOLD PAL needs to be dumped for the bankswitching.
119113    - 64k: RED PAL needs to be dumped for the bankswitching.
r243519r243520
125119
126120    - Mouse: a few programs support the use of a serial mouse which interfaced
127121             directly to the Z80PIO. However there's little info to be found.
122             PIO B3 to ground activates the mouse pointer in Shell v3.01.
128123
129***************************************************************************
124*******************************************************************************/
130125
131    Description of Disk System
132
133    - Ports 44 to 47 are for standard connection to FD2793.
134    - Port 48 is used for drive/side/density select on write,
135              and intrq/drq on read.
136      intrq and drq are OR'd together, then gated to bit 7 of the
137      data bus whenever port 48 is activated on read. There are
138      no interrupts used.
139
140****************************************************************************/
141
142
143126#include "includes/mbee.h"
144127#include "formats/mbee_cas.h"
145128
146
147129#define XTAL_13_5MHz 13500000
148130
149131/********** NOTE !!! ***********************************************************
r243519r243520
156138   ADDRESS_MAP_UNMAP_HIGH
157139   AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
158140   AM_RANGE(0x1000, 0x3fff) AM_RAM
159   AM_RANGE(0x4000, 0x7fff) AM_WRITENOP    /* Needed because quickload to here will crash MESS otherwise */
141   AM_RANGE(0x4000, 0x7fff) AM_WRITENOP    // Needed because quickload to here will crash MESS
160142   AM_RANGE(0x8000, 0xefff) AM_ROM
161143   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(mbee_low_r, mbee_low_w)
162144   AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbee_high_r, mbee_high_w)
r243519r243520
312294   ADDRESS_MAP_GLOBAL_MASK(0xff)
313295   ADDRESS_MAP_UNMAP_HIGH
314296   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt)
297   AM_RANGE(0x04, 0x04) AM_WRITE(mbee_04_w)
298   AM_RANGE(0x06, 0x06) AM_WRITE(mbee_06_w)
299   AM_RANGE(0x07, 0x07) AM_READ(mbee_07_r)
315300   AM_RANGE(0x08, 0x08) AM_READWRITE(mbeeic_08_r, mbeeic_08_w)
316301   AM_RANGE(0x0b, 0x0b) AM_READWRITE(mbee_0b_r, mbee_0b_w)
317302   AM_RANGE(0x0c, 0x0c) AM_READWRITE(m6545_status_r, m6545_index_w)
r243519r243520
363348ADDRESS_MAP_END
364349
365350static INPUT_PORTS_START( mbee )
366   PORT_START("X0") /* IN0 KEY ROW 0 [000] */
351   PORT_START("X.0") /* IN0 KEY ROW 0 [000] */
367352   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('@') PORT_CHAR('`')
368353   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') PORT_CHAR(0x01)
369354   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') PORT_CHAR(0x02)
r243519r243520
373358   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') PORT_CHAR(0x06)
374359   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') PORT_CHAR(0x07)
375360
376   PORT_START("X1") /* IN1 KEY ROW 1 [080] */
361   PORT_START("X.1") /* IN1 KEY ROW 1 [080] */
377362   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') PORT_CHAR(0x08)
378363   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') PORT_CHAR(0x09)
379364   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') PORT_CHAR(0x0a)
r243519r243520
383368   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') PORT_CHAR(0x0e)
384369   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_CHAR(0x0f)
385370
386   PORT_START("X2") /* IN2 KEY ROW 2 [100] */
371   PORT_START("X.2") /* IN2 KEY ROW 2 [100] */
387372   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_CHAR(0x10)
388373   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHAR(0x11)
389374   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHAR(0x12)
r243519r243520
393378   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_CHAR(0x16)
394379   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR(0x17)
395380
396   PORT_START("X3") /* IN3 KEY ROW 3 [180] */
381   PORT_START("X.3") /* IN3 KEY ROW 3 [180] */
397382   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_CHAR(0x18)
398383   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('u') PORT_CHAR('Y') PORT_CHAR(0x19)
399384   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_CHAR(0x1a)
r243519r243520
403388   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("^") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('^') PORT_CHAR('~') PORT_CHAR(0x1e)
404389   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete") PORT_CODE(KEYCODE_DEL) PORT_CHAR(8) PORT_CHAR(0x5f) PORT_CHAR(0x1f)  // port_char not working - hijacked
405390
406   PORT_START("X4") /* IN4 KEY ROW 4 [200] */
391   PORT_START("X.4") /* IN4 KEY ROW 4 [200] */
407392   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
408393   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
409394   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 \"") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
r243519r243520
413398   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
414399   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 '") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
415400
416   PORT_START("X5") /* IN5 KEY ROW 5 [280] */
401   PORT_START("X.5") /* IN5 KEY ROW 5 [280] */
417402   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 (") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
418403   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 )") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
419404   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; +") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
r243519r243520
423408   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
424409   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
425410
426   PORT_START("X6") /* IN6 KEY ROW 6 [300] */
411   PORT_START("X.6") /* IN6 KEY ROW 6 [300] */
427412   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
428413   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
429414   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
r243519r243520
433418   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Break") PORT_CODE(KEYCODE_END) PORT_CHAR(3)
434419   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
435420
436   PORT_START("X7") /* IN7 KEY ROW 7 [380] */
421   PORT_START("X.7") /* IN7 KEY ROW 7 [380] */
437422   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Up)") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
438423   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL)
439424   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Down)") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
r243519r243520
465450INPUT_PORTS_END
466451
467452static INPUT_PORTS_START( mbee256 )
468   PORT_START("X0") /* IN0 KEY ROW 0 [+00] */
453   PORT_START("Y.0") /* IN0 KEY ROW 0 [+00] */
469454   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F1") PORT_CODE(KEYCODE_F1)
470455   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
471456   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
r243519r243520
474459   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("DEL (num)") PORT_CODE(KEYCODE_DEL_PAD)
475460   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
476461
477   PORT_START("X1") /* IN1 KEY ROW 1 [+08] */
462   PORT_START("Y.1") /* IN1 KEY ROW 1 [+08] */
478463   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F2") PORT_CODE(KEYCODE_F2)
479464   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
480465   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHAR(0x11)
r243519r243520
483468   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Linefeed") PORT_CODE(KEYCODE_HOME) PORT_CHAR(10)
484469   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT)
485470
486   PORT_START("X2") /* IN2 KEY ROW 2 [+10] */
471   PORT_START("Y.2") /* IN2 KEY ROW 2 [+10] */
487472   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F3") PORT_CODE(KEYCODE_F3)
488473   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 @") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
489474   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR(0x17)
r243519r243520
493478   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 (num)") PORT_CODE(KEYCODE_3_PAD)
494479   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_CHAR(0x1a)
495480
496   PORT_START("X3") /* IN3 KEY ROW 3 [+18] */
481   PORT_START("Y.3") /* IN3 KEY ROW 3 [+18] */
497482   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F4") PORT_CODE(KEYCODE_F4)
498483   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
499484   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') PORT_CHAR(0x05)
r243519r243520
503488   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 (num)") PORT_CODE(KEYCODE_6_PAD)
504489   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_CHAR(0x18)
505490
506   PORT_START("X4") /* IN4 KEY ROW 4 [+20] */
491   PORT_START("Y.4") /* IN4 KEY ROW 4 [+20] */
507492   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F5") PORT_CODE(KEYCODE_F5)
508493   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
509494   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHAR(0x12)
r243519r243520
513498   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 (num)") PORT_CODE(KEYCODE_9_PAD)
514499   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') PORT_CHAR(0x03)
515500
516   PORT_START("X5") /* IN5 KEY ROW 5 [+28] */
501   PORT_START("Y.5") /* IN5 KEY ROW 5 [+28] */
517502   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F6") PORT_CODE(KEYCODE_F6)
518503   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
519504   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') PORT_CHAR(0x14)
r243519r243520
523508   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 (num)") PORT_CODE(KEYCODE_4_PAD)
524509   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_CHAR(0x16)
525510
526   PORT_START("X6") /* IN6 KEY ROW 6 [+30] */
511   PORT_START("Y.6") /* IN6 KEY ROW 6 [+30] */
527512   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F7") PORT_CODE(KEYCODE_F7)
528513   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
529514   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') PORT_CHAR(0x19)
r243519r243520
533518   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Right)") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
534519   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') PORT_CHAR(0x02)
535520
536   PORT_START("X7") /* IN7 KEY ROW 7 [+38] */
521   PORT_START("Y.7") /* IN7 KEY ROW 7 [+38] */
537522   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F8") PORT_CODE(KEYCODE_F8)
538523   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 &") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
539524   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') PORT_CHAR(0x15)
r243519r243520
541526   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Left)") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
542527   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') PORT_CHAR(0x0e)
543528
544   PORT_START("X8") /* IN0 KEY ROW 0 [+40] */
529   PORT_START("Y.8") /* IN0 KEY ROW 0 [+40] */
545530   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F9") PORT_CODE(KEYCODE_F9)
546531   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 *") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
547532   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') PORT_CHAR(0x09)
r243519r243520
549534   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Up)") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
550535   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') PORT_CHAR(0x0d)
551536
552   PORT_START("X9") /* IN1 KEY ROW 1 [+48] */
537   PORT_START("Y.9") /* IN1 KEY ROW 1 [+48] */
553538   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F10") PORT_CODE(KEYCODE_F10)
554539   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 (") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
555540   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_CHAR(0x0f)
r243519r243520
558543   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(13)
559544   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
560545
561   PORT_START("X10") /* IN2 KEY ROW 2 [+50] */
546   PORT_START("Y.10") /* IN2 KEY ROW 2 [+50] */
562547   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F11") PORT_CODE(KEYCODE_F11)
563548   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 )") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
564549   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_CHAR(0x10)
r243519r243520
568553   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') PORT_CHAR(0x1c)
569554   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
570555
571   PORT_START("X11") /* IN3 KEY ROW 3 [+58] */
556   PORT_START("Y.11") /* IN3 KEY ROW 3 [+58] */
572557   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F12") PORT_CODE(KEYCODE_F12)
573558   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
574559   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') PORT_CHAR(0x1b)
r243519r243520
577562   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') PORT_CHAR(0x1d)
578563   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
579564
580   PORT_START("X12") /* IN4 KEY ROW 4 [+60] */
565   PORT_START("Y.12") /* IN4 KEY ROW 4 [+60] */
581566   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
582567
583   PORT_START("X13") /* IN5 KEY ROW 5 [+68] */
568   PORT_START("Y.13") /* IN5 KEY ROW 5 [+68] */
584569   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
585570
586   PORT_START("X14") /* IN6 KEY ROW 6 [+70] */
571   PORT_START("Y.14") /* IN6 KEY ROW 6 [+70] */
587572   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Alt") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT)
588573
589574   // Autorun on quickload
r243519r243520
619604   8*16                    /* every char takes 16 bytes */
620605};
621606
622static GFXDECODE_START( mbee )
607static GFXDECODE_START( mono )
623608   GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 1 )
624609GFXDECODE_END
625610
626static GFXDECODE_START( mbeeic )
611static GFXDECODE_START( standard )
627612   GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 48 )
628613GFXDECODE_END
629614
630static GFXDECODE_START( mbeeppc )
615static GFXDECODE_START( premium )
631616   GFXDECODE_ENTRY( "gfx", 0x0000, mbee_charlayout, 0, 8 )
632617GFXDECODE_END
633618
r243519r243520
662647   MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 19*16-1)
663648   MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee)
664649
665   MCFG_GFXDECODE_ADD("gfxdecode", "palette", mbee)
650   MCFG_GFXDECODE_ADD("gfxdecode", "palette", mono)
666651   MCFG_PALETTE_ADD_MONOCHROME_AMBER("palette") // usually sold with amber or green monitor
667652
668   MCFG_VIDEO_START_OVERRIDE(mbee_state, mbee)
653   MCFG_VIDEO_START_OVERRIDE(mbee_state, mono)
669654
670655   /* sound hardware */
671656   MCFG_SPEAKER_STANDARD_MONO("mono")
r243519r243520
678663   MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_12MHz / 8)
679664   MCFG_MC6845_SHOW_BORDER_AREA(false)
680665   MCFG_MC6845_CHAR_WIDTH(8)
681   MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbee_update_row)
682   MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee_update_addr)
666   MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mono_update_row)
667   MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, crtc_update_addr)
683668   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(mbee_state, crtc_vs))
684669
685670   MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2)
r243519r243520
718703   MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 19*16-1)
719704   MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee)
720705
721   MCFG_GFXDECODE_ADD("gfxdecode", "palette", mbeeic)
706   MCFG_GFXDECODE_ADD("gfxdecode", "palette", standard)
722707
723708   MCFG_PALETTE_ADD("palette", 96)
724   MCFG_PALETTE_INIT_OWNER(mbee_state, mbeeic)
709   MCFG_PALETTE_INIT_OWNER(mbee_state, standard)
725710
726   MCFG_VIDEO_START_OVERRIDE(mbee_state, mbeeic)
711   MCFG_VIDEO_START_OVERRIDE(mbee_state, standard)
727712
728713   /* sound hardware */
729714   MCFG_SPEAKER_STANDARD_MONO("mono")
r243519r243520
736721   MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8)
737722   MCFG_MC6845_SHOW_BORDER_AREA(false)
738723   MCFG_MC6845_CHAR_WIDTH(8)
739   MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbeeic_update_row)
740   MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee_update_addr)
724   MCFG_MC6845_UPDATE_ROW_CB(mbee_state, colour_update_row)
725   MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, crtc_update_addr)
741726   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(mbee_state, crtc_vs))
742727
743728   MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2)
r243519r243520
773758   MCFG_CPU_MODIFY( "maincpu" )
774759   MCFG_CPU_PROGRAM_MAP(mbeeppc_mem)
775760   MCFG_CPU_IO_MAP(mbeeppc_io)
776   MCFG_VIDEO_START_OVERRIDE(mbee_state, mbeeppc)
777   MCFG_GFXDECODE_MODIFY("gfxdecode", mbeeppc)
761   MCFG_VIDEO_START_OVERRIDE(mbee_state, premium)
762   MCFG_GFXDECODE_MODIFY("gfxdecode", premium)
778763   MCFG_PALETTE_MODIFY("palette")
779764   MCFG_PALETTE_ENTRIES(16)
780   MCFG_PALETTE_INIT_OWNER(mbee_state, mbeeppc)
781
782   MCFG_DEVICE_REMOVE("crtc")
783   MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8)
784   MCFG_MC6845_SHOW_BORDER_AREA(false)
785   MCFG_MC6845_CHAR_WIDTH(8)
786   MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbeeppc_update_row)
787   MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee_update_addr)
788   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(mbee_state, crtc_vs))
765   MCFG_PALETTE_INIT_OWNER(mbee_state, premium)
789766MACHINE_CONFIG_END
790767
791768static MACHINE_CONFIG_DERIVED( mbee56, mbeeic )
r243519r243520
805782   MCFG_CPU_PROGRAM_MAP(mbee256_mem)
806783   MCFG_CPU_IO_MAP(mbee128_io)
807784   MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128)
785   MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
808786MACHINE_CONFIG_END
809787
810788static MACHINE_CONFIG_DERIVED( mbee128p, mbeeppc )
r243519r243520
812790   MCFG_CPU_PROGRAM_MAP(mbee256_mem)
813791   MCFG_CPU_IO_MAP(mbee128_io)
814792   MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128)
793   MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
815794   MCFG_WD2793x_ADD("fdc", XTAL_4MHz / 4)
816795   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(mbee_state, fdc_intrq_w))
817796   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(mbee_state, fdc_drq_w))
r243519r243520
824803   MCFG_CPU_PROGRAM_MAP(mbee256_mem)
825804   MCFG_CPU_IO_MAP(mbee256_io)
826805   MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee256)
827   MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
828806
829   MCFG_DEVICE_REMOVE("crtc")
830   MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8)
831   MCFG_MC6845_SHOW_BORDER_AREA(false)
832   MCFG_MC6845_CHAR_WIDTH(8)
833   MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbeeppc_update_row)
834   MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee256_update_addr)
835807   MCFG_DEVICE_REMOVE("fdc:0")
836808   MCFG_DEVICE_REMOVE("fdc:1")
837809   MCFG_FLOPPY_DRIVE_ADD("fdc:0", mbee_floppies, "drive3a", floppy_image_device::default_floppy_formats)
r243519r243520
842814   MCFG_CPU_MODIFY( "maincpu" )
843815   MCFG_CPU_PROGRAM_MAP(mbeett_mem)
844816   MCFG_CPU_IO_MAP(mbeett_io)
845   MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbeett )
817   MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbeett)
846818   MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
847
848   MCFG_DEVICE_REMOVE("crtc")
849   MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8)
850   MCFG_MC6845_SHOW_BORDER_AREA(false)
851   MCFG_MC6845_CHAR_WIDTH(8)
852   MCFG_MC6845_UPDATE_ROW_CB(mbee_state, mbeeppc_update_row)
853   MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, mbee256_update_addr)
854819MACHINE_CONFIG_END
855820
856821/* Unused roms:
trunk/src/mess/drivers/tmtennis.c
r243519r243520
99 
1010  The initial release of this game was in 1979, known as Pro-Tennis,
1111  it is unknown if the hardware and/or ROM contents differ.
12
13  This is an early VFD simple electronic tennis game. Player 1 is on the right
14  side, player 2 or CPU on the left. Each player has six possible positions
15  where to hit the ball. A backdrop behind the VFD shows a tennis court.
1216 
17  NOTE!: MESS external artwork is required to be able to play
1318
14  TODO:
15  - 2-player mode doesn't work: the guys auto-serve and the left player
16    always hits the net, mcu emulation bug?
17  - difficulty switch changes mcu freq
18
1919***************************************************************************/
2020
2121#include "emu.h"
r243519r243520
2424
2525#include "tmtennis.lh" // this is a test layout, external artwork is necessary
2626
27// master clock is from an LC circuit oscillating by default at 360kHz,
28// the difficulty switch puts a capacitor across it to slow it down to 260kHz
29#define MASTER_CLOCK_PRO1 (260000)
30#define MASTER_CLOCK_PRO2 (360000)
3127
32
3328class tmtennis_state : public driver_device
3429{
3530public:
r243519r243520
5348   DECLARE_WRITE8_MEMBER(plate_w);
5449   DECLARE_WRITE8_MEMBER(grid_w);
5550
51   DECLARE_INPUT_CHANGED_MEMBER(difficulty_switch);
52   void update_clock();
53
5654   UINT16 m_vfd_state[0x10];
5755   void update_vfd();
5856
57   virtual void machine_reset();
5958   virtual void machine_start();
6059};
6160
61// master clock is from an LC circuit oscillating by default at 360kHz, but...
62#define MASTER_CLOCK (360000)
6263
64void tmtennis_state::update_clock()
65{
66   // ...on PRO1, the difficulty switch puts a capacitor across the LC circuit
67   // to slow it down to approx. 260kHz (28%)
68   m_maincpu->set_clock_scale(m_button_matrix[1]->read() & 0x100 ? 0.72 : 1);
69}
6370
71
72
6473/***************************************************************************
6574
6675  Display
r243519r243520
95104
96105   // read selected button rows
97106   for (int i = 0; i < 2; i++)
98      if (~m_input_mux >> i & 1)
107      if (m_input_mux >> i & 1)
99108         inp &= m_button_matrix[i]->read();
100109
101110   return inp >> (offset*4);
r243519r243520
137146
138147***************************************************************************/
139148
149INPUT_CHANGED_MEMBER(tmtennis_state::difficulty_switch)
150{
151   update_clock();
152}
153
140154/* Pro-Tennis physical button layout and labels is like this:
141155
142156    [SERVE] [1] [2] [3]       [3] [2] [1] [SERVE]
r243519r243520
146160*/
147161
148162static INPUT_PORTS_START( tmtennis )
149   PORT_START("IN.0") // E0 port A/B (left side)
150   PORT_CONFNAME( 0x101, 0x001, DEF_STR( Difficulty ) )
163   PORT_START("IN.0") // E0 port A/B
164   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("P1 Serve")
165   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("P2 Serve")
166   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
167   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
168   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
169   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 )
170   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
171   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 )
172
173   PORT_START("IN.1") // E1 port A/B
174   PORT_CONFNAME( 0x101, 0x101, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, tmtennis_state, difficulty_switch, NULL)
151175   PORT_CONFSETTING(     0x000, "Practice" )
152   PORT_CONFSETTING(     0x001, "Pro 1" )
153   PORT_CONFSETTING(     0x101, "Pro 2" )
154   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) // P2 serve
176   PORT_CONFSETTING(     0x101, "Pro 1" ) // -> difficulty_switch
177   PORT_CONFSETTING(     0x001, "Pro 2" )
178   PORT_CONFNAME( 0x02, 0x02, "Players" )
179   PORT_CONFSETTING(    0x02, "1" )
180   PORT_CONFSETTING(    0x00, "2" )
155181   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
156182   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
157183   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
158184   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
159185   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
160186   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
161
162   PORT_START("IN.1") // E1 port A/B (right side)
163   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) // P1 serve
164   PORT_CONFNAME( 0x02, 0x02, "Players" )
165   PORT_CONFSETTING(    0x02, "1" )
166   PORT_CONFSETTING(    0x00, "2" )
167   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
168   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
169   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
170   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 )
171   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
172   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 )
173187INPUT_PORTS_END
174188
175189
r243519r243520
180194
181195***************************************************************************/
182196
197void tmtennis_state::machine_reset()
198{
199   update_clock();
200}
201
183202void tmtennis_state::machine_start()
184203{
185204   // zerofill
r243519r243520
199218static MACHINE_CONFIG_START( tmtennis, tmtennis_state )
200219
201220   /* basic machine hardware */
202   MCFG_CPU_ADD("maincpu", NEC_D552, MASTER_CLOCK_PRO2)
221   MCFG_CPU_ADD("maincpu", NEC_D552, MASTER_CLOCK)
203222   MCFG_UCOM4_READ_A_CB(READ8(tmtennis_state, input_r))
204223   MCFG_UCOM4_READ_B_CB(READ8(tmtennis_state, input_r))
205224   MCFG_UCOM4_WRITE_C_CB(WRITE8(tmtennis_state, plate_w))
r243519r243520
234253ROM_END
235254
236255
237CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomytronic)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
256CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomytronic)", GAME_SUPPORTS_SAVE )
trunk/src/mess/drivers/wildfire.c
r243519r243520
55  Parker Brothers Wildfire, by Bob and Holly Doyle (prototype), and Garry Kitchen
66  * AMI S2150, labeled C10641
77
8  x
8  This is an electronic handheld pinball game. It has dozens of small leds
9  to create the illusion of a moving ball, and even the flippers are leds.
10  A drawing of a pinball table is added as overlay.
911
12  NOTE!: MESS external artwork is required to be able to play
1013
14
1115  TODO:
1216  - no sound
1317  - flipper buttons aren't working correctly
trunk/src/mess/includes/mbee.h
r243519r243520
5252      , m_pak(*this, "pak")
5353      , m_telcom(*this, "telcom")
5454      , m_basic(*this, "basic")
55      , m_io_x0(*this, "X0")
56      , m_io_x1(*this, "X1")
57      , m_io_x2(*this, "X2")
58      , m_io_x3(*this, "X3")
59      , m_io_x4(*this, "X4")
60      , m_io_x5(*this, "X5")
61      , m_io_x6(*this, "X6")
62      , m_io_x7(*this, "X7")
6355      , m_io_extra(*this, "EXTRA")
6456      , m_io_config(*this, "CONFIG")
65      , m_io_x8(*this, "X8")
66      , m_io_x9(*this, "X9")
67      , m_io_x10(*this, "X10")
68      , m_io_x11(*this, "X11")
69      , m_io_x12(*this, "X12")
70      , m_io_x13(*this, "X13")
71      , m_io_x14(*this, "X14")
57      , m_io_oldkb(*this, "X")
58      , m_io_newkb(*this, "Y")
7259      , m_screen(*this, "screen")
7360   { }
7461
r243519r243520
123110   DECLARE_DRIVER_INIT(mbeeic);
124111   DECLARE_DRIVER_INIT(mbee128);
125112   DECLARE_MACHINE_RESET(mbee);
126   DECLARE_VIDEO_START(mbee);
127   DECLARE_VIDEO_START(mbeeic);
128   DECLARE_PALETTE_INIT(mbeeic);
113   DECLARE_VIDEO_START(mono);
114   DECLARE_VIDEO_START(standard);
115   DECLARE_VIDEO_START(premium);
116   DECLARE_PALETTE_INIT(standard);
129117   DECLARE_PALETTE_INIT(mbeepc85b);
130   DECLARE_VIDEO_START(mbeeppc);
131   DECLARE_PALETTE_INIT(mbeeppc);
118   DECLARE_PALETTE_INIT(premium);
132119   DECLARE_MACHINE_RESET(mbee56);
133120   DECLARE_MACHINE_RESET(mbee128);
134121   DECLARE_MACHINE_RESET(mbee256);
r243519r243520
152139   void mbee_video_kbd_scan(int param);
153140   UINT8 m_sy6545_cursor[16];
154141
155   MC6845_UPDATE_ROW(mbee_update_row);
156   MC6845_UPDATE_ROW(mbeeic_update_row);
157   MC6845_UPDATE_ROW(mbeeppc_update_row);
158   MC6845_ON_UPDATE_ADDR_CHANGED(mbee_update_addr);
159   MC6845_ON_UPDATE_ADDR_CHANGED(mbee256_update_addr);
142   MC6845_UPDATE_ROW(mono_update_row);
143   MC6845_UPDATE_ROW(colour_update_row);
144   MC6845_ON_UPDATE_ADDR_CHANGED(crtc_update_addr);
160145
161146   required_device<palette_device> m_palette;
162147private:
163148   bool m_is_premium;
149   bool m_has_oldkb;
164150   size_t m_size;
165151   bool m_b7_rtc;
166152   bool m_b7_vs;
167   UINT8 m_mbee256_key_available;
153   bool m_b2;
168154   UINT8 m_mbee256_was_pressed[15];
169155   UINT8 m_mbee256_q[20];
170156   UINT8 m_mbee256_q_pos;
r243519r243520
196182   optional_memory_bank m_pak;
197183   optional_memory_bank m_telcom;
198184   optional_memory_bank m_basic;
199   required_ioport m_io_x0;
200   required_ioport m_io_x1;
201   required_ioport m_io_x2;
202   required_ioport m_io_x3;
203   required_ioport m_io_x4;
204   required_ioport m_io_x5;
205   required_ioport m_io_x6;
206   required_ioport m_io_x7;
207185   optional_ioport m_io_extra;
208   optional_ioport m_io_config;
209   optional_ioport m_io_x8;
210   optional_ioport m_io_x9;
211   optional_ioport m_io_x10;
212   optional_ioport m_io_x11;
213   optional_ioport m_io_x12;
214   optional_ioport m_io_x13;
215   optional_ioport m_io_x14;
186   required_ioport m_io_config;
187   optional_ioport_array<8> m_io_oldkb;
188   optional_ioport_array<15> m_io_newkb;
216189   required_device<screen_device> m_screen;
217190};
218191
trunk/src/mess/layout/alnchase.lay
r243519r243520
55
66   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
77
8   <element name="green" defstate="0">
9      <disk state="0"><color red="0.0" green="0.1" blue="0.0" /></disk>
10      <disk state="1"><color red="0.2" green="1.0" blue="0.2" /></disk>
8   <element name="led" defstate="0">
9      <disk state="0"><color red="0.1" green="0.2" blue="0.12" /></disk>
10      <disk state="1"><color red="0.5" green="1.0" blue="0.6" /></disk>
1111   </element>
12   <element name="red" defstate="0">
13      <disk state="0"><color red="0.1" green="0.0" blue="0.0" /></disk>
14      <disk state="1"><color red="1.0" green="0.2" blue="0.2" /></disk>
15   </element>
1612
1713
1814<!-- build screen -->
1915
2016   <view name="Test Layout">
21      <bounds left="0" right="100" top="0" bottom="100" />
17      <bounds left="0" right="64" top="0" bottom="64" />
2218      <bezel element="static_black">
23         <bounds left="0" right="100" top="0" bottom="100" />
19         <bounds left="0" right="64" top="0" bottom="64" />
2420      </bezel>
2521
26   <!-- matrix -->
22   <!-- 17*9 matrix -->
2723
28      <bezel name="lamp0" element="green"><bounds x="0" y="0" width="1" height="1" /></bezel>
24      <bezel name="lamp800" element="led"><bounds x="0" y="0" width="1" height="1" /></bezel>
25      <bezel name="lamp801" element="led"><bounds x="2" y="0" width="1" height="1" /></bezel>
26      <bezel name="lamp802" element="led"><bounds x="4" y="0" width="1" height="1" /></bezel>
27      <bezel name="lamp803" element="led"><bounds x="6" y="0" width="1" height="1" /></bezel>
28      <bezel name="lamp804" element="led"><bounds x="8" y="0" width="1" height="1" /></bezel>
29      <bezel name="lamp805" element="led"><bounds x="10" y="0" width="1" height="1" /></bezel>
30      <bezel name="lamp806" element="led"><bounds x="12" y="0" width="1" height="1" /></bezel>
31      <bezel name="lamp807" element="led"><bounds x="14" y="0" width="1" height="1" /></bezel>
32      <bezel name="lamp808" element="led"><bounds x="16" y="0" width="1" height="1" /></bezel>
33      <bezel name="lamp809" element="led"><bounds x="18" y="0" width="1" height="1" /></bezel>
34      <bezel name="lamp810" element="led"><bounds x="20" y="0" width="1" height="1" /></bezel>
35      <bezel name="lamp811" element="led"><bounds x="22" y="0" width="1" height="1" /></bezel>
36      <bezel name="lamp812" element="led"><bounds x="24" y="0" width="1" height="1" /></bezel>
37      <bezel name="lamp813" element="led"><bounds x="26" y="0" width="1" height="1" /></bezel>
38      <bezel name="lamp814" element="led"><bounds x="28" y="0" width="1" height="1" /></bezel>
39      <bezel name="lamp815" element="led"><bounds x="30" y="0" width="1" height="1" /></bezel>
40      <bezel name="lamp816" element="led"><bounds x="32" y="0" width="1" height="1" /></bezel>
2941
42      <bezel name="lamp700" element="led"><bounds x="0" y="2" width="1" height="1" /></bezel>
43      <bezel name="lamp701" element="led"><bounds x="2" y="2" width="1" height="1" /></bezel>
44      <bezel name="lamp702" element="led"><bounds x="4" y="2" width="1" height="1" /></bezel>
45      <bezel name="lamp703" element="led"><bounds x="6" y="2" width="1" height="1" /></bezel>
46      <bezel name="lamp704" element="led"><bounds x="8" y="2" width="1" height="1" /></bezel>
47      <bezel name="lamp705" element="led"><bounds x="10" y="2" width="1" height="1" /></bezel>
48      <bezel name="lamp706" element="led"><bounds x="12" y="2" width="1" height="1" /></bezel>
49      <bezel name="lamp707" element="led"><bounds x="14" y="2" width="1" height="1" /></bezel>
50      <bezel name="lamp708" element="led"><bounds x="16" y="2" width="1" height="1" /></bezel>
51      <bezel name="lamp709" element="led"><bounds x="18" y="2" width="1" height="1" /></bezel>
52      <bezel name="lamp710" element="led"><bounds x="20" y="2" width="1" height="1" /></bezel>
53      <bezel name="lamp711" element="led"><bounds x="22" y="2" width="1" height="1" /></bezel>
54      <bezel name="lamp712" element="led"><bounds x="24" y="2" width="1" height="1" /></bezel>
55      <bezel name="lamp713" element="led"><bounds x="26" y="2" width="1" height="1" /></bezel>
56      <bezel name="lamp714" element="led"><bounds x="28" y="2" width="1" height="1" /></bezel>
57      <bezel name="lamp715" element="led"><bounds x="30" y="2" width="1" height="1" /></bezel>
58      <bezel name="lamp716" element="led"><bounds x="32" y="2" width="1" height="1" /></bezel>
3059
60      <bezel name="lamp600" element="led"><bounds x="0" y="4" width="1" height="1" /></bezel>
61      <bezel name="lamp601" element="led"><bounds x="2" y="4" width="1" height="1" /></bezel>
62      <bezel name="lamp602" element="led"><bounds x="4" y="4" width="1" height="1" /></bezel>
63      <bezel name="lamp603" element="led"><bounds x="6" y="4" width="1" height="1" /></bezel>
64      <bezel name="lamp604" element="led"><bounds x="8" y="4" width="1" height="1" /></bezel>
65      <bezel name="lamp605" element="led"><bounds x="10" y="4" width="1" height="1" /></bezel>
66      <bezel name="lamp606" element="led"><bounds x="12" y="4" width="1" height="1" /></bezel>
67      <bezel name="lamp607" element="led"><bounds x="14" y="4" width="1" height="1" /></bezel>
68      <bezel name="lamp608" element="led"><bounds x="16" y="4" width="1" height="1" /></bezel>
69      <bezel name="lamp609" element="led"><bounds x="18" y="4" width="1" height="1" /></bezel>
70      <bezel name="lamp610" element="led"><bounds x="20" y="4" width="1" height="1" /></bezel>
71      <bezel name="lamp611" element="led"><bounds x="22" y="4" width="1" height="1" /></bezel>
72      <bezel name="lamp612" element="led"><bounds x="24" y="4" width="1" height="1" /></bezel>
73      <bezel name="lamp613" element="led"><bounds x="26" y="4" width="1" height="1" /></bezel>
74      <bezel name="lamp614" element="led"><bounds x="28" y="4" width="1" height="1" /></bezel>
75      <bezel name="lamp615" element="led"><bounds x="30" y="4" width="1" height="1" /></bezel>
76      <bezel name="lamp616" element="led"><bounds x="32" y="4" width="1" height="1" /></bezel>
77
78      <bezel name="lamp500" element="led"><bounds x="0" y="6" width="1" height="1" /></bezel>
79      <bezel name="lamp501" element="led"><bounds x="2" y="6" width="1" height="1" /></bezel>
80      <bezel name="lamp502" element="led"><bounds x="4" y="6" width="1" height="1" /></bezel>
81      <bezel name="lamp503" element="led"><bounds x="6" y="6" width="1" height="1" /></bezel>
82      <bezel name="lamp504" element="led"><bounds x="8" y="6" width="1" height="1" /></bezel>
83      <bezel name="lamp505" element="led"><bounds x="10" y="6" width="1" height="1" /></bezel>
84      <bezel name="lamp506" element="led"><bounds x="12" y="6" width="1" height="1" /></bezel>
85      <bezel name="lamp507" element="led"><bounds x="14" y="6" width="1" height="1" /></bezel>
86      <bezel name="lamp508" element="led"><bounds x="16" y="6" width="1" height="1" /></bezel>
87      <bezel name="lamp509" element="led"><bounds x="18" y="6" width="1" height="1" /></bezel>
88      <bezel name="lamp510" element="led"><bounds x="20" y="6" width="1" height="1" /></bezel>
89      <bezel name="lamp511" element="led"><bounds x="22" y="6" width="1" height="1" /></bezel>
90      <bezel name="lamp512" element="led"><bounds x="24" y="6" width="1" height="1" /></bezel>
91      <bezel name="lamp513" element="led"><bounds x="26" y="6" width="1" height="1" /></bezel>
92      <bezel name="lamp514" element="led"><bounds x="28" y="6" width="1" height="1" /></bezel>
93      <bezel name="lamp515" element="led"><bounds x="30" y="6" width="1" height="1" /></bezel>
94      <bezel name="lamp516" element="led"><bounds x="32" y="6" width="1" height="1" /></bezel>
95
96      <bezel name="lamp400" element="led"><bounds x="0" y="8" width="1" height="1" /></bezel>
97      <bezel name="lamp401" element="led"><bounds x="2" y="8" width="1" height="1" /></bezel>
98      <bezel name="lamp402" element="led"><bounds x="4" y="8" width="1" height="1" /></bezel>
99      <bezel name="lamp403" element="led"><bounds x="6" y="8" width="1" height="1" /></bezel>
100      <bezel name="lamp404" element="led"><bounds x="8" y="8" width="1" height="1" /></bezel>
101      <bezel name="lamp405" element="led"><bounds x="10" y="8" width="1" height="1" /></bezel>
102      <bezel name="lamp406" element="led"><bounds x="12" y="8" width="1" height="1" /></bezel>
103      <bezel name="lamp407" element="led"><bounds x="14" y="8" width="1" height="1" /></bezel>
104      <bezel name="lamp408" element="led"><bounds x="16" y="8" width="1" height="1" /></bezel>
105      <bezel name="lamp409" element="led"><bounds x="18" y="8" width="1" height="1" /></bezel>
106      <bezel name="lamp410" element="led"><bounds x="20" y="8" width="1" height="1" /></bezel>
107      <bezel name="lamp411" element="led"><bounds x="22" y="8" width="1" height="1" /></bezel>
108      <bezel name="lamp412" element="led"><bounds x="24" y="8" width="1" height="1" /></bezel>
109      <bezel name="lamp413" element="led"><bounds x="26" y="8" width="1" height="1" /></bezel>
110      <bezel name="lamp414" element="led"><bounds x="28" y="8" width="1" height="1" /></bezel>
111      <bezel name="lamp415" element="led"><bounds x="30" y="8" width="1" height="1" /></bezel>
112      <bezel name="lamp416" element="led"><bounds x="32" y="8" width="1" height="1" /></bezel>
113
114      <bezel name="lamp300" element="led"><bounds x="0" y="10" width="1" height="1" /></bezel>
115      <bezel name="lamp301" element="led"><bounds x="2" y="10" width="1" height="1" /></bezel>
116      <bezel name="lamp302" element="led"><bounds x="4" y="10" width="1" height="1" /></bezel>
117      <bezel name="lamp303" element="led"><bounds x="6" y="10" width="1" height="1" /></bezel>
118      <bezel name="lamp304" element="led"><bounds x="8" y="10" width="1" height="1" /></bezel>
119      <bezel name="lamp305" element="led"><bounds x="10" y="10" width="1" height="1" /></bezel>
120      <bezel name="lamp306" element="led"><bounds x="12" y="10" width="1" height="1" /></bezel>
121      <bezel name="lamp307" element="led"><bounds x="14" y="10" width="1" height="1" /></bezel>
122      <bezel name="lamp308" element="led"><bounds x="16" y="10" width="1" height="1" /></bezel>
123      <bezel name="lamp309" element="led"><bounds x="18" y="10" width="1" height="1" /></bezel>
124      <bezel name="lamp310" element="led"><bounds x="20" y="10" width="1" height="1" /></bezel>
125      <bezel name="lamp311" element="led"><bounds x="22" y="10" width="1" height="1" /></bezel>
126      <bezel name="lamp312" element="led"><bounds x="24" y="10" width="1" height="1" /></bezel>
127      <bezel name="lamp313" element="led"><bounds x="26" y="10" width="1" height="1" /></bezel>
128      <bezel name="lamp314" element="led"><bounds x="28" y="10" width="1" height="1" /></bezel>
129      <bezel name="lamp315" element="led"><bounds x="30" y="10" width="1" height="1" /></bezel>
130      <bezel name="lamp316" element="led"><bounds x="32" y="10" width="1" height="1" /></bezel>
131
132      <bezel name="lamp200" element="led"><bounds x="0" y="12" width="1" height="1" /></bezel>
133      <bezel name="lamp201" element="led"><bounds x="2" y="12" width="1" height="1" /></bezel>
134      <bezel name="lamp202" element="led"><bounds x="4" y="12" width="1" height="1" /></bezel>
135      <bezel name="lamp203" element="led"><bounds x="6" y="12" width="1" height="1" /></bezel>
136      <bezel name="lamp204" element="led"><bounds x="8" y="12" width="1" height="1" /></bezel>
137      <bezel name="lamp205" element="led"><bounds x="10" y="12" width="1" height="1" /></bezel>
138      <bezel name="lamp206" element="led"><bounds x="12" y="12" width="1" height="1" /></bezel>
139      <bezel name="lamp207" element="led"><bounds x="14" y="12" width="1" height="1" /></bezel>
140      <bezel name="lamp208" element="led"><bounds x="16" y="12" width="1" height="1" /></bezel>
141      <bezel name="lamp209" element="led"><bounds x="18" y="12" width="1" height="1" /></bezel>
142      <bezel name="lamp210" element="led"><bounds x="20" y="12" width="1" height="1" /></bezel>
143      <bezel name="lamp211" element="led"><bounds x="22" y="12" width="1" height="1" /></bezel>
144      <bezel name="lamp212" element="led"><bounds x="24" y="12" width="1" height="1" /></bezel>
145      <bezel name="lamp213" element="led"><bounds x="26" y="12" width="1" height="1" /></bezel>
146      <bezel name="lamp214" element="led"><bounds x="28" y="12" width="1" height="1" /></bezel>
147      <bezel name="lamp215" element="led"><bounds x="30" y="12" width="1" height="1" /></bezel>
148      <bezel name="lamp216" element="led"><bounds x="32" y="12" width="1" height="1" /></bezel>
149
150      <bezel name="lamp100" element="led"><bounds x="0" y="14" width="1" height="1" /></bezel>
151      <bezel name="lamp101" element="led"><bounds x="2" y="14" width="1" height="1" /></bezel>
152      <bezel name="lamp102" element="led"><bounds x="4" y="14" width="1" height="1" /></bezel>
153      <bezel name="lamp103" element="led"><bounds x="6" y="14" width="1" height="1" /></bezel>
154      <bezel name="lamp104" element="led"><bounds x="8" y="14" width="1" height="1" /></bezel>
155      <bezel name="lamp105" element="led"><bounds x="10" y="14" width="1" height="1" /></bezel>
156      <bezel name="lamp106" element="led"><bounds x="12" y="14" width="1" height="1" /></bezel>
157      <bezel name="lamp107" element="led"><bounds x="14" y="14" width="1" height="1" /></bezel>
158      <bezel name="lamp108" element="led"><bounds x="16" y="14" width="1" height="1" /></bezel>
159      <bezel name="lamp109" element="led"><bounds x="18" y="14" width="1" height="1" /></bezel>
160      <bezel name="lamp110" element="led"><bounds x="20" y="14" width="1" height="1" /></bezel>
161      <bezel name="lamp111" element="led"><bounds x="22" y="14" width="1" height="1" /></bezel>
162      <bezel name="lamp112" element="led"><bounds x="24" y="14" width="1" height="1" /></bezel>
163      <bezel name="lamp113" element="led"><bounds x="26" y="14" width="1" height="1" /></bezel>
164      <bezel name="lamp114" element="led"><bounds x="28" y="14" width="1" height="1" /></bezel>
165      <bezel name="lamp115" element="led"><bounds x="30" y="14" width="1" height="1" /></bezel>
166      <bezel name="lamp116" element="led"><bounds x="32" y="14" width="1" height="1" /></bezel>
167
168      <bezel name="lamp0" element="led"><bounds x="0" y="16" width="1" height="1" /></bezel>
169      <bezel name="lamp1" element="led"><bounds x="2" y="16" width="1" height="1" /></bezel>
170      <bezel name="lamp2" element="led"><bounds x="4" y="16" width="1" height="1" /></bezel>
171      <bezel name="lamp3" element="led"><bounds x="6" y="16" width="1" height="1" /></bezel>
172      <bezel name="lamp4" element="led"><bounds x="8" y="16" width="1" height="1" /></bezel>
173      <bezel name="lamp5" element="led"><bounds x="10" y="16" width="1" height="1" /></bezel>
174      <bezel name="lamp6" element="led"><bounds x="12" y="16" width="1" height="1" /></bezel>
175      <bezel name="lamp7" element="led"><bounds x="14" y="16" width="1" height="1" /></bezel>
176      <bezel name="lamp8" element="led"><bounds x="16" y="16" width="1" height="1" /></bezel>
177      <bezel name="lamp9" element="led"><bounds x="18" y="16" width="1" height="1" /></bezel>
178      <bezel name="lamp10" element="led"><bounds x="20" y="16" width="1" height="1" /></bezel>
179      <bezel name="lamp11" element="led"><bounds x="22" y="16" width="1" height="1" /></bezel>
180      <bezel name="lamp12" element="led"><bounds x="24" y="16" width="1" height="1" /></bezel>
181      <bezel name="lamp13" element="led"><bounds x="26" y="16" width="1" height="1" /></bezel>
182      <bezel name="lamp14" element="led"><bounds x="28" y="16" width="1" height="1" /></bezel>
183      <bezel name="lamp15" element="led"><bounds x="30" y="16" width="1" height="1" /></bezel>
184      <bezel name="lamp16" element="led"><bounds x="32" y="16" width="1" height="1" /></bezel>
185
186
31187   </view>
32188</mamelayout>
trunk/src/mess/layout/edracula.lay
r243519r243520
55
66   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
77
8   <element name="cyan" defstate="0">
9      <disk state="0"><color red="0.0" green="0.1" blue="0.1" /></disk>
10      <disk state="1"><color red="0.2" green="1.0" blue="1.0" /></disk>
8   <element name="led" defstate="0">
9      <disk state="0"><color red="0.1" green="0.2" blue="0.2" /></disk>
10      <disk state="1"><color red="0.5" green="1.0" blue="1.0" /></disk>
1111   </element>
12   <element name="green" defstate="0">
13      <disk state="0"><color red="0.0" green="0.1" blue="0.0" /></disk>
14      <disk state="1"><color red="0.2" green="1.0" blue="0.2" /></disk>
15   </element>
16   <element name="red" defstate="0">
17      <disk state="0"><color red="0.1" green="0.0" blue="0.0" /></disk>
18      <disk state="1"><color red="1.0" green="0.2" blue="0.2" /></disk>
19   </element>
2012
2113
2214<!-- build screen -->
2315
2416   <view name="Test Layout">
25      <bounds left="0" right="100" top="0" bottom="100" />
17      <bounds left="0" right="64" top="0" bottom="64" />
2618      <bezel element="static_black">
27         <bounds left="0" right="100" top="0" bottom="100" />
19         <bounds left="0" right="64" top="0" bottom="64" />
2820      </bezel>
2921
30   <!-- matrix -->
22   <!-- 8*18 matrix -->
3123
32      <bezel name="lamp0" element="green"><bounds x="0" y="0" width="1" height="1" /></bezel>
24      <bezel name="lamp700" element="led"><bounds x="0" y="0" width="1" height="1" /></bezel>
25      <bezel name="lamp701" element="led"><bounds x="0" y="2" width="1" height="1" /></bezel>
26      <bezel name="lamp702" element="led"><bounds x="0" y="4" width="1" height="1" /></bezel>
27      <bezel name="lamp703" element="led"><bounds x="0" y="6" width="1" height="1" /></bezel>
28      <bezel name="lamp704" element="led"><bounds x="0" y="8" width="1" height="1" /></bezel>
29      <bezel name="lamp705" element="led"><bounds x="0" y="10" width="1" height="1" /></bezel>
30      <bezel name="lamp706" element="led"><bounds x="0" y="12" width="1" height="1" /></bezel>
31      <bezel name="lamp707" element="led"><bounds x="0" y="14" width="1" height="1" /></bezel>
32      <bezel name="lamp708" element="led"><bounds x="0" y="16" width="1" height="1" /></bezel>
33      <bezel name="lamp709" element="led"><bounds x="0" y="18" width="1" height="1" /></bezel>
34      <bezel name="lamp710" element="led"><bounds x="0" y="20" width="1" height="1" /></bezel>
35      <bezel name="lamp711" element="led"><bounds x="0" y="22" width="1" height="1" /></bezel>
36      <bezel name="lamp712" element="led"><bounds x="0" y="24" width="1" height="1" /></bezel>
37      <bezel name="lamp713" element="led"><bounds x="0" y="26" width="1" height="1" /></bezel>
38      <bezel name="lamp714" element="led"><bounds x="0" y="28" width="1" height="1" /></bezel>
39      <bezel name="lamp715" element="led"><bounds x="0" y="30" width="1" height="1" /></bezel>
40      <bezel name="lamp716" element="led"><bounds x="0" y="32" width="1" height="1" /></bezel>
41      <bezel name="lamp717" element="led"><bounds x="0" y="34" width="1" height="1" /></bezel>
3342
43      <bezel name="lamp600" element="led"><bounds x="2" y="0" width="1" height="1" /></bezel>
44      <bezel name="lamp601" element="led"><bounds x="2" y="2" width="1" height="1" /></bezel>
45      <bezel name="lamp602" element="led"><bounds x="2" y="4" width="1" height="1" /></bezel>
46      <bezel name="lamp603" element="led"><bounds x="2" y="6" width="1" height="1" /></bezel>
47      <bezel name="lamp604" element="led"><bounds x="2" y="8" width="1" height="1" /></bezel>
48      <bezel name="lamp605" element="led"><bounds x="2" y="10" width="1" height="1" /></bezel>
49      <bezel name="lamp606" element="led"><bounds x="2" y="12" width="1" height="1" /></bezel>
50      <bezel name="lamp607" element="led"><bounds x="2" y="14" width="1" height="1" /></bezel>
51      <bezel name="lamp608" element="led"><bounds x="2" y="16" width="1" height="1" /></bezel>
52      <bezel name="lamp609" element="led"><bounds x="2" y="18" width="1" height="1" /></bezel>
53      <bezel name="lamp610" element="led"><bounds x="2" y="20" width="1" height="1" /></bezel>
54      <bezel name="lamp611" element="led"><bounds x="2" y="22" width="1" height="1" /></bezel>
55      <bezel name="lamp612" element="led"><bounds x="2" y="24" width="1" height="1" /></bezel>
56      <bezel name="lamp613" element="led"><bounds x="2" y="26" width="1" height="1" /></bezel>
57      <bezel name="lamp614" element="led"><bounds x="2" y="28" width="1" height="1" /></bezel>
58      <bezel name="lamp615" element="led"><bounds x="2" y="30" width="1" height="1" /></bezel>
59      <bezel name="lamp616" element="led"><bounds x="2" y="32" width="1" height="1" /></bezel>
60      <bezel name="lamp617" element="led"><bounds x="2" y="34" width="1" height="1" /></bezel>
3461
62      <bezel name="lamp500" element="led"><bounds x="4" y="0" width="1" height="1" /></bezel>
63      <bezel name="lamp501" element="led"><bounds x="4" y="2" width="1" height="1" /></bezel>
64      <bezel name="lamp502" element="led"><bounds x="4" y="4" width="1" height="1" /></bezel>
65      <bezel name="lamp503" element="led"><bounds x="4" y="6" width="1" height="1" /></bezel>
66      <bezel name="lamp504" element="led"><bounds x="4" y="8" width="1" height="1" /></bezel>
67      <bezel name="lamp505" element="led"><bounds x="4" y="10" width="1" height="1" /></bezel>
68      <bezel name="lamp506" element="led"><bounds x="4" y="12" width="1" height="1" /></bezel>
69      <bezel name="lamp507" element="led"><bounds x="4" y="14" width="1" height="1" /></bezel>
70      <bezel name="lamp508" element="led"><bounds x="4" y="16" width="1" height="1" /></bezel>
71      <bezel name="lamp509" element="led"><bounds x="4" y="18" width="1" height="1" /></bezel>
72      <bezel name="lamp510" element="led"><bounds x="4" y="20" width="1" height="1" /></bezel>
73      <bezel name="lamp511" element="led"><bounds x="4" y="22" width="1" height="1" /></bezel>
74      <bezel name="lamp512" element="led"><bounds x="4" y="24" width="1" height="1" /></bezel>
75      <bezel name="lamp513" element="led"><bounds x="4" y="26" width="1" height="1" /></bezel>
76      <bezel name="lamp514" element="led"><bounds x="4" y="28" width="1" height="1" /></bezel>
77      <bezel name="lamp515" element="led"><bounds x="4" y="30" width="1" height="1" /></bezel>
78      <bezel name="lamp516" element="led"><bounds x="4" y="32" width="1" height="1" /></bezel>
79      <bezel name="lamp517" element="led"><bounds x="4" y="34" width="1" height="1" /></bezel>
80
81      <bezel name="lamp400" element="led"><bounds x="6" y="0" width="1" height="1" /></bezel>
82      <bezel name="lamp401" element="led"><bounds x="6" y="2" width="1" height="1" /></bezel>
83      <bezel name="lamp402" element="led"><bounds x="6" y="4" width="1" height="1" /></bezel>
84      <bezel name="lamp403" element="led"><bounds x="6" y="6" width="1" height="1" /></bezel>
85      <bezel name="lamp404" element="led"><bounds x="6" y="8" width="1" height="1" /></bezel>
86      <bezel name="lamp405" element="led"><bounds x="6" y="10" width="1" height="1" /></bezel>
87      <bezel name="lamp406" element="led"><bounds x="6" y="12" width="1" height="1" /></bezel>
88      <bezel name="lamp407" element="led"><bounds x="6" y="14" width="1" height="1" /></bezel>
89      <bezel name="lamp408" element="led"><bounds x="6" y="16" width="1" height="1" /></bezel>
90      <bezel name="lamp409" element="led"><bounds x="6" y="18" width="1" height="1" /></bezel>
91      <bezel name="lamp410" element="led"><bounds x="6" y="20" width="1" height="1" /></bezel>
92      <bezel name="lamp411" element="led"><bounds x="6" y="22" width="1" height="1" /></bezel>
93      <bezel name="lamp412" element="led"><bounds x="6" y="24" width="1" height="1" /></bezel>
94      <bezel name="lamp413" element="led"><bounds x="6" y="26" width="1" height="1" /></bezel>
95      <bezel name="lamp414" element="led"><bounds x="6" y="28" width="1" height="1" /></bezel>
96      <bezel name="lamp415" element="led"><bounds x="6" y="30" width="1" height="1" /></bezel>
97      <bezel name="lamp416" element="led"><bounds x="6" y="32" width="1" height="1" /></bezel>
98      <bezel name="lamp417" element="led"><bounds x="6" y="34" width="1" height="1" /></bezel>
99
100      <bezel name="lamp300" element="led"><bounds x="8" y="0" width="1" height="1" /></bezel>
101      <bezel name="lamp301" element="led"><bounds x="8" y="2" width="1" height="1" /></bezel>
102      <bezel name="lamp302" element="led"><bounds x="8" y="4" width="1" height="1" /></bezel>
103      <bezel name="lamp303" element="led"><bounds x="8" y="6" width="1" height="1" /></bezel>
104      <bezel name="lamp304" element="led"><bounds x="8" y="8" width="1" height="1" /></bezel>
105      <bezel name="lamp305" element="led"><bounds x="8" y="10" width="1" height="1" /></bezel>
106      <bezel name="lamp306" element="led"><bounds x="8" y="12" width="1" height="1" /></bezel>
107      <bezel name="lamp307" element="led"><bounds x="8" y="14" width="1" height="1" /></bezel>
108      <bezel name="lamp308" element="led"><bounds x="8" y="16" width="1" height="1" /></bezel>
109      <bezel name="lamp309" element="led"><bounds x="8" y="18" width="1" height="1" /></bezel>
110      <bezel name="lamp310" element="led"><bounds x="8" y="20" width="1" height="1" /></bezel>
111      <bezel name="lamp311" element="led"><bounds x="8" y="22" width="1" height="1" /></bezel>
112      <bezel name="lamp312" element="led"><bounds x="8" y="24" width="1" height="1" /></bezel>
113      <bezel name="lamp313" element="led"><bounds x="8" y="26" width="1" height="1" /></bezel>
114      <bezel name="lamp314" element="led"><bounds x="8" y="28" width="1" height="1" /></bezel>
115      <bezel name="lamp315" element="led"><bounds x="8" y="30" width="1" height="1" /></bezel>
116      <bezel name="lamp316" element="led"><bounds x="8" y="32" width="1" height="1" /></bezel>
117      <bezel name="lamp317" element="led"><bounds x="8" y="34" width="1" height="1" /></bezel>
118
119      <bezel name="lamp200" element="led"><bounds x="10" y="0" width="1" height="1" /></bezel>
120      <bezel name="lamp201" element="led"><bounds x="10" y="2" width="1" height="1" /></bezel>
121      <bezel name="lamp202" element="led"><bounds x="10" y="4" width="1" height="1" /></bezel>
122      <bezel name="lamp203" element="led"><bounds x="10" y="6" width="1" height="1" /></bezel>
123      <bezel name="lamp204" element="led"><bounds x="10" y="8" width="1" height="1" /></bezel>
124      <bezel name="lamp205" element="led"><bounds x="10" y="10" width="1" height="1" /></bezel>
125      <bezel name="lamp206" element="led"><bounds x="10" y="12" width="1" height="1" /></bezel>
126      <bezel name="lamp207" element="led"><bounds x="10" y="14" width="1" height="1" /></bezel>
127      <bezel name="lamp208" element="led"><bounds x="10" y="16" width="1" height="1" /></bezel>
128      <bezel name="lamp209" element="led"><bounds x="10" y="18" width="1" height="1" /></bezel>
129      <bezel name="lamp210" element="led"><bounds x="10" y="20" width="1" height="1" /></bezel>
130      <bezel name="lamp211" element="led"><bounds x="10" y="22" width="1" height="1" /></bezel>
131      <bezel name="lamp212" element="led"><bounds x="10" y="24" width="1" height="1" /></bezel>
132      <bezel name="lamp213" element="led"><bounds x="10" y="26" width="1" height="1" /></bezel>
133      <bezel name="lamp214" element="led"><bounds x="10" y="28" width="1" height="1" /></bezel>
134      <bezel name="lamp215" element="led"><bounds x="10" y="30" width="1" height="1" /></bezel>
135      <bezel name="lamp216" element="led"><bounds x="10" y="32" width="1" height="1" /></bezel>
136      <bezel name="lamp217" element="led"><bounds x="10" y="34" width="1" height="1" /></bezel>
137
138      <bezel name="lamp100" element="led"><bounds x="12" y="0" width="1" height="1" /></bezel>
139      <bezel name="lamp101" element="led"><bounds x="12" y="2" width="1" height="1" /></bezel>
140      <bezel name="lamp102" element="led"><bounds x="12" y="4" width="1" height="1" /></bezel>
141      <bezel name="lamp103" element="led"><bounds x="12" y="6" width="1" height="1" /></bezel>
142      <bezel name="lamp104" element="led"><bounds x="12" y="8" width="1" height="1" /></bezel>
143      <bezel name="lamp105" element="led"><bounds x="12" y="10" width="1" height="1" /></bezel>
144      <bezel name="lamp106" element="led"><bounds x="12" y="12" width="1" height="1" /></bezel>
145      <bezel name="lamp107" element="led"><bounds x="12" y="14" width="1" height="1" /></bezel>
146      <bezel name="lamp108" element="led"><bounds x="12" y="16" width="1" height="1" /></bezel>
147      <bezel name="lamp109" element="led"><bounds x="12" y="18" width="1" height="1" /></bezel>
148      <bezel name="lamp110" element="led"><bounds x="12" y="20" width="1" height="1" /></bezel>
149      <bezel name="lamp111" element="led"><bounds x="12" y="22" width="1" height="1" /></bezel>
150      <bezel name="lamp112" element="led"><bounds x="12" y="24" width="1" height="1" /></bezel>
151      <bezel name="lamp113" element="led"><bounds x="12" y="26" width="1" height="1" /></bezel>
152      <bezel name="lamp114" element="led"><bounds x="12" y="28" width="1" height="1" /></bezel>
153      <bezel name="lamp115" element="led"><bounds x="12" y="30" width="1" height="1" /></bezel>
154      <bezel name="lamp116" element="led"><bounds x="12" y="32" width="1" height="1" /></bezel>
155      <bezel name="lamp117" element="led"><bounds x="12" y="34" width="1" height="1" /></bezel>
156
157      <bezel name="lamp0" element="led"><bounds x="14" y="0" width="1" height="1" /></bezel>
158      <bezel name="lamp1" element="led"><bounds x="14" y="2" width="1" height="1" /></bezel>
159      <bezel name="lamp2" element="led"><bounds x="14" y="4" width="1" height="1" /></bezel>
160      <bezel name="lamp3" element="led"><bounds x="14" y="6" width="1" height="1" /></bezel>
161      <bezel name="lamp4" element="led"><bounds x="14" y="8" width="1" height="1" /></bezel>
162      <bezel name="lamp5" element="led"><bounds x="14" y="10" width="1" height="1" /></bezel>
163      <bezel name="lamp6" element="led"><bounds x="14" y="12" width="1" height="1" /></bezel>
164      <bezel name="lamp7" element="led"><bounds x="14" y="14" width="1" height="1" /></bezel>
165      <bezel name="lamp8" element="led"><bounds x="14" y="16" width="1" height="1" /></bezel>
166      <bezel name="lamp9" element="led"><bounds x="14" y="18" width="1" height="1" /></bezel>
167      <bezel name="lamp10" element="led"><bounds x="14" y="20" width="1" height="1" /></bezel>
168      <bezel name="lamp11" element="led"><bounds x="14" y="22" width="1" height="1" /></bezel>
169      <bezel name="lamp12" element="led"><bounds x="14" y="24" width="1" height="1" /></bezel>
170      <bezel name="lamp13" element="led"><bounds x="14" y="26" width="1" height="1" /></bezel>
171      <bezel name="lamp14" element="led"><bounds x="14" y="28" width="1" height="1" /></bezel>
172      <bezel name="lamp15" element="led"><bounds x="14" y="30" width="1" height="1" /></bezel>
173      <bezel name="lamp16" element="led"><bounds x="14" y="32" width="1" height="1" /></bezel>
174      <bezel name="lamp17" element="led"><bounds x="14" y="34" width="1" height="1" /></bezel>
175
176
35177   </view>
36178</mamelayout>
trunk/src/mess/layout/tmtennis.lay
r243519r243520
55
66   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
77
8   <element name="green" defstate="0">
9      <disk state="0"><color red="0.0" green="0.1" blue="0.0" /></disk>
10      <disk state="1"><color red="0.2" green="1.0" blue="0.2" /></disk>
8   <element name="led" defstate="0">
9      <disk state="0"><color red="0.05" green="0.15" blue="0.05" /></disk>
10      <disk state="1"><color red="0.3" green="1.0" blue="0.3" /></disk>
1111   </element>
1212
1313
1414<!-- build screen -->
1515
1616   <view name="Test Layout">
17      <bounds left="0" right="100" top="0" bottom="100" />
17      <bounds left="0" right="64" top="0" bottom="64" />
1818      <bezel element="static_black">
19         <bounds left="0" right="100" top="0" bottom="100" />
19         <bounds left="0" right="64" top="0" bottom="64" />
2020      </bezel>
2121
22   <!-- matrix -->
22   <!-- 12*12 matrix -->
2323
24      <bezel name="lamp0" element="green"><bounds x="0" y="0" width="1" height="1" /></bezel>
25      <bezel name="lamp1" element="green"><bounds x="0" y="2" width="1" height="1" /></bezel>
26      <bezel name="lamp2" element="green"><bounds x="0" y="4" width="1" height="1" /></bezel>
27      <bezel name="lamp3" element="green"><bounds x="0" y="6" width="1" height="1" /></bezel>
28      <bezel name="lamp4" element="green"><bounds x="0" y="8" width="1" height="1" /></bezel>
29      <bezel name="lamp5" element="green"><bounds x="0" y="10" width="1" height="1" /></bezel>
30      <bezel name="lamp6" element="green"><bounds x="0" y="12" width="1" height="1" /></bezel>
31      <bezel name="lamp7" element="green"><bounds x="0" y="14" width="1" height="1" /></bezel>
32      <bezel name="lamp8" element="green"><bounds x="0" y="16" width="1" height="1" /></bezel>
33      <bezel name="lamp9" element="green"><bounds x="0" y="18" width="1" height="1" /></bezel>
34      <bezel name="lamp10" element="green"><bounds x="0" y="20" width="1" height="1" /></bezel>
35      <bezel name="lamp11" element="green"><bounds x="0" y="22" width="1" height="1" /></bezel>
24      <bezel name="lamp0" element="led"><bounds x="0" y="0" width="1" height="1" /></bezel>
25      <bezel name="lamp1" element="led"><bounds x="0" y="2" width="1" height="1" /></bezel>
26      <bezel name="lamp2" element="led"><bounds x="0" y="4" width="1" height="1" /></bezel>
27      <bezel name="lamp3" element="led"><bounds x="0" y="6" width="1" height="1" /></bezel>
28      <bezel name="lamp4" element="led"><bounds x="0" y="8" width="1" height="1" /></bezel>
29      <bezel name="lamp5" element="led"><bounds x="0" y="10" width="1" height="1" /></bezel>
30      <bezel name="lamp6" element="led"><bounds x="0" y="12" width="1" height="1" /></bezel>
31      <bezel name="lamp7" element="led"><bounds x="0" y="14" width="1" height="1" /></bezel>
32      <bezel name="lamp8" element="led"><bounds x="0" y="16" width="1" height="1" /></bezel>
33      <bezel name="lamp9" element="led"><bounds x="0" y="18" width="1" height="1" /></bezel>
34      <bezel name="lamp10" element="led"><bounds x="0" y="20" width="1" height="1" /></bezel>
35      <bezel name="lamp11" element="led"><bounds x="0" y="22" width="1" height="1" /></bezel>
3636
37      <bezel name="lamp100" element="green"><bounds x="2" y="0" width="1" height="1" /></bezel>
38      <bezel name="lamp101" element="green"><bounds x="2" y="2" width="1" height="1" /></bezel>
39      <bezel name="lamp102" element="green"><bounds x="2" y="4" width="1" height="1" /></bezel>
40      <bezel name="lamp103" element="green"><bounds x="2" y="6" width="1" height="1" /></bezel>
41      <bezel name="lamp104" element="green"><bounds x="2" y="8" width="1" height="1" /></bezel>
42      <bezel name="lamp105" element="green"><bounds x="2" y="10" width="1" height="1" /></bezel>
43      <bezel name="lamp106" element="green"><bounds x="2" y="12" width="1" height="1" /></bezel>
44      <bezel name="lamp107" element="green"><bounds x="2" y="14" width="1" height="1" /></bezel>
45      <bezel name="lamp108" element="green"><bounds x="2" y="16" width="1" height="1" /></bezel>
46      <bezel name="lamp109" element="green"><bounds x="2" y="18" width="1" height="1" /></bezel>
47      <bezel name="lamp110" element="green"><bounds x="2" y="20" width="1" height="1" /></bezel>
48      <bezel name="lamp111" element="green"><bounds x="2" y="22" width="1" height="1" /></bezel>
37      <bezel name="lamp100" element="led"><bounds x="2" y="0" width="1" height="1" /></bezel>
38      <bezel name="lamp101" element="led"><bounds x="2" y="2" width="1" height="1" /></bezel>
39      <bezel name="lamp102" element="led"><bounds x="2" y="4" width="1" height="1" /></bezel>
40      <bezel name="lamp103" element="led"><bounds x="2" y="6" width="1" height="1" /></bezel>
41      <bezel name="lamp104" element="led"><bounds x="2" y="8" width="1" height="1" /></bezel>
42      <bezel name="lamp105" element="led"><bounds x="2" y="10" width="1" height="1" /></bezel>
43      <bezel name="lamp106" element="led"><bounds x="2" y="12" width="1" height="1" /></bezel>
44      <bezel name="lamp107" element="led"><bounds x="2" y="14" width="1" height="1" /></bezel>
45      <bezel name="lamp108" element="led"><bounds x="2" y="16" width="1" height="1" /></bezel>
46      <bezel name="lamp109" element="led"><bounds x="2" y="18" width="1" height="1" /></bezel>
47      <bezel name="lamp110" element="led"><bounds x="2" y="20" width="1" height="1" /></bezel>
48      <bezel name="lamp111" element="led"><bounds x="2" y="22" width="1" height="1" /></bezel>
4949
50      <bezel name="lamp200" element="green"><bounds x="4" y="0" width="1" height="1" /></bezel>
51      <bezel name="lamp201" element="green"><bounds x="4" y="2" width="1" height="1" /></bezel>
52      <bezel name="lamp202" element="green"><bounds x="4" y="4" width="1" height="1" /></bezel>
53      <bezel name="lamp203" element="green"><bounds x="4" y="6" width="1" height="1" /></bezel>
54      <bezel name="lamp204" element="green"><bounds x="4" y="8" width="1" height="1" /></bezel>
55      <bezel name="lamp205" element="green"><bounds x="4" y="10" width="1" height="1" /></bezel>
56      <bezel name="lamp206" element="green"><bounds x="4" y="12" width="1" height="1" /></bezel>
57      <bezel name="lamp207" element="green"><bounds x="4" y="14" width="1" height="1" /></bezel>
58      <bezel name="lamp208" element="green"><bounds x="4" y="16" width="1" height="1" /></bezel>
59      <bezel name="lamp209" element="green"><bounds x="4" y="18" width="1" height="1" /></bezel>
60      <bezel name="lamp210" element="green"><bounds x="4" y="20" width="1" height="1" /></bezel>
61      <bezel name="lamp211" element="green"><bounds x="4" y="22" width="1" height="1" /></bezel>
50      <bezel name="lamp200" element="led"><bounds x="4" y="0" width="1" height="1" /></bezel>
51      <bezel name="lamp201" element="led"><bounds x="4" y="2" width="1" height="1" /></bezel>
52      <bezel name="lamp202" element="led"><bounds x="4" y="4" width="1" height="1" /></bezel>
53      <bezel name="lamp203" element="led"><bounds x="4" y="6" width="1" height="1" /></bezel>
54      <bezel name="lamp204" element="led"><bounds x="4" y="8" width="1" height="1" /></bezel>
55      <bezel name="lamp205" element="led"><bounds x="4" y="10" width="1" height="1" /></bezel>
56      <bezel name="lamp206" element="led"><bounds x="4" y="12" width="1" height="1" /></bezel>
57      <bezel name="lamp207" element="led"><bounds x="4" y="14" width="1" height="1" /></bezel>
58      <bezel name="lamp208" element="led"><bounds x="4" y="16" width="1" height="1" /></bezel>
59      <bezel name="lamp209" element="led"><bounds x="4" y="18" width="1" height="1" /></bezel>
60      <bezel name="lamp210" element="led"><bounds x="4" y="20" width="1" height="1" /></bezel>
61      <bezel name="lamp211" element="led"><bounds x="4" y="22" width="1" height="1" /></bezel>
6262
63      <bezel name="lamp300" element="green"><bounds x="6" y="0" width="1" height="1" /></bezel>
64      <bezel name="lamp301" element="green"><bounds x="6" y="2" width="1" height="1" /></bezel>
65      <bezel name="lamp302" element="green"><bounds x="6" y="4" width="1" height="1" /></bezel>
66      <bezel name="lamp303" element="green"><bounds x="6" y="6" width="1" height="1" /></bezel>
67      <bezel name="lamp304" element="green"><bounds x="6" y="8" width="1" height="1" /></bezel>
68      <bezel name="lamp305" element="green"><bounds x="6" y="10" width="1" height="1" /></bezel>
69      <bezel name="lamp306" element="green"><bounds x="6" y="12" width="1" height="1" /></bezel>
70      <bezel name="lamp307" element="green"><bounds x="6" y="14" width="1" height="1" /></bezel>
71      <bezel name="lamp308" element="green"><bounds x="6" y="16" width="1" height="1" /></bezel>
72      <bezel name="lamp309" element="green"><bounds x="6" y="18" width="1" height="1" /></bezel>
73      <bezel name="lamp310" element="green"><bounds x="6" y="20" width="1" height="1" /></bezel>
74      <bezel name="lamp311" element="green"><bounds x="6" y="22" width="1" height="1" /></bezel>
63      <bezel name="lamp300" element="led"><bounds x="6" y="0" width="1" height="1" /></bezel>
64      <bezel name="lamp301" element="led"><bounds x="6" y="2" width="1" height="1" /></bezel>
65      <bezel name="lamp302" element="led"><bounds x="6" y="4" width="1" height="1" /></bezel>
66      <bezel name="lamp303" element="led"><bounds x="6" y="6" width="1" height="1" /></bezel>
67      <bezel name="lamp304" element="led"><bounds x="6" y="8" width="1" height="1" /></bezel>
68      <bezel name="lamp305" element="led"><bounds x="6" y="10" width="1" height="1" /></bezel>
69      <bezel name="lamp306" element="led"><bounds x="6" y="12" width="1" height="1" /></bezel>
70      <bezel name="lamp307" element="led"><bounds x="6" y="14" width="1" height="1" /></bezel>
71      <bezel name="lamp308" element="led"><bounds x="6" y="16" width="1" height="1" /></bezel>
72      <bezel name="lamp309" element="led"><bounds x="6" y="18" width="1" height="1" /></bezel>
73      <bezel name="lamp310" element="led"><bounds x="6" y="20" width="1" height="1" /></bezel>
74      <bezel name="lamp311" element="led"><bounds x="6" y="22" width="1" height="1" /></bezel>
7575
76      <bezel name="lamp400" element="green"><bounds x="8" y="0" width="1" height="1" /></bezel>
77      <bezel name="lamp401" element="green"><bounds x="8" y="2" width="1" height="1" /></bezel>
78      <bezel name="lamp402" element="green"><bounds x="8" y="4" width="1" height="1" /></bezel>
79      <bezel name="lamp403" element="green"><bounds x="8" y="6" width="1" height="1" /></bezel>
80      <bezel name="lamp404" element="green"><bounds x="8" y="8" width="1" height="1" /></bezel>
81      <bezel name="lamp405" element="green"><bounds x="8" y="10" width="1" height="1" /></bezel>
82      <bezel name="lamp406" element="green"><bounds x="8" y="12" width="1" height="1" /></bezel>
83      <bezel name="lamp407" element="green"><bounds x="8" y="14" width="1" height="1" /></bezel>
84      <bezel name="lamp408" element="green"><bounds x="8" y="16" width="1" height="1" /></bezel>
85      <bezel name="lamp409" element="green"><bounds x="8" y="18" width="1" height="1" /></bezel>
86      <bezel name="lamp410" element="green"><bounds x="8" y="20" width="1" height="1" /></bezel>
87      <bezel name="lamp411" element="green"><bounds x="8" y="22" width="1" height="1" /></bezel>
76      <bezel name="lamp400" element="led"><bounds x="8" y="0" width="1" height="1" /></bezel>
77      <bezel name="lamp401" element="led"><bounds x="8" y="2" width="1" height="1" /></bezel>
78      <bezel name="lamp402" element="led"><bounds x="8" y="4" width="1" height="1" /></bezel>
79      <bezel name="lamp403" element="led"><bounds x="8" y="6" width="1" height="1" /></bezel>
80      <bezel name="lamp404" element="led"><bounds x="8" y="8" width="1" height="1" /></bezel>
81      <bezel name="lamp405" element="led"><bounds x="8" y="10" width="1" height="1" /></bezel>
82      <bezel name="lamp406" element="led"><bounds x="8" y="12" width="1" height="1" /></bezel>
83      <bezel name="lamp407" element="led"><bounds x="8" y="14" width="1" height="1" /></bezel>
84      <bezel name="lamp408" element="led"><bounds x="8" y="16" width="1" height="1" /></bezel>
85      <bezel name="lamp409" element="led"><bounds x="8" y="18" width="1" height="1" /></bezel>
86      <bezel name="lamp410" element="led"><bounds x="8" y="20" width="1" height="1" /></bezel>
87      <bezel name="lamp411" element="led"><bounds x="8" y="22" width="1" height="1" /></bezel>
8888
89      <bezel name="lamp500" element="green"><bounds x="10" y="0" width="1" height="1" /></bezel>
90      <bezel name="lamp501" element="green"><bounds x="10" y="2" width="1" height="1" /></bezel>
91      <bezel name="lamp502" element="green"><bounds x="10" y="4" width="1" height="1" /></bezel>
92      <bezel name="lamp503" element="green"><bounds x="10" y="6" width="1" height="1" /></bezel>
93      <bezel name="lamp504" element="green"><bounds x="10" y="8" width="1" height="1" /></bezel>
94      <bezel name="lamp505" element="green"><bounds x="10" y="10" width="1" height="1" /></bezel>
95      <bezel name="lamp506" element="green"><bounds x="10" y="12" width="1" height="1" /></bezel>
96      <bezel name="lamp507" element="green"><bounds x="10" y="14" width="1" height="1" /></bezel>
97      <bezel name="lamp508" element="green"><bounds x="10" y="16" width="1" height="1" /></bezel>
98      <bezel name="lamp509" element="green"><bounds x="10" y="18" width="1" height="1" /></bezel>
99      <bezel name="lamp510" element="green"><bounds x="10" y="20" width="1" height="1" /></bezel>
100      <bezel name="lamp511" element="green"><bounds x="10" y="22" width="1" height="1" /></bezel>
89      <bezel name="lamp500" element="led"><bounds x="10" y="0" width="1" height="1" /></bezel>
90      <bezel name="lamp501" element="led"><bounds x="10" y="2" width="1" height="1" /></bezel>
91      <bezel name="lamp502" element="led"><bounds x="10" y="4" width="1" height="1" /></bezel>
92      <bezel name="lamp503" element="led"><bounds x="10" y="6" width="1" height="1" /></bezel>
93      <bezel name="lamp504" element="led"><bounds x="10" y="8" width="1" height="1" /></bezel>
94      <bezel name="lamp505" element="led"><bounds x="10" y="10" width="1" height="1" /></bezel>
95      <bezel name="lamp506" element="led"><bounds x="10" y="12" width="1" height="1" /></bezel>
96      <bezel name="lamp507" element="led"><bounds x="10" y="14" width="1" height="1" /></bezel>
97      <bezel name="lamp508" element="led"><bounds x="10" y="16" width="1" height="1" /></bezel>
98      <bezel name="lamp509" element="led"><bounds x="10" y="18" width="1" height="1" /></bezel>
99      <bezel name="lamp510" element="led"><bounds x="10" y="20" width="1" height="1" /></bezel>
100      <bezel name="lamp511" element="led"><bounds x="10" y="22" width="1" height="1" /></bezel>
101101
102      <bezel name="lamp600" element="green"><bounds x="12" y="0" width="1" height="1" /></bezel>
103      <bezel name="lamp601" element="green"><bounds x="12" y="2" width="1" height="1" /></bezel>
104      <bezel name="lamp602" element="green"><bounds x="12" y="4" width="1" height="1" /></bezel>
105      <bezel name="lamp603" element="green"><bounds x="12" y="6" width="1" height="1" /></bezel>
106      <bezel name="lamp604" element="green"><bounds x="12" y="8" width="1" height="1" /></bezel>
107      <bezel name="lamp605" element="green"><bounds x="12" y="10" width="1" height="1" /></bezel>
108      <bezel name="lamp606" element="green"><bounds x="12" y="12" width="1" height="1" /></bezel>
109      <bezel name="lamp607" element="green"><bounds x="12" y="14" width="1" height="1" /></bezel>
110      <bezel name="lamp608" element="green"><bounds x="12" y="16" width="1" height="1" /></bezel>
111      <bezel name="lamp609" element="green"><bounds x="12" y="18" width="1" height="1" /></bezel>
112      <bezel name="lamp610" element="green"><bounds x="12" y="20" width="1" height="1" /></bezel>
113      <bezel name="lamp611" element="green"><bounds x="12" y="22" width="1" height="1" /></bezel>
102      <bezel name="lamp600" element="led"><bounds x="12" y="0" width="1" height="1" /></bezel>
103      <bezel name="lamp601" element="led"><bounds x="12" y="2" width="1" height="1" /></bezel>
104      <bezel name="lamp602" element="led"><bounds x="12" y="4" width="1" height="1" /></bezel>
105      <bezel name="lamp603" element="led"><bounds x="12" y="6" width="1" height="1" /></bezel>
106      <bezel name="lamp604" element="led"><bounds x="12" y="8" width="1" height="1" /></bezel>
107      <bezel name="lamp605" element="led"><bounds x="12" y="10" width="1" height="1" /></bezel>
108      <bezel name="lamp606" element="led"><bounds x="12" y="12" width="1" height="1" /></bezel>
109      <bezel name="lamp607" element="led"><bounds x="12" y="14" width="1" height="1" /></bezel>
110      <bezel name="lamp608" element="led"><bounds x="12" y="16" width="1" height="1" /></bezel>
111      <bezel name="lamp609" element="led"><bounds x="12" y="18" width="1" height="1" /></bezel>
112      <bezel name="lamp610" element="led"><bounds x="12" y="20" width="1" height="1" /></bezel>
113      <bezel name="lamp611" element="led"><bounds x="12" y="22" width="1" height="1" /></bezel>
114114
115      <bezel name="lamp700" element="green"><bounds x="14" y="0" width="1" height="1" /></bezel>
116      <bezel name="lamp701" element="green"><bounds x="14" y="2" width="1" height="1" /></bezel>
117      <bezel name="lamp702" element="green"><bounds x="14" y="4" width="1" height="1" /></bezel>
118      <bezel name="lamp703" element="green"><bounds x="14" y="6" width="1" height="1" /></bezel>
119      <bezel name="lamp704" element="green"><bounds x="14" y="8" width="1" height="1" /></bezel>
120      <bezel name="lamp705" element="green"><bounds x="14" y="10" width="1" height="1" /></bezel>
121      <bezel name="lamp706" element="green"><bounds x="14" y="12" width="1" height="1" /></bezel>
122      <bezel name="lamp707" element="green"><bounds x="14" y="14" width="1" height="1" /></bezel>
123      <bezel name="lamp708" element="green"><bounds x="14" y="16" width="1" height="1" /></bezel>
124      <bezel name="lamp709" element="green"><bounds x="14" y="18" width="1" height="1" /></bezel>
125      <bezel name="lamp710" element="green"><bounds x="14" y="20" width="1" height="1" /></bezel>
126      <bezel name="lamp711" element="green"><bounds x="14" y="22" width="1" height="1" /></bezel>
115      <bezel name="lamp700" element="led"><bounds x="14" y="0" width="1" height="1" /></bezel>
116      <bezel name="lamp701" element="led"><bounds x="14" y="2" width="1" height="1" /></bezel>
117      <bezel name="lamp702" element="led"><bounds x="14" y="4" width="1" height="1" /></bezel>
118      <bezel name="lamp703" element="led"><bounds x="14" y="6" width="1" height="1" /></bezel>
119      <bezel name="lamp704" element="led"><bounds x="14" y="8" width="1" height="1" /></bezel>
120      <bezel name="lamp705" element="led"><bounds x="14" y="10" width="1" height="1" /></bezel>
121      <bezel name="lamp706" element="led"><bounds x="14" y="12" width="1" height="1" /></bezel>
122      <bezel name="lamp707" element="led"><bounds x="14" y="14" width="1" height="1" /></bezel>
123      <bezel name="lamp708" element="led"><bounds x="14" y="16" width="1" height="1" /></bezel>
124      <bezel name="lamp709" element="led"><bounds x="14" y="18" width="1" height="1" /></bezel>
125      <bezel name="lamp710" element="led"><bounds x="14" y="20" width="1" height="1" /></bezel>
126      <bezel name="lamp711" element="led"><bounds x="14" y="22" width="1" height="1" /></bezel>
127127
128      <bezel name="lamp800" element="green"><bounds x="16" y="0" width="1" height="1" /></bezel>
129      <bezel name="lamp801" element="green"><bounds x="16" y="2" width="1" height="1" /></bezel>
130      <bezel name="lamp802" element="green"><bounds x="16" y="4" width="1" height="1" /></bezel>
131      <bezel name="lamp803" element="green"><bounds x="16" y="6" width="1" height="1" /></bezel>
132      <bezel name="lamp804" element="green"><bounds x="16" y="8" width="1" height="1" /></bezel>
133      <bezel name="lamp805" element="green"><bounds x="16" y="10" width="1" height="1" /></bezel>
134      <bezel name="lamp806" element="green"><bounds x="16" y="12" width="1" height="1" /></bezel>
135      <bezel name="lamp807" element="green"><bounds x="16" y="14" width="1" height="1" /></bezel>
136      <bezel name="lamp808" element="green"><bounds x="16" y="16" width="1" height="1" /></bezel>
137      <bezel name="lamp809" element="green"><bounds x="16" y="18" width="1" height="1" /></bezel>
138      <bezel name="lamp810" element="green"><bounds x="16" y="20" width="1" height="1" /></bezel>
139      <bezel name="lamp811" element="green"><bounds x="16" y="22" width="1" height="1" /></bezel>
128      <bezel name="lamp800" element="led"><bounds x="16" y="0" width="1" height="1" /></bezel>
129      <bezel name="lamp801" element="led"><bounds x="16" y="2" width="1" height="1" /></bezel>
130      <bezel name="lamp802" element="led"><bounds x="16" y="4" width="1" height="1" /></bezel>
131      <bezel name="lamp803" element="led"><bounds x="16" y="6" width="1" height="1" /></bezel>
132      <bezel name="lamp804" element="led"><bounds x="16" y="8" width="1" height="1" /></bezel>
133      <bezel name="lamp805" element="led"><bounds x="16" y="10" width="1" height="1" /></bezel>
134      <bezel name="lamp806" element="led"><bounds x="16" y="12" width="1" height="1" /></bezel>
135      <bezel name="lamp807" element="led"><bounds x="16" y="14" width="1" height="1" /></bezel>
136      <bezel name="lamp808" element="led"><bounds x="16" y="16" width="1" height="1" /></bezel>
137      <bezel name="lamp809" element="led"><bounds x="16" y="18" width="1" height="1" /></bezel>
138      <bezel name="lamp810" element="led"><bounds x="16" y="20" width="1" height="1" /></bezel>
139      <bezel name="lamp811" element="led"><bounds x="16" y="22" width="1" height="1" /></bezel>
140140
141      <bezel name="lamp900" element="green"><bounds x="18" y="0" width="1" height="1" /></bezel>
142      <bezel name="lamp901" element="green"><bounds x="18" y="2" width="1" height="1" /></bezel>
143      <bezel name="lamp902" element="green"><bounds x="18" y="4" width="1" height="1" /></bezel>
144      <bezel name="lamp903" element="green"><bounds x="18" y="6" width="1" height="1" /></bezel>
145      <bezel name="lamp904" element="green"><bounds x="18" y="8" width="1" height="1" /></bezel>
146      <bezel name="lamp905" element="green"><bounds x="18" y="10" width="1" height="1" /></bezel>
147      <bezel name="lamp906" element="green"><bounds x="18" y="12" width="1" height="1" /></bezel>
148      <bezel name="lamp907" element="green"><bounds x="18" y="14" width="1" height="1" /></bezel>
149      <bezel name="lamp908" element="green"><bounds x="18" y="16" width="1" height="1" /></bezel>
150      <bezel name="lamp909" element="green"><bounds x="18" y="18" width="1" height="1" /></bezel>
151      <bezel name="lamp910" element="green"><bounds x="18" y="20" width="1" height="1" /></bezel>
152      <bezel name="lamp911" element="green"><bounds x="18" y="22" width="1" height="1" /></bezel>
141      <bezel name="lamp900" element="led"><bounds x="18" y="0" width="1" height="1" /></bezel>
142      <bezel name="lamp901" element="led"><bounds x="18" y="2" width="1" height="1" /></bezel>
143      <bezel name="lamp902" element="led"><bounds x="18" y="4" width="1" height="1" /></bezel>
144      <bezel name="lamp903" element="led"><bounds x="18" y="6" width="1" height="1" /></bezel>
145      <bezel name="lamp904" element="led"><bounds x="18" y="8" width="1" height="1" /></bezel>
146      <bezel name="lamp905" element="led"><bounds x="18" y="10" width="1" height="1" /></bezel>
147      <bezel name="lamp906" element="led"><bounds x="18" y="12" width="1" height="1" /></bezel>
148      <bezel name="lamp907" element="led"><bounds x="18" y="14" width="1" height="1" /></bezel>
149      <bezel name="lamp908" element="led"><bounds x="18" y="16" width="1" height="1" /></bezel>
150      <bezel name="lamp909" element="led"><bounds x="18" y="18" width="1" height="1" /></bezel>
151      <bezel name="lamp910" element="led"><bounds x="18" y="20" width="1" height="1" /></bezel>
152      <bezel name="lamp911" element="led"><bounds x="18" y="22" width="1" height="1" /></bezel>
153153
154      <bezel name="lamp1000" element="green"><bounds x="20" y="0" width="1" height="1" /></bezel>
155      <bezel name="lamp1001" element="green"><bounds x="20" y="2" width="1" height="1" /></bezel>
156      <bezel name="lamp1002" element="green"><bounds x="20" y="4" width="1" height="1" /></bezel>
157      <bezel name="lamp1003" element="green"><bounds x="20" y="6" width="1" height="1" /></bezel>
158      <bezel name="lamp1004" element="green"><bounds x="20" y="8" width="1" height="1" /></bezel>
159      <bezel name="lamp1005" element="green"><bounds x="20" y="10" width="1" height="1" /></bezel>
160      <bezel name="lamp1006" element="green"><bounds x="20" y="12" width="1" height="1" /></bezel>
161      <bezel name="lamp1007" element="green"><bounds x="20" y="14" width="1" height="1" /></bezel>
162      <bezel name="lamp1008" element="green"><bounds x="20" y="16" width="1" height="1" /></bezel>
163      <bezel name="lamp1009" element="green"><bounds x="20" y="18" width="1" height="1" /></bezel>
164      <bezel name="lamp1010" element="green"><bounds x="20" y="20" width="1" height="1" /></bezel>
165      <bezel name="lamp1011" element="green"><bounds x="20" y="22" width="1" height="1" /></bezel>
154      <bezel name="lamp1000" element="led"><bounds x="20" y="0" width="1" height="1" /></bezel>
155      <bezel name="lamp1001" element="led"><bounds x="20" y="2" width="1" height="1" /></bezel>
156      <bezel name="lamp1002" element="led"><bounds x="20" y="4" width="1" height="1" /></bezel>
157      <bezel name="lamp1003" element="led"><bounds x="20" y="6" width="1" height="1" /></bezel>
158      <bezel name="lamp1004" element="led"><bounds x="20" y="8" width="1" height="1" /></bezel>
159      <bezel name="lamp1005" element="led"><bounds x="20" y="10" width="1" height="1" /></bezel>
160      <bezel name="lamp1006" element="led"><bounds x="20" y="12" width="1" height="1" /></bezel>
161      <bezel name="lamp1007" element="led"><bounds x="20" y="14" width="1" height="1" /></bezel>
162      <bezel name="lamp1008" element="led"><bounds x="20" y="16" width="1" height="1" /></bezel>
163      <bezel name="lamp1009" element="led"><bounds x="20" y="18" width="1" height="1" /></bezel>
164      <bezel name="lamp1010" element="led"><bounds x="20" y="20" width="1" height="1" /></bezel>
165      <bezel name="lamp1011" element="led"><bounds x="20" y="22" width="1" height="1" /></bezel>
166166
167      <bezel name="lamp1100" element="green"><bounds x="22" y="0" width="1" height="1" /></bezel>
168      <bezel name="lamp1101" element="green"><bounds x="22" y="2" width="1" height="1" /></bezel>
169      <bezel name="lamp1102" element="green"><bounds x="22" y="4" width="1" height="1" /></bezel>
170      <bezel name="lamp1103" element="green"><bounds x="22" y="6" width="1" height="1" /></bezel>
171      <bezel name="lamp1104" element="green"><bounds x="22" y="8" width="1" height="1" /></bezel>
172      <bezel name="lamp1105" element="green"><bounds x="22" y="10" width="1" height="1" /></bezel>
173      <bezel name="lamp1106" element="green"><bounds x="22" y="12" width="1" height="1" /></bezel>
174      <bezel name="lamp1107" element="green"><bounds x="22" y="14" width="1" height="1" /></bezel>
175      <bezel name="lamp1108" element="green"><bounds x="22" y="16" width="1" height="1" /></bezel>
176      <bezel name="lamp1109" element="green"><bounds x="22" y="18" width="1" height="1" /></bezel>
177      <bezel name="lamp1110" element="green"><bounds x="22" y="20" width="1" height="1" /></bezel>
178      <bezel name="lamp1111" element="green"><bounds x="22" y="22" width="1" height="1" /></bezel>
167      <bezel name="lamp1100" element="led"><bounds x="22" y="0" width="1" height="1" /></bezel>
168      <bezel name="lamp1101" element="led"><bounds x="22" y="2" width="1" height="1" /></bezel>
169      <bezel name="lamp1102" element="led"><bounds x="22" y="4" width="1" height="1" /></bezel>
170      <bezel name="lamp1103" element="led"><bounds x="22" y="6" width="1" height="1" /></bezel>
171      <bezel name="lamp1104" element="led"><bounds x="22" y="8" width="1" height="1" /></bezel>
172      <bezel name="lamp1105" element="led"><bounds x="22" y="10" width="1" height="1" /></bezel>
173      <bezel name="lamp1106" element="led"><bounds x="22" y="12" width="1" height="1" /></bezel>
174      <bezel name="lamp1107" element="led"><bounds x="22" y="14" width="1" height="1" /></bezel>
175      <bezel name="lamp1108" element="led"><bounds x="22" y="16" width="1" height="1" /></bezel>
176      <bezel name="lamp1109" element="led"><bounds x="22" y="18" width="1" height="1" /></bezel>
177      <bezel name="lamp1110" element="led"><bounds x="22" y="20" width="1" height="1" /></bezel>
178      <bezel name="lamp1111" element="led"><bounds x="22" y="22" width="1" height="1" /></bezel>
179179
180180
181181   </view>
trunk/src/mess/layout/wildfire.lay
r243519r243520
1717<!-- build screen -->
1818
1919   <view name="Test Layout">
20      <bounds left="0" right="100" top="0" bottom="100" />
20      <bounds left="0" right="64" top="0" bottom="64" />
2121      <bezel element="static_black">
22         <bounds left="0" right="100" top="0" bottom="100" />
22         <bounds left="0" right="64" top="0" bottom="64" />
2323      </bezel>
2424
2525      <bezel name="digit0" element="digit"><bounds x="0" y="0" width="10" height="15" /></bezel>
2626      <bezel name="digit1" element="digit"><bounds x="10" y="0" width="10" height="15" /></bezel>
2727      <bezel name="digit2" element="digit"><bounds x="20" y="0" width="10" height="15" /></bezel>
2828
29   <!-- 8*13 matrix (first 3 are the 7segs) -->
30
2931      <bezel name="lamp0" element="led"><bounds x="0" y="20" width="1" height="1" /></bezel>
3032      <bezel name="lamp1" element="led"><bounds x="2" y="20" width="1" height="1" /></bezel>
3133      <bezel name="lamp2" element="led"><bounds x="4" y="20" width="1" height="1" /></bezel>
r243519r243520
143145      <bezel name="lamp126" element="led"><bounds x="12" y="44" width="1" height="1" /></bezel>
144146      <bezel name="lamp127" element="led"><bounds x="14" y="44" width="1" height="1" /></bezel>
145147
148
146149   </view>
147150</mamelayout>
trunk/src/mess/machine/mbee.c
r243519r243520
8888         break;
8989   }
9090
91   data |= m_mbee256_key_available;
91   data |= (UINT8)m_b2 << 1; // key pressed on new keyboard
92   data |= 8; // CTS held high via resistor. If low, the disk-based models think a mouse is plugged in.
9293
9394   return data;
9495};
r243519r243520
114115
115116READ8_MEMBER( mbee_state::mbee_fdc_status_r )
116117{
117/*  d7 indicate if IRQ or DRQ is occuring (1=happening)
118/*  d7 indicate if IRQ or DRQ is occurring (1=happening)
118119    d6..d0 not used */
119120
120121   return m_fdc_rq ? 0xff : 0x7f;
r243519r243520
164165   It includes up to 4 KB of mask-programmable ROM, 64 bytes of scratchpad RAM and up to 64 bytes
165166   of executable RAM. The MCU also integrates 32-bit I/O and a programmable timer. */
166167
167   UINT8 i, j;
168   UINT8 pressed[15];
168   UINT8 i, j, pressed;
169169
170
171   /* see what is pressed */
172   pressed[0] = m_io_x0->read();
173   pressed[1] = m_io_x1->read();
174   pressed[2] = m_io_x2->read();
175   pressed[3] = m_io_x3->read();
176   pressed[4] = m_io_x4->read();
177   pressed[5] = m_io_x5->read();
178   pressed[6] = m_io_x6->read();
179   pressed[7] = m_io_x7->read();
180   pressed[8] = m_io_x8->read();
181   pressed[9] = m_io_x9->read();
182   pressed[10] = m_io_x10->read();
183   pressed[11] = m_io_x11->read();
184   pressed[12] = m_io_x12->read();
185   pressed[13] = m_io_x13->read();
186   pressed[14] = m_io_x14->read();
187
188   /* find what has changed */
170   // find what has changed
189171   for (i = 0; i < 15; i++)
190172   {
191      if (pressed[i] != m_mbee256_was_pressed[i])
173      pressed = m_io_newkb[i]->read();
174      if (pressed != m_mbee256_was_pressed[i])
192175      {
193         /* get scankey value */
176         // get scankey value
194177         for (j = 0; j < 8; j++)
195178         {
196            if (BIT(pressed[i]^m_mbee256_was_pressed[i], j))
179            if (BIT(pressed^m_mbee256_was_pressed[i], j))
197180            {
198               /* put it in the queue */
199               m_mbee256_q[m_mbee256_q_pos] = (i << 3) | j | (BIT(pressed[i], j) ? 0x80 : 0);
181               // put it in the queue
182               m_mbee256_q[m_mbee256_q_pos] = (i << 3) | j | (BIT(pressed, j) ? 0x80 : 0);
200183               if (m_mbee256_q_pos < 19) m_mbee256_q_pos++;
201184            }
202185         }
203         m_mbee256_was_pressed[i] = pressed[i];
186         m_mbee256_was_pressed[i] = pressed;
204187      }
205188   }
206189
207   /* if anything queued, cause an interrupt */
190   // if anything queued, cause an interrupt
208191   if (m_mbee256_q_pos)
209      m_mbee256_key_available = 2; // set irq
192   {
193      m_b2 = 1; // set irq
194      //breaks keyboard m_pio->port_b_write(pio_port_b_r(generic_space(),0,0xff));
195   }
210196
211197   timer_set(attotime::from_hz(25), TIMER_MBEE256_KBD);
212198}
r243519r243520
221207      for (i = 0; i < m_mbee256_q_pos; i++) m_mbee256_q[i] = m_mbee256_q[i+1]; // ripple queue
222208   }
223209
224   m_mbee256_key_available = 0; // clear irq
210   m_b2 = 0; // clear irq
225211   return data;
226212}
227213
r243519r243520
270256// This doesn't seem to do anything; the time works without it.
271257TIMER_CALLBACK_MEMBER( mbee_state::mbee_rtc_irq )
272258{
259   if (!m_rtc)
260      return;
261
273262   UINT8 data = m_rtc->read(m_maincpu->space(AS_IO), 12);
274263   m_b7_rtc = (data) ? 1 : 0;
275264
r243519r243520
292281
293282    b_mask = total dynamic ram (1=64k; 3=128k; 7=256k)
294283
284    Certain software (such as the PJB system) constantly switch banks around,
285    causing slowness. Therefore this function only changes the banks that need
286    changing, leaving the others as is.
287
295288************************************************************/
296289
297290void mbee_state::setup_banks(UINT8 data, bool first_time, UINT8 b_mask)
r243519r243520
304297   UINT16 b_vid;
305298   char banktag[10];
306299
307   if (first_time || (b_data != m_bank_array[0]))
300   if (first_time || (b_data != m_bank_array[0])) // if same data as last time, leave now
308301   {
309302      m_bank_array[0] = b_data;
310303
r243519r243520
551544   UINT8 *RAM = memregion("maincpu")->base();
552545   m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000);
553546   m_size = 0x4000;
547   m_has_oldkb = 1;
554548}
555549
556550DRIVER_INIT_MEMBER( mbee_state, mbeeic )
r243519r243520
563557
564558   m_pak->set_entry(0);
565559   m_size = 0x8000;
560   m_has_oldkb = 1;
566561}
567562
568563DRIVER_INIT_MEMBER( mbee_state, mbeepc )
r243519r243520
579574   m_pak->set_entry(0);
580575   m_telcom->set_entry(0);
581576   m_size = 0x8000;
577   m_has_oldkb = 1;
582578}
583579
584580DRIVER_INIT_MEMBER( mbee_state, mbeepc85 )
r243519r243520
595591   m_pak->set_entry(5);
596592   m_telcom->set_entry(0);
597593   m_size = 0x8000;
594   m_has_oldkb = 1;
598595}
599596
600597DRIVER_INIT_MEMBER( mbee_state, mbeeppc )
r243519r243520
616613   m_telcom->set_entry(0);
617614   m_basic->set_entry(0);
618615   m_size = 0x8000;
616   m_has_oldkb = 1;
619617}
620618
621619DRIVER_INIT_MEMBER( mbee_state, mbee56 )
r243519r243520
623621   UINT8 *RAM = memregion("maincpu")->base();
624622   m_boot->configure_entries(0, 2, &RAM[0x0000], 0xe000);
625623   m_size = 0xe000;
624   m_has_oldkb = 1;
626625}
627626
628627DRIVER_INIT_MEMBER( mbee_state, mbee128 )
r243519r243520
641640      membank(banktag)->configure_entries(0, 32, &RAM[0x0000], 0x1000); // RAM banks
642641      membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom
643642   }
643
644   timer_set(attotime::from_hz(1), TIMER_MBEE_RTC_IRQ);   /* timer for rtc */
645
644646   m_size = 0x8000;
647   m_has_oldkb = 1;
645648}
646649
647650DRIVER_INIT_MEMBER( mbee_state, mbee256 )
r243519r243520
665668   timer_set(attotime::from_hz(50), TIMER_MBEE256_KBD);   /* timer for kbd */
666669
667670   m_size = 0x8000;
671   m_has_oldkb = 0;
668672}
669673
670674DRIVER_INIT_MEMBER( mbee_state, mbeett )
r243519r243520
685689   timer_set(attotime::from_hz(25), TIMER_MBEE256_KBD);   /* timer for kbd */
686690
687691   m_size = 0x8000;
692   m_has_oldkb = 0;
688693}
689694
690695
trunk/src/mess/osd/windows/windows.mak
r243519r243520
3636
3737$(RESFILE): $(MESS_WINSRC)/mess.rc $(MESS_WINOBJ)/messvers.rc
3838
39$(MESS_WINOBJ)/messvers.rc: $(BUILDOUT)/verinfo$(BUILD_EXE) $(SRC)/version.c
39$(MESS_WINOBJ)/messvers.rc: $(SRC)/build/verinfo.py $(SRC)/version.c
4040   @echo Emitting $@...
41   @"$(BUILDOUT)/verinfo$(BUILD_EXE)" -b mess $(SRC)/version.c > $@
No newline at end of file
41   $(PYTHON) $(SRC)/build/verinfo.py -b mess $(SRC)/version.c > $@
No newline at end of file
trunk/src/mess/video/mbee.c
r243519r243520
44    video hardware
55    Juergen Buchmueller <pullmoll@t-online.de>, Dec 1999
66
7    Tests of keyboard. Start mbeeic.
7    Rewritten by Robbbert
88
9    1. Load ASTEROIDS PLUS, stay in attract mode, hold down spacebar,
10        it should only fire bullets. If it sometimes starts turning,
11        thrusting or using the shield, then there is a problem.
12
13    2. Load SCAVENGER and make sure it doesn't go to the next level
14        until you find the Exit.
15
16    3. At the Basic prompt, type in EDASM press enter. At the memory size
17        prompt press enter. Now, make sure the keyboard works properly.
18
19
20
21    TODO:
22
23    1. mbeeppc keyboard response is quite slow. You need to hold each
24    key until it responds. It works much better if you overclock the cpu.
25
269****************************************************************************/
2710
2811
r243519r243520
214197************************************************************/
215198
216199
217/* The direction keys are used by the pc85 menu. Do not know what uses the "insert" key. */
218200void mbee_state::keyboard_matrix_r(int offs)
219201{
220202   UINT8 port = (offs >> 7) & 7;
221203   UINT8 bit = (offs >> 4) & 7;
222   UINT8 data = 0;
204   UINT8 data = m_io_oldkb[port]->read();
205   bool keydown  = ( data >> bit ) & 1;
223206
224   switch ( port )
207   // This adds premium-style cursor keys to the old keyboard
208   // They are used by the pc85 & ppc menu, and the 128k shell.
209   if (!keydown)
225210   {
226      case 0: data = m_io_x0->read(); break;
227      case 1: data = m_io_x1->read(); break;
228      case 2: data = m_io_x2->read(); break;
229      case 3: data = m_io_x3->read(); break;
230      case 4: data = m_io_x4->read(); break;
231      case 5: data = m_io_x5->read(); break;
232      case 6: data = m_io_x6->read(); break;
233      case 7: data = m_io_x7->read(); break;
234   }
235   data  = ( data >> bit ) & 1;
236
237   if ((data | m_is_premium) == 0)
238   {
239211      UINT8 extra = m_io_extra->read();
240212
241      if( extra & 0x01 )  /* extra: cursor up */
242      {
243         if( port == 7 && bit == 1 ) data = 1;   /* Control */
244         if( port == 0 && bit == 5 ) data = 1;   /* E */
245      }
213      if (extra && port == 7 && bit == 1) keydown = 1;   /* Control */
214
215      if (BIT(extra, 0) && ( port == 0 && bit == 5 )) keydown = 1; // cursor up = ^E
246216      else
247      if( extra & 0x02 )  /* extra: cursor down */
248      {
249         if( port == 7 && bit == 1 ) data = 1;   /* Control */
250         if( port == 3 && bit == 0 ) data = 1;   /* X */
251      }
217      if (BIT(extra, 1) && ( port == 3 && bit == 0 )) keydown = 1; // cursor down = ^X
252218      else
253      if( extra & 0x04 )  /* extra: cursor left */
254      {
255         if( port == 7 && bit == 1 ) data = 1;   /* Control */
256         if( port == 2 && bit == 3 ) data = 1;   /* S */
257      }
219      if (BIT(extra, 2) && ( port == 2 && bit == 3 )) keydown = 1; // cursor left = ^S
258220      else
259      if( extra & 0x08 )  /* extra: cursor right */
260      {
261         if( port == 7 && bit == 1 ) data = 1;   /* Control */
262         if( port == 0 && bit == 4 ) data = 1;   /* D */
263      }
221      if (BIT(extra, 3) && ( port == 0 && bit == 4 )) keydown = 1; // cursor right = ^D
264222#if 0
265      // this key doesn't appear on any keyboard afaik
223      // this key doesn't appear on any keyboard afaik. It is a Wordbee function.
266224      else
267      if( extra & 0x10 )  /* extra: insert */
268      {
269         if( port == 7 && bit == 1 ) data = 1;   /* Control */
270         if( port == 2 && bit == 6 ) data = 1;   /* V */
271      }
225      if (BIT(extra, 4) && ( port == 2 && bit == 6 )) keydown = 1;  // insert = ^V
272226#endif
273227   }
274228
275   if( data )
229   if( keydown )
276230   {
277231      m_sy6545_reg[17] = offs;
278232      m_sy6545_reg[16] = (offs >> 8) & 0x3f;
r243519r243520
283237
284238void mbee_state::mbee_video_kbd_scan( int param )
285239{
286   if (m_0b) return;
287
240   if (m_0b) return; // can't remember why this is here
241   if (param & 15) return; // only scan once per row instead of 16 times
288242   keyboard_matrix_r(param);
289243}
290244
r243519r243520
375329
376330************************************************************/
377331
378VIDEO_START_MEMBER( mbee_state, mbee )
332VIDEO_START_MEMBER( mbee_state, mono )
379333{
380334   m_p_videoram = memregion("videoram")->base();
381335   m_p_gfxram = memregion("gfx")->base()+0x1000;
382336   m_is_premium = 0;
383337}
384338
385VIDEO_START_MEMBER( mbee_state, mbeeic )
339VIDEO_START_MEMBER( mbee_state, standard )
386340{
387341   m_p_videoram = memregion("videoram")->base();
388342   m_p_colorram = memregion("colorram")->base();
r243519r243520
390344   m_is_premium = 0;
391345}
392346
393VIDEO_START_MEMBER( mbee_state, mbeeppc )
347VIDEO_START_MEMBER( mbee_state, premium )
394348{
395349   m_p_videoram = memregion("videoram")->base();
396350   m_p_colorram = memregion("colorram")->base();
r243519r243520
407361}
408362
409363
410MC6845_ON_UPDATE_ADDR_CHANGED( mbee_state::mbee_update_addr )
364MC6845_ON_UPDATE_ADDR_CHANGED( mbee_state::crtc_update_addr )
411365{
412/* not sure what goes in here - parameters passed are device, address, strobe */
366// not sure what goes in here - parameters passed are device, address, strobe
367// not used on 256TC
413368}
414369
415MC6845_ON_UPDATE_ADDR_CHANGED( mbee_state::mbee256_update_addr )
416{
417/* not used on 256TC */
418}
419370
420
421371/* monochrome bee */
422MC6845_UPDATE_ROW( mbee_state::mbee_update_row )
372MC6845_UPDATE_ROW( mbee_state::mono_update_row )
423373{
424374   const rgb_t *palette = m_palette->palette()->entry_list_raw();
425375   UINT8 chr,gfx;
r243519r243520
453403   }
454404}
455405
456/* prom-based colours */
457MC6845_UPDATE_ROW( mbee_state::mbeeic_update_row )
406/* colour bee */
407MC6845_UPDATE_ROW( mbee_state::colour_update_row )
458408{
459409   const rgb_t *palette = m_palette->palette()->entry_list_raw();
460   UINT8 chr,gfx,fg,bg;
461   UINT16 mem,x,col;
410   UINT8 inv,attr,gfx,fg,bg;
411   UINT16 mem,x,col,chr;
462412   UINT16 colourm = (m_08 & 0x0e) << 7;
463413   UINT32 *p = &bitmap.pix32(y);
464414
465415   for (x = 0; x < x_count; x++)           // for each character
466416   {
467      UINT8 inv=0;
417      inv = 0;
468418      mem = (ma + x) & 0x7ff;
469419      chr = m_p_videoram[mem];
470      col = m_p_colorram[mem] | colourm;                   // read a byte of colour
471
472      mbee_video_kbd_scan(x+ma);
473
474      /* process cursor */
475      if (x == cursor_x)
476         inv ^= m_sy6545_cursor[ra];          // cursor scan row
477
478      /* get pattern of pixels for that character scanline */
479      gfx = m_p_gfxram[(chr<<4) | ra] ^ inv;
480      fg = (col & 0x001f) | 64;                   // map to foreground palette
481      bg = (col & 0x07e0) >> 5;                   // and background palette
482
483      /* Display a scanline of a character (8 pixels) */
484      *p++ = palette[BIT(gfx, 7) ? fg : bg];
485      *p++ = palette[BIT(gfx, 6) ? fg : bg];
486      *p++ = palette[BIT(gfx, 5) ? fg : bg];
487      *p++ = palette[BIT(gfx, 4) ? fg : bg];
488      *p++ = palette[BIT(gfx, 3) ? fg : bg];
489      *p++ = palette[BIT(gfx, 2) ? fg : bg];
490      *p++ = palette[BIT(gfx, 1) ? fg : bg];
491      *p++ = palette[BIT(gfx, 0) ? fg : bg];
492   }
493}
494
495
496/* new colours & hires2 */
497MC6845_UPDATE_ROW( mbee_state::mbeeppc_update_row )
498{
499   const rgb_t *palette = m_palette->palette()->entry_list_raw();
500   UINT8 gfx,fg,bg;
501   UINT16 mem,x,col,chr;
502   UINT32 *p = &bitmap.pix32(y);
503
504   for (x = 0; x < x_count; x++)           // for each character
505   {
506      UINT8 inv=0;
507      mem = (ma + x) & 0x7ff;
508      chr = m_p_videoram[mem];
509420      col = m_p_colorram[mem];                     // read a byte of colour
510421
511      if (m_1c & 0x80)                     // are extended features enabled?
422      if (m_is_premium)
512423      {
513         UINT8 attr = m_p_attribram[mem];
424         if (m_1c & 0x80)                     // are extended features enabled?
425         {
426            attr = m_p_attribram[mem];
514427
515         if (chr & 0x80)
516            chr += ((attr & 15) << 7);          // bump chr to its particular pcg definition
428            if (chr & 0x80)
429               chr += ((attr & 15) << 7);          // bump chr to its particular pcg definition
517430
518         if (attr & 0x40)
519            inv ^= 0xff;                    // inverse attribute
431            if (attr & 0x40)
432               inv ^= 0xff;                    // inverse attribute
520433
521         if ((attr & 0x80) && (m_framecnt & 0x10))            // flashing attribute
522            chr = 0x20;
434            if ((attr & 0x80) && (m_framecnt & 0x10))            // flashing attribute
435               chr = 0x20;
436         }
523437      }
438      else
439         col |= colourm;
524440
525      mbee_video_kbd_scan(x+ma);
441      if (m_has_oldkb)
442         mbee_video_kbd_scan(x+ma);
526443
527444      /* process cursor */
528445      if (x == cursor_x)
r243519r243520
530447
531448      /* get pattern of pixels for that character scanline */
532449      gfx = m_p_gfxram[(chr<<4) | ra] ^ inv;
533      fg = col & 15;                          // map to foreground palette
534      bg = (col & 0xf0) >> 4;                     // and background palette
535450
451      // get colours
452      if (m_is_premium)
453      {
454         fg = col & 15;
455         bg = (col & 0xf0) >> 4;
456      }
457      else
458      {
459         fg = (col & 0x001f) | 64;
460         bg = (col & 0x07e0) >> 5;
461      }
462
536463      /* Display a scanline of a character (8 pixels) */
537464      *p++ = palette[BIT(gfx, 7) ? fg : bg];
538465      *p++ = palette[BIT(gfx, 6) ? fg : bg];
r243519r243520
552479
553480************************************************************/
554481
555PALETTE_INIT_MEMBER( mbee_state, mbeeic )
482PALETTE_INIT_MEMBER( mbee_state, standard )
556483{
557484   const UINT8 *color_prom = memregion("proms")->base();
558485   UINT16 i;
r243519r243520
610537}
611538
612539
613PALETTE_INIT_MEMBER( mbee_state, mbeeppc )
540PALETTE_INIT_MEMBER( mbee_state, premium )
614541{
615542   UINT16 i;
616543   UINT8 r, b, g;
trunk/src/osd/sdl/draw13.c
r243519r243520
178178   INT32           m_blittimer;
179179
180180#if (SDLMAME_SDL2)
181   SDL_GLContext   m_gl_context_id;
181   //SDL_GLContext   m_gl_context_id;
182182#else
183183   // SDL surface
184184   SDL_Surface         *m_sdlsurf;
trunk/src/osd/windows/windows.mak
r243519r243520
502502
503503$(RESFILE): $(WINSRC)/mame.rc $(WINOBJ)/mamevers.rc
504504
505$(WINOBJ)/mamevers.rc: $(BUILDOUT)/verinfo$(BUILD_EXE) $(SRC)/version.c
505$(WINOBJ)/mamevers.rc: $(SRC)/build/verinfo.py $(SRC)/version.c
506506   @echo Emitting $@...
507   @"$(BUILDOUT)/verinfo$(BUILD_EXE)" -b mame $(SRC)/version.c > $@
507   $(PYTHON) $(SRC)/build/verinfo.py -b mame $(SRC)/version.c > $@
trunk/src/ume/osd/windows/windows.mak
r243519r243520
3636
3737$(RESFILE): $(UME_WINSRC)/ume.rc $(UME_WINOBJ)/umevers.rc
3838
39$(UME_WINOBJ)/umevers.rc: $(BUILDOUT)/verinfo$(BUILD_EXE) $(SRC)/version.c
39$(UME_WINOBJ)/umevers.rc: $(SRC)/build/verinfo.py $(SRC)/version.c
4040   @echo Emitting $@...
41   @"$(BUILDOUT)/verinfo$(BUILD_EXE)" -b ume $(SRC)/version.c > $@
No newline at end of file
41   $(PYTHON) $(SRC)/build/verinfo.py -b ume $(SRC)/version.c > $@
No newline at end of file


Previous 199869 Revisions Next


© 1997-2024 The MAME Team