Previous 199869 Revisions Next

r32505 Thursday 2nd October, 2014 at 20:07:31 UTC by Fabio Priuli
(MESS) converted arcadia and vc4000 to use slot devices for
their carts too.
[hash]arcadia.xml vc4000.xml
[src/emu/bus]bus.mak
[src/emu/bus/arcadia]rom.c* rom.h* slot.c* slot.h*
[src/emu/bus/vc4000]rom.c* rom.h* slot.c* slot.h*
[src/mess]mess.mak
[src/mess/drivers]arcadia.c vc4000.c
[src/mess/includes]arcadia.h vc4000.h
[src/mess/video]arcadia.c

trunk/src/emu/bus/bus.mak
r32504r32505
110110
111111#-------------------------------------------------
112112#
113#@src/emu/bus/arcadia/slot.h,BUSES += ARCADIA
114#-------------------------------------------------
115
116ifneq ($(filter ARCADIA,$(BUSES)),)
117OBJDIRS += $(BUSOBJ)/arcadia
118BUSOBJS += $(BUSOBJ)/arcadia/slot.o
119BUSOBJS += $(BUSOBJ)/arcadia/rom.o
120endif
121
122
123#-------------------------------------------------
124#
113125#@src/emu/bus/bw2/exp.h,BUSES += BW2
114126#-------------------------------------------------
115127
r32504r32505
632644
633645#-------------------------------------------------
634646#
647#@src/emu/bus/vc4000/slot.h,BUSES += VC4000
648#-------------------------------------------------
649
650ifneq ($(filter VC4000,$(BUSES)),)
651OBJDIRS += $(BUSOBJ)/vc4000
652BUSOBJS += $(BUSOBJ)/vc4000/slot.o
653BUSOBJS += $(BUSOBJ)/vc4000/rom.o
654endif
655
656
657#-------------------------------------------------
658#
635659#@src/emu/bus/vcs/vcs_slot.h,BUSES += VCS
636660#-------------------------------------------------
637661
trunk/src/emu/bus/vc4000/rom.c
r0r32505
1/***********************************************************************************************************
2
3
4 Interton Electronic VC 4000 cart emulation
5
6
7 ***********************************************************************************************************/
8
9
10/*  Game List and Emulation Status
11 
12 When you load a game it will normally appear to be unresponsive. Most carts contain a number of variants
13 of each game (e.g. Difficulty, Player1 vs Player2 or Player1 vs Computer, etc).
14 
15 Press F2 (if needed) to select which game variant you would like to play. The variant number will increment
16 on-screen. When you've made your choice, press F1 to start. The main keys are unlabelled, because an overlay
17 is provided with each cart. See below for a guide. You need to read the instructions that come with each game.
18 
19 In some games, the joystick is used like 4 buttons, and other games like a paddle. The two modes are
20 incompatible when using a keyboard. Therefore (in the emulation) a config dipswitch is used. The preferred
21 setting is listed below.
22 
23 (AC = Auto-centre, NAC = no auto-centre, 90 = turn controller 90 degrees).
24 
25 The list is rather incomplete, information will be added as it becomes available.
26 
27 The game names and numbers were obtained from the Amigan Software site.
28 
29 Cart Num    Name
30 ----------------------------------------------
31 1.      Grand Prix / Car Races / Autosport / Motor Racing / Road Race
32 Config: Paddle, NAC
33 Status: Working
34 Controls: Left-Right: Steer; Up: Accelerate
35 
36 2.      Black Jack
37 Status: Not working (some digits missing; indicator missing; dealer's cards missing)
38 Controls: set bet with S and D; A to deal; 1 to hit, 2 to stay; Q accept insurance, E to decline; double-up (unknown key)
39 Indicator: E make a bet then deal; I choose insurance; - you lost; + you won; X hit or stay
40 
41 3.      Olympics / Paddle Games / Bat & Ball / Pro Sport 60 / Sportsworld
42 Config: Paddle, NAC
43 Status: Working
44 
45 4.      Tank Battle / Combat
46 Config: Button, 90
47 Status: Working
48 Controls: Left-Right: Steer; Up: Accelerate; Fire: Shoot
49 
50 5.      Maths 1
51 Status: Working
52 Controls: Z difficulty; X = addition or subtraction; C ask question; A=1;S=2;D=3;Q=4;W=5;E=6;1=7;2=8;3=9;0=0; C enter
53 
54 6.      Maths 2
55 Status: Not working
56 Controls: Same as above.
57 
58 7.      Air Sea Attack / Air Sea Battle
59 Config: Button, 90
60 Status: Working
61 Controls: Left-Right: Move; Fire: Shoot
62 
63 8.      Treasure Hunt / Capture the Flag / Concentration / Memory Match
64 Config: Buttons
65 Status: Working
66 
67 9.      Labyrinth / Maze / Intelligence 1
68 Config: Buttons
69 Status: Working
70 
71 10.     Winter Sports
72 Notes: Background colours should be Cyan and White instead of Red and Black
73 
74 11.     Hippodrome / Horse Race
75 
76 12.     Hunting / Shooting Gallery
77 
78 13.     Chess 1
79 Status: Can't see what you're typing, wrong colours
80 
81 14.     Moto-cros
82 
83 15.     Four in a row / Intelligence 2
84 Config: Buttons
85 Status: Working
86 Notes: Seems the unused squares should be black. The screen jumps about while the computer is "thinking".
87 
88 16.     Code Breaker / Master Mind / Intelligence 3 / Challenge
89 
90 17.     Circus
91 STatus: severe gfx issues
92 
93 18.     Boxing / Prize Fight
94 
95 19.     Outer Space / Spacewar / Space Attack / Outer Space Combat
96 
97 20.     Melody Simon / Musical Memory / Follow the Leader / Musical Games / Electronic Music / Face the Music
98 
99 21.     Capture / Othello / Reversi / Attack / Intelligence 4
100 Config: Buttons
101 Status: Working
102 Notes: Seems the unused squares should be black
103 
104 22.     Chess 2
105 Status: Can't see what you're typing, wrong colours
106 
107 23.     Pinball / Flipper / Arcade
108 Status: gfx issues
109 
110 24.     Soccer
111 
112 25.     Bowling / NinePins
113 Config: Paddle, rotated 90 degrees, up/down autocentre, left-right does not
114 Status: Working
115 
116 26.     Draughts
117 
118 27.     Golf
119 Status: gfx issues
120 
121 28.     Cockpit
122 Status: gfx issues
123 
124 29.     Metropolis / Hangman
125 Status: gfx issues
126 
127 30.     Solitaire
128 
129 31.     Casino
130 Status: gfx issues, items missing and unplayable
131 Controls: 1 or 3=START; q=GO; E=STOP; D=$; Z=^; X=tens; C=units
132 
133 32.     Invaders / Alien Invasion / Earth Invasion
134 Status: Works
135 Config: Buttons
136 
137 33.     Super Invaders
138 Status: Stars are missing, colours are wrong
139 Config: Buttons (90)
140 
141 36.     BackGammon
142 Status: Not all counters are visible, Dice & game number not visible.
143 Controls: Fire=Exec; 1=D+; 3=D-; Q,W,E=4,5,6; A,S,D=1,2,3; Z=CL; X=STOP; C=SET
144 
145 37.     Monster Man / Spider's Web
146 Status: Works
147 Config: Buttons
148 
149 38.     Hyperspace
150 Status: Works
151 Config: Buttons (90)
152 Controls: 3 - status button; Q,W,E,A,S,D,Z,X,C selects which galaxy to visit
153 
154 
155 40.     Super Space
156 Status: Works, some small gfx issues near the bottom
157 Config: Buttons
158 
159 
160 
161 Acetronic: (dumps are compatible)
162 ------------
163 
164 * Shooting Gallery
165 Status: works but screen flickers
166 Config: Buttons
167 
168 * Planet Defender
169 Status: Works
170 Config: Paddle (NAC)
171 
172 * Laser Attack
173 Status: Works
174 Config: Buttons
175 
176 
177 
178 Public Domain: (written for emulators, may not work on real hardware)
179 ---------------
180 * Picture (no controls) - works
181 * Wincadia Stub (no controls) - works, small graphic error */
182
183
184
185#include "emu.h"
186#include "rom.h"
187
188
189//-------------------------------------------------
190//  vc4000_rom_device - constructor
191//-------------------------------------------------
192
193const device_type VC4000_ROM_STD = &device_creator<vc4000_rom_device>;
194const device_type VC4000_ROM_RAM1K = &device_creator<vc4000_ram1k_device>;
195const device_type VC4000_ROM_CHESS2 = &device_creator<vc4000_chess2_device>;
196
197
198vc4000_rom_device::vc4000_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
199               : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
200                  device_vc4000_cart_interface( mconfig, *this )
201{
202}
203
204vc4000_rom_device::vc4000_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
205               : device_t(mconfig, VC4000_ROM_STD, "VC 4000 Standard Carts", tag, owner, clock, "vc4000_rom", __FILE__),
206                  device_vc4000_cart_interface( mconfig, *this )
207{
208}
209
210vc4000_ram1k_device::vc4000_ram1k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
211               : vc4000_rom_device(mconfig, VC4000_ROM_RAM1K, "VC 4000 Carts w/1K RAM", tag, owner, clock, "vc4000_ram1k", __FILE__)
212{
213}
214
215vc4000_chess2_device::vc4000_chess2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
216               : vc4000_rom_device(mconfig, VC4000_ROM_CHESS2, "VC 4000 Chess II Cart", tag, owner, clock, "vc4000_chess2", __FILE__)
217{
218}
219
220
221/*-------------------------------------------------
222 mapper specific handlers
223 -------------------------------------------------*/
224
225READ8_MEMBER(vc4000_rom_device::read_rom)
226{
227   if (offset < m_rom_size)
228      return m_rom[offset];
229   else
230      return 0xff;
231}
232
233
234READ8_MEMBER(vc4000_ram1k_device::read_ram)
235{
236   return m_ram[offset & m_ram.count()];
237}
238
239WRITE8_MEMBER(vc4000_ram1k_device::write_ram)
240{
241   m_ram[offset & m_ram.count()] = data;
242}
243
244
245READ8_MEMBER(vc4000_chess2_device::extra_rom)
246{
247   if (offset < (m_rom_size - 0x2000))
248      return m_rom[offset + 0x2000];
249   else
250      return 0xff;
251}
252
253READ8_MEMBER(vc4000_chess2_device::read_ram)
254{
255   return m_ram[offset & m_ram.count()];
256}
257
258WRITE8_MEMBER(vc4000_chess2_device::write_ram)
259{
260   m_ram[offset & m_ram.count()] = data;
261}
Property changes on: trunk/src/emu/bus/vc4000/rom.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/vc4000/slot.c
r0r32505
1/***********************************************************************************************************
2
3    Interton Electronic VC 4000 cart emulation
4    (through slot devices)
5
6 ***********************************************************************************************************/
7
8
9#include "emu.h"
10#include "slot.h"
11
12//**************************************************************************
13//  GLOBAL VARIABLES
14//**************************************************************************
15
16const device_type VC4000_CART_SLOT = &device_creator<vc4000_cart_slot_device>;
17
18//**************************************************************************
19//    APF Cartridges Interface
20//**************************************************************************
21
22//-------------------------------------------------
23//  device_vc4000_cart_interface - constructor
24//-------------------------------------------------
25
26device_vc4000_cart_interface::device_vc4000_cart_interface(const machine_config &mconfig, device_t &device)
27   : device_slot_card_interface(mconfig, device),
28      m_rom(NULL),
29      m_rom_size(0)
30{
31}
32
33
34//-------------------------------------------------
35//  ~device_vc4000_cart_interface - destructor
36//-------------------------------------------------
37
38device_vc4000_cart_interface::~device_vc4000_cart_interface()
39{
40}
41
42//-------------------------------------------------
43//  rom_alloc - alloc the space for the cart
44//-------------------------------------------------
45
46void device_vc4000_cart_interface::rom_alloc(UINT32 size, const char *tag)
47{
48   if (m_rom == NULL)
49   {
50      astring tempstring(tag);
51      tempstring.cat(VC4000SLOT_ROM_REGION_TAG);
52      m_rom = device().machine().memory().region_alloc(tempstring, size, 1, ENDIANNESS_LITTLE)->base();
53      m_rom_size = size;
54   }
55}
56
57
58//-------------------------------------------------
59//  ram_alloc - alloc the space for the ram
60//-------------------------------------------------
61
62void device_vc4000_cart_interface::ram_alloc(UINT32 size)
63{
64   m_ram.resize(size);
65}
66
67
68//**************************************************************************
69//  LIVE DEVICE
70//**************************************************************************
71
72//-------------------------------------------------
73//  vc4000_cart_slot_device - constructor
74//-------------------------------------------------
75vc4000_cart_slot_device::vc4000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
76                  device_t(mconfig, VC4000_CART_SLOT, "Interton VC 4000 Cartridge Slot", tag, owner, clock, "vc4000_cart_slot", __FILE__),
77                  device_image_interface(mconfig, *this),
78                  device_slot_interface(mconfig, *this),
79                  m_type(VC4000_STD)
80{
81}
82
83
84//-------------------------------------------------
85//  vc4000_cart_slot_device - destructor
86//-------------------------------------------------
87
88vc4000_cart_slot_device::~vc4000_cart_slot_device()
89{
90}
91
92//-------------------------------------------------
93//  device_start - device-specific startup
94//-------------------------------------------------
95
96void vc4000_cart_slot_device::device_start()
97{
98   m_cart = dynamic_cast<device_vc4000_cart_interface *>(get_card_device());
99}
100
101//-------------------------------------------------
102//  device_config_complete - perform any
103//  operations now that the configuration is
104//  complete
105//-------------------------------------------------
106
107void vc4000_cart_slot_device::device_config_complete()
108{
109   // set brief and instance name
110   update_names();
111}
112
113
114//-------------------------------------------------
115//  APF PCB
116//-------------------------------------------------
117
118struct vc4000_slot
119{
120   int                     pcb_id;
121   const char              *slot_option;
122};
123
124// Here, we take the feature attribute from .xml (i.e. the PCB name) and we assign a unique ID to it
125static const vc4000_slot slot_list[] =
126{
127   { VC4000_STD,     "std" },
128   { VC4000_RAM1K,   "ram1k" },
129   { VC4000_CHESS2,  "chess2" }
130};
131
132static int vc4000_get_pcb_id(const char *slot)
133{
134   for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
135   {
136      if (!core_stricmp(slot_list[i].slot_option, slot))
137         return slot_list[i].pcb_id;
138   }
139
140   return 0;
141}
142
143static const char *vc4000_get_slot(int type)
144{
145   for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
146   {
147      if (slot_list[i].pcb_id == type)
148         return slot_list[i].slot_option;
149   }
150
151   return "std";
152}
153
154
155/*-------------------------------------------------
156 call load
157 -------------------------------------------------*/
158
159bool vc4000_cart_slot_device::call_load()
160{
161   if (m_cart)
162   {
163      UINT32 size = (software_entry() == NULL) ? length() : get_software_region_length("rom");
164
165      if (size > 0x1800)
166      {
167         seterror(IMAGE_ERROR_UNSPECIFIED, "Image extends beyond the expected size for a VC4000 cart");
168         return IMAGE_INIT_FAIL;
169      }
170     
171      m_cart->rom_alloc(size, tag());
172         
173      if (software_entry() == NULL)
174         fread(m_cart->get_rom_base(), size);
175      else
176         memcpy(m_cart->get_rom_base(), get_software_region("rom"), size);
177
178      if (software_entry() == NULL)
179      {
180         m_type = VC4000_STD;
181         // attempt to identify the non-standard types
182         if (size > 0x1000)  // 6k rom + 1k ram - Chess2 only
183            m_type = VC4000_CHESS2;
184         else if (size > 0x0800) // some 4k roms have 1k of mirrored ram
185            m_type = VC4000_RAM1K;
186
187         if (m_type == VC4000_RAM1K || m_type == VC4000_CHESS2)
188            m_cart->ram_alloc(0x400);
189      }
190      else
191      {
192         const char *pcb_name = get_feature("slot");
193         if (pcb_name)
194            m_type = vc4000_get_pcb_id(pcb_name);
195
196         if (get_software_region("ram"))
197            m_cart->ram_alloc(get_software_region_length("ram"));
198      }
199
200      //printf("Type: %s\n", vc4000_get_slot(m_type));
201
202      return IMAGE_INIT_PASS;
203   }
204
205   return IMAGE_INIT_PASS;
206}
207
208
209/*-------------------------------------------------
210 call softlist load
211 -------------------------------------------------*/
212
213bool vc4000_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
214{
215   load_software_part_region(*this, swlist, swname, start_entry);
216   return TRUE;
217}
218
219
220/*-------------------------------------------------
221 get default card software
222 -------------------------------------------------*/
223
224void vc4000_cart_slot_device::get_default_card_software(astring &result)
225{
226   if (open_image_file(mconfig().options()))
227   {
228      const char *slot_string = "std";
229      UINT32 size = core_fsize(m_file);
230      int type = VC4000_STD;
231
232      // attempt to identify the non-standard types
233      if (size > 0x1000)  // 6k rom + 1k ram - Chess2 only
234         type = VC4000_CHESS2;
235      else if (size > 0x0800) // some 4k roms have 1k of mirrored ram
236         type = VC4000_RAM1K;
237     
238      slot_string = vc4000_get_slot(type);
239
240      //printf("type: %s\n", slot_string);
241      clear();
242
243      result.cpy(slot_string);
244      return;
245   }
246
247   software_get_default_slot(result, "std");
248}
249
250/*-------------------------------------------------
251 read
252 -------------------------------------------------*/
253
254READ8_MEMBER(vc4000_cart_slot_device::read_rom)
255{
256   if (m_cart)
257      return m_cart->read_rom(space, offset);
258   else
259      return 0xff;
260}
261
262/*-------------------------------------------------
263 read
264 -------------------------------------------------*/
265
266READ8_MEMBER(vc4000_cart_slot_device::extra_rom)
267{
268   if (m_cart)
269      return m_cart->extra_rom(space, offset);
270   else
271      return 0xff;
272}
273
274/*-------------------------------------------------
275 read
276 -------------------------------------------------*/
277
278READ8_MEMBER(vc4000_cart_slot_device::read_ram)
279{
280   if (m_cart)
281      return m_cart->read_ram(space, offset);
282   else
283      return 0xff;
284}
285
286/*-------------------------------------------------
287 write
288 -------------------------------------------------*/
289
290WRITE8_MEMBER(vc4000_cart_slot_device::write_ram)
291{
292   if (m_cart)
293      m_cart->write_ram(space, offset, data);
294}
295
296
Property changes on: trunk/src/emu/bus/vc4000/slot.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/vc4000/rom.h
r0r32505
1#ifndef __VC4000_ROM_H
2#define __VC4000_ROM_H
3
4#include "slot.h"
5
6
7// ======================> vc4000_rom_device
8
9class vc4000_rom_device : public device_t,
10                  public device_vc4000_cart_interface
11{
12public:
13   // construction/destruction
14   vc4000_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
15   vc4000_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
16
17   // device-level overrides
18   virtual void device_start() {}
19   virtual void device_reset() {}
20
21   // reading and writing
22   virtual DECLARE_READ8_MEMBER(read_rom);
23};
24
25// ======================> vc4000_ram1k_device
26
27class vc4000_ram1k_device : public vc4000_rom_device
28{
29public:
30   // construction/destruction
31   vc4000_ram1k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
32   
33   // reading and writing
34   virtual DECLARE_READ8_MEMBER(read_ram);
35   virtual DECLARE_WRITE8_MEMBER(write_ram);
36};
37
38// ======================> vc4000_chess2_device
39
40class vc4000_chess2_device : public vc4000_rom_device
41{
42public:
43   // construction/destruction
44   vc4000_chess2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
45   
46   // reading and writing
47   virtual DECLARE_READ8_MEMBER(extra_rom);
48   virtual DECLARE_READ8_MEMBER(read_ram);
49   virtual DECLARE_WRITE8_MEMBER(write_ram);
50};
51
52
53
54
55
56// device type definition
57extern const device_type VC4000_ROM_STD;
58extern const device_type VC4000_ROM_RAM1K;
59extern const device_type VC4000_ROM_CHESS2;
60
61
62#endif
Property changes on: trunk/src/emu/bus/vc4000/rom.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/vc4000/slot.h
r0r32505
1#ifndef __VC4000_SLOT_H
2#define __VC4000_SLOT_H
3
4/***************************************************************************
5 TYPE DEFINITIONS
6 ***************************************************************************/
7
8
9/* PCB */
10enum
11{
12   VC4000_STD = 0,
13   VC4000_RAM1K,
14   VC4000_CHESS2
15};
16
17
18// ======================> device_vc4000_cart_interface
19
20class device_vc4000_cart_interface : public device_slot_card_interface
21{
22public:
23   // construction/destruction
24   device_vc4000_cart_interface(const machine_config &mconfig, device_t &device);
25   virtual ~device_vc4000_cart_interface();
26
27   // reading and writing
28   virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; }
29   virtual DECLARE_READ8_MEMBER(extra_rom) { return 0xff; }
30   virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
31   virtual DECLARE_WRITE8_MEMBER(write_ram) {}
32
33   void rom_alloc(UINT32 size, const char *tag);
34   void ram_alloc(UINT32 size);
35   UINT8* get_rom_base() { return m_rom; }
36   UINT8* get_ram_base() { return m_ram; }
37   UINT32 get_rom_size() { return m_rom_size; }
38   UINT32 get_ram_size() { return m_ram.count(); }
39
40   void save_ram()   { device().save_item(NAME(m_ram)); }
41
42protected:
43   // internal state
44   UINT8 *m_rom;
45   UINT32 m_rom_size;
46   dynamic_buffer m_ram;
47};
48
49
50// ======================> vc4000_cart_slot_device
51
52class vc4000_cart_slot_device : public device_t,
53                        public device_image_interface,
54                        public device_slot_interface
55{
56public:
57   // construction/destruction
58   vc4000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
59   virtual ~vc4000_cart_slot_device();
60
61   // device-level overrides
62   virtual void device_start();
63   virtual void device_config_complete();
64
65   // image-level overrides
66   virtual bool call_load();
67   virtual void call_unload() {}
68   virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry);
69
70   int get_type() { return m_type; }
71
72   void save_ram()   { if (m_cart && m_cart->get_ram_size()) m_cart->save_ram(); }
73
74   virtual iodevice_t image_type() const { return IO_CARTSLOT; }
75   virtual bool is_readable()  const { return 1; }
76   virtual bool is_writeable() const { return 0; }
77   virtual bool is_creatable() const { return 0; }
78   virtual bool must_be_loaded() const { return 0; }
79   virtual bool is_reset_on_load() const { return 1; }
80   virtual const option_guide *create_option_guide() const { return NULL; }
81   virtual const char *image_interface() const { return "vc4000_cart"; }
82   virtual const char *file_extensions() const { return "bin,rom"; }
83
84   // slot interface overrides
85   virtual void get_default_card_software(astring &result);
86
87   // reading and writing
88   virtual DECLARE_READ8_MEMBER(read_rom);
89   virtual DECLARE_READ8_MEMBER(extra_rom);
90   virtual DECLARE_READ8_MEMBER(read_ram);
91   virtual DECLARE_WRITE8_MEMBER(write_ram);
92
93protected:
94
95   int m_type;
96   device_vc4000_cart_interface*       m_cart;
97};
98
99
100
101// device type definition
102extern const device_type VC4000_CART_SLOT;
103
104
105/***************************************************************************
106 DEVICE CONFIGURATION MACROS
107 ***************************************************************************/
108
109#define VC4000SLOT_ROM_REGION_TAG ":cart:rom"
110
111#define MCFG_VC4000_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
112   MCFG_DEVICE_ADD(_tag, VC4000_CART_SLOT, 0) \
113   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
114
115#endif
Property changes on: trunk/src/emu/bus/vc4000/slot.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/arcadia/rom.c
r0r32505
1/***********************************************************************************************************
2
3
4 Emerson Arcadia 2001 cart emulation
5
6 Golf carts have the "extra_rom" handler installed at $4000 instead of $2000
7
8 ***********************************************************************************************************/
9
10
11#include "emu.h"
12#include "rom.h"
13
14
15//-------------------------------------------------
16//  arcadia_rom_device - constructor
17//-------------------------------------------------
18
19const device_type ARCADIA_ROM_STD = &device_creator<arcadia_rom_device>;
20const device_type ARCADIA_ROM_GOLF = &device_creator<arcadia_golf_device>;
21
22
23arcadia_rom_device::arcadia_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
24               : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
25                  device_arcadia_cart_interface( mconfig, *this )
26{
27}
28
29arcadia_rom_device::arcadia_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
30               : device_t(mconfig, ARCADIA_ROM_STD, "Emerson Arcadia Standard Carts", tag, owner, clock, "arcadia_rom", __FILE__),
31                  device_arcadia_cart_interface( mconfig, *this )
32{
33}
34
35arcadia_golf_device::arcadia_golf_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
36               : arcadia_rom_device(mconfig, ARCADIA_ROM_GOLF, "Emerson Arcadia Golf Cart", tag, owner, clock, "arcadia_golf", __FILE__)
37{
38}
39
40
41/*-------------------------------------------------
42 mapper specific handlers
43 -------------------------------------------------*/
44
45READ8_MEMBER(arcadia_rom_device::read_rom)
46{
47   if (offset < m_rom_size)
48      return m_rom[offset];
49   else
50      return 0xff;
51}
52
53
54READ8_MEMBER(arcadia_rom_device::extra_rom)
55{
56   if (offset + 0x1000 < m_rom_size)
57      return m_rom[offset + 0x1000];
58   else
59      return 0xff;
60}
Property changes on: trunk/src/emu/bus/arcadia/rom.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/arcadia/slot.c
r0r32505
1/***********************************************************************************************************
2
3    Emerson Arcadia 2001 (and clones) cart emulation
4    (through slot devices)
5
6 ***********************************************************************************************************/
7
8
9#include "emu.h"
10#include "slot.h"
11
12//**************************************************************************
13//  GLOBAL VARIABLES
14//**************************************************************************
15
16const device_type EA2001_CART_SLOT = &device_creator<arcadia_cart_slot_device>;
17
18//**************************************************************************
19//    ARCADIA Cartridges Interface
20//**************************************************************************
21
22//-------------------------------------------------
23//  device_arcadia_cart_interface - constructor
24//-------------------------------------------------
25
26device_arcadia_cart_interface::device_arcadia_cart_interface(const machine_config &mconfig, device_t &device)
27   : device_slot_card_interface(mconfig, device),
28      m_rom(NULL),
29      m_rom_size(0)
30{
31}
32
33
34//-------------------------------------------------
35//  ~device_arcadia_cart_interface - destructor
36//-------------------------------------------------
37
38device_arcadia_cart_interface::~device_arcadia_cart_interface()
39{
40}
41
42//-------------------------------------------------
43//  rom_alloc - alloc the space for the cart
44//-------------------------------------------------
45
46void device_arcadia_cart_interface::rom_alloc(UINT32 size, const char *tag)
47{
48   if (m_rom == NULL)
49   {
50      astring tempstring(tag);
51      tempstring.cat(EA2001SLOT_ROM_REGION_TAG);
52      m_rom = device().machine().memory().region_alloc(tempstring, size, 1, ENDIANNESS_LITTLE)->base();
53      m_rom_size = size;
54   }
55}
56
57
58//**************************************************************************
59//  LIVE DEVICE
60//**************************************************************************
61
62//-------------------------------------------------
63//  arcadia_cart_slot_device - constructor
64//-------------------------------------------------
65arcadia_cart_slot_device::arcadia_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
66                  device_t(mconfig, EA2001_CART_SLOT, "Emerson Arcadia Cartridge Slot", tag, owner, clock, "arcadia_cart_slot", __FILE__),
67                  device_image_interface(mconfig, *this),
68                  device_slot_interface(mconfig, *this),
69                  m_type(ARCADIA_STD)
70{
71}
72
73
74//-------------------------------------------------
75//  arcadia_cart_slot_device - destructor
76//-------------------------------------------------
77
78arcadia_cart_slot_device::~arcadia_cart_slot_device()
79{
80}
81
82//-------------------------------------------------
83//  device_start - device-specific startup
84//-------------------------------------------------
85
86void arcadia_cart_slot_device::device_start()
87{
88   m_cart = dynamic_cast<device_arcadia_cart_interface *>(get_card_device());
89}
90
91//-------------------------------------------------
92//  device_config_complete - perform any
93//  operations now that the configuration is
94//  complete
95//-------------------------------------------------
96
97void arcadia_cart_slot_device::device_config_complete()
98{
99   // set brief and instance name
100   update_names();
101}
102
103
104//-------------------------------------------------
105//  ARCADIA PCB
106//-------------------------------------------------
107
108struct arcadia_slot
109{
110   int                     pcb_id;
111   const char              *slot_option;
112};
113
114// Here, we take the feature attribute from .xml (i.e. the PCB name) and we assign a unique ID to it
115static const arcadia_slot slot_list[] =
116{
117   { ARCADIA_STD,       "std" },
118   { ARCADIA_GOLF,      "golf" }
119};
120
121static int arcadia_get_pcb_id(const char *slot)
122{
123   for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
124   {
125      if (!core_stricmp(slot_list[i].slot_option, slot))
126         return slot_list[i].pcb_id;
127   }
128
129   return 0;
130}
131
132static const char *arcadia_get_slot(int type)
133{
134   for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
135   {
136      if (slot_list[i].pcb_id == type)
137         return slot_list[i].slot_option;
138   }
139
140   return "std";
141}
142
143
144/*-------------------------------------------------
145 call load
146 -------------------------------------------------*/
147
148bool arcadia_cart_slot_device::call_load()
149{
150   if (m_cart)
151   {
152      UINT32 len = (software_entry() == NULL) ? length() : get_software_region_length("rom");
153
154      m_cart->rom_alloc(len, tag());
155         
156      if (software_entry() == NULL)
157         fread(m_cart->get_rom_base(), len);
158      else
159         memcpy(m_cart->get_rom_base(), get_software_region("rom"), len);
160
161      if (software_entry() == NULL)
162      {
163         // we need to identify Golf!
164         m_type = ARCADIA_STD;
165
166
167// the patch below is kept in case it could be used to identify golf cart from fullpath
168#if 0
169         // this is a testpatch for the golf cartridge
170         // so to make it work on a standard arcadia 2001
171         // cart (i.e. mapping the hi 2K to $2000)
172         // not enough yet (some pointers stored as data?)
173         patch[]= {
174            // addr,   orig. value, patched value
175            { 0x0077,  0x40,        0x20 },
176            { 0x011e,  0x40,        0x20 },
177            { 0x0348,  0x40,        0x20 },
178            { 0x03be,  0x40,        0x20 },
179            { 0x04ce,  0x40,        0x20 },
180            { 0x04da,  0x40,        0x20 },
181            { 0x0562,  0x42,        0x22 },
182            { 0x0617,  0x40,        0x20 },
183            { 0x0822,  0x40,        0x20 },
184            { 0x095e,  0x42,        0x22 },
185            { 0x09d3,  0x42,        0x22 },
186            { 0x0bb0,  0x42,        0x22 },
187            { 0x0efb,  0x40,        0x20 },
188            { 0x0ec1,  0x43,        0x23 },
189            { 0x0f00,  0x40,        0x20 },
190            { 0x0f12,  0x40,        0x20 },
191            { 0x0ff5,  0x43,        0x23 },
192            { 0x0ff7,  0x41,        0x21 },
193            { 0x0ff9,  0x40,        0x20 },
194            { 0x0ffb,  0x41,        0x21 },
195            { 0x20ec,  0x42,        0x22 }
196         };
197#endif
198
199      }
200      else
201      {
202         const char *pcb_name = get_feature("slot");
203         if (pcb_name)
204            m_type = arcadia_get_pcb_id(pcb_name);
205      }
206
207      printf("Type: %s\n", arcadia_get_slot(m_type));
208
209      return IMAGE_INIT_PASS;
210   }
211
212   return IMAGE_INIT_PASS;
213}
214
215
216/*-------------------------------------------------
217 call softlist load
218 -------------------------------------------------*/
219
220bool arcadia_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
221{
222   load_software_part_region(*this, swlist, swname, start_entry);
223   return TRUE;
224}
225
226
227
228/*-------------------------------------------------
229 get default card software
230 -------------------------------------------------*/
231
232void arcadia_cart_slot_device::get_default_card_software(astring &result)
233{
234   software_get_default_slot(result, "std");
235}
236
237/*-------------------------------------------------
238 read
239 -------------------------------------------------*/
240
241READ8_MEMBER(arcadia_cart_slot_device::read_rom)
242{
243   if (m_cart)
244      return m_cart->read_rom(space, offset);
245   else
246      return 0xff;
247}
248
249/*-------------------------------------------------
250 write
251 -------------------------------------------------*/
252
253READ8_MEMBER(arcadia_cart_slot_device::extra_rom)
254{
255   if (m_cart)
256      return m_cart->extra_rom(space, offset);
257   else
258      return 0xff;
259}
260
Property changes on: trunk/src/emu/bus/arcadia/slot.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/arcadia/rom.h
r0r32505
1#ifndef __ARCADIA_ROM_H
2#define __ARCADIA_ROM_H
3
4#include "slot.h"
5
6
7// ======================> arcadia_rom_device
8
9class arcadia_rom_device : public device_t,
10                  public device_arcadia_cart_interface
11{
12public:
13   // construction/destruction
14   arcadia_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
15   arcadia_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
16
17   // device-level overrides
18   virtual void device_start() {}
19   virtual void device_reset() {}
20
21   // reading and writing
22   virtual DECLARE_READ8_MEMBER(read_rom);
23   virtual DECLARE_READ8_MEMBER(extra_rom);
24};
25
26// ======================> arcadia_golf_device
27
28class arcadia_golf_device : public arcadia_rom_device
29{
30public:
31   // construction/destruction
32   arcadia_golf_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
33};
34
35
36
37
38// device type definition
39extern const device_type ARCADIA_ROM_STD;
40extern const device_type ARCADIA_ROM_GOLF;
41
42#endif
Property changes on: trunk/src/emu/bus/arcadia/rom.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/arcadia/slot.h
r0r32505
1#ifndef __ARCADIA_SLOT_H
2#define __ARCADIA_SLOT_H
3
4/***************************************************************************
5 TYPE DEFINITIONS
6 ***************************************************************************/
7
8
9/* PCB */
10enum
11{
12   ARCADIA_STD = 0,
13   ARCADIA_GOLF
14};
15
16
17// ======================> device_arcadia_cart_interface
18
19class device_arcadia_cart_interface : public device_slot_card_interface
20{
21public:
22   // construction/destruction
23   device_arcadia_cart_interface(const machine_config &mconfig, device_t &device);
24   virtual ~device_arcadia_cart_interface();
25
26   // reading and writing
27   virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; }
28   virtual DECLARE_READ8_MEMBER(extra_rom) { return 0xff; }
29
30   void rom_alloc(UINT32 size, const char *tag);
31   UINT8* get_rom_base() { return m_rom; }
32   UINT32 get_rom_size() { return m_rom_size; }
33
34protected:
35   // internal state
36   UINT8 *m_rom;
37   UINT32 m_rom_size;
38};
39
40
41// ======================> arcadia_cart_slot_device
42
43class arcadia_cart_slot_device : public device_t,
44                        public device_image_interface,
45                        public device_slot_interface
46{
47public:
48   // construction/destruction
49   arcadia_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
50   virtual ~arcadia_cart_slot_device();
51
52   // device-level overrides
53   virtual void device_start();
54   virtual void device_config_complete();
55
56   // image-level overrides
57   virtual bool call_load();
58   virtual void call_unload() {}
59   virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry);
60
61   int get_type() { return m_type; }
62
63   virtual iodevice_t image_type() const { return IO_CARTSLOT; }
64   virtual bool is_readable()  const { return 1; }
65   virtual bool is_writeable() const { return 0; }
66   virtual bool is_creatable() const { return 0; }
67   virtual bool must_be_loaded() const { return 1; }
68   virtual bool is_reset_on_load() const { return 1; }
69   virtual const option_guide *create_option_guide() const { return NULL; }
70   virtual const char *image_interface() const { return "arcadia_cart"; }
71   virtual const char *file_extensions() const { return "bin"; }
72
73   // slot interface overrides
74   virtual void get_default_card_software(astring &result);
75
76   // reading and writing
77   virtual DECLARE_READ8_MEMBER(read_rom);
78   virtual DECLARE_READ8_MEMBER(extra_rom);
79
80protected:
81
82   int m_type;
83   device_arcadia_cart_interface*       m_cart;
84};
85
86
87
88// device type definition
89extern const device_type EA2001_CART_SLOT;
90
91
92/***************************************************************************
93 DEVICE CONFIGURATION MACROS
94 ***************************************************************************/
95
96#define EA2001SLOT_ROM_REGION_TAG ":cart:rom"
97
98#define MCFG_ARCADIA_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
99   MCFG_DEVICE_ADD(_tag, EA2001_CART_SLOT, 0) \
100   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
101
102#endif
Property changes on: trunk/src/emu/bus/arcadia/slot.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/mess/includes/arcadia.h
r32504r32505
99
1010#include "emu.h"
1111#include "cpu/s2650/s2650.h"
12#include "imagedev/cartslot.h"
1312#include "audio/arcadia.h"
1413
14#include "bus/arcadia/slot.h"
15#include "bus/arcadia/rom.h"
1516
1617// space vultures sprites above
1718// combat below and invisible
r32504r32505
4041      m_controller2_extra(*this, "controller2_extra"),
4142      m_joysticks(*this, "joysticks") ,
4243      m_maincpu(*this, "maincpu"),
44      m_cart(*this, "cartslot"),
4345      m_gfxdecode(*this, "gfxdecode"),
4446      m_palette(*this, "palette"),
4547      m_screen(*this, "screen")  { }
4648
47   DECLARE_READ8_MEMBER(arcadia_vsync_r);
48   DECLARE_READ8_MEMBER(arcadia_video_r);
49   DECLARE_WRITE8_MEMBER(arcadia_video_w);
49   DECLARE_READ8_MEMBER(vsync_r);
50   DECLARE_READ8_MEMBER(video_r);
51   DECLARE_WRITE8_MEMBER(video_w);
5052   int m_line;
5153   int m_charline;
5254   int m_shift;
r32504r32505
9294   } m_reg;
9395   bitmap_ind16 *m_bitmap;
9496   DECLARE_DRIVER_INIT(arcadia);
97   virtual void machine_start();
9598   virtual void video_start();
9699   DECLARE_PALETTE_INIT(arcadia);
97100   UINT32 screen_update_arcadia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
98   INTERRUPT_GEN_MEMBER(arcadia_video_line);
99   DECLARE_DEVICE_IMAGE_LOAD_MEMBER( arcadia_cart );
101   INTERRUPT_GEN_MEMBER(video_line);
100102
101103protected:
102104   required_device<arcadia_sound_device> m_custom;
r32504r32505
111113   required_ioport m_controller2_extra;
112114   required_ioport m_joysticks;
113115
114   void arcadia_draw_char(UINT8 *ch, int charcode, int y, int x);
115   void arcadia_vh_draw_line(int y, UINT8 chars1[16]);
116   int arcadia_sprite_collision(int n1, int n2);
117   void arcadia_draw_sprites();
116   void draw_char(UINT8 *ch, int charcode, int y, int x);
117   void vh_draw_line(int y, UINT8 chars1[16]);
118   int sprite_collision(int n1, int n2);
119   void draw_sprites();
118120   required_device<cpu_device> m_maincpu;
121   required_device<arcadia_cart_slot_device> m_cart;
119122   required_device<gfxdecode_device> m_gfxdecode;
120123   required_device<palette_device> m_palette;
121124   required_device<screen_device> m_screen;
trunk/src/mess/includes/vc4000.h
r32504r32505
99
1010#include "emu.h"
1111#include "cpu/s2650/s2650.h"
12#include "imagedev/cartslot.h"
1312#include "imagedev/snapquik.h"
1413#include "imagedev/cassette.h"
1514#include "sound/wave.h"
1615
16#include "bus/vc4000/slot.h"
17#include "bus/vc4000/rom.h"
18
1719// define this to use digital inputs instead of the slow
1820// autocentering analog mame joys
1921#define ANALOG_HACK
r32504r32505
7375public:
7476   vc4000_state(const machine_config &mconfig, device_type type, const char *tag)
7577      : driver_device(mconfig, type, tag),
76      m_cassette(*this, "cassette"),
7778      m_maincpu(*this, "maincpu"),
7879      m_screen(*this, "screen"),
80      m_cassette(*this, "cassette"),
81      m_cart(*this, "cartslot"),
7982      m_keypad1_1(*this, "KEYPAD1_1"),
8083      m_keypad1_2(*this, "KEYPAD1_2"),
8184      m_keypad1_3(*this, "KEYPAD1_3"),
r32504r32505
110113   UINT8 m_objects[512];
111114   UINT8 m_irq_pause;
112115   bitmap_ind16 *m_bitmap;
113   optional_device<cassette_image_device> m_cassette;
116   virtual void machine_start();
114117   virtual void video_start();
115118   DECLARE_PALETTE_INIT(vc4000);
116119   UINT32 screen_update_vc4000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
117120   INTERRUPT_GEN_MEMBER(vc4000_video_line);
118   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(vc4000_cart);
119121   DECLARE_QUICKLOAD_LOAD_MEMBER(vc4000);
120122
121123protected:
122124   required_device<cpu_device> m_maincpu;
123125   required_device<screen_device> m_screen;
126   optional_device<cassette_image_device> m_cassette;
127   required_device<vc4000_cart_slot_device> m_cart;
124128   required_ioport m_keypad1_1;
125129   required_ioport m_keypad1_2;
126130   required_ioport m_keypad1_3;
trunk/src/mess/video/arcadia.c
r32504r32505
308308   }
309309}
310310
311READ8_MEMBER( arcadia_state::arcadia_video_r )
311READ8_MEMBER( arcadia_state::video_r )
312312{
313313   UINT8 data=0;
314314   switch (offset)
r32504r32505
370370   return data;
371371}
372372
373WRITE8_MEMBER( arcadia_state::arcadia_video_w )
373WRITE8_MEMBER( arcadia_state::video_w )
374374{
375375   m_reg.data[offset]=data;
376376   switch (offset)
r32504r32505
419419   }
420420}
421421
422void arcadia_state::arcadia_draw_char(UINT8 *ch, int charcode, int y, int x)
422void arcadia_state::draw_char(UINT8 *ch, int charcode, int y, int x)
423423{
424424   int k,b,cc,sc, colour;
425425   if (m_multicolor)
r32504r32505
472472}
473473
474474
475void arcadia_state::arcadia_vh_draw_line(int y, UINT8 chars1[16])
475void arcadia_state::vh_draw_line(int y, UINT8 chars1[16])
476476{
477477   int x, ch, j, h;
478478   int graphics = m_graphics;
r32504r32505
501501         }
502502      }
503503      if (graphics)
504         arcadia_draw_char(m_rectangle[ch&0x3f], ch, y, x);
504         draw_char(m_rectangle[ch&0x3f], ch, y, x);
505505      else
506         arcadia_draw_char(m_chars[ch&0x3f], ch, y, x);
506         draw_char(m_chars[ch&0x3f], ch, y, x);
507507   }
508508}
509509
510510
511int arcadia_state::arcadia_sprite_collision(int n1, int n2)
511int arcadia_state::sprite_collision(int n1, int n2)
512512{
513513   int k, b1, b2, x;
514514   if (m_pos[n1].x+8<=m_pos[n2].x)
r32504r32505
536536}
537537
538538
539void arcadia_state::arcadia_draw_sprites()
539void arcadia_state::draw_sprites()
540540{
541541   int i, k, x, y, color=0;
542542   UINT8 b;
r32504r32505
603603         }
604604      }
605605   }
606   if (arcadia_sprite_collision(0,1)) m_reg.d.collision_sprite&=~1;
607   if (arcadia_sprite_collision(0,2)) m_reg.d.collision_sprite&=~2;
608   if (arcadia_sprite_collision(0,3)) m_reg.d.collision_sprite&=~4;
609   if (arcadia_sprite_collision(1,2)) m_reg.d.collision_sprite&=~8;
610   if (arcadia_sprite_collision(1,3)) m_reg.d.collision_sprite&=~0x10; //guess
611   if (arcadia_sprite_collision(2,3)) m_reg.d.collision_sprite&=~0x20; //guess
606   if (sprite_collision(0,1)) m_reg.d.collision_sprite&=~1;
607   if (sprite_collision(0,2)) m_reg.d.collision_sprite&=~2;
608   if (sprite_collision(0,3)) m_reg.d.collision_sprite&=~4;
609   if (sprite_collision(1,2)) m_reg.d.collision_sprite&=~8;
610   if (sprite_collision(1,3)) m_reg.d.collision_sprite&=~0x10; //guess
611   if (sprite_collision(2,3)) m_reg.d.collision_sprite&=~0x20; //guess
612612}
613613
614INTERRUPT_GEN_MEMBER(arcadia_state::arcadia_video_line)
614INTERRUPT_GEN_MEMBER(arcadia_state::video_line)
615615{
616616   int width = m_screen->width();
617617
r32504r32505
639639      {
640640         if (((m_line-m_ypos)&(h-1))==0)
641641         {
642            arcadia_vh_draw_line(m_charline*h+m_ypos, m_reg.d.chars1[m_charline]);
642            vh_draw_line(m_charline*h+m_ypos, m_reg.d.chars1[m_charline]);
643643         }
644644      }
645645      else
r32504r32505
647647      {
648648         if (((m_line-m_ypos)&(h-1))==0)
649649         {
650            arcadia_vh_draw_line(m_charline*h+m_ypos, m_reg.d.chars2[m_charline-13]);
650            vh_draw_line(m_charline*h+m_ypos, m_reg.d.chars2[m_charline-13]);
651651         }
652652      m_charline-=13;
653653      }
r32504r32505
659659      }
660660   }
661661   if (m_line==261)
662      arcadia_draw_sprites();
662      draw_sprites();
663663}
664664
665READ8_MEMBER( arcadia_state::arcadia_vsync_r )
665READ8_MEMBER( arcadia_state::vsync_r )
666666{
667667   return m_line>=216 ? 0x80 : 0 ;
668668}
trunk/src/mess/drivers/vc4000.c
r32504r32505
4545The Cartridge is called Hobby Module and the Rom is probably the same as used in
4646elektor TV Game Computer which is a kind of developer machine for the VC4000.
4747
48Go to the bottom to see the game list and emulation status of each.
49
5048******************************************************************************
5149
5250Elektor TV Games Computer
r32504r32505
360358   palette.set_pen_colors(0, vc4000_palette, ARRAY_LENGTH(vc4000_palette));
361359}
362360
363DEVICE_IMAGE_LOAD_MEMBER( vc4000_state, vc4000_cart )
364{
365   address_space &memspace = m_maincpu->space(AS_PROGRAM);
366   UINT32 size;
367361
368   if (image.software_entry() == NULL)
369      size = image.length();
370   else
371      size = image.get_software_region_length("rom");
372
373   if (size > 0x1600)
374      size = 0x1600;
375
376   if (size > 0x1000)  /* 6k rom + 1k ram - Chess2 only */
362void vc4000_state::machine_start()
363{
364   if (m_cart->exists())
377365   {
378      memspace.install_read_bank(0x0800, 0x15ff, "bank1");    /* extra rom */
379      membank("bank1")->set_base(memregion("maincpu")->base() + 0x1000);
380
381      memspace.install_readwrite_bank(0x1800, 0x1bff, "bank2");   /* ram */
382      membank("bank2")->set_base(memregion("maincpu")->base() + 0x1800);
366      // extra handler
367      switch (m_cart->get_type())
368      {
369         case VC4000_STD:
370            m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
371            break;
372         case VC4000_RAM1K:
373            m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
374            m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x15ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
375            break;
376         case VC4000_CHESS2:
377            m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x15ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
378            m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1800, 0x1bff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
379            break;
380         // undumped Radofin Hobby Module
381//         case VC4000_HOBBY:
382//            m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
383//            m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0800, 0x0fff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
384//            break;
385      }
386     
387      m_cart->save_ram();
383388   }
384   else if (size > 0x0800) /* some 4k roms have 1k of mirrored ram */
385   {
386      memspace.install_read_bank(0x0800, 0x0fff, "bank1");    /* extra rom */
387      membank("bank1")->set_base(memregion("maincpu")->base() + 0x0800);
389}
388390
389      memspace.install_readwrite_bank(0x1000, 0x15ff, 0, 0x800, "bank2"); /* ram */
390      membank("bank2")->set_base(memregion("maincpu")->base() + 0x1000);
391   }
392   else if (size == 0x0800)    /* 2k roms + 2k ram - Hobby Module(Radofin) and elektor TVGC*/
391
392QUICKLOAD_LOAD_MEMBER( vc4000_state,vc4000)
393{
394   address_space &space = m_maincpu->space(AS_PROGRAM);
395   int i;
396   int exec_addr;
397   int quick_length;
398   dynamic_buffer quick_data;
399   int read_;
400   int result = IMAGE_INIT_FAIL;
401   
402   quick_length = image.length();
403   quick_data.resize(quick_length);
404   read_ = image.fread( quick_data, quick_length);
405   if (read_ != quick_length)
393406   {
394      memspace.install_readwrite_bank(0x0800, 0x0fff, "bank1"); /* ram */
395      membank("bank1")->set_base(memregion("maincpu")->base() + 0x0800);
407      image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Cannot read the file");
408      image.message(" Cannot read the file");
396409   }
397
398   if (size > 0)
410   else
399411   {
400      if (image.software_entry() == NULL)
412      if (core_stricmp(image.filetype(), "tvc")==0)
401413      {
402         if (image.fread(memregion("maincpu")->base(), size) != size)
403            return IMAGE_INIT_FAIL;
414         if (quick_data[0] != 2)
415         {
416            image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Invalid header");
417            image.message(" Invalid header");
418         }
419         else
420         {
421            int quick_addr = quick_data[1] * 256 + quick_data[2];
422            exec_addr = quick_data[3] * 256 + quick_data[4];
423           
424            if (quick_length < 0x5)
425            {
426               image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too short");
427               image.message(" File too short");
428            }
429            else
430               if ((quick_length + quick_addr - 5) > 0x1600)
431               {
432                  image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too long");
433                  image.message(" File too long");
434               }
435               else
436               {
437                  space.write_byte(0x08be, quick_data[3]);
438                  space.write_byte(0x08bf, quick_data[4]);
439                 
440                  for (i = 5; i < quick_length; i++)
441                     space.write_byte(i - 5 + quick_addr, quick_data[i]);
442                 
443                  /* display a message about the loaded quickload */
444                  image.message(" Quickload: size=%04X : start=%04X : end=%04X : exec=%04X",quick_length-5,quick_addr,quick_addr+quick_length-5,exec_addr);
445                 
446                  // Start the quickload
447                  m_maincpu->set_state_int(S2650_PC, exec_addr);
448                  result = IMAGE_INIT_PASS;
449               }
450         }
404451      }
405452      else
406         memcpy(memregion("maincpu")->base(), image.get_software_region("rom"), size);
453         if (core_stricmp(image.filetype(), "pgm")==0)
454         {
455            if (quick_data[0] != 0)
456            {
457               image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Invalid header");
458               image.message(" Invalid header");
459            }
460            else
461            {
462               exec_addr = quick_data[1] * 256 + quick_data[2];
463               
464               if (exec_addr >= quick_length)
465               {
466                  image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Exec address beyond end of file");
467                  image.message(" Exec address beyond end of file");
468               }
469               else
470                  if (quick_length < 0x904)
471                  {
472                     image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too short");
473                     image.message(" File too short");
474                  }
475                  else
476                     if (quick_length > 0x2000)
477                     {
478                        image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too long");
479                        image.message(" File too long");
480                     }
481                     else
482                     {
483                        space.write_byte(0x08be, quick_data[1]);
484                        space.write_byte(0x08bf, quick_data[2]);
485                       
486                        // load to 08C0-15FF (standard ram + extra)
487                        int read_ = 0x1600;
488                        if (quick_length < 0x1600)
489                           read_ = quick_length;
490                        for (i = 0x8c0; i < read_; i++)
491                           space.write_byte(i, quick_data[i]);
492                       
493                        // load to 1F50-1FAF (PVI regs)
494                        read_ = 0x1FB0;
495                        if (quick_length < 0x1FB0)
496                           read_ = quick_length;
497                        if (quick_length > 0x1FC0)
498                           for (i = 0x1F50; i < read_; i++)
499                              vc4000_video_w(space, i-0x1f00, quick_data[i]);
500                       
501                        /* display a message about the loaded quickload */
502                        image.message(" Quickload: size=%04X : exec=%04X",quick_length,exec_addr);
503                       
504                        // Start the quickload
505                        m_maincpu->set_state_int(S2650_PC, exec_addr);
506                        result = IMAGE_INIT_PASS;
507                     }
508            }
509         }
407510   }
408
409   return IMAGE_INIT_PASS;
511   return result;
410512}
411513
514static SLOT_INTERFACE_START(vc4000_cart)
515   SLOT_INTERFACE_INTERNAL("std",      VC4000_ROM_STD)
516   SLOT_INTERFACE_INTERNAL("ram1k",    VC4000_ROM_RAM1K)
517   SLOT_INTERFACE_INTERNAL("chess2",   VC4000_ROM_CHESS2)
518SLOT_INTERFACE_END
519
520
412521static MACHINE_CONFIG_START( vc4000, vc4000_state )
413522   /* basic machine hardware */
414523//  MCFG_CPU_ADD("maincpu", S2650, 865000)        /* 3550000/4, 3580000/3, 4430000/3 */
r32504r32505
437546   MCFG_QUICKLOAD_ADD("quickload", vc4000_state, vc4000, "pgm,tvc", 0)
438547
439548   /* cartridge */
440   MCFG_CARTSLOT_ADD("cart")
441   MCFG_CARTSLOT_EXTENSION_LIST("rom,bin")
442   MCFG_CARTSLOT_NOT_MANDATORY
443   MCFG_CARTSLOT_INTERFACE("vc4000_cart")
444   MCFG_CARTSLOT_LOAD(vc4000_state,vc4000_cart)
549   MCFG_VC4000_CARTRIDGE_ADD("cartslot", vc4000_cart, NULL)
445550
446551   /* software lists */
447552   MCFG_SOFTWARE_LIST_ADD("cart_list","vc4000")
r32504r32505
552657   ROM_LOAD( "elektor.rom", 0x0000, 0x0800, CRC(e6ef1ee1) SHA1(6823b5a22582344016415f2a37f9f3a2dc75d2a7))
553658ROM_END
554659
555QUICKLOAD_LOAD_MEMBER( vc4000_state,vc4000)
556{
557   address_space &space = m_maincpu->space(AS_PROGRAM);
558   int i;
559   int exec_addr;
560   int quick_length;
561   dynamic_buffer quick_data;
562   int read_;
563   int result = IMAGE_INIT_FAIL;
564660
565   quick_length = image.length();
566   quick_data.resize(quick_length);
567   read_ = image.fread( quick_data, quick_length);
568   if (read_ != quick_length)
569   {
570      image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Cannot read the file");
571      image.message(" Cannot read the file");
572   }
573   else
574   {
575      if (core_stricmp(image.filetype(), "tvc")==0)
576      {
577         if (quick_data[0] != 2)
578         {
579            image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Invalid header");
580            image.message(" Invalid header");
581         }
582         else
583         {
584            int quick_addr = quick_data[1] * 256 + quick_data[2];
585            exec_addr = quick_data[3] * 256 + quick_data[4];
586661
587            if (quick_length < 0x5)
588            {
589               image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too short");
590               image.message(" File too short");
591            }
592            else
593            if ((quick_length + quick_addr - 5) > 0x1600)
594            {
595               image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too long");
596               image.message(" File too long");
597            }
598            else
599            {
600               space.write_byte(0x08be, quick_data[3]);
601               space.write_byte(0x08bf, quick_data[4]);
602
603               for (i = 5; i < quick_length; i++)
604                  space.write_byte(i - 5 + quick_addr, quick_data[i]);
605
606               /* display a message about the loaded quickload */
607               image.message(" Quickload: size=%04X : start=%04X : end=%04X : exec=%04X",quick_length-5,quick_addr,quick_addr+quick_length-5,exec_addr);
608
609               // Start the quickload
610               m_maincpu->set_state_int(S2650_PC, exec_addr);
611               result = IMAGE_INIT_PASS;
612            }
613         }
614      }
615      else
616      if (core_stricmp(image.filetype(), "pgm")==0)
617      {
618         if (quick_data[0] != 0)
619         {
620            image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Invalid header");
621            image.message(" Invalid header");
622         }
623         else
624         {
625            exec_addr = quick_data[1] * 256 + quick_data[2];
626
627            if (exec_addr >= quick_length)
628            {
629               image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Exec address beyond end of file");
630               image.message(" Exec address beyond end of file");
631            }
632            else
633            if (quick_length < 0x904)
634            {
635               image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too short");
636               image.message(" File too short");
637            }
638            else
639            if (quick_length > 0x2000)
640            {
641               image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too long");
642               image.message(" File too long");
643            }
644            else
645            {
646               space.write_byte(0x08be, quick_data[1]);
647               space.write_byte(0x08bf, quick_data[2]);
648
649               // load to 08C0-15FF (standard ram + extra)
650               int read_ = 0x1600;
651               if (quick_length < 0x1600)
652                  read_ = quick_length;
653               for (i = 0x8c0; i < read_; i++)
654                  space.write_byte(i, quick_data[i]);
655
656               // load to 1F50-1FAF (PVI regs)
657               read_ = 0x1FB0;
658               if (quick_length < 0x1FB0)
659                  read_ = quick_length;
660               if (quick_length > 0x1FC0)
661                  for (i = 0x1F50; i < read_; i++)
662                     vc4000_video_w(space, i-0x1f00, quick_data[i]);
663
664               /* display a message about the loaded quickload */
665               image.message(" Quickload: size=%04X : exec=%04X",quick_length,exec_addr);
666
667               // Start the quickload
668               m_maincpu->set_state_int(S2650_PC, exec_addr);
669               result = IMAGE_INIT_PASS;
670            }
671         }
672      }
673   }
674   return result;
675}
676
677
678662/*   YEAR  NAME      PARENT     COMPAT    MACHINE    INPUT        INIT      COMPANY             FULLNAME */
679CONS(1978, vc4000,   0,         0,        vc4000,    vc4000, driver_device,      0,        "Interton",         "Intertion Electronic VC 4000", GAME_IMPERFECT_GRAPHICS )          /* Germany, Austria, UK, Australia */
663CONS(1978, vc4000,   0,         0,        vc4000,    vc4000, driver_device,      0,        "Interton",         "Interton Electronic VC 4000", GAME_IMPERFECT_GRAPHICS )          /* Germany, Austria, UK, Australia */
680664CONS(1979, spc4000,  vc4000,    0,        vc4000,    vc4000, driver_device,      0,        "Grundig",          "Super Play Computer 4000", GAME_IMPERFECT_GRAPHICS )  /* Germany, Austria */
681665CONS(1979, cx3000tc, vc4000,    0,        vc4000,    vc4000, driver_device,      0,        "Palson",           "CX 3000 Tele Computer", GAME_IMPERFECT_GRAPHICS )     /* Spain */
682666CONS(1979, tvc4000,  vc4000,    0,        vc4000,    vc4000, driver_device,      0,        "Koerting",         "TVC-4000",         GAME_IMPERFECT_GRAPHICS )          /* Argentina */
r32504r32505
700684CONS(1979, oc2000,   krvnjvtv,  0,        vc4000,    vc4000, driver_device,      0,        "SOE",              "OC-2000",          GAME_IMPERFECT_GRAPHICS )          /* France */
701685CONS(1980, mpt05,    0,         vc4000,   vc4000,    vc4000, driver_device,      0,        "ITMC",             "MPT-05",           GAME_IMPERFECT_GRAPHICS )          /* France */
702686CONS(1979, elektor,  0,         0,        elektor,   elektor, driver_device,     0,        "Elektor",          "Elektor TV Games Computer", GAME_IMPERFECT_GRAPHICS )
703
704/*  Game List and Emulation Status
705
706When you load a game it will normally appear to be unresponsive. Most carts contain a number of variants
707of each game (e.g. Difficulty, Player1 vs Player2 or Player1 vs Computer, etc).
708
709Press F2 (if needed) to select which game variant you would like to play. The variant number will increment
710on-screen. When you've made your choice, press F1 to start. The main keys are unlabelled, because an overlay
711is provided with each cart. See below for a guide. You need to read the instructions that come with each game.
712
713In some games, the joystick is used like 4 buttons, and other games like a paddle. The two modes are
714incompatible when using a keyboard. Therefore (in the emulation) a config dipswitch is used. The preferred
715setting is listed below.
716
717(AC = Auto-centre, NAC = no auto-centre, 90 = turn controller 90 degrees).
718
719The list is rather incomplete, information will be added as it becomes available.
720
721The game names and numbers were obtained from the Amigan Software site.
722
723Cart Num    Name
724----------------------------------------------
7251.      Grand Prix / Car Races / Autosport / Motor Racing / Road Race
726Config: Paddle, NAC
727Status: Working
728Controls: Left-Right: Steer; Up: Accelerate
729
7302.      Black Jack
731Status: Not working (some digits missing; indicator missing; dealer's cards missing)
732Controls: set bet with S and D; A to deal; 1 to hit, 2 to stay; Q accept insurance, E to decline; double-up (unknown key)
733Indicator: E make a bet then deal; I choose insurance; - you lost; + you won; X hit or stay
734
7353.      Olympics / Paddle Games / Bat & Ball / Pro Sport 60 / Sportsworld
736Config: Paddle, NAC
737Status: Working
738
7394.      Tank Battle / Combat
740Config: Button, 90
741Status: Working
742Controls: Left-Right: Steer; Up: Accelerate; Fire: Shoot
743
7445.      Maths 1
745Status: Working
746Controls: Z difficulty; X = addition or subtraction; C ask question; A=1;S=2;D=3;Q=4;W=5;E=6;1=7;2=8;3=9;0=0; C enter
747
7486.      Maths 2
749Status: Not working
750Controls: Same as above.
751
7527.      Air Sea Attack / Air Sea Battle
753Config: Button, 90
754Status: Working
755Controls: Left-Right: Move; Fire: Shoot
756
7578.      Treasure Hunt / Capture the Flag / Concentration / Memory Match
758Config: Buttons
759Status: Working
760
7619.      Labyrinth / Maze / Intelligence 1
762Config: Buttons
763Status: Working
764
76510.     Winter Sports
766Notes: Background colours should be Cyan and White instead of Red and Black
767
76811.     Hippodrome / Horse Race
769
77012.     Hunting / Shooting Gallery
771
77213.     Chess 1
773Status: Can't see what you're typing, wrong colours
774
77514.     Moto-cros
776
77715.     Four in a row / Intelligence 2
778Config: Buttons
779Status: Working
780Notes: Seems the unused squares should be black. The screen jumps about while the computer is "thinking".
781
78216.     Code Breaker / Master Mind / Intelligence 3 / Challenge
783
78417.     Circus
785STatus: severe gfx issues
786
78718.     Boxing / Prize Fight
788
78919.     Outer Space / Spacewar / Space Attack / Outer Space Combat
790
79120.     Melody Simon / Musical Memory / Follow the Leader / Musical Games / Electronic Music / Face the Music
792
79321.     Capture / Othello / Reversi / Attack / Intelligence 4
794Config: Buttons
795Status: Working
796Notes: Seems the unused squares should be black
797
79822.     Chess 2
799Status: Can't see what you're typing, wrong colours
800
80123.     Pinball / Flipper / Arcade
802Status: gfx issues
803
80424.     Soccer
805
80625.     Bowling / NinePins
807Config: Paddle, rotated 90 degrees, up/down autocentre, left-right does not
808Status: Working
809
81026.     Draughts
811
81227.     Golf
813Status: gfx issues
814
81528.     Cockpit
816Status: gfx issues
817
81829.     Metropolis / Hangman
819Status: gfx issues
820
82130.     Solitaire
822
82331.     Casino
824Status: gfx issues, items missing and unplayable
825Controls: 1 or 3=START; q=GO; E=STOP; D=$; Z=^; X=tens; C=units
826
82732.     Invaders / Alien Invasion / Earth Invasion
828Status: Works
829Config: Buttons
830
83133.     Super Invaders
832Status: Stars are missing, colours are wrong
833Config: Buttons (90)
834
83536.     BackGammon
836Status: Not all counters are visible, Dice & game number not visible.
837Controls: Fire=Exec; 1=D+; 3=D-; Q,W,E=4,5,6; A,S,D=1,2,3; Z=CL; X=STOP; C=SET
838
83937.     Monster Man / Spider's Web
840Status: Works
841Config: Buttons
842
84338.     Hyperspace
844Status: Works
845Config: Buttons (90)
846Controls: 3 - status button; Q,W,E,A,S,D,Z,X,C selects which galaxy to visit
847
848
84940.     Super Space
850Status: Works, some small gfx issues near the bottom
851Config: Buttons
852
853
854
855Acetronic: (dumps are compatible)
856------------
857
858* Shooting Gallery
859Status: works but screen flickers
860Config: Buttons
861
862* Planet Defender
863Status: Works
864Config: Paddle (NAC)
865
866* Laser Attack
867Status: Works
868Config: Buttons
869
870
871
872Public Domain: (written for emulators, may not work on real hardware)
873---------------
874* Picture (no controls) - works
875* Wincadia Stub (no controls) - works, small graphic error */
trunk/src/mess/drivers/arcadia.c
r32504r32505
120120#include "includes/arcadia.h"
121121
122122static ADDRESS_MAP_START( arcadia_mem, AS_PROGRAM, 8, arcadia_state )
123   AM_RANGE( 0x0000, 0x0fff) AM_ROM
124   AM_RANGE( 0x1800, 0x1aff) AM_READWRITE( arcadia_video_r, arcadia_video_w )
125   AM_RANGE( 0x2000, 0x2fff) AM_ROM
123   AM_RANGE( 0x0000, 0x0fff) AM_DEVREAD("cartslot", arcadia_cart_slot_device, read_rom)
124   AM_RANGE( 0x1800, 0x1aff) AM_READWRITE(video_r, video_w)
126125ADDRESS_MAP_END
127126
128127static ADDRESS_MAP_START( arcadia_io, AS_IO, 8, arcadia_state )
129   AM_RANGE( S2650_SENSE_PORT,S2650_SENSE_PORT) AM_READ( arcadia_vsync_r)
128   AM_RANGE( S2650_SENSE_PORT,S2650_SENSE_PORT) AM_READ(vsync_r)
130129ADDRESS_MAP_END
131130
132131/* The Emerson Arcadia 2001 controllers have 2 fire buttons on the side,
r32504r32505
440439
441440PALETTE_INIT_MEMBER(arcadia_state, arcadia)
442441{
443   int i;
444
445   for (i = 0; i < 8; i++)
442   for (int i = 0; i < 8; i++)
446443      palette.set_indirect_color(i, arcadia_colors[i]);
447444
448   for (i = 0; i < 128+8; i++)
445   for (int i = 0; i < 128+8; i++)
449446      palette.set_pen_indirect(i, arcadia_palette[i]);
450447}
451448
452DEVICE_IMAGE_LOAD_MEMBER( arcadia_state, arcadia_cart )
449void arcadia_state::machine_start()
453450{
454   UINT8 *rom = memregion("maincpu")->base();
455   int size;
456
457   memset(rom, 0, 0x8000);
458   if (image.software_entry() == NULL)
451   if (m_cart->exists())
459452   {
460      size = image.length();
461
462      if (size > memregion("maincpu")->bytes())
463         size = memregion("maincpu")->bytes();
464
465      if (image.fread(rom, size) != size)
466         return IMAGE_INIT_FAIL;
453      switch (m_cart->get_type())
454      {
455         case ARCADIA_STD:
456            m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0xffff, read8_delegate(FUNC(arcadia_cart_slot_device::extra_rom),(arcadia_cart_slot_device*)m_cart));
457            break;
458         case ARCADIA_GOLF:
459            m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x4fff, read8_delegate(FUNC(arcadia_cart_slot_device::extra_rom),(arcadia_cart_slot_device*)m_cart));
460            break;
461      }
467462   }
468   else
469   {
470      size = image.get_software_region_length("rom");
471      memcpy(rom, image.get_software_region("rom"), size);
472   }
463}
473464
474   if (size > 0x1000)
475      memmove(rom + 0x2000, rom + 0x1000, size - 0x1000);
465static SLOT_INTERFACE_START(arcadia_cart)
466   SLOT_INTERFACE_INTERNAL("std",      ARCADIA_ROM_STD)
467   SLOT_INTERFACE_INTERNAL("golf",     ARCADIA_ROM_GOLF)
468SLOT_INTERFACE_END
476469
477   if (size > 0x2000)
478      memmove(rom + 0x4000, rom + 0x3000, size - 0x2000);
479470
480#if 1
481   // golf cartridge support
482   // 4kbyte at 0x0000
483   // 2kbyte at 0x4000
484   if (size <= 0x2000)
485      memcpy(rom + 0x4000, rom + 0x2000, 0x1000);
486#else
487   /* this is a testpatch for the golf cartridge
488      so it could be burned in a arcadia 2001 cartridge
489      activate it and use debugger to save patched version */
490   // not enough yet (some pointers stored as data?)
491   int i;
492   static const struct { UINT16 address; UINT8 old; UINT8 new; }
493   patch[]= {
494      { 0x0077,0x40,0x20 },
495      { 0x011e,0x40,0x20 },
496      { 0x0348,0x40,0x20 },
497      { 0x03be,0x40,0x20 },
498      { 0x04ce,0x40,0x20 },
499      { 0x04da,0x40,0x20 },
500      { 0x0562,0x42,0x22 },
501      { 0x0617,0x40,0x20 },
502      { 0x0822,0x40,0x20 },
503      { 0x095e,0x42,0x22 },
504      { 0x09d3,0x42,0x22 },
505      { 0x0bb0,0x42,0x22 },
506      { 0x0efb,0x40,0x20 },
507      { 0x0ec1,0x43,0x23 },
508      { 0x0f00,0x40,0x20 },
509      { 0x0f12,0x40,0x20 },
510      { 0x0ff5,0x43,0x23 },
511      { 0x0ff7,0x41,0x21 },
512      { 0x0ff9,0x40,0x20 },
513      { 0x0ffb,0x41,0x21 },
514      { 0x20ec,0x42,0x22 }
515   };
516
517   for (i = 0; i < ARRAY_LENGTH(patch); i++)
518   {
519      assert(rom[patch[i].address] == patch[i].old);
520      rom[patch[i].address] = patch[i].new;
521   }
522#endif
523   return IMAGE_INIT_PASS;
524}
525
526471static MACHINE_CONFIG_START( arcadia, arcadia_state )
527472   /* basic machine hardware */
528473   MCFG_CPU_ADD("maincpu", S2650, 3580000/4)        /* 0.895 MHz */
529474   MCFG_CPU_PROGRAM_MAP(arcadia_mem)
530475   MCFG_CPU_IO_MAP(arcadia_io)
531   MCFG_CPU_PERIODIC_INT_DRIVER(arcadia_state, arcadia_video_line,  262*60)
476   MCFG_CPU_PERIODIC_INT_DRIVER(arcadia_state, video_line,  262*60)
532477   MCFG_QUANTUM_TIME(attotime::from_hz(60))
533478
534479   /* video hardware */
r32504r32505
545490   MCFG_PALETTE_INDIRECT_ENTRIES(8)
546491   MCFG_PALETTE_INIT_OWNER(arcadia_state, arcadia)
547492
548
549493   /* sound hardware */
550494   MCFG_SPEAKER_STANDARD_MONO("mono")
551495   MCFG_ARCADIA_SOUND_ADD("custom")
552496   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
553497
554498   /* cartridge */
555   MCFG_CARTSLOT_ADD("cart")
556   MCFG_CARTSLOT_EXTENSION_LIST("bin")
557   MCFG_CARTSLOT_NOT_MANDATORY
558   MCFG_CARTSLOT_INTERFACE("arcadia_cart")
559   MCFG_CARTSLOT_LOAD(arcadia_state,arcadia_cart)
499   MCFG_ARCADIA_CARTRIDGE_ADD("cartslot", arcadia_cart, NULL)
560500
561501   /* Software lists */
562502   MCFG_SOFTWARE_LIST_ADD("cart_list","arcadia")
563503MACHINE_CONFIG_END
564504
505
565506ROM_START(advsnha)
566507   ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
567508   ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
trunk/src/mess/mess.mak
r32504r32505
569569BUSES += ADAM
570570BUSES += ADAMNET
571571BUSES += APF
572BUSES += ARCADIA
572573BUSES += BML3
573574BUSES += BW2
574575BUSES += C64
r32504r32505
622623BUSES += TI99PEB
623624BUSES += TVC
624625BUSES += VBOY
626BUSES += VC4000
625627BUSES += VCS
626628BUSES += VCS_CTRL
627629BUSES += VIC10
trunk/hash/arcadia.xml
r32504r32505
381381      <publisher>UA Ltd.</publisher>
382382      <info name="alt_title" value="Bowling, Bowling (3 Dimensions), Video-Bowling" />
383383      <part name="cart" interface="arcadia_cart">
384         <feature name="slot" value="std" />
384385         <dataarea name="rom" size="4096">
385386            <rom name="3dbowl.bin" size="4096" crc="f3c08e19" sha1="edd33cabd3d600e9e3d3c22f326a065ea6ebe32c" offset="0000" />
386387         </dataarea>
r32504r32505
394395      <publisher>UA Ltd.</publisher>
395396      <info name="alt_title" value="Fußball" />
396397      <part name="cart" interface="arcadia_cart">
398         <feature name="slot" value="std" />
397399         <dataarea name="rom" size="8192">
398400            <rom name="3dsoccera.bin" size="8192" crc="1b5be22a" sha1="d3df9ed4e09bacacde47fa4f1128383fd62ffd6e" offset="0000" />
399401         </dataarea>
r32504r32505
406408      <publisher>UA Ltd.</publisher>
407409      <info name="alt_title" value="Fußball" />
408410      <part name="cart" interface="arcadia_cart">
411         <feature name="slot" value="std" />
409412         <dataarea name="rom" size="8192">
410413            <rom name="3dsoccer.bin" size="8192" crc="4da68df8" sha1="50e799c96be3613f937825c6c722521bc6df0162" offset="0000" />
411414         </dataarea>
r32504r32505
418421      <publisher>UA Ltd.</publisher>
419422      <info name="alt_title" value="Alien, Alien Invader, Les Envahisseurs Etrangers, Invasion aus dem Weltall" />
420423      <part name="cart" interface="arcadia_cart">
424         <feature name="slot" value="std" />
421425         <dataarea name="rom" size="4096">
422426            <rom name="alieninv.bin" size="4096" crc="1f65b21e" sha1="8d17de81fbf70db8fe32830763c6a940aa9124c3" offset="0000" />
423427         </dataarea>
r32504r32505
430434      <publisher>UA Ltd.</publisher>
431435      <info name="alt_title" value="Football Américain" />
432436      <part name="cart" interface="arcadia_cart">
437         <feature name="slot" value="std" />
433438         <dataarea name="rom" size="6144">
434439            <rom name="football.bin" size="6144" crc="22624414" sha1="359e938391b72742643c81228713fac804ff8244" offset="0000" />
435440         </dataarea>
r32504r32505
441446      <year>1980</year>
442447      <publisher>UA Ltd.</publisher>
443448      <part name="cart" interface="arcadia_cart">
449         <feature name="slot" value="std" />
444450         <dataarea name="rom" size="4096">
445451            <rom name="astroinv.bin" size="4096" crc="ddcf5b2c" sha1="b6f693e3333607181fbe3a43dffa9f30f9656998" offset="0000" />
446452         </dataarea>
r32504r32505
453459      <publisher>UA Ltd.</publisher>
454460      <info name="alt_title" value="Course De Voitures" />
455461      <part name="cart" interface="arcadia_cart">
462         <feature name="slot" value="std" />
456463         <dataarea name="rom" size="4096">
457464            <rom name="autorace.bin" size="4096" crc="99ac48ca" sha1="6182219b2b8c8747f67d627a056ac947754f0978" offset="0000" />
458465         </dataarea>
r32504r32505
464471      <year>1983</year>
465472      <publisher>UA Ltd.</publisher>
466473      <part name="cart" interface="arcadia_cart">
474         <feature name="slot" value="std" />
467475         <dataarea name="rom" size="4096">
468476            <rom name="baseball.bin" size="4096" crc="1cf08155" sha1="f4d39aaab61e6b01c673166ae54841d450860b31" offset="0000" />
469477         </dataarea>
r32504r32505
477485      <year>198?</year>
478486      <publisher>UA Ltd.</publisher>
479487      <part name="cart" interface="arcadia_cart">
488         <feature name="slot" value="std" />
480489         <dataarea name="rom" size="4096">
481490            <rom name="vidpanz.bin" size="4096" crc="6818c8bd" sha1="21eadc7841e0a59671aacca93d28d81c580f16f2" offset="0000" />
482491         </dataarea>
r32504r32505
488497      <year>198?</year>
489498      <publisher>UA Ltd.</publisher>
490499      <part name="cart" interface="arcadia_cart">
500         <feature name="slot" value="std" />
491501         <dataarea name="rom" size="4096">
492502            <rom name="blckjack.bin" size="4096" crc="0930ce04" sha1="a8afadfcaea847c2e998005652ace36803d6601b" offset="0000" />
493503         </dataarea>
r32504r32505
499509      <year>198?</year>
500510      <publisher>UA Ltd.</publisher>
501511      <part name="cart" interface="arcadia_cart">
512         <feature name="slot" value="std" />
502513         <dataarea name="rom" size="4096">
503514            <rom name="boxing.bin" size="4096" crc="9240891b" sha1="0fc3a8a33f2e89b2b32ea0a962effcf3ee430d34" offset="0000" />
504515         </dataarea>
r32504r32505
511522      <publisher>UA Ltd.</publisher>
512523      <info name="alt_title" value="Intelligenz-Übung, Math/Logic, Mathematiques Logiques" />
513524      <part name="cart" interface="arcadia_cart">
525         <feature name="slot" value="std" />
514526         <dataarea name="rom" size="4096">
515527            <rom name="brainqz.bin" size="4096" crc="ca58b3f8" sha1="e9560e064043946b6bc0a88087d4164adf62e773" offset="0000" />
516528         </dataarea>
r32504r32505
523535      <publisher>UA Ltd.</publisher>
524536      <info name="alt_title" value="Evasion, La Desertion, Video-Breakout" />
525537      <part name="cart" interface="arcadia_cart">
538         <feature name="slot" value="std" />
526539         <dataarea name="rom" size="4096">
527540            <rom name="breakawy.bin" size="4096" crc="33c348c1" sha1="396fe12bd34cc7cd555ad3b9b66f20e56e862385" offset="0000" />
528541         </dataarea>
r32504r32505
534547      <year>198?</year>
535548      <publisher>UA Ltd.</publisher>
536549      <part name="cart" interface="arcadia_cart">
550         <feature name="slot" value="std" />
537551         <dataarea name="rom" size="4096">
538552            <rom name="bsktball.bin" size="4096" crc="e93938f6" sha1="c6e3f963ea9db520bcd682a3206cc291504c9e3d" offset="0000" />
539553         </dataarea>
r32504r32505
546560      <publisher>UA Ltd.</publisher>
547561      <info name="alt_title" value="Othello, Side Attack, Video-Mühle" />
548562      <part name="cart" interface="arcadia_cart">
563         <feature name="slot" value="std" />
549564         <dataarea name="rom" size="2048">
550565            <rom name="capture.bin" size="2048" crc="aeb803e4" sha1="107c864252647a4f3569ff501c8a9a3c7dd6067f" offset="000" />
551566         </dataarea>
r32504r32505
558573      <publisher>UA Ltd.</publisher>
559574      <info name="alt_title" value="Cat Track, Cat Tracks" />
560575      <part name="cart" interface="arcadia_cart">
576         <feature name="slot" value="std" />
561577         <dataarea name="rom" size="4096">
562578            <rom name="cattrax.bin" size="4096" crc="fd2cf496" sha1="b0982ed95d92a4d97a5451acbee36af10ff99a3f" offset="0000" />
563579         </dataarea>
r32504r32505
570586      <publisher>UA Ltd.</publisher>
571587      <info name="alt_title" value="Cirque, Acrobat, Clown" />
572588      <part name="cart" interface="arcadia_cart">
589         <feature name="slot" value="std" />
573590         <dataarea name="rom" size="4096">
574591            <rom name="circus.bin" size="4096" crc="086ebc8c" sha1="e8abeb702d9a7b7e12e1cea02946dae267b23041" offset="0000" />
575592         </dataarea>
r32504r32505
581598      <year>198?</year>
582599      <publisher>UA Ltd.</publisher>
583600      <part name="cart" interface="arcadia_cart">
601         <feature name="slot" value="std" />
584602         <dataarea name="rom" size="4096">
585603            <rom name="combat.bin" size="4096" crc="a6bffa9e" sha1="87addcdd0fccb5f36066f21938458235d5a37bd0" offset="0000" />
586604         </dataarea>
r32504r32505
593611      <publisher>UA Ltd.</publisher>
594612      <info name="alt_title" value="Crazy Wall" />
595613      <part name="cart" interface="arcadia_cart">
614         <feature name="slot" value="std" />
596615         <dataarea name="rom" size="4096">
597616            <rom name="cclimber.bin" size="4096" crc="76e773fa" sha1="0c6ce7577a121e7810ec54c5dd180a55dd0ace17" offset="0000" />
598617         </dataarea>
r32504r32505
605624      <publisher>UA Ltd.</publisher>
606625      <info name="alt_title" value="Le Glouton Super Vorace" />
607626      <part name="cart" interface="arcadia_cart">
627         <feature name="slot" value="std" />
608628         <dataarea name="rom" size="2048">
609629            <rom name="crzygblr.bin" size="2048" crc="e84df2ef" sha1="021e78bbc1f2c4ee2e7ca2fa560dd448bdd39798" offset="000" />
610630         </dataarea>
r32504r32505
616636      <year>1983</year>
617637      <publisher>Bandai</publisher>
618638      <part name="cart" interface="arcadia_cart">
639         <feature name="slot" value="std" />
619640         <dataarea name="rom" size="8192">
620641            <rom name="doraemon.bin" size="8192" crc="62c45881" sha1="a16fda96d00c8b08bb362f2573a45939aa6be051" offset="0000" />
621642         </dataarea>
r32504r32505
627648      <year>1983</year>
628649      <publisher>Bandai</publisher>
629650      <part name="cart" interface="arcadia_cart">
651         <feature name="slot" value="std" />
630652         <dataarea name="rom" size="8192">
631653            <rom name="drslump.bin" size="8192" crc="927c375a" sha1="389259f1505deef5c0fb83f9cf8b0f7fa4ed5d04" offset="0000" />
632654         </dataarea>
r32504r32505
639661      <publisher>UA Ltd.</publisher>
640662      <info name="alt_title" value="Escape Man" />
641663      <part name="cart" interface="arcadia_cart">
664         <feature name="slot" value="std" />
642665         <dataarea name="rom" size="4096">
643666            <rom name="escape.bin" size="4096" crc="fc7eba76" sha1="87f81511ea5b7a9671fb945cb22bb578bedb47c9" offset="0000" />
644667         </dataarea>
r32504r32505
650673      <year>1983</year>
651674      <publisher>UA Ltd.</publisher>
652675      <part name="cart" interface="arcadia_cart">
676         <feature name="slot" value="std" />
653677         <dataarea name="rom" size="8192">
654678            <rom name="funkyfsh.bin" size="8192" crc="77c19320" sha1="e56be2ecd8284cd43a44620d56d6615766f45451" offset="0000" />
655679         </dataarea>
r32504r32505
662686      <publisher>UA Ltd.</publisher>
663687      <info name="alt_title" value="Golfer" />
664688      <part name="cart" interface="arcadia_cart">
689         <feature name="slot" value="golf" />
665690         <dataarea name="rom" size="6144">
666691            <rom name="golf.bin" size="6144" crc="a23c7a01" sha1="7c9251e42fd03b9c26a13d0e25cdf9a838319a39" offset="0000" />
667692         </dataarea>
r32504r32505
674699      <publisher>UA Ltd.</publisher>
675700      <info name="alt_title" value="Monaco Grand Prix, Video-Autorennen" />
676701      <part name="cart" interface="arcadia_cart">
702         <feature name="slot" value="std" />
677703         <dataarea name="rom" size="4096">
678704            <rom name="gpmonaco.bin" size="4096" crc="5e033f9c" sha1="7dcc1387892fa7275514c91ce584f83a5d3e14d6" offset="0000" />
679705         </dataarea>
r32504r32505
686712      <publisher>UA Ltd.</publisher>
687713      <info name="alt_title" value="Tennis, Tennis: Yannick Noah" />
688714      <part name="cart" interface="arcadia_cart">
715         <feature name="slot" value="std" />
689716         <dataarea name="rom" size="8192">
690717            <rom name="gstennis.bin" size="8192" crc="8bf2dfa9" sha1="03cedd5fd67ff11a4ac74d513f03a2266af89446" offset="0000" />
691718         </dataarea>
r32504r32505
697724      <year>1983</year>
698725      <publisher>UA Ltd.</publisher>
699726      <part name="cart" interface="arcadia_cart">
727         <feature name="slot" value="std" />
700728         <dataarea name="rom" size="8192">
701729            <rom name="hobo.bin" size="8192" crc="1cec4b21" sha1="cebb340cb0a50b2815dafc6df8f46d814015a49f" offset="0000" />
702730         </dataarea>
r32504r32505
716744      <publisher>UA Ltd.</publisher>
717745      <info name="alt_title" value="Course de Chevaux, Pferderennen" />
718746      <part name="cart" interface="arcadia_cart">
747         <feature name="slot" value="std" />
719748         <dataarea name="rom" size="4096">
720749            <rom name="horserac.bin" size="4096" crc="560daa7f" sha1="72dd8dea83bf9ab7d486931516e99b2209ca0a1d" offset="0000" />
721750         </dataarea>
r32504r32505
728757      <publisher>UA Ltd.</publisher>
729758      <info name="alt_title" value="Happy Bug" />
730759      <part name="cart" interface="arcadia_cart">
760         <feature name="slot" value="std" />
731761         <dataarea name="rom" size="8192">
732762            <rom name="jumpbug.bin" size="8192" crc="97060a54" sha1="d0ace24fd1f3805e46b077e8a4770f922157c8c4" offset="0000" />
733763         </dataarea>
r32504r32505
741771      <publisher>UA Ltd.</publisher>
742772      <info name="alt_title" value="Happy Bug" />
743773      <part name="cart" interface="arcadia_cart">
774         <feature name="slot" value="std" />
744775         <dataarea name="rom" size="8192">
745776            <rom name="jumpbuga.bin" size="8192" crc="dc0264b8" sha1="bf3ccf7a54409f22ca4295b1df1c01bfbbe9f0a2" offset="0000" />
746777         </dataarea>
r32504r32505
752783      <year>1982</year>
753784      <publisher>UA Ltd.</publisher>
754785      <part name="cart" interface="arcadia_cart">
786         <feature name="slot" value="std" />
755787         <dataarea name="rom" size="8192">
756788            <rom name="jungler.bin" size="8192" crc="dfb5dd55" sha1="8d6e32ab3cc872017c597e61c076330015411435" offset="0000" />
757789         </dataarea>
r32504r32505
764796      <publisher>Bandai</publisher>
765797      <info name="alt_title" value="Super Dimension Fortress Macross" />
766798      <part name="cart" interface="arcadia_cart">
799         <feature name="slot" value="std" />
767800         <dataarea name="rom" size="8192">
768801            <rom name="macross.bin" size="8192" crc="4c885af2" sha1="3d24ab9e42ff44a223bb53c5491dea7f41691df2" offset="0000" />
769802         </dataarea>
r32504r32505
776809      <publisher>Bandai</publisher>
777810      <info name="alt_title" value="Mobile Soldier Gundam" />
778811      <part name="cart" interface="arcadia_cart">
812         <feature name="slot" value="std" />
779813         <dataarea name="rom" size="8192">
780814            <rom name="gundam.bin" size="8192" crc="1241f128" sha1="4b07a88b06008ddfc3676983e826e107caf3ba0f" offset="0000" />
781815         </dataarea>
r32504r32505
788822      <publisher>UA Ltd.</publisher>
789823      <info name="alt_title" value="Angriff der Ufos, Le Guerre Des Missiles" />
790824      <part name="cart" interface="arcadia_cart">
825         <feature name="slot" value="std" />
791826         <dataarea name="rom" size="4096">
792827            <rom name="msslewar.bin" size="4096" crc="a615f068" sha1="cc3e46adc8a3ed2cbfd5f9bbbf96f61f4e2ecebe" offset="0000" />
793828         </dataarea>
r32504r32505
800835      <publisher>UA Ltd.</publisher>
801836      <info name="alt_title" value="Devilman the Dot Muncher, Super Gobbler" />
802837      <part name="cart" interface="arcadia_cart">
838         <feature name="slot" value="std" />
803839         <dataarea name="rom" size="4096">
804840            <rom name="nbblemen.bin" size="4096" crc="7832f7ad" sha1="a2f3d269e422e6ee89d58f001d39438704178e17" offset="0000" />
805841         </dataarea>
r32504r32505
812848      <publisher>UA Ltd.</publisher>
813849      <info name="alt_title" value="Devilman the Dot Muncher, Super Gobbler" />
814850      <part name="cart" interface="arcadia_cart">
851         <feature name="slot" value="std" />
815852         <dataarea name="rom" size="4096">
816853            <rom name="nbblemena.bin" size="4096" crc="08d8b186" sha1="ca2efbcb1f1f580b7995aa47ab7da09fa4a1b9e2" offset="0000" />
817854         </dataarea>
r32504r32505
824861      <publisher>UA Ltd.</publisher>
825862      <info name="alt_title" value="Bataille Navale, Le Combat Naval, Sea Battle, Seeschlacht" />
826863      <part name="cart" interface="arcadia_cart">
864         <feature name="slot" value="std" />
827865         <dataarea name="rom" size="4096">
828866            <rom name="oceanbat.bin" size="4096" crc="449e80cb" sha1="444146bf89c3a0e0e010f6a30e675be3f2b023a7" offset="0000" />
829867         </dataarea>
r32504r32505
836874      <publisher>UA Ltd.</publisher>
837875      <info name="alt_title" value="Parachute" />
838876      <part name="cart" interface="arcadia_cart">
877         <feature name="slot" value="std" />
839878         <dataarea name="rom" size="4096">
840879            <rom name="parashtr.bin" size="4096" crc="4f538848" sha1="2e7c8e4263eec7f033019ec763effebca40ca30b" offset="0000" />
841880         </dataarea>
r32504r32505
847886      <year>1983</year>
848887      <publisher>UA Ltd.</publisher>
849888      <part name="cart" interface="arcadia_cart">
889         <feature name="slot" value="std" />
850890         <dataarea name="rom" size="8192">
851891            <rom name="pleiades.bin" size="8192" crc="4f19fd9b" sha1="bdb7ce3d4552c82be3cf8db43d5ad103f9d9cc91" offset="0000" />
852892         </dataarea>
r32504r32505
858898      <year>1981</year>
859899      <publisher>UA Ltd.</publisher>
860900      <part name="cart" interface="arcadia_cart">
901         <feature name="slot" value="std" />
861902         <dataarea name="rom" size="4096">
862903            <rom name="r2dtank.bin" size="4096" crc="a0626e23" sha1="e1daef4cc1e8c51cf542d900ba7139f5f472f2c8" offset="0000" />
863904         </dataarea>
r32504r32505
869910      <year>1982</year>
870911      <publisher>UA Ltd.</publisher>
871912      <part name="cart" interface="arcadia_cart">
913         <feature name="slot" value="std" />
872914         <dataarea name="rom" size="4096">
873915            <rom name="redclash.bin" size="4096" crc="a06f284b" sha1="7a94f4f1768e4c62209cc03adc0fbadb954d2c24" offset="0000" />
874916         </dataarea>
r32504r32505
881923      <publisher>UA Ltd.</publisher>
882924      <info name="alt_title" value="Le Robot Meurtrier" />
883925      <part name="cart" interface="arcadia_cart">
926         <feature name="slot" value="std" />
884927         <dataarea name="rom" size="4096">
885928            <rom name="robtkllr.bin" size="4096" crc="4671b7f7" sha1="acb45a8314fe531390d1c58be23ae860fa344c94" offset="0000" />
886929         </dataarea>
r32504r32505
892935      <year>1983</year>
893936      <publisher>UA Ltd.</publisher>
894937      <part name="cart" interface="arcadia_cart">
938         <feature name="slot" value="std" />
895939         <dataarea name="rom" size="8192">
896940            <rom name="route16.bin" size="8192" crc="8169864e" sha1="6f6d0c0e2ae06112643c63cb6892f8c7269c98a6" offset="0000" />
897941         </dataarea>
r32504r32505
904948      <publisher>UA Ltd.</publisher>
905949      <info name="alt_title" value="Football, Fußball Spiel, Video- Fußball" />
906950      <part name="cart" interface="arcadia_cart">
951         <feature name="slot" value="std" />
907952         <dataarea name="rom" size="4096">
908953            <rom name="soccer.bin" size="4096" crc="b0b98a92" sha1="1a575203b78af7ac992f109add1721dda8872fc1" offset="0000" />
909954         </dataarea>
r32504r32505
915960      <year>1982</year>
916961      <publisher>UA Ltd.</publisher>
917962      <part name="cart" interface="arcadia_cart">
963         <feature name="slot" value="std" />
918964         <dataarea name="rom" size="2048">
919965            <rom name="spacewar.bin" size="2048" crc="c91828cb" sha1="9e84d1884a002aafb84682eeb9e1cb2f29944d64" offset="000" />
920966         </dataarea>
r32504r32505
926972      <year>1982</year>
927973      <publisher>UA Ltd.</publisher>
928974      <part name="cart" interface="arcadia_cart">
975         <feature name="slot" value="std" />
929976         <dataarea name="rom" size="2048">
930977            <rom name="spaceatta.bin" size="2048" crc="669632ec" sha1="0d96d79d22237312e217d8da8e2185e9245bdf47" offset="000" />
931978         </dataarea>
r32504r32505
937984      <year>1982</year>
938985      <publisher>UA Ltd.</publisher>
939986      <part name="cart" interface="arcadia_cart">
987         <feature name="slot" value="std" />
940988         <dataarea name="rom" size="4096">
941989            <rom name="spaceatt.bin" size="4096" crc="e3794a2c" sha1="25a27466dc3ffb6013cd4f632947834002c80105" offset="0000" />
942990         </dataarea>
r32504r32505
949997      <publisher>UA Ltd.</publisher>
950998      <info name="alt_title" value="Mission Spaciale, Weltraum-Abenteuer" />
951999      <part name="cart" interface="arcadia_cart">
1000         <feature name="slot" value="std" />
9521001         <dataarea name="rom" size="4096">
9531002            <rom name="spcemssn.bin" size="4096" crc="3ff224e5" sha1="a46fa9cbc12cb83218d3936ec3f4d0a4aff8cd60" offset="0000" />
9541003         </dataarea>
r32504r32505
9611010      <publisher>UA Ltd.</publisher>
9621011      <info name="alt_title" value="Space Raider" />
9631012      <part name="cart" interface="arcadia_cart">
1013         <feature name="slot" value="std" />
9641014         <dataarea name="rom" size="4096">
9651015            <rom name="spcerdrs.bin" size="4096" crc="88defacf" sha1="c2c247b57c3d3a9321f7c16e48b1d733bd7d7dbb" offset="0000" />
9661016         </dataarea>
r32504r32505
9731023      <publisher>UA Ltd.</publisher>
9741024      <info name="alt_title" value="Escadrille de L'Espace, L'Escadron de L'Espace" />
9751025      <part name="cart" interface="arcadia_cart">
1026         <feature name="slot" value="std" />
9761027         <dataarea name="rom" size="4096">
9771028            <rom name="spcesqdn.bin" size="4096" crc="caa5f449" sha1="e76efb5f2707f67775d09d2d1547a4af0254b7b1" offset="0000" />
9781029         </dataarea>
r32504r32505
9851036      <publisher>UA Ltd.</publisher>
9861037      <info name="alt_title" value="Vautour de L'espace" />
9871038      <part name="cart" interface="arcadia_cart">
1039         <feature name="slot" value="std" />
9881040         <dataarea name="rom" size="6144">
9891041            <rom name="spcevult.bin" size="6144" crc="7666a712" sha1="a1697ee165307792f07fdd7767122140958a4e9f" offset="0000" />
9901042         </dataarea>
r32504r32505
9961048      <year>1982</year>
9971049      <publisher>UA Ltd.</publisher>
9981050      <part name="cart" interface="arcadia_cart">
1051         <feature name="slot" value="std" />
9991052         <dataarea name="rom" size="4096">
10001053            <rom name="spiders.bin" size="4096" crc="bb88daea" sha1="e2fe75ec968a586a9c4885df02481b00abef2bc7" offset="0000" />
10011054         </dataarea>
r32504r32505
10081061      <publisher>UA Ltd.</publisher>
10091062      <info name="alt_title" value="Echec Etiles, Échecs Vidéo, Space Chess, Video Chess, Video-Schach" />
10101063      <part name="cart" interface="arcadia_cart">
1064         <feature name="slot" value="std" />
10111065         <dataarea name="rom" size="4096">
10121066            <rom name="starchss.bin" size="4096" crc="83e6e40b" sha1="348ca876b1113827d8e7ffb9b2422e863ba92b0f" offset="0000" />
10131067         </dataarea>
r32504r32505
10191073      <year>198?</year>
10201074      <publisher>UA Ltd.</publisher>
10211075      <part name="cart" interface="arcadia_cart">
1076         <feature name="slot" value="std" />
10221077         <dataarea name="rom" size="4096">
10231078            <rom name="superbuga.bin" size="4096" crc="15436f39" sha1="bf22e0fae67bc3c2147a669b194752e34fe3564d" offset="0000" />
10241079         </dataarea>
r32504r32505
10301085      <year>198?</year>
10311086      <publisher>UA Ltd.</publisher>
10321087      <part name="cart" interface="arcadia_cart">
1088         <feature name="slot" value="std" />
10331089         <dataarea name="rom" size="4096">
10341090            <rom name="superbug.bin" size="4096" crc="fef2aae9" sha1="1e7f7b81ecd2f766c94bd5ff17763374fb0318f1" offset="0000" />
10351091         </dataarea>
r32504r32505
10421098      <publisher>UA Ltd.</publisher>
10431099      <info name="alt_title" value="Space Pirates" />
10441100      <part name="cart" interface="arcadia_cart">
1101         <feature name="slot" value="std" />
10451102         <dataarea name="rom" size="4096">
10461103            <rom name="theend.bin" size="4096" crc="e66f362d" sha1="1148aa1525d7b46640babb50b004c79abec45d3a" offset="0000" />
10471104         </dataarea>
r32504r32505
10531110      <year>1982</year>
10541111      <publisher>UA Ltd.</publisher>
10551112      <part name="cart" interface="arcadia_cart">
1113         <feature name="slot" value="std" />
10561114         <dataarea name="rom" size="4096">
10571115            <rom name="tnksalot.bin" size="4096" crc="0076422e" sha1="c431d5190e86f3dfbb3e8b1a3b9bec82bb5014ae" offset="0000" />
10581116         </dataarea>
r32504r32505
10641122      <year>1982</year>
10651123      <publisher>UA Ltd.</publisher>
10661124      <part name="cart" interface="arcadia_cart">
1125         <feature name="slot" value="std" />
10671126         <dataarea name="rom" size="8192">
10681127            <rom name="turtles.bin" size="8192" crc="306e39c1" sha1="a806e3f248a962bb99e2515f489d45bb11fb0a0e" offset="0000" />
10691128         </dataarea>
r32504r32505
10761135      <year>198?</year>
10771136      <publisher>UA Ltd.</publisher>
10781137      <part name="cart" interface="arcadia_cart">
1138         <feature name="slot" value="std" />
10791139         <dataarea name="rom" size="12288">
10801140            <rom name="vidlex [main cartridge unit].bin" size="4096" crc="e0a9dd9a" sha1="eadb3a791b100a208bbe8c445a96315cbeb7a097" offset="0x0000" />
10811141            <rom name="vidlexe [english module].bin" size="4096" crc="320b0a9d" sha1="5058e17464ac50f86cd1c297c031b4d0ef063303" offset="0x1000" />
r32504r32505
10901150      <year>198?</year>
10911151      <publisher>UA Ltd.</publisher>
10921152      <part name="cart" interface="arcadia_cart">
1153         <feature name="slot" value="std" />
10931154         <dataarea name="rom" size="12288">
10941155            <rom name="dicte2g.bin" size="12288" crc="6289f607" sha1="23d5d52e3403b3e9cd7864a16abac03508db8c97" offset="0000" />
10951156         </dataarea>
r32504r32505
11021163      <year>198?</year>
11031164      <publisher>UA Ltd.</publisher>
11041165      <part name="cart" interface="arcadia_cart">
1166         <feature name="slot" value="std" />
11051167         <dataarea name="rom" size="12288">
11061168            <rom name="dictg2e.bin" size="12288" crc="0739504d" sha1="de2c037c5ec9b31f2ae63a467dcd82647f92e908" offset="0000" />
11071169         </dataarea>
trunk/hash/vc4000.xml
r32504r32505
99      <year>19??</year>
1010      <publisher>Interton</publisher>
1111      <part name="cart" interface="vc4000_cart">
12         <feature name="slot" value="std" />
1213         <dataarea name="rom" size="2048">
1314            <rom name="carraces.bin" size="2048" crc="5c7f11e0" sha1="0d1cd6f7da36660f19e0b0e9c4312b1c56d5fbc6" offset="0" />
1415         </dataarea>
r32504r32505
2122      <year>19??</year>
2223      <publisher>Interton</publisher>
2324      <part name="cart" interface="vc4000_cart">
25         <feature name="slot" value="std" />
2426         <dataarea name="rom" size="2048">
2527            <rom name="blckjack.bin" size="2048" crc="ec2a91b3" sha1="ba4553d116cffa74a71ef10fbffa4c28c779c836" offset="0" />
2628         </dataarea>
r32504r32505
3335      <year>19??</year>
3436      <publisher>Interton</publisher>
3537      <part name="cart" interface="vc4000_cart">
38         <feature name="slot" value="std" />
3639         <dataarea name="rom" size="2048">
3740            <rom name="paddleg.bin" size="2048" crc="682b876a" sha1="ecc0146c40daa79a13934b8884bc8fd0f96461c1" offset="0" />
3841         </dataarea>
r32504r32505
4548      <year>19??</year>
4649      <publisher>Interton</publisher>
4750      <part name="cart" interface="vc4000_cart">
51         <feature name="slot" value="std" />
4852         <dataarea name="rom" size="2048">
4953            <rom name="tbattle.bin" size="2048" crc="468e4779" sha1="191d0a1bf399a09525b57dbbca92d83de18003fd" offset="0" />
5054         </dataarea>
r32504r32505
5761      <year>19??</year>
5862      <publisher>Interton</publisher>
5963      <part name="cart" interface="vc4000_cart">
64         <feature name="slot" value="std" />
6065         <dataarea name="rom" size="2048">
6166            <rom name="mathema1.bin" size="2048" crc="e38e0c03" sha1="d48c8ca8811fa9418d257c92365b88bba0cdffb2" offset="0" />
6267         </dataarea>
r32504r32505
6974      <year>19??</year>
7075      <publisher>Interton</publisher>
7176      <part name="cart" interface="vc4000_cart">
77         <feature name="slot" value="std" />
7278         <dataarea name="rom" size="2048">
7379            <rom name="mathema2.bin" size="2048" crc="66c5975e" sha1="efa4a5ebe540efdedec226c0af238c2652ad5b5a" offset="0" />
7480         </dataarea>
r32504r32505
8187      <year>19??</year>
8288      <publisher>Interton</publisher>
8389      <part name="cart" interface="vc4000_cart">
90         <feature name="slot" value="std" />
8491         <dataarea name="rom" size="2048">
8592            <rom name="airseaba.bin" size="2048" crc="f3d37699" sha1="922b9469b2262eb1a135defd5dbc11f33094df5c" offset="0" />
8693         </dataarea>
r32504r32505
93100      <year>19??</year>
94101      <publisher>Interton</publisher>
95102      <part name="cart" interface="vc4000_cart">
103         <feature name="slot" value="std" />
96104         <dataarea name="rom" size="2048">
97105            <rom name="memory1.bin" size="2048" crc="ea8f717f" sha1="a383ced230178c9c829b82b2793cb036411ccb5d" offset="0" />
98106         </dataarea>
r32504r32505
105113      <year>19??</year>
106114      <publisher>Interton</publisher>
107115      <part name="cart" interface="vc4000_cart">
116         <feature name="slot" value="std" />
108117         <dataarea name="rom" size="2048">
109118            <rom name="intel1.bin" size="2048" crc="4d3f9cfb" sha1="b8cba1672f5b7286e8895fc6e6c46bbb54fb3f46" offset="0" status="baddump" />
110119         </dataarea>
r32504r32505
117126      <year>19??</year>
118127      <publisher>Interton</publisher>
119128      <part name="cart" interface="vc4000_cart">
129         <feature name="slot" value="std" />
120130         <dataarea name="rom" size="4096">
121131            <rom name="wintersp.bin" size="4096" crc="bdd652b7" sha1="aa3af1df1095aadf9d7428a59847fbef3505d93d" offset="0" />
122132         </dataarea>
r32504r32505
129139      <year>19??</year>
130140      <publisher>Interton</publisher>
131141      <part name="cart" interface="vc4000_cart">
142         <feature name="slot" value="std" />
132143         <dataarea name="rom" size="2048">
133144            <rom name="hippodro.bin" size="2048" crc="aaea290f" sha1="0c4dd4f31adccdf02ba783a23ca9debe2c4cee02" offset="0" />
134145         </dataarea>
r32504r32505
141152      <year>19??</year>
142153      <publisher>Interton</publisher>
143154      <part name="cart" interface="vc4000_cart">
155         <feature name="slot" value="std" />
144156         <dataarea name="rom" size="2048">
145157            <rom name="hunting.bin" size="2048" crc="31978ad4" sha1="68a21765ae57357c7e5385e57b3caa60f796c0cc" offset="0" />
146158         </dataarea>
r32504r32505
153165      <year>19??</year>
154166      <publisher>Interton</publisher>
155167      <part name="cart" interface="vc4000_cart">
156         <!-- 1k internal ram -->
168         <feature name="slot" value="ram1k" />
157169         <dataarea name="rom" size="4096">
158170            <rom name="chess.bin" size="4096" crc="e9c53288" sha1="468188fd58aefb9f8e17e72ea4494f4e8219338a" offset="0" />
159171         </dataarea>
172         <dataarea name="ram" size="1024">
173         </dataarea>
160174      </part>
161175   </software>
162176
r32504r32505
166180      <year>19??</year>
167181      <publisher>Interton</publisher>
168182      <part name="cart" interface="vc4000_cart">
183         <feature name="slot" value="std" />
169184         <dataarea name="rom" size="4096">
170185            <rom name="motocrss.bin" size="4096" crc="55011f0a" sha1="a461b66f6cff37e4038e80da0a205a816abe35d4" offset="0" />
171186         </dataarea>
r32504r32505
178193      <year>19??</year>
179194      <publisher>Interton</publisher>
180195      <part name="cart" interface="vc4000_cart">
196         <feature name="slot" value="std" />
181197         <dataarea name="rom" size="2048">
182198            <rom name="intel2.bin" size="2048" crc="8ab96827" sha1="58c7cabd14e3cd0505f8ea27aaf08cc8045bc590" offset="0" status="baddump" />
183199         </dataarea>
r32504r32505
190206      <year>19??</year>
191207      <publisher>Interton</publisher>
192208      <part name="cart" interface="vc4000_cart">
209         <feature name="slot" value="std" />
193210         <dataarea name="rom" size="2048">
194211            <rom name="intel3.bin" size="2048" crc="52b8c6e7" sha1="b83fd9679912b0888df38f708dbea80dfe3b8193" offset="0" />
195212         </dataarea>
r32504r32505
202219      <year>19??</year>
203220      <publisher>Interton</publisher>
204221      <part name="cart" interface="vc4000_cart">
222         <feature name="slot" value="std" />
205223         <dataarea name="rom" size="2048">
206224            <rom name="circus.bin" size="2048" crc="0ab80f3e" sha1="cff0b7066669aad1e35803767fd98ecef4ea162d" offset="0" />
207225         </dataarea>
r32504r32505
214232      <year>19??</year>
215233      <publisher>Interton</publisher>
216234      <part name="cart" interface="vc4000_cart">
235         <feature name="slot" value="std" />
217236         <dataarea name="rom" size="4096">
218237            <rom name="boxing.bin" size="4096" crc="922c9f0d" sha1="b49a37dd6d0272f6c71d778ffada6bc7c90f8348" offset="0" />
219238         </dataarea>
r32504r32505
226245      <year>19??</year>
227246      <publisher>Interton</publisher>
228247      <part name="cart" interface="vc4000_cart">
248         <feature name="slot" value="std" />
229249         <dataarea name="rom" size="2048">
230250            <rom name="outersc.bin" size="2048" crc="b1c31f9a" sha1="8a2b29af42051f61a22a033c7dd140705cf7bc6e" offset="0" />
231251         </dataarea>
r32504r32505
238258      <year>19??</year>
239259      <publisher>Interton</publisher>
240260      <part name="cart" interface="vc4000_cart">
261         <feature name="slot" value="std" />
241262         <dataarea name="rom" size="2048">
242263            <rom name="memory2.bin" size="2048" crc="d68da80a" sha1="4cf0f74b4a0d3305c9ffa830c067a054fab25419" offset="0" />
243264         </dataarea>
r32504r32505
250271      <year>19??</year>
251272      <publisher>Interton</publisher>
252273      <part name="cart" interface="vc4000_cart">
274         <feature name="slot" value="std" />
253275         <dataarea name="rom" size="2048">
254276            <rom name="reversi.bin" size="2048" crc="619c07c9" sha1="30c595f60e464a93c69579ae9bffdd42ee2f73e7" offset="0" />
255277         </dataarea>
r32504r32505
262284      <year>19??</year>
263285      <publisher>Interton</publisher>
264286      <part name="cart" interface="vc4000_cart">
265         <!-- 1k internal ram -->
287         <feature name="slot" value="chess2" />
266288         <dataarea name="rom" size="6144">
267289            <!-- redump needed, should be a 4k and a 2k file -->
268290            <rom name="chess2.bin" size="6144" crc="1b948aeb" sha1="0da5c4e865ce4a6b0293e51949eb0fb525881cf0" offset="0" />
269291         </dataarea>
292         <dataarea name="ram" size="1024">
293         </dataarea>
270294      </part>
271295   </software>
272296
r32504r32505
276300      <year>19??</year>
277301      <publisher>Interton</publisher>
278302      <part name="cart" interface="vc4000_cart">
303         <feature name="slot" value="std" />
279304         <dataarea name="rom" size="2048">
280305            <rom name="pinball.bin" size="2048" crc="add99c6e" sha1="85b904e5bc37e5a44c88c000307401438285910a" offset="0" />
281306         </dataarea>
r32504r32505
288313      <year>1979</year>
289314      <publisher>Interton</publisher>
290315      <part name="cart" interface="vc4000_cart">
316         <feature name="slot" value="std" />
291317         <dataarea name="rom" size="2048">
292318            <rom name="soccer.bin" size="2048" crc="05af8228" sha1="fd4212b955688aec985102d84575cae55bc651eb" offset="0" />
293319         </dataarea>
r32504r32505
300326      <year>19??</year>
301327      <publisher>Interton</publisher>
302328      <part name="cart" interface="vc4000_cart">
329         <feature name="slot" value="std" />
303330         <dataarea name="rom" size="2048">
304331            <rom name="bowling.bin" size="2048" crc="a47fe1bf" sha1="e637787ed9d868f85339a413bbf2989a785fa2a7" offset="0" />
305332         </dataarea>
r32504r32505
312339      <year>19??</year>
313340      <publisher>Interton</publisher>
314341      <part name="cart" interface="vc4000_cart">
315         <!-- 1k internal ram -->
342         <feature name="slot" value="ram1k" />
316343         <dataarea name="rom" size="4096">
317344            <rom name="draughts.bin" size="4096" crc="7b868473" sha1="2557172b07c0ebaffe18a345cfa88ef24febecb0" offset="0" />
318345         </dataarea>
346         <dataarea name="ram" size="1024">
347         </dataarea>
319348      </part>
320349   </software>
321350
r32504r32505
325354      <year>19??</year>
326355      <publisher>Interton</publisher>
327356      <part name="cart" interface="vc4000_cart">
357         <feature name="slot" value="std" />
328358         <dataarea name="rom" size="4096">
329359            <rom name="golf.bin" size="4096" crc="d399ce07" sha1="41b6c7d3bc8ea2ef9777066dfd74ec2c5932ddb6" offset="0" />
330360         </dataarea>
r32504r32505
337367      <year>19??</year>
338368      <publisher>&lt;unknown&gt;</publisher>
339369      <part name="cart" interface="vc4000_cart">
370         <feature name="slot" value="std" />
340371         <dataarea name="rom" size="4096">
341372            <rom name="cockpit.bin" size="4096" crc="11dd7f0d" sha1="456e9c5d1d48877e8c5eb5e5499c911a73e30584" offset="0" />
342373         </dataarea>
r32504r32505
349380      <year>19??</year>
350381      <publisher>Interton</publisher>
351382      <part name="cart" interface="vc4000_cart">
383         <feature name="slot" value="std" />
352384         <dataarea name="rom" size="4096">
353385            <rom name="metropol.bin" size="4096" crc="a640a330" sha1="3b9b1b5c35d3e2ef909e1498f96026cfb437ea80" offset="0" />
354386         </dataarea>
r32504r32505
361393      <year>19??</year>
362394      <publisher>Interton</publisher>
363395      <part name="cart" interface="vc4000_cart">
396         <feature name="slot" value="std" />
364397         <dataarea name="rom" size="2048">
365398            <rom name="solitair.bin" size="2048" crc="08209d98" sha1="bf96ceb173f17017b99cf8d38ed55e66b5320260" offset="0" />
366399         </dataarea>
r32504r32505
373406      <year>19??</year>
374407      <publisher>Interton</publisher>
375408      <part name="cart" interface="vc4000_cart">
409         <feature name="slot" value="std" />
376410         <dataarea name="rom" size="2048">
377411            <rom name="casino.bin" size="2048" crc="50fd6a18" sha1="7d2549a3a3373592d2eb88c3a5c9918b32fddafd" offset="0" />
378412         </dataarea>
r32504r32505
385419      <year>19??</year>
386420      <publisher>Interton</publisher>
387421      <part name="cart" interface="vc4000_cart">
422         <feature name="slot" value="std" />
388423         <dataarea name="rom" size="2048">
389424            <rom name="invaders.bin" size="2048" crc="9497204a" sha1="1fba78476ee93f09b6db033ec4d5332498ebc4d0" offset="0" />
390425         </dataarea>
r32504r32505
397432      <year>19??</year>
398433      <publisher>Interton</publisher>
399434      <part name="cart" interface="vc4000_cart">
435         <feature name="slot" value="std" />
400436         <dataarea name="rom" size="2048">
401437            <rom name="superinv.bin" size="2048" crc="a46c2f9e" sha1="bf851dbd92a539232c89fe2f6c4e2759b61ef3d4" offset="0" />
402438         </dataarea>
r32504r32505
412448      <year>19??</year>
413449      <publisher>Interton</publisher>
414450      <part name="cart" interface="vc4000_cart">
415         <!-- 1k internal ram -->
451         <feature name="slot" value="ram1k" />
416452         <dataarea name="rom" size="4096">
417453            <rom name="backgamm.bin" size="4096" crc="08cd8135" sha1="942f65a68e4116b1da66df57c09829f9d9b62659" offset="0" />
418454         </dataarea>
455         <dataarea name="ram" size="1024">
456         </dataarea>
419457      </part>
420458   </software>
421459
r32504r32505
425463      <year>19??</year>
426464      <publisher>Interton</publisher>
427465      <part name="cart" interface="vc4000_cart">
466         <feature name="slot" value="ram1k" />
428467         <dataarea name="rom" size="4096">
429468            <rom name="mnstrman.bin" size="4096" crc="27cce96f" sha1="f55798c634be020b46699f2e3e71301230db86d2" offset="0" />
430469         </dataarea>
r32504r32505
437476      <year>19??</year>
438477      <publisher>Interton</publisher>
439478      <part name="cart" interface="vc4000_cart">
479         <feature name="slot" value="std" />
440480         <dataarea name="rom" size="2048">
441481            <rom name="hyperspa.bin" size="2048" crc="b3ed1129" sha1="4c0f862f6fa4850e5e7305b90df71f7b899f0c27" offset="0" />
442482         </dataarea>
r32504r32505
451491      <year>19??</year>
452492      <publisher>Interton</publisher>
453493      <part name="cart" interface="vc4000_cart">
494         <feature name="slot" value="std" />
454495         <dataarea name="rom" size="4096">
455496            <rom name="suprspac.bin" size="4096" crc="306e37bb" sha1="b11e9fed7700d5192b05dfabeca7b23feca64540" offset="0" />
456497         </dataarea>

Previous 199869 Revisions Next


© 1997-2024 The MAME Team