Previous 199869 Revisions Next

r21966 Tuesday 19th March, 2013 at 11:13:46 UTC by Fabio Priuli
(MESS) saturn: converted carts to be slot devices and enabled battery
RAM carts support [Fabio Priuli]
[src/mame/includes]stv.h
[src/mess]mess.mak
[src/mess/drivers]saturn.c
[src/mess/machine]sat_bram.c* sat_bram.h* sat_dram.c* sat_dram.h* sat_rom.c* sat_rom.h* sat_slot.c* sat_slot.h*

trunk/src/mess/mess.mak
r21965r21966
16341634   $(MESS_DRIVERS)/dccons.o    \
16351635   $(MAME_MACHINE)/gdrom.o     \
16361636   $(MESS_MACHINE)/dccons.o    \
1637   $(MESS_MACHINE)/sat_slot.o  \
1638   $(MESS_MACHINE)/sat_rom.o   \
1639   $(MESS_MACHINE)/sat_dram.o  \
1640   $(MESS_MACHINE)/sat_bram.o  \
16371641   $(MESS_DRIVERS)/saturn.o    \
16381642   $(MESS_MACHINE)/sms.o       \
16391643   $(MESS_DRIVERS)/sms.o       \
trunk/src/mess/drivers/saturn.c
r21965r21966
6767#include "machine/smpc.h"
6868#include "includes/stv.h"
6969#include "imagedev/chd_cd.h"
70#include "imagedev/cartslot.h"
7170#include "coreutil.h"
7271
72#include "machine/sat_slot.h"
73#include "machine/sat_rom.h"
74#include "machine/sat_dram.h"
75#include "machine/sat_bram.h"
7376
7477
78class sat_console_state : public saturn_state
79{
80public:
81   sat_console_state(const machine_config &mconfig, device_type type, const char *tag)
82            : saturn_state(mconfig, type, tag)
83            , m_exp(*this, "exp")
84   { }
85   
86   DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
87   DECLARE_INPUT_CHANGED_MEMBER(nmi_reset);
88   DECLARE_INPUT_CHANGED_MEMBER(tray_open);
89   DECLARE_INPUT_CHANGED_MEMBER(tray_close);
90
91   DECLARE_MACHINE_START(saturn);
92   DECLARE_MACHINE_RESET(saturn);
93   
94   DECLARE_READ8_MEMBER(saturn_cart_type_r);
95   DECLARE_READ32_MEMBER( abus_dummy_r );
96   
97   DECLARE_READ32_MEMBER(saturn_null_ram_r);
98   DECLARE_WRITE32_MEMBER(saturn_null_ram_w);
99
100   void saturn_init_driver(int rgn);
101   DECLARE_DRIVER_INIT(saturnus);
102   DECLARE_DRIVER_INIT(saturneu);
103   DECLARE_DRIVER_INIT(saturnjp);
104   
105   required_device<sat_cart_slot_device> m_exp;
106};
107
108
75109/* TODO: if you change the driver configuration then NVRAM contents gets screwed, needs mods in MAME framework */
76110static NVRAM_HANDLER(saturn)
77111{
78   saturn_state *state = machine.driver_data<saturn_state>();
112   sat_console_state *state = machine.driver_data<sat_console_state>();
79113   static const UINT32 BUP_SIZE = 32*1024;
80   static const UINT32 EBUP_SIZE = 0;//0x100000; // TODO: can't support more than 8 Mbit
81   UINT8 backup_file[(BUP_SIZE)+EBUP_SIZE+4];
114   UINT8 backup_file[(BUP_SIZE)+4];
82115   static const UINT8 init[16] =
83116   {
84117      'B', 'a', 'c', 'k', 'U', 'p', 'R', 'a', 'm', ' ', 'F', 'o', 'r', 'm', 'a', 't'
r21965r21966
89122   {
90123      for(i=0;i<BUP_SIZE;i++)
91124         backup_file[i] = state->m_backupram[i];
92      #if 0
93      for(i=0;i<EBUP_SIZE;i++)
94         backup_file[i+BUP_SIZE] = state->m_cart_backupram[i];
95      #endif
96125      for(i=0;i<4;i++)
97         backup_file[i+(BUP_SIZE)+EBUP_SIZE] = state->m_smpc.SMEM[i];
126         backup_file[i+(BUP_SIZE)] = state->m_smpc.SMEM[i];
98127
99      file->write(backup_file, (BUP_SIZE)+EBUP_SIZE+4);
128      file->write(backup_file, (BUP_SIZE)+4);
100129   }
101130   else
102131   {
103132      if (file)
104133      {
105         file->read(backup_file, (BUP_SIZE)+EBUP_SIZE+4);
134         file->read(backup_file, (BUP_SIZE)+4);
106135
107136         for(i=0;i<BUP_SIZE;i++)
108137            state->m_backupram[i] = backup_file[i];
109         #if 0
110         for(i=0;i<EBUP_SIZE;i++)
111            state->m_cart_backupram[i] = backup_file[i+BUP_SIZE];
112         #endif
113138         for(i=0;i<4;i++)
114            state->m_smpc.SMEM[i] = backup_file[i+BUP_SIZE+EBUP_SIZE];
139            state->m_smpc.SMEM[i] = backup_file[i+BUP_SIZE];
115140      }
116141      else
117142      {
r21965r21966
122147            for(j=0;j<16;j++)
123148               state->m_backupram[i*16+j] = init[j];
124149         }
125         #if 0
126         memset(state->m_cart_backupram, 0, EBUP_SIZE);
127         for (i = 0; i < 32; i++)
128         {
129            for(j=0;j<16;j++)
130               state->m_cart_backupram[i*16+j] = init[j];
131         }
132         #endif
133150         memset(state->m_smpc.SMEM, 0, 4); // TODO: default for each region
134151      }
135152   }
136153}
137154
138READ8_MEMBER(saturn_state::saturn_cart_type_r)
155READ8_MEMBER(sat_console_state::saturn_cart_type_r)
139156{
140   const int cart_ram_header[7] = { 0xff, 0x21, 0x22, 0x23, 0x24, 0x5a, 0x5c };
141
142   return cart_ram_header[m_cart_type];
157   if (m_exp)
158      return m_exp->get_cart_type();
159   else
160      return 0xff;
143161}
144162
145163/* TODO: Bug! accesses this one, if returning 0 the SH-2 hard-crashes. Might be an actual bug with the CD block. */
146READ32_HANDLER( saturn_state::abus_dummy_r )
164READ32_HANDLER( sat_console_state::abus_dummy_r )
147165{
148166   logerror("A-Bus Dummy access %08x\n",offset*4);
149167   return -1;
150168}
151169
152static ADDRESS_MAP_START( saturn_mem, AS_PROGRAM, 32, saturn_state )
170static ADDRESS_MAP_START( saturn_mem, AS_PROGRAM, 32, sat_console_state )
153171   AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_SHARE("share6")  // bios
154172   AM_RANGE(0x00100000, 0x0010007f) AM_READWRITE8(saturn_SMPC_r, saturn_SMPC_w,0xffffffff)
155173   AM_RANGE(0x00180000, 0x0018ffff) AM_READWRITE8(saturn_backupram_r, saturn_backupram_w,0xffffffff) AM_SHARE("share1")
156174   AM_RANGE(0x00200000, 0x002fffff) AM_RAM AM_MIRROR(0x20100000) AM_SHARE("workram_l")
157175   AM_RANGE(0x01000000, 0x017fffff) AM_WRITE(saturn_minit_w)
158176   AM_RANGE(0x01800000, 0x01ffffff) AM_WRITE(saturn_sinit_w)
159   AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_SHARE("share7") AM_REGION("maincpu", 0x80000)    // cartridge space
160//  AM_RANGE(0x02400000, 0x027fffff) AM_RAM //cart RAM area, dynamically allocated
161//  AM_RANGE(0x04000000, 0x047fffff) AM_RAM //backup RAM area, dynamically allocated
177//   AM_RANGE(0x02000000, 0x023fffff) AM_ROM // Cartridge area
178//  AM_RANGE(0x02400000, 0x027fffff) AM_RAM // External Data RAM area
179//  AM_RANGE(0x04000000, 0x047fffff) AM_RAM // External Battery RAM area
162180   AM_RANGE(0x04fffffc, 0x04ffffff) AM_READ8(saturn_cart_type_r,0x000000ff)
163181   AM_RANGE(0x05000000, 0x057fffff) AM_READ(abus_dummy_r)
164182   AM_RANGE(0x05800000, 0x0589ffff) AM_READWRITE(stvcd_r, stvcd_w)
r21965r21966
175193   AM_RANGE(0x05fe0000, 0x05fe00cf) AM_READWRITE(saturn_scu_r, saturn_scu_w)
176194   AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_MIRROR(0x21f00000) AM_SHARE("workram_h")
177195   AM_RANGE(0x20000000, 0x2007ffff) AM_ROM AM_SHARE("share6")  // bios mirror
178   AM_RANGE(0x22000000, 0x24ffffff) AM_ROM AM_SHARE("share7")  // cart mirror
196//   AM_RANGE(0x22000000, 0x24ffffff) AM_ROM // Cartridge area mirror
179197   AM_RANGE(0x45000000, 0x46ffffff) AM_WRITENOP
180198   AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP // cache address array
181199   AM_RANGE(0xc0000000, 0xc00007ff) AM_RAM // cache data array, Dragon Ball Z sprites relies on this
182200ADDRESS_MAP_END
183201
184static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 16, saturn_state )
202static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 16, sat_console_state )
185203   AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("sound_ram")
186204   AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE_LEGACY("scsp", scsp_r, scsp_w)
187205ADDRESS_MAP_END
r21965r21966
189207
190208/* keyboard code */
191209/* TODO: needs a proper keycode table */
192INPUT_CHANGED_MEMBER(saturn_state::key_stroke)
210INPUT_CHANGED_MEMBER(sat_console_state::key_stroke)
193211{
194212   if(newval && !oldval)
195213   {
r21965r21966
269287
270288#define SATURN_KEYBOARD PORT_CONDITION("INPUT_TYPE", 0x0f, EQUALS, 0x05)
271289
272INPUT_CHANGED_MEMBER(saturn_state::nmi_reset)
290INPUT_CHANGED_MEMBER(sat_console_state::nmi_reset)
273291{
274292   /* TODO: correct? */
275293   if(!m_NMI_reset)
r21965r21966
280298      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
281299}
282300
283INPUT_CHANGED_MEMBER(saturn_state::tray_open)
301INPUT_CHANGED_MEMBER(sat_console_state::tray_open)
284302{
285303   if(newval)
286304      stvcd_set_tray_open();
287305}
288306
289INPUT_CHANGED_MEMBER(saturn_state::tray_close)
307INPUT_CHANGED_MEMBER(sat_console_state::tray_close)
290308{
291309   if(newval)
292310      stvcd_set_tray_close();
r21965r21966
294312
295313static INPUT_PORTS_START( saturn )
296314   PORT_START("RESET") /* hardwired buttons */
297   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, nmi_reset,0) PORT_NAME("Reset Button")
298   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, tray_open,0) PORT_NAME("Tray Open Button")
299   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, tray_close,0) PORT_NAME("Tray Close")
315   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, nmi_reset,0) PORT_NAME("Reset Button")
316   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, tray_open,0) PORT_NAME("Tray Open Button")
317   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, tray_close,0) PORT_NAME("Tray Close")
300318
301319   PORT_START("JOY1")
302320   SATURN_PAD_P1(0x0f, 0)
r21965r21966
307325   /* TODO: there's no info about the keycode used on Saturn keyboard, following is trial & error with Game Basic software */
308326   PORT_START("KEY0") // 0x00 - 0x07
309327   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_UNUSED) SATURN_KEYBOARD
310   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F1") /*PORT_CODE(KEYCODE_F1)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x01) PORT_PLAYER(1) SATURN_KEYBOARD
311   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("0-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x02) PORT_PLAYER(1) SATURN_KEYBOARD
312   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F2") /*PORT_CODE(KEYCODE_F2)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x03) PORT_PLAYER(1) SATURN_KEYBOARD // RUN
313   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F3") /*PORT_CODE(KEYCODE_F3)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x04) PORT_PLAYER(1) SATURN_KEYBOARD // LIST
314   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F4") /*PORT_CODE(KEYCODE_F4)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x05) PORT_PLAYER(1) SATURN_KEYBOARD // EDIT
315   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F5") /*PORT_CODE(KEYCODE_F5)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x06) PORT_PLAYER(1) SATURN_KEYBOARD
316   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("CLR SCR") PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x07) PORT_PLAYER(1) SATURN_KEYBOARD
328   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F1") /*PORT_CODE(KEYCODE_F1)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x01) PORT_PLAYER(1) SATURN_KEYBOARD
329   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("0-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x02) PORT_PLAYER(1) SATURN_KEYBOARD
330   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F2") /*PORT_CODE(KEYCODE_F2)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x03) PORT_PLAYER(1) SATURN_KEYBOARD // RUN
331   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F3") /*PORT_CODE(KEYCODE_F3)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x04) PORT_PLAYER(1) SATURN_KEYBOARD // LIST
332   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F4") /*PORT_CODE(KEYCODE_F4)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x05) PORT_PLAYER(1) SATURN_KEYBOARD // EDIT
333   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F5") /*PORT_CODE(KEYCODE_F5)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x06) PORT_PLAYER(1) SATURN_KEYBOARD
334   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("CLR SCR") PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x07) PORT_PLAYER(1) SATURN_KEYBOARD
317335
318336   PORT_START("KEY1") // 0x08 - 0x0f
319   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x08) PORT_PLAYER(1) SATURN_KEYBOARD
320   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F6") /*PORT_CODE(KEYCODE_F6)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x09) PORT_PLAYER(1) SATURN_KEYBOARD
321   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F7") /*PORT_CODE(KEYCODE_F7)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x0a) PORT_PLAYER(1) SATURN_KEYBOARD
322   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F8") /*PORT_CODE(KEYCODE_F8)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x0b) PORT_PLAYER(1) SATURN_KEYBOARD
323   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F9") /*PORT_CODE(KEYCODE_F9)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x0c) PORT_PLAYER(1) SATURN_KEYBOARD // LIST again
324   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR('5')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x0d) PORT_PLAYER(1) SATURN_KEYBOARD
325   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x0e) PORT_PLAYER(1) SATURN_KEYBOARD
326   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x0f) PORT_PLAYER(1) SATURN_KEYBOARD
337   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x08) PORT_PLAYER(1) SATURN_KEYBOARD
338   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F6") /*PORT_CODE(KEYCODE_F6)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x09) PORT_PLAYER(1) SATURN_KEYBOARD
339   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F7") /*PORT_CODE(KEYCODE_F7)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x0a) PORT_PLAYER(1) SATURN_KEYBOARD
340   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F8") /*PORT_CODE(KEYCODE_F8)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x0b) PORT_PLAYER(1) SATURN_KEYBOARD
341   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F9") /*PORT_CODE(KEYCODE_F9)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x0c) PORT_PLAYER(1) SATURN_KEYBOARD // LIST again
342   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR('5')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x0d) PORT_PLAYER(1) SATURN_KEYBOARD
343   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x0e) PORT_PLAYER(1) SATURN_KEYBOARD
344   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x0f) PORT_PLAYER(1) SATURN_KEYBOARD
327345
328346   PORT_START("KEY2") // 0x10 - 0x17
329   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x10) PORT_PLAYER(1) SATURN_KEYBOARD
330   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x11) PORT_PLAYER(1) SATURN_KEYBOARD
347   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x10) PORT_PLAYER(1) SATURN_KEYBOARD
348   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x11) PORT_PLAYER(1) SATURN_KEYBOARD
331349   /* TODO: break codes! */
332   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("SHIFT") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x12) PORT_PLAYER(1) SATURN_KEYBOARD
333   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("KANA SHIFT") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x13) PORT_PLAYER(1) SATURN_KEYBOARD
334   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("(special keys)") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x14) PORT_PLAYER(1) SATURN_KEYBOARD
350   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("SHIFT") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x12) PORT_PLAYER(1) SATURN_KEYBOARD
351   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("KANA SHIFT") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x13) PORT_PLAYER(1) SATURN_KEYBOARD
352   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("(special keys)") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x14) PORT_PLAYER(1) SATURN_KEYBOARD
335353
336   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x15) PORT_PLAYER(1) SATURN_KEYBOARD
337   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x16) PORT_PLAYER(1) SATURN_KEYBOARD
338   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x17) PORT_PLAYER(1) SATURN_KEYBOARD
354   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x15) PORT_PLAYER(1) SATURN_KEYBOARD
355   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x16) PORT_PLAYER(1) SATURN_KEYBOARD
356   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x17) PORT_PLAYER(1) SATURN_KEYBOARD
339357
340358   PORT_START("KEY3") // 0x18 - 0x1f
341   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x18) PORT_PLAYER(1) SATURN_KEYBOARD
342   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x19) PORT_PLAYER(1) SATURN_KEYBOARD
343   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x1a) PORT_PLAYER(1) SATURN_KEYBOARD
344   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x1b) PORT_PLAYER(1) SATURN_KEYBOARD
345   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x1c) PORT_PLAYER(1) SATURN_KEYBOARD
346   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x1d) PORT_PLAYER(1) SATURN_KEYBOARD
347   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x1e) PORT_PLAYER(1) SATURN_KEYBOARD
348   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x1f) PORT_PLAYER(1) SATURN_KEYBOARD
359   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x18) PORT_PLAYER(1) SATURN_KEYBOARD
360   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x19) PORT_PLAYER(1) SATURN_KEYBOARD
361   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x1a) PORT_PLAYER(1) SATURN_KEYBOARD
362   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x1b) PORT_PLAYER(1) SATURN_KEYBOARD
363   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x1c) PORT_PLAYER(1) SATURN_KEYBOARD
364   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x1d) PORT_PLAYER(1) SATURN_KEYBOARD
365   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x1e) PORT_PLAYER(1) SATURN_KEYBOARD
366   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x1f) PORT_PLAYER(1) SATURN_KEYBOARD
349367
350368   PORT_START("KEY4") // 0x20 - 0x27
351   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x20) PORT_PLAYER(1) SATURN_KEYBOARD
352   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x21) PORT_PLAYER(1) SATURN_KEYBOARD
353   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x22) PORT_PLAYER(1) SATURN_KEYBOARD
354   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x23) PORT_PLAYER(1) SATURN_KEYBOARD
355   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x24) PORT_PLAYER(1) SATURN_KEYBOARD
356   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x25) PORT_PLAYER(1) SATURN_KEYBOARD
357   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x26) PORT_PLAYER(1) SATURN_KEYBOARD
358   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x27) PORT_PLAYER(1) SATURN_KEYBOARD
369   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x20) PORT_PLAYER(1) SATURN_KEYBOARD
370   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x21) PORT_PLAYER(1) SATURN_KEYBOARD
371   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x22) PORT_PLAYER(1) SATURN_KEYBOARD
372   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x23) PORT_PLAYER(1) SATURN_KEYBOARD
373   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x24) PORT_PLAYER(1) SATURN_KEYBOARD
374   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x25) PORT_PLAYER(1) SATURN_KEYBOARD
375   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x26) PORT_PLAYER(1) SATURN_KEYBOARD
376   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x27) PORT_PLAYER(1) SATURN_KEYBOARD
359377
360378   PORT_START("KEY5") // 0x28 - 0x2f
361   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("5-1") /*PORT_CODE(KEYCODE_F) PORT_CHAR('F')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x28) PORT_PLAYER(1) SATURN_KEYBOARD // another F?
362   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("SPACE") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x29) PORT_PLAYER(1) SATURN_KEYBOARD
363   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x2a) PORT_PLAYER(1) SATURN_KEYBOARD
364   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x2b) PORT_PLAYER(1) SATURN_KEYBOARD
365   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x2c) PORT_PLAYER(1) SATURN_KEYBOARD
366   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x2d) PORT_PLAYER(1) SATURN_KEYBOARD
367   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x2e) PORT_PLAYER(1) SATURN_KEYBOARD
368   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("5-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x2f) PORT_PLAYER(1) SATURN_KEYBOARD
379   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("5-1") /*PORT_CODE(KEYCODE_F) PORT_CHAR('F')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x28) PORT_PLAYER(1) SATURN_KEYBOARD // another F?
380   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("SPACE") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x29) PORT_PLAYER(1) SATURN_KEYBOARD
381   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x2a) PORT_PLAYER(1) SATURN_KEYBOARD
382   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x2b) PORT_PLAYER(1) SATURN_KEYBOARD
383   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x2c) PORT_PLAYER(1) SATURN_KEYBOARD
384   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x2d) PORT_PLAYER(1) SATURN_KEYBOARD
385   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x2e) PORT_PLAYER(1) SATURN_KEYBOARD
386   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("5-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x2f) PORT_PLAYER(1) SATURN_KEYBOARD
369387
370388   PORT_START("KEY6") // 0x30 - 0x37
371   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x30) PORT_PLAYER(1) SATURN_KEYBOARD
372   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x31) PORT_PLAYER(1) SATURN_KEYBOARD
373   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x32) PORT_PLAYER(1) SATURN_KEYBOARD
374   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x33) PORT_PLAYER(1) SATURN_KEYBOARD
375   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x34) PORT_PLAYER(1) SATURN_KEYBOARD
376   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x35) PORT_PLAYER(1) SATURN_KEYBOARD
377   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x36) PORT_PLAYER(1) SATURN_KEYBOARD
378   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x37) PORT_PLAYER(1) SATURN_KEYBOARD
389   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x30) PORT_PLAYER(1) SATURN_KEYBOARD
390   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x31) PORT_PLAYER(1) SATURN_KEYBOARD
391   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x32) PORT_PLAYER(1) SATURN_KEYBOARD
392   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x33) PORT_PLAYER(1) SATURN_KEYBOARD
393   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x34) PORT_PLAYER(1) SATURN_KEYBOARD
394   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x35) PORT_PLAYER(1) SATURN_KEYBOARD
395   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x36) PORT_PLAYER(1) SATURN_KEYBOARD
396   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x37) PORT_PLAYER(1) SATURN_KEYBOARD
379397
380398   PORT_START("KEY7") // 0x38 - 0x3f
381   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x38) PORT_PLAYER(1) SATURN_KEYBOARD
382   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x39) PORT_PLAYER(1) SATURN_KEYBOARD
383   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x3a) PORT_PLAYER(1) SATURN_KEYBOARD
384   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x3b) PORT_PLAYER(1) SATURN_KEYBOARD
385   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x3c) PORT_PLAYER(1) SATURN_KEYBOARD
386   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x3d) PORT_PLAYER(1) SATURN_KEYBOARD
387   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x3e) PORT_PLAYER(1) SATURN_KEYBOARD
388   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x3f) PORT_PLAYER(1) SATURN_KEYBOARD
399   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x38) PORT_PLAYER(1) SATURN_KEYBOARD
400   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x39) PORT_PLAYER(1) SATURN_KEYBOARD
401   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x3a) PORT_PLAYER(1) SATURN_KEYBOARD
402   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x3b) PORT_PLAYER(1) SATURN_KEYBOARD
403   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x3c) PORT_PLAYER(1) SATURN_KEYBOARD
404   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x3d) PORT_PLAYER(1) SATURN_KEYBOARD
405   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x3e) PORT_PLAYER(1) SATURN_KEYBOARD
406   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x3f) PORT_PLAYER(1) SATURN_KEYBOARD
389407
390408   PORT_START("KEY8") // 0x40 - 0x47
391   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x40) PORT_PLAYER(1) SATURN_KEYBOARD
392   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(",") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x41) PORT_PLAYER(1) SATURN_KEYBOARD
393   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x42) PORT_PLAYER(1) SATURN_KEYBOARD
394   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x43) PORT_PLAYER(1) SATURN_KEYBOARD
395   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x44) PORT_PLAYER(1) SATURN_KEYBOARD
396   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x45) PORT_PLAYER(1) SATURN_KEYBOARD
397   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x46) PORT_PLAYER(1) SATURN_KEYBOARD
398   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x47) PORT_PLAYER(1) SATURN_KEYBOARD
409   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x40) PORT_PLAYER(1) SATURN_KEYBOARD
410   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(",") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x41) PORT_PLAYER(1) SATURN_KEYBOARD
411   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x42) PORT_PLAYER(1) SATURN_KEYBOARD
412   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x43) PORT_PLAYER(1) SATURN_KEYBOARD
413   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x44) PORT_PLAYER(1) SATURN_KEYBOARD
414   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x45) PORT_PLAYER(1) SATURN_KEYBOARD
415   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x46) PORT_PLAYER(1) SATURN_KEYBOARD
416   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x47) PORT_PLAYER(1) SATURN_KEYBOARD
399417
400418   PORT_START("KEY9") // 0x48 - 0x4f
401   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x48) PORT_PLAYER(1) SATURN_KEYBOARD
402   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(".") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x49) PORT_PLAYER(1) SATURN_KEYBOARD
403   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("/") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x4a) PORT_PLAYER(1) SATURN_KEYBOARD
404   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x4b) PORT_PLAYER(1) SATURN_KEYBOARD
405   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(";") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x4c) PORT_PLAYER(1) SATURN_KEYBOARD
406   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x4d) PORT_PLAYER(1) SATURN_KEYBOARD
407   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("- / =") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x4e) PORT_PLAYER(1) SATURN_KEYBOARD
408   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x4f) PORT_PLAYER(1) SATURN_KEYBOARD
419   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x48) PORT_PLAYER(1) SATURN_KEYBOARD
420   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(".") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x49) PORT_PLAYER(1) SATURN_KEYBOARD
421   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("/") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x4a) PORT_PLAYER(1) SATURN_KEYBOARD
422   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x4b) PORT_PLAYER(1) SATURN_KEYBOARD
423   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(";") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x4c) PORT_PLAYER(1) SATURN_KEYBOARD
424   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x4d) PORT_PLAYER(1) SATURN_KEYBOARD
425   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("- / =") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x4e) PORT_PLAYER(1) SATURN_KEYBOARD
426   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x4f) PORT_PLAYER(1) SATURN_KEYBOARD
409427
410428   PORT_START("KEYA") // 0x50 - 0x57
411   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x50) PORT_PLAYER(1) SATURN_KEYBOARD
412   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("\xC2\xA5") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x51) PORT_PLAYER(1) SATURN_KEYBOARD
413   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(":") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x52) PORT_PLAYER(1) SATURN_KEYBOARD
414   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x53) PORT_PLAYER(1) SATURN_KEYBOARD
415   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("@") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x54) PORT_PLAYER(1) SATURN_KEYBOARD
416   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("^") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x55) PORT_PLAYER(1) SATURN_KEYBOARD
417   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x56) PORT_PLAYER(1) SATURN_KEYBOARD
418   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x57) PORT_PLAYER(1) SATURN_KEYBOARD
429   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x50) PORT_PLAYER(1) SATURN_KEYBOARD
430   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("\xC2\xA5") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x51) PORT_PLAYER(1) SATURN_KEYBOARD
431   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(":") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x52) PORT_PLAYER(1) SATURN_KEYBOARD
432   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x53) PORT_PLAYER(1) SATURN_KEYBOARD
433   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("@") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x54) PORT_PLAYER(1) SATURN_KEYBOARD
434   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("^") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x55) PORT_PLAYER(1) SATURN_KEYBOARD
435   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x56) PORT_PLAYER(1) SATURN_KEYBOARD
436   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x57) PORT_PLAYER(1) SATURN_KEYBOARD
419437
420438   PORT_START("KEYB") // 0x58 - 0x5f
421   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x58) PORT_PLAYER(1) SATURN_KEYBOARD
422   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x59) PORT_PLAYER(1) SATURN_KEYBOARD
423   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(0x0d) PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x5a) PORT_PLAYER(1) SATURN_KEYBOARD
424   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("[") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x5b) PORT_PLAYER(1) SATURN_KEYBOARD // {
425   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x5c) PORT_PLAYER(1) SATURN_KEYBOARD
426   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("]") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x5d) PORT_PLAYER(1) SATURN_KEYBOARD // }
427   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x5e) PORT_PLAYER(1) SATURN_KEYBOARD
428   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x5f) PORT_PLAYER(1) SATURN_KEYBOARD
439   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x58) PORT_PLAYER(1) SATURN_KEYBOARD
440   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x59) PORT_PLAYER(1) SATURN_KEYBOARD
441   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(0x0d) PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x5a) PORT_PLAYER(1) SATURN_KEYBOARD
442   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("[") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x5b) PORT_PLAYER(1) SATURN_KEYBOARD // {
443   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x5c) PORT_PLAYER(1) SATURN_KEYBOARD
444   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("]") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x5d) PORT_PLAYER(1) SATURN_KEYBOARD // }
445   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x5e) PORT_PLAYER(1) SATURN_KEYBOARD
446   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x5f) PORT_PLAYER(1) SATURN_KEYBOARD
429447
430448   PORT_START("KEYC") // 0x60 - 0x67
431   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x60) PORT_PLAYER(1) SATURN_KEYBOARD
432   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x61) PORT_PLAYER(1) SATURN_KEYBOARD
433   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x62) PORT_PLAYER(1) SATURN_KEYBOARD
434   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x63) PORT_PLAYER(1) SATURN_KEYBOARD
435   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x64) PORT_PLAYER(1) SATURN_KEYBOARD
436   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x65) PORT_PLAYER(1) SATURN_KEYBOARD
437   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("BACKSPACE") PORT_CODE(KEYCODE_BACKSPACE) /* PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x66) PORT_PLAYER(1) SATURN_KEYBOARD
438   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x67) PORT_PLAYER(1) SATURN_KEYBOARD
449   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x60) PORT_PLAYER(1) SATURN_KEYBOARD
450   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x61) PORT_PLAYER(1) SATURN_KEYBOARD
451   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x62) PORT_PLAYER(1) SATURN_KEYBOARD
452   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x63) PORT_PLAYER(1) SATURN_KEYBOARD
453   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x64) PORT_PLAYER(1) SATURN_KEYBOARD
454   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x65) PORT_PLAYER(1) SATURN_KEYBOARD
455   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("BACKSPACE") PORT_CODE(KEYCODE_BACKSPACE) /* PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x66) PORT_PLAYER(1) SATURN_KEYBOARD
456   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x67) PORT_PLAYER(1) SATURN_KEYBOARD
439457
440458   PORT_START("KEYD") // 0x68 - 0x6f
441   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x68) PORT_PLAYER(1) SATURN_KEYBOARD
442   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x69) PORT_PLAYER(1) SATURN_KEYBOARD
443   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x6a) PORT_PLAYER(1) SATURN_KEYBOARD
444   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x6b) PORT_PLAYER(1) SATURN_KEYBOARD
445   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x6c) PORT_PLAYER(1) SATURN_KEYBOARD
446   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x6d) PORT_PLAYER(1) SATURN_KEYBOARD
447   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x6e) PORT_PLAYER(1) SATURN_KEYBOARD
448   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x6f) PORT_PLAYER(1) SATURN_KEYBOARD
459   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x68) PORT_PLAYER(1) SATURN_KEYBOARD
460   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x69) PORT_PLAYER(1) SATURN_KEYBOARD
461   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x6a) PORT_PLAYER(1) SATURN_KEYBOARD
462   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x6b) PORT_PLAYER(1) SATURN_KEYBOARD
463   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x6c) PORT_PLAYER(1) SATURN_KEYBOARD
464   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x6d) PORT_PLAYER(1) SATURN_KEYBOARD
465   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x6e) PORT_PLAYER(1) SATURN_KEYBOARD
466   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x6f) PORT_PLAYER(1) SATURN_KEYBOARD
449467
450468   PORT_START("KEYE") // 0x70 - 0x77
451   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x70) PORT_PLAYER(1) SATURN_KEYBOARD
452   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x71) PORT_PLAYER(1) SATURN_KEYBOARD
453   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x72) PORT_PLAYER(1) SATURN_KEYBOARD
454   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x73) PORT_PLAYER(1) SATURN_KEYBOARD
455   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x74) PORT_PLAYER(1) SATURN_KEYBOARD
456   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x75) PORT_PLAYER(1) SATURN_KEYBOARD
457   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x76) PORT_PLAYER(1) SATURN_KEYBOARD
458   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x77) PORT_PLAYER(1) SATURN_KEYBOARD
469   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x70) PORT_PLAYER(1) SATURN_KEYBOARD
470   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x71) PORT_PLAYER(1) SATURN_KEYBOARD
471   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x72) PORT_PLAYER(1) SATURN_KEYBOARD
472   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x73) PORT_PLAYER(1) SATURN_KEYBOARD
473   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x74) PORT_PLAYER(1) SATURN_KEYBOARD
474   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x75) PORT_PLAYER(1) SATURN_KEYBOARD
475   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x76) PORT_PLAYER(1) SATURN_KEYBOARD
476   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("E-8") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x77) PORT_PLAYER(1) SATURN_KEYBOARD
459477
460478   PORT_START("KEYF") // 0x78 - 0x7f
461   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x78) PORT_PLAYER(1) SATURN_KEYBOARD
462   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x79) PORT_PLAYER(1) SATURN_KEYBOARD
463   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x7a) PORT_PLAYER(1) SATURN_KEYBOARD
464   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x7b) PORT_PLAYER(1) SATURN_KEYBOARD
465   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x7c) PORT_PLAYER(1) SATURN_KEYBOARD
466   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x7d) PORT_PLAYER(1) SATURN_KEYBOARD
467   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x7e) PORT_PLAYER(1) SATURN_KEYBOARD
468   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("ESC") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x7f) PORT_PLAYER(1) SATURN_KEYBOARD //SYSTEM CONFIGURATION
479   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-1") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x78) PORT_PLAYER(1) SATURN_KEYBOARD
480   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-2") /*PORT_CODE(KEYCODE_1) PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x79) PORT_PLAYER(1) SATURN_KEYBOARD
481   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-3") /*PORT_CODE(KEYCODE_2) PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x7a) PORT_PLAYER(1) SATURN_KEYBOARD
482   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-4") /*PORT_CODE(KEYCODE_3) PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x7b) PORT_PLAYER(1) SATURN_KEYBOARD
483   PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-5") /*PORT_CODE(KEYCODE_4) PORT_CHAR('4')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x7c) PORT_PLAYER(1) SATURN_KEYBOARD
484   PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-6") /*PORT_CODE(KEYCODE_5) PORT_CHAR(0xd)*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x7d) PORT_PLAYER(1) SATURN_KEYBOARD
485   PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("F-7") /*PORT_CODE(KEYCODE_6) PORT_CHAR('6')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x7e) PORT_PLAYER(1) SATURN_KEYBOARD
486   PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("ESC") /*PORT_CODE(KEYCODE_7) PORT_CHAR('7')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x7f) PORT_PLAYER(1) SATURN_KEYBOARD //SYSTEM CONFIGURATION
469487
470488   PORT_START("KEYS_1") // special keys
471   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("UP") PORT_CODE(KEYCODE_UP) /*PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x78) PORT_PLAYER(1) SATURN_KEYBOARD
472   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("DOWN") PORT_CODE(KEYCODE_DOWN) /*PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x79) PORT_PLAYER(1) SATURN_KEYBOARD
473   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("LEFT") PORT_CODE(KEYCODE_LEFT) /*PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x7a) PORT_PLAYER(1) SATURN_KEYBOARD
474   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT) /*PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, saturn_state, key_stroke, 0x7b) PORT_PLAYER(1) SATURN_KEYBOARD
489   PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("UP") PORT_CODE(KEYCODE_UP) /*PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x78) PORT_PLAYER(1) SATURN_KEYBOARD
490   PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("DOWN") PORT_CODE(KEYCODE_DOWN) /*PORT_CHAR('1')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x79) PORT_PLAYER(1) SATURN_KEYBOARD
491   PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("LEFT") PORT_CODE(KEYCODE_LEFT) /*PORT_CHAR('2')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x7a) PORT_PLAYER(1) SATURN_KEYBOARD
492   PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT) /*PORT_CHAR('3')*/ PORT_CHANGED_MEMBER(DEVICE_SELF, sat_console_state, key_stroke, 0x7b) PORT_PLAYER(1) SATURN_KEYBOARD
475493
476494   PORT_START("MOUSEB1")
477495   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Pointer Left Button") PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x0f, EQUALS, 0x04)
r21965r21966
549567   MD_PAD_P2(0xf0, 0x60)   // MD 3 buttons pad
550568   MD_PAD_P2(0xf0, 0x70)   // MD 6 buttons pad
551569
552   PORT_START("CART_AREA")
553   PORT_CONFNAME( 0x07, 0x06, "Cart Type" )
554   PORT_CONFSETTING( 0x00, "None" )
555//  PORT_CONFSETTING( 0x01, "4 Mbit backup RAM" )
556//  PORT_CONFSETTING( 0x02, "8 Mbit backup RAM" )
557//  PORT_CONFSETTING( 0x03, "16 Mbit backup RAM" )
558//  PORT_CONFSETTING( 0x04, "32 Mbit backup RAM" )
559   PORT_CONFSETTING( 0x05, "8 Mbit Cart RAM" )
560   PORT_CONFSETTING( 0x06, "32 Mbit Cart RAM" )
561
562570   PORT_START("INPUT_TYPE")
563571   PORT_CONFNAME(0x0f,0x00,"Controller Port 1")
564572   PORT_CONFSETTING(0x00,"Digital Device (standard Saturn pad)")
r21965r21966
599607   DEVCB_DRIVER_LINE_MEMBER(saturn_state, scsp_to_main_irq)
600608};
601609
602MACHINE_START_MEMBER(saturn_state,saturn)
610MACHINE_START_MEMBER(sat_console_state,saturn)
603611{
604612   system_time systime;
605613   machine().base_datetime(systime);
r21965r21966
609617   m_audiocpu = downcast<legacy_cpu_device*>( machine().device<cpu_device>("audiocpu") );
610618
611619   scsp_set_ram_base(machine().device("scsp"), m_sound_ram);
612
620   
621   machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(sat_console_state::saturn_null_ram_r),this), write32_delegate(FUNC(sat_console_state::saturn_null_ram_w),this));
622   machine().device("slave")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(sat_console_state::saturn_null_ram_r),this), write32_delegate(FUNC(sat_console_state::saturn_null_ram_w),this));
623   
624   machine().device("maincpu")->memory().space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff);
625   machine().device("slave")->memory().space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff);
626   
627   if (m_exp)
628   {
629      switch (m_exp->get_cart_type())
630      {
631         case 0x21:   // Battery RAM cart
632         case 0x22:
633         case 0x23:
634         case 0x24:
635            machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_bram), m_exp->m_cart));
636            machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_bram), m_exp->m_cart));
637            machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_bram), m_exp->m_cart));
638            machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_bram), m_exp->m_cart));
639            break;
640         case 0x5a:   // Data RAM cart
641         case 0x5c:
642            machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_dram0), m_exp->m_cart));
643            machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_dram0), m_exp->m_cart));
644            machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_dram1), m_exp->m_cart));
645            machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_dram1), m_exp->m_cart));
646            machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_dram0), m_exp->m_cart));
647            machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_dram0), m_exp->m_cart));
648            machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_dram1), m_exp->m_cart));
649            machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_dram1), m_exp->m_cart));
650            break;
651         case 0:   // ROM cart + mirror
652            machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(device_sat_cart_interface::read_rom), m_exp->m_cart));
653            machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x22000000, 0x24ffffff, read32_delegate(FUNC(device_sat_cart_interface::read_rom), m_exp->m_cart));
654            machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(device_sat_cart_interface::read_rom), m_exp->m_cart));
655            machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x22000000, 0x24ffffff, read32_delegate(FUNC(device_sat_cart_interface::read_rom), m_exp->m_cart));
656            break;
657      }
658   }
659   
613660   // save states
614661   state_save_register_global_pointer(machine(), m_scu_regs, 0x100/4);
615662   state_save_register_global_pointer(machine(), m_scsp_regs,  0x1000/2);
r21965r21966
628675   state_save_register_global(machine(), m_smpc.pmode);
629676   state_save_register_global(machine(), m_smpc.SR);
630677   state_save_register_global_array(machine(), m_smpc.SMEM);
631   state_save_register_global_pointer(machine(), m_cart_dram, 0x400000/4);
632678
633   machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(saturn_state::stvcd_exit), this));
679   machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(sat_console_state::stvcd_exit), this));
634680
635681   m_smpc.rtc_data[0] = DectoBCD(systime.local_time.year /100);
636682   m_smpc.rtc_data[1] = DectoBCD(systime.local_time.year %100);
r21965r21966
640686   m_smpc.rtc_data[5] = DectoBCD(systime.local_time.minute);
641687   m_smpc.rtc_data[6] = DectoBCD(systime.local_time.second);
642688
643   m_stv_rtc_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(saturn_state::stv_rtc_increment),this));
689   m_stv_rtc_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sat_console_state::stv_rtc_increment),this));
644690
645   m68k_set_reset_callback(m_audiocpu, &saturn_state::m68k_reset_callback);
691   m68k_set_reset_callback(m_audiocpu, &sat_console_state::m68k_reset_callback);
646692}
647693
648694/* Die Hard Trilogy tests RAM address 0x25e7ffe bit 2 with Slave during FRT minit irq, in-development tool for breaking execution of it? */
649READ32_MEMBER(saturn_state::saturn_null_ram_r)
695READ32_MEMBER(sat_console_state::saturn_null_ram_r)
650696{
651697   return 0xffffffff;
652698}
653699
654WRITE32_MEMBER(saturn_state::saturn_null_ram_w)
700WRITE32_MEMBER(sat_console_state::saturn_null_ram_w)
655701{
656702}
657703
658READ32_MEMBER(saturn_state::saturn_cart_dram0_r)
704MACHINE_RESET_MEMBER(sat_console_state,saturn)
659705{
660   return m_cart_dram[offset];
661}
662
663WRITE32_MEMBER(saturn_state::saturn_cart_dram0_w)
664{
665   COMBINE_DATA(&m_cart_dram[offset]);
666}
667
668READ32_MEMBER(saturn_state::saturn_cart_dram1_r)
669{
670   return m_cart_dram[offset+0x200000/4];
671}
672
673WRITE32_MEMBER(saturn_state::saturn_cart_dram1_w)
674{
675   COMBINE_DATA(&m_cart_dram[offset+0x200000/4]);
676}
677
678READ32_MEMBER(saturn_state::saturn_cs1_r)
679{
680   UINT32 res;
681
682   res = 0;
683   //res  = m_cart_backupram[offset*4+0] << 24;
684   res |= m_cart_backupram[offset*2+0] << 16;
685   //res |= m_cart_backupram[offset*4+2] << 8;
686   res |= m_cart_backupram[offset*2+1] << 0;
687
688   return res;
689}
690
691WRITE32_MEMBER(saturn_state::saturn_cs1_w)
692{
693   if(ACCESSING_BITS_16_23)
694      m_cart_backupram[offset*2+0] = (data & 0x00ff0000) >> 16;
695   if(ACCESSING_BITS_0_7)
696      m_cart_backupram[offset*2+1] = (data & 0x000000ff) >> 0;
697}
698
699MACHINE_RESET_MEMBER(saturn_state,saturn)
700{
701706   m_scsp_last_line = 0;
702707
703708   // don't let the slave cpu and the 68k go anywhere
r21965r21966
721726
722727   stvcd_reset();
723728
724   m_cart_type = ioport("CART_AREA")->read() & 7;
725
726   machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(saturn_state::saturn_null_ram_r),this), write32_delegate(FUNC(saturn_state::saturn_null_ram_w),this));
727   machine().device("slave")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(saturn_state::saturn_null_ram_r),this), write32_delegate(FUNC(saturn_state::saturn_null_ram_w),this));
728
729   if(m_cart_type == 5)
730   {
731      //  AM_RANGE(0x02400000, 0x027fffff) AM_RAM //cart RAM area, dynamically allocated
732      machine().device("maincpu")->memory().space(AS_PROGRAM).nop_readwrite(0x02400000, 0x027fffff);
733      machine().device("slave")->memory().space(AS_PROGRAM).nop_readwrite(0x02400000, 0x027fffff);
734
735      machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x0247ffff, read32_delegate(FUNC(saturn_state::saturn_cart_dram0_r),this), write32_delegate(FUNC(saturn_state::saturn_cart_dram0_w),this));
736      machine().device("slave")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x0247ffff, read32_delegate(FUNC(saturn_state::saturn_cart_dram0_r),this), write32_delegate(FUNC(saturn_state::saturn_cart_dram0_w),this));
737      machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02600000, 0x0267ffff, read32_delegate(FUNC(saturn_state::saturn_cart_dram1_r),this), write32_delegate(FUNC(saturn_state::saturn_cart_dram1_w),this));
738      machine().device("slave")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02600000, 0x0267ffff, read32_delegate(FUNC(saturn_state::saturn_cart_dram1_r),this), write32_delegate(FUNC(saturn_state::saturn_cart_dram1_w),this));
739   }
740
741   if(m_cart_type == 6)
742   {
743      //  AM_RANGE(0x02400000, 0x027fffff) AM_RAM //cart RAM area, dynamically allocated
744      machine().device("maincpu")->memory().space(AS_PROGRAM).nop_readwrite(0x02400000, 0x027fffff);
745      machine().device("slave")->memory().space(AS_PROGRAM).nop_readwrite(0x02400000, 0x027fffff);
746
747      machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(saturn_state::saturn_cart_dram0_r),this), write32_delegate(FUNC(saturn_state::saturn_cart_dram0_w),this));
748      machine().device("slave")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(saturn_state::saturn_cart_dram0_r),this), write32_delegate(FUNC(saturn_state::saturn_cart_dram0_w),this));
749      machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(saturn_state::saturn_cart_dram1_r),this), write32_delegate(FUNC(saturn_state::saturn_cart_dram1_w),this));
750      machine().device("slave")->memory().space(AS_PROGRAM).install_readwrite_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(saturn_state::saturn_cart_dram1_r),this), write32_delegate(FUNC(saturn_state::saturn_cart_dram1_w),this));
751   }
752
753   machine().device("maincpu")->memory().space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff);
754   machine().device("slave")->memory().space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff);
755
756   if(m_cart_type > 0 && m_cart_type < 5)
757   {
758   //  AM_RANGE(0x04000000, 0x047fffff) AM_RAM //backup RAM area, dynamically allocated
759      UINT32 mask;
760      mask = 0x7fffff >> (4-m_cart_type);
761      //mask = 0x7fffff >> 4-4 = 0x7fffff 32mbit
762      //mask = 0x7fffff >> 4-3 = 0x3fffff 16mbit
763      //mask = 0x7fffff >> 4-2 = 0x1fffff 8mbit
764      //mask = 0x7fffff >> 4-1 = 0x0fffff 4mbit
765      machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x04000000, 0x04000000 | mask, read32_delegate(FUNC(saturn_state::saturn_cs1_r),this), write32_delegate(FUNC(saturn_state::saturn_cs1_w),this));
766      machine().device("slave")->memory().space(AS_PROGRAM).install_readwrite_handler(0x04000000, 0x04000000 | mask, read32_delegate(FUNC(saturn_state::saturn_cs1_r),this), write32_delegate(FUNC(saturn_state::saturn_cs1_w),this));
767   }
768
769729   m_vdp2.old_crmd = -1;
770730   m_vdp2.old_tvmd = -1;
771731
r21965r21966
780740};
781741
782742
743static MACHINE_CONFIG_START( saturn, sat_console_state )
783744
784
785DEVICE_IMAGE_LOAD_MEMBER( saturn_state, sat_cart )
786{
787   UINT8 *ROM = image.device().memregion(":maincpu")->base()+0x080000;
788   UINT32 length;
789
790   if (image.software_entry() != NULL)
791   {
792      length = image.get_software_region_length("cart");
793      UINT8* imagex =  image.get_software_region("cart");
794
795      memcpy(ROM, imagex, length);
796   }
797   else
798   {
799      length = image.fread( ROM, 0x400000);
800   }
801
802   // fix endianness....
803   for (int i=0;i<length;i+=4)
804   {
805      UINT8 tempa = ROM[i+0];
806      UINT8 tempb = ROM[i+1];
807      ROM[i+1] = ROM[i+2];
808      ROM[i+0] = ROM[i+3];
809      ROM[i+3] = tempa;
810      ROM[i+2] = tempb;
811   }
812
813   return IMAGE_INIT_PASS;
814}
815
816static MACHINE_CONFIG_START( saturn, saturn_state )
817
818745   /* basic machine hardware */
819746   MCFG_CPU_ADD("maincpu", SH2, MASTER_CLOCK_352/2) // 28.6364 MHz
820747   MCFG_CPU_PROGRAM_MAP(saturn_mem)
821748   MCFG_CPU_CONFIG(sh2_conf_master)
822   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", saturn_state, saturn_scanline, "screen", 0, 1)
749   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sat_console_state, saturn_scanline, "screen", 0, 1)
823750
824751   MCFG_CPU_ADD("slave", SH2, MASTER_CLOCK_352/2) // 28.6364 MHz
825752   MCFG_CPU_PROGRAM_MAP(saturn_mem)
826753   MCFG_CPU_CONFIG(sh2_conf_slave)
827   MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_scantimer", saturn_state, saturn_slave_scanline, "screen", 0, 1)
754   MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_scantimer", sat_console_state, saturn_slave_scanline, "screen", 0, 1)
828755
829756   MCFG_CPU_ADD("audiocpu", M68000, 11289600) //256 x 44100 Hz = 11.2896 MHz
830757   MCFG_CPU_PROGRAM_MAP(sound_mem)
831758
832   MCFG_MACHINE_START_OVERRIDE(saturn_state,saturn)
833   MCFG_MACHINE_RESET_OVERRIDE(saturn_state,saturn)
759   MCFG_MACHINE_START_OVERRIDE(sat_console_state,saturn)
760   MCFG_MACHINE_RESET_OVERRIDE(sat_console_state,saturn)
834761
835762   MCFG_NVRAM_HANDLER(saturn)
836763
837   MCFG_TIMER_DRIVER_ADD("sector_timer", saturn_state, stv_sector_cb)
838   MCFG_TIMER_DRIVER_ADD("sh1_cmd", saturn_state, stv_sh1_sim)
764   MCFG_TIMER_DRIVER_ADD("sector_timer", sat_console_state, stv_sector_cb)
765   MCFG_TIMER_DRIVER_ADD("sh1_cmd", sat_console_state, stv_sh1_sim)
839766
840767   /* video hardware */
841768   MCFG_SCREEN_ADD("screen", RASTER)
842769   MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 427, 0, 320, 263, 0, 224)
843   MCFG_SCREEN_UPDATE_DRIVER(saturn_state, screen_update_stv_vdp2)
770   MCFG_SCREEN_UPDATE_DRIVER(sat_console_state, screen_update_stv_vdp2)
844771   MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness.
845772
846773   MCFG_GFXDECODE(stv)
847774
848   MCFG_VIDEO_START_OVERRIDE(saturn_state,stv_vdp2)
775   MCFG_VIDEO_START_OVERRIDE(sat_console_state,stv_vdp2)
849776
850777   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
851778
r21965r21966
859786   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
860787MACHINE_CONFIG_END
861788
789static SLOT_INTERFACE_START(saturn_cart)
790   SLOT_INTERFACE_INTERNAL("rom", SATURN_ROM)
791   SLOT_INTERFACE("ram8",   SATURN_DRAM_8MB)
792   SLOT_INTERFACE("ram32",  SATURN_DRAM_32MB)
793   SLOT_INTERFACE("bram4",  SATURN_BRAM_4MB)
794   SLOT_INTERFACE("bram8",  SATURN_BRAM_8MB)
795   SLOT_INTERFACE("bram16", SATURN_BRAM_16MB)
796   SLOT_INTERFACE("bram32", SATURN_BRAM_32MB)
797SLOT_INTERFACE_END
798
799
862800MACHINE_CONFIG_DERIVED( saturnus, saturn )
863801   MCFG_CDROM_ADD( "cdrom",saturn_cdrom )
864802   MCFG_SOFTWARE_LIST_ADD("cd_list","saturn")
865803   MCFG_SOFTWARE_LIST_FILTER("cd_list","NTSC-U")
866804
867   MCFG_CARTSLOT_ADD("cart")
868   MCFG_CARTSLOT_INTERFACE("sat_cart")
869   MCFG_CARTSLOT_LOAD(saturn_state, sat_cart)
805   MCFG_SATURN_CARTRIDGE_ADD("exp", saturn_cart, NULL, NULL)
870806   MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
871807
872808MACHINE_CONFIG_END
r21965r21966
876812   MCFG_SOFTWARE_LIST_ADD("cd_list","saturn")
877813   MCFG_SOFTWARE_LIST_FILTER("cd_list","PAL")
878814
879   MCFG_CARTSLOT_ADD("cart")
880   MCFG_CARTSLOT_INTERFACE("sat_cart")
881   MCFG_CARTSLOT_LOAD(saturn_state, sat_cart)
815   MCFG_SATURN_CARTRIDGE_ADD("exp", saturn_cart, NULL, NULL)
882816   MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
883817
884818MACHINE_CONFIG_END
r21965r21966
888822   MCFG_SOFTWARE_LIST_ADD("cd_list","saturn")
889823   MCFG_SOFTWARE_LIST_FILTER("cd_list","NTSC-J")
890824
891   MCFG_CARTSLOT_ADD("cart")
892   MCFG_CARTSLOT_INTERFACE("sat_cart")
893   MCFG_CARTSLOT_LOAD(saturn_state, sat_cart)
825   MCFG_SATURN_CARTRIDGE_ADD("exp", saturn_cart, NULL, NULL)
894826   MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart")
895827
896828MACHINE_CONFIG_END
897829
898830
899void saturn_state::saturn_init_driver(int rgn)
831void sat_console_state::saturn_init_driver(int rgn)
900832{
901833   m_saturn_region = rgn;
902834   m_vdp2.pal = (rgn == 12) ? 1 : 0;
r21965r21966
913845
914846   m_scu_regs = auto_alloc_array_clear(machine(), UINT32, 0x100/4);
915847   m_scsp_regs = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
916   m_cart_dram = auto_alloc_array_clear(machine(), UINT32, 0x400000/4);
917848   m_backupram = auto_alloc_array_clear(machine(), UINT8, 0x8000);
918   m_cart_backupram = auto_alloc_array_clear(machine(), UINT8, 0x400000);
919849}
920850
921DRIVER_INIT_MEMBER(saturn_state,saturnus)
851DRIVER_INIT_MEMBER(sat_console_state,saturnus)
922852{
923853   saturn_init_driver(4);
924854}
925855
926DRIVER_INIT_MEMBER(saturn_state,saturneu)
856DRIVER_INIT_MEMBER(sat_console_state,saturneu)
927857{
928858   saturn_init_driver(12);
929859}
930860
931DRIVER_INIT_MEMBER(saturn_state,saturnjp)
861DRIVER_INIT_MEMBER(sat_console_state,saturnjp)
932862{
933863   saturn_init_driver(1);
934864}
r21965r21966
943873   ROMX_LOAD("sega1003.bin", 0x00000000, 0x00080000, CRC(b3c63c25) SHA1(7b23b53d62de0f29a23e423d0fe751dfb469c2fa), ROM_BIOS(2))
944874   ROM_SYSTEM_BIOS(2, "100", "Japan v1.00 (940921)")
945875   ROMX_LOAD("sega_100.bin", 0x00000000, 0x00080000, CRC(2aba43c2) SHA1(2b8cb4f87580683eb4d760e4ed210813d667f0a2), ROM_BIOS(3))
946//  ROM_CART_LOAD("cart", 0x080000, 0x400000, ROM_NOMIRROR | ROM_OPTIONAL)
947876   ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */
948877   ROM_COPY( "maincpu",0,0,0x080000)
949878ROM_END
r21965r21966
956885   ROMX_LOAD("mpr-17933.bin", 0x00000000, 0x00080000, CRC(4afcf0fa) SHA1(faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3), ROM_BIOS(1))
957886   ROM_SYSTEM_BIOS(1, "100a", "Overseas v1.00a (941115)")
958887   ROMX_LOAD("sega_100a.bin", 0x00000000, 0x00080000, CRC(f90f0089) SHA1(3bb41feb82838ab9a35601ac666de5aacfd17a58), ROM_BIOS(2))
959//  ROM_CART_LOAD("cart", 0x080000, 0x400000, ROM_NOMIRROR | ROM_OPTIONAL)
960888   ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */
961889   ROM_COPY( "maincpu",0,0,0x080000)
962890ROM_END
r21965r21966
968896   ROMX_LOAD("mpr-17933.bin", 0x00000000, 0x00080000, CRC(4afcf0fa) SHA1(faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3), ROM_BIOS(1))
969897   ROM_SYSTEM_BIOS(1, "100a", "Overseas v1.00a (941115)")
970898   ROMX_LOAD("sega_100a.bin", 0x00000000, 0x00080000, CRC(f90f0089) SHA1(3bb41feb82838ab9a35601ac666de5aacfd17a58), ROM_BIOS(2))
971//  ROM_CART_LOAD("cart", 0x080000, 0x400000, ROM_NOMIRROR | ROM_OPTIONAL)
972899   ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */
973900   ROM_COPY( "maincpu",0,0,0x080000)
974901ROM_END
r21965r21966
976903ROM_START(vsaturn)
977904   ROM_REGION( 0x480000, "maincpu", ROMREGION_ERASEFF ) /* SH2 code */
978905   ROM_LOAD("vsaturn.bin", 0x00000000, 0x00080000, CRC(e4d61811) SHA1(4154e11959f3d5639b11d7902b3a393a99fb5776))
979//  ROM_CART_LOAD("cart", 0x080000, 0x400000, ROM_NOMIRROR | ROM_OPTIONAL)
980906   ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */
981907   ROM_COPY( "maincpu",0,0,0x080000)
982908ROM_END
r21965r21966
984910ROM_START(hisaturn)
985911   ROM_REGION( 0x480000, "maincpu", ROMREGION_ERASEFF ) /* SH2 code */
986912   ROM_LOAD("hisaturn.bin", 0x00000000, 0x00080000, CRC(721e1b60) SHA1(49d8493008fa715ca0c94d99817a5439d6f2c796))
987//  ROM_CART_LOAD("cart", 0x080000, 0x400000, ROM_NOMIRROR | ROM_OPTIONAL)
988913   ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */
989914   ROM_COPY( "maincpu",0,0,0x080000)
990915ROM_END
991916
992917/*    YEAR  NAME        PARENT  COMPAT  MACHINE INPUT   INIT        COMPANY     FULLNAME            FLAGS */
993CONS( 1994, saturn,     0,      0,      saturnus, saturn, saturn_state, saturnus,   "Sega",     "Saturn (USA)",     GAME_NOT_WORKING )
994CONS( 1994, saturnjp,   saturn, 0,      saturnjp, saturn, saturn_state, saturnjp,   "Sega",     "Saturn (Japan)",   GAME_NOT_WORKING )
995CONS( 1994, saturneu,   saturn, 0,      saturneu, saturn, saturn_state, saturneu,   "Sega",     "Saturn (PAL)",     GAME_NOT_WORKING )
996CONS( 1995, vsaturn,    saturn, 0,      saturnjp, saturn, saturn_state, saturnjp,   "JVC",      "V-Saturn",         GAME_NOT_WORKING )
997CONS( 1995, hisaturn,   saturn, 0,      saturnjp, saturn, saturn_state, saturnjp,   "Hitachi",  "HiSaturn",         GAME_NOT_WORKING )
918CONS( 1994, saturn,     0,      0,      saturnus, saturn, sat_console_state, saturnus,   "Sega",     "Saturn (USA)",     GAME_NOT_WORKING )
919CONS( 1994, saturnjp,   saturn, 0,      saturnjp, saturn, sat_console_state, saturnjp,   "Sega",     "Saturn (Japan)",   GAME_NOT_WORKING )
920CONS( 1994, saturneu,   saturn, 0,      saturneu, saturn, sat_console_state, saturneu,   "Sega",     "Saturn (PAL)",     GAME_NOT_WORKING )
921CONS( 1995, vsaturn,    saturn, 0,      saturnjp, saturn, sat_console_state, saturnjp,   "JVC",      "V-Saturn",         GAME_NOT_WORKING )
922CONS( 1995, hisaturn,   saturn, 0,      saturnjp, saturn, sat_console_state, saturnjp,   "Hitachi",  "HiSaturn",         GAME_NOT_WORKING )
trunk/src/mess/machine/sat_slot.c
r0r21966
1/***********************************************************************************************************
2
3
4    Saturn cart emulation
5    (through slot devices)
6
7    Despite the system having a single cart slot, 3 different kinds of cart can be inserted and
8    different memory areas are exposed to each of them
9    * ROM carts are accessed in range 0x02000000-0x023fffff and 0x22000000-0x24ffffff of both CPUs
10    * Data RAM carts are accessed in range 0x02400000-0x027fffff of both CPUs (each DRAM chip is
11     mapped independently, the 1st at 0x2400000, the second at 0x2600000)
12    * Battery RAM carts are accessed in range 0x04000000-0x047fffff of both CPUs
13 
14    It is not clear what happens to accesses beyond the cart size (open bus? mirror of cart data?),
15    e.g. if you have a 16Mbit battery cart inserted and the system tries to read/write above 0x04400000,
16    so for the moment the whole range is mapped and an error message is printed for out-of-bounds
17    accesses
18 
19 
20 ***********************************************************************************************************/
21
22
23#include "emu.h"
24#include "machine/sat_slot.h"
25
26//**************************************************************************
27//  GLOBAL VARIABLES
28//**************************************************************************
29
30const device_type SATURN_CART_SLOT = &device_creator<sat_cart_slot_device>;
31
32
33//-------------------------------------------------
34//  device_sat_cart_interface - constructor
35//-------------------------------------------------
36
37device_sat_cart_interface::device_sat_cart_interface(const machine_config &mconfig, device_t &device)
38   : device_slot_card_interface(mconfig, device),
39      m_rom(NULL),
40      m_ext_dram0(NULL),
41      m_ext_dram1(NULL),
42      m_ext_bram(NULL),
43      m_rom_size(0),
44      m_ext_dram0_size(0),
45      m_ext_dram1_size(0),
46      m_ext_bram_size(0)
47{
48}
49
50
51//-------------------------------------------------
52//  ~device_sat_cart_interface - destructor
53//-------------------------------------------------
54
55device_sat_cart_interface::~device_sat_cart_interface()
56{
57}
58
59//-------------------------------------------------
60//  rom_alloc - alloc the space for the cart
61//-------------------------------------------------
62
63void device_sat_cart_interface::rom_alloc(running_machine &machine, UINT32 size)
64{
65   if (m_rom == NULL)
66   {
67      m_rom = auto_alloc_array_clear(machine, UINT32, size/4);
68      m_rom_size = size;
69   }
70}
71
72
73
74//**************************************************************************
75//  LIVE DEVICE
76//**************************************************************************
77
78//-------------------------------------------------
79//  sat_cart_slot_device - constructor
80//-------------------------------------------------
81sat_cart_slot_device::sat_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
82                  device_t(mconfig, SATURN_CART_SLOT, "Saturn Cartridge Slot", tag, owner, clock),
83                  device_image_interface(mconfig, *this),
84                  device_slot_interface(mconfig, *this)
85{
86}
87
88
89//-------------------------------------------------
90//  sat_cart_slot_device - destructor
91//-------------------------------------------------
92
93sat_cart_slot_device::~sat_cart_slot_device()
94{
95}
96
97//-------------------------------------------------
98//  device_start - device-specific startup
99//-------------------------------------------------
100
101void sat_cart_slot_device::device_start()
102{
103   m_cart = dynamic_cast<device_sat_cart_interface *>(get_card_device());
104}
105
106//-------------------------------------------------
107//  device_config_complete - perform any
108//  operations now that the configuration is
109//  complete
110//-------------------------------------------------
111
112void sat_cart_slot_device::device_config_complete()
113{
114   // set brief and instance name
115   update_names();
116}
117
118
119
120/*-------------------------------------------------
121 call load
122 -------------------------------------------------*/
123
124
125bool sat_cart_slot_device::call_load()
126{
127   if (m_cart)
128   {
129      UINT32 *ROM;
130      UINT32 len;
131     
132      if (software_entry() != NULL)
133         len = get_software_region_length("cart");
134      else
135         len = length();
136
137      m_cart->rom_alloc(machine(), len);
138      ROM = m_cart->get_rom_base();
139
140      if (software_entry() != NULL)
141         memcpy(ROM, get_software_region("cart"), len);
142      else
143         fread(ROM, len);
144
145      // fix endianness....
146//      for (int i = 0; i < len; i += 4)
147//      {
148//         UINT8 tempa = ROM[i+0];
149//         UINT8 tempb = ROM[i+1];
150//         ROM[i+1] = ROM[i+2];
151//         ROM[i+0] = ROM[i+3];
152//         ROM[i+3] = tempa;
153//         ROM[i+2] = tempb;
154//      }
155      return IMAGE_INIT_PASS;
156   }
157
158   return IMAGE_INIT_PASS;
159}
160
161
162/*-------------------------------------------------
163 call_unload
164 -------------------------------------------------*/
165
166void sat_cart_slot_device::call_unload()
167{
168}
169
170
171
172/*-------------------------------------------------
173 call softlist load
174 -------------------------------------------------*/
175
176bool sat_cart_slot_device::call_softlist_load(char *swlist, char *swname, rom_entry *start_entry)
177{
178   load_software_part_region(this, swlist, swname, start_entry );
179   return TRUE;
180}
181
182
183/*-------------------------------------------------
184 get default card software
185 -------------------------------------------------*/
186
187const char * sat_cart_slot_device::get_default_card_software(const machine_config &config, emu_options &options)
188{
189   return software_get_default_slot(config, options, this, "rom");
190}
191
192
193
194int sat_cart_slot_device::get_cart_type()
195{
196   if (m_cart)
197      return m_cart->get_cart_type();
198
199   return 0xff;
200}
201
202
203
204/*-------------------------------------------------
205 read
206 -------------------------------------------------*/
207
208READ32_MEMBER(sat_cart_slot_device::read_rom)
209{
210   if (m_cart)
211      return m_cart->read_rom(space, offset);
212   else
213      return 0xffffffff;
214}
215
216READ32_MEMBER(sat_cart_slot_device::read_ext_dram0)
217{
218   if (m_cart)
219      return m_cart->read_ext_dram0(space, offset);
220   else
221      return 0xffffffff;
222}
223
224READ32_MEMBER(sat_cart_slot_device::read_ext_dram1)
225{
226   if (m_cart)
227      return m_cart->read_ext_dram1(space, offset);
228   else
229      return 0xffffffff;
230}
231
232READ32_MEMBER(sat_cart_slot_device::read_ext_bram)
233{
234   if (m_cart)
235      return m_cart->read_ext_bram(space, offset);
236   else
237      return 0xffffffff;
238}
239
240#if 0
241READ32_MEMBER(sat_cart_slot_device::read_ext_bram)
242{
243   if (m_cart)
244   {
245      return (m_cart->read_ext_bram(space, offset * 2) << 16)
246               | m_cart->read_ext_bram(space, offset * 2 + 1);
247   }
248   else
249      return 0xffffffff;
250}
251#endif
252
253/*-------------------------------------------------
254 write
255 -------------------------------------------------*/
256
257WRITE32_MEMBER(sat_cart_slot_device::write_ext_dram0)
258{
259   if (m_cart)
260      m_cart->write_ext_dram0(space, offset, data);
261}
262
263WRITE32_MEMBER(sat_cart_slot_device::write_ext_dram1)
264{
265   if (m_cart)
266      m_cart->write_ext_dram1(space, offset, data);
267}
268
269WRITE32_MEMBER(sat_cart_slot_device::write_ext_bram)
270{
271   if (m_cart)
272      m_cart->write_ext_bram(space, offset, data);
273}
274
275#if 0
276WRITE32_MEMBER(sat_cart_slot_device::write_ext_bram)
277{
278   if (m_cart)
279   {
280      if (ACCESSING_BITS_16_23)
281         m_cart->write_ext_bram(space, offset * 2 + 0, (data & 0x00ff0000) >> 16);
282      if (ACCESSING_BITS_0_7)
283         m_cart->write_ext_bram(space, offset * 2 + 1, (data & 0x000000ff) >> 0);
284   }
285}
286#endif
Property changes on: trunk/src/mess/machine/sat_slot.c
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mess/machine/sat_slot.h
r0r21966
1#ifndef __SAT_SLOT_H
2#define __SAT_SLOT_H
3
4/***************************************************************************
5 TYPE DEFINITIONS
6 ***************************************************************************/
7
8
9// ======================> device_sat_cart_interface
10
11class device_sat_cart_interface : public device_slot_card_interface
12{
13public:
14   // construction/destruction
15   device_sat_cart_interface(const machine_config &mconfig, device_t &device);
16   virtual ~device_sat_cart_interface();
17
18   // reading from ROM
19   virtual DECLARE_READ32_MEMBER(read_rom) { return 0xffffffff; }
20   // reading and writing to Extended DRAM chips
21   virtual DECLARE_READ32_MEMBER(read_ext_dram0) { return 0xffffffff; }
22   virtual DECLARE_WRITE32_MEMBER(write_ext_dram0) {}
23   virtual DECLARE_READ32_MEMBER(read_ext_dram1) { return 0xffffffff; }
24   virtual DECLARE_WRITE32_MEMBER(write_ext_dram1) {}
25   // reading and writing to Extended BRAM chip
26   virtual DECLARE_READ32_MEMBER(read_ext_bram) { return 0xffffffff; }
27   virtual DECLARE_WRITE32_MEMBER(write_ext_bram) {}
28#if 0
29   virtual DECLARE_READ8_MEMBER(read_ext_bram) { return 0xff; }
30   virtual DECLARE_WRITE8_MEMBER(write_ext_bram) {}
31#endif
32   
33   virtual int get_cart_type() { return m_cart_type; };
34   
35   
36   void rom_alloc(running_machine &machine, UINT32 size);
37   UINT32* get_rom_base() { return m_rom; }
38   UINT32* get_ext_dram0_base() { return m_ext_dram0; }
39   UINT32* get_ext_dram1_base() { return m_ext_dram1; }
40   UINT8*  get_ext_bram_base() { return m_ext_bram; }
41   UINT32  get_rom_size() { return m_rom_size; }
42   UINT32  get_ext_dram0_size() { return m_ext_dram0_size; }
43   UINT32  get_ext_dram1_size() { return m_ext_dram1_size; }
44   UINT32  get_ext_bram_size() { return m_ext_bram_size; }
45
46//protected:
47   int m_cart_type;
48
49   // internal state
50   UINT32  *m_rom;
51   UINT32  *m_ext_dram0;
52   UINT32  *m_ext_dram1;
53   UINT8   *m_ext_bram;
54   UINT32  m_rom_size;
55   UINT32  m_ext_dram0_size;
56   UINT32  m_ext_dram1_size;
57   UINT32  m_ext_bram_size;
58};
59
60
61// ======================> sat_cart_slot_device
62
63class sat_cart_slot_device : public device_t,
64                      public device_image_interface,
65                      public device_slot_interface
66{
67public:
68   // construction/destruction
69   sat_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
70   virtual ~sat_cart_slot_device();
71
72   // device-level overrides
73   virtual void device_start();
74   virtual void device_config_complete();
75
76   // image-level overrides
77   virtual bool call_load();
78   virtual void call_unload();
79   virtual bool call_softlist_load(char *swlist, char *swname, rom_entry *start_entry);
80
81   int get_cart_type();
82
83   virtual iodevice_t image_type() const { return IO_CARTSLOT; }
84   virtual bool is_readable()  const { return 1; }
85   virtual bool is_writeable() const { return 0; }
86   virtual bool is_creatable() const { return 0; }
87   virtual bool must_be_loaded() const { return 0; }
88   virtual bool is_reset_on_load() const { return 1; }
89   virtual const option_guide *create_option_guide() const { return NULL; }
90   virtual const char *image_interface() const { return "sat_cart"; }
91   virtual const char *file_extensions() const { return "bin"; }
92
93   // slot interface overrides
94   virtual const char * get_default_card_software(const machine_config &config, emu_options &options);
95
96   // reading and writing
97   virtual DECLARE_READ32_MEMBER(read_rom);
98   virtual DECLARE_READ32_MEMBER(read_ext_dram0);
99   virtual DECLARE_WRITE32_MEMBER(write_ext_dram0);
100   virtual DECLARE_READ32_MEMBER(read_ext_dram1);
101   virtual DECLARE_WRITE32_MEMBER(write_ext_dram1);
102   virtual DECLARE_READ32_MEMBER(read_ext_bram);
103   virtual DECLARE_WRITE32_MEMBER(write_ext_bram);
104   
105//protected:
106   device_sat_cart_interface*       m_cart;
107};
108
109
110// device type definition
111extern const device_type SATURN_CART_SLOT;
112
113
114/***************************************************************************
115 DEVICE CONFIGURATION MACROS
116 ***************************************************************************/
117
118#define MCFG_SATURN_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot,_def_inp) \
119   MCFG_DEVICE_ADD(_tag, SATURN_CART_SLOT, 0)   \
120   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false)
121
122
123#endif
Property changes on: trunk/src/mess/machine/sat_slot.h
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mess/machine/sat_rom.c
r0r21966
1/***********************************************************************************************************
2
3 Saturn ROM cart emulation
4
5 ***********************************************************************************************************/
6
7
8#include "emu.h"
9#include "machine/sat_rom.h"
10
11
12//-------------------------------------------------
13//  saturn_rom_device - constructor
14//-------------------------------------------------
15
16const device_type SATURN_ROM = &device_creator<saturn_rom_device>;
17
18
19saturn_rom_device::saturn_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock)
20               : device_t(mconfig, type, name, tag, owner, clock),
21                  device_sat_cart_interface( mconfig, *this )
22{
23}
24
25saturn_rom_device::saturn_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
26               : device_t(mconfig, SATURN_ROM, "Saturn ROM Carts", tag, owner, clock),
27                  device_sat_cart_interface( mconfig, *this )
28{
29   m_cart_type = 0; // actually not clear if ROM carts have a type ID like DRAM/BRAM carts, we use 0 to install handlers
30}
31
32
33//-------------------------------------------------
34//  mapper specific start/reset
35//-------------------------------------------------
36
37void saturn_rom_device::device_start()
38{
39}
40
41void saturn_rom_device::device_reset()
42{
43}
44
45
46/*-------------------------------------------------
47 mapper specific handlers
48 -------------------------------------------------*/
49
50READ32_MEMBER(saturn_rom_device::read_rom)
51{
52   return m_rom[offset & (m_rom_size - 1)];
53}
54
Property changes on: trunk/src/mess/machine/sat_rom.c
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mess/machine/sat_rom.h
r0r21966
1#ifndef __SAT_ROM_H
2#define __SAT_ROM_H
3
4#include "machine/sat_slot.h"
5
6
7// ======================> saturn_rom_device
8
9class saturn_rom_device : public device_t,
10                  public device_sat_cart_interface
11{
12public:
13   // construction/destruction
14   saturn_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
15   saturn_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
16
17   virtual int get_cart_type() { return 0xff; }
18
19   // device-level overrides
20   virtual void device_start();
21   virtual void device_reset();
22   virtual void device_config_complete() { m_shortname = "sat_rom"; }
23   
24   // reading and writing
25   virtual DECLARE_READ32_MEMBER(read_rom);
26};
27
28
29
30// device type definition
31extern const device_type SATURN_ROM;
32
33
34#endif
Property changes on: trunk/src/mess/machine/sat_rom.h
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mess/machine/sat_bram.c
r0r21966
1/***********************************************************************************************************
2
3 Saturn Battery RAM cart emulation
4
5 ***********************************************************************************************************/
6
7
8#include "emu.h"
9#include "machine/sat_bram.h"
10
11
12//-------------------------------------------------
13//  constructor
14//-------------------------------------------------
15
16const device_type SATURN_BRAM_4MB = &device_creator<saturn_bram4mb_device>;
17const device_type SATURN_BRAM_8MB = &device_creator<saturn_bram8mb_device>;
18const device_type SATURN_BRAM_16MB = &device_creator<saturn_bram16mb_device>;
19const device_type SATURN_BRAM_32MB = &device_creator<saturn_bram32mb_device>;
20
21
22saturn_bram_device::saturn_bram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 size)
23               : device_t(mconfig, type, name, tag, owner, clock),
24                  device_sat_cart_interface( mconfig, *this ),
25                  device_nvram_interface(mconfig, *this),
26                  m_size(size)
27{
28}
29
30saturn_bram4mb_device::saturn_bram4mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
31               : saturn_bram_device(mconfig, SATURN_BRAM_4MB, "Saturn Battery RAM 4Mbit Cart", tag, owner, clock, 0x80000)
32{
33   m_cart_type = 0x21;
34}
35
36saturn_bram8mb_device::saturn_bram8mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
37               : saturn_bram_device(mconfig, SATURN_BRAM_8MB, "Saturn Battery RAM 8Mbit Cart", tag, owner, clock, 0x100000)
38{
39   m_cart_type = 0x22;
40}
41
42saturn_bram16mb_device::saturn_bram16mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
43               : saturn_bram_device(mconfig, SATURN_BRAM_16MB, "Saturn Battery RAM 16Mbit Cart", tag, owner, clock, 0x200000)
44{
45   m_cart_type = 0x23;
46}
47
48saturn_bram32mb_device::saturn_bram32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
49               : saturn_bram_device(mconfig, SATURN_BRAM_32MB, "Saturn Battery RAM 32Mbit Cart", tag, owner, clock, 0x400000)
50{
51   m_cart_type = 0x24;
52}
53
54
55//-------------------------------------------------
56//  start/reset
57//-------------------------------------------------
58
59void saturn_bram_device::device_start()
60{
61   // TODO: only allocate the real amount of RAM
62   m_ext_bram = auto_alloc_array_clear(machine(), UINT8, 0x400000);
63   m_ext_bram_size = 0x400000;
64   save_pointer(NAME(m_ext_bram), 0x400000);
65}
66
67void saturn_bram_device::device_reset()
68{
69}
70
71
72/*-------------------------------------------------
73 IO handlers
74 -------------------------------------------------*/
75
76// Battery RAM: single chip
77
78READ32_MEMBER(saturn_bram_device::read_ext_bram)
79{
80   if (offset < m_size/2)
81      return (m_ext_bram[offset * 2] << 16) | m_ext_bram[offset * 2 + 1];
82   else
83   {
84      mame_printf_error("Battery RAM read beyond its boundary! offs: %X\n", offset);
85      return 0xffffffff;
86   }
87}
88
89WRITE32_MEMBER(saturn_bram_device::write_ext_bram)
90{
91   if (offset < m_size/2)
92   {
93      if (ACCESSING_BITS_16_23)
94         m_ext_bram[offset * 2 + 0] = (data & 0x00ff0000) >> 16;
95      if (ACCESSING_BITS_0_7)
96         m_ext_bram[offset * 2 + 1] = (data & 0x000000ff) >> 0;
97   }
98   else
99      mame_printf_error("Battery RAM write beyond its boundary! offs: %X data: %X\n", offset, data);
100}
101
102#if 0
103READ8_MEMBER(saturn_bram_device::read_ext_bram)
104{
105   if (offset < m_size)
106      return m_ext_bram[offset];
107   else
108   {
109      mame_printf_error("Battery RAM read beyond its boundary! offs: %X\n", offset);
110      return 0xff;
111   }
112}
113
114WRITE8_MEMBER(saturn_bram_device::write_ext_bram)
115{
116   if (offset < m_size)
117   {
118      m_ext_bram[offset] = data;
119   }
120   else
121      mame_printf_error("Battery RAM write beyond its boundary! offs: %X data: %X\n", offset, data);
122}
123#endif
Property changes on: trunk/src/mess/machine/sat_bram.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/mess/machine/sat_bram.h
r0r21966
1#ifndef __SAT_BRAM_H
2#define __SAT_BRAM_H
3
4#include "machine/sat_slot.h"
5
6
7// ======================> saturn_bram_device
8
9class saturn_bram_device : public device_t,
10                     public device_sat_cart_interface,
11                     public device_nvram_interface
12{
13public:
14   // construction/destruction
15   saturn_bram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 size);
16   
17   // device-level overrides
18   virtual void device_start();
19   virtual void device_reset();
20   virtual void device_config_complete() { m_shortname = "sat_bram"; }
21
22   // device_nvram_interface overrides
23   virtual void nvram_default() { }
24   virtual void nvram_read(emu_file &file) { if (m_ext_bram != NULL) { file.read(m_ext_bram, m_ext_bram_size); } }
25   virtual void nvram_write(emu_file &file) { if (m_ext_bram != NULL) { file.write(m_ext_bram, m_ext_bram_size); } }
26   
27   // reading and writing
28   virtual DECLARE_READ32_MEMBER(read_ext_bram);
29   virtual DECLARE_WRITE32_MEMBER(write_ext_bram);
30#if 0
31   virtual DECLARE_READ8_MEMBER(read_ext_bram);
32   virtual DECLARE_WRITE8_MEMBER(write_ext_bram);
33#endif
34
35   UINT32 m_size;   // this is the size of Battery RAM in bytes
36};
37
38class saturn_bram4mb_device : public saturn_bram_device
39{
40public:
41   // construction/destruction
42   saturn_bram4mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
43   
44   // device-level overrides
45   virtual void device_config_complete() { m_shortname = "sat_bram_4mb"; }
46};
47
48class saturn_bram8mb_device : public saturn_bram_device
49{
50public:
51   // construction/destruction
52   saturn_bram8mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
53   
54   // device-level overrides
55   virtual void device_config_complete() { m_shortname = "sat_bram_8mb"; }
56};
57
58class saturn_bram16mb_device : public saturn_bram_device
59{
60public:
61   // construction/destruction
62   saturn_bram16mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
63   
64   // device-level overrides
65   virtual void device_config_complete() { m_shortname = "sat_bram_16mb"; }
66};
67
68class saturn_bram32mb_device : public saturn_bram_device
69{
70public:
71   // construction/destruction
72   saturn_bram32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
73   
74   // device-level overrides
75   virtual void device_config_complete() { m_shortname = "sat_bram_32mb"; }
76};
77
78
79
80// device type definition
81extern const device_type SATURN_BRAM_4MB;
82extern const device_type SATURN_BRAM_8MB;
83extern const device_type SATURN_BRAM_16MB;
84extern const device_type SATURN_BRAM_32MB;
85
86#endif
Property changes on: trunk/src/mess/machine/sat_bram.h
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mess/machine/sat_dram.c
r0r21966
1/***********************************************************************************************************
2
3 Saturn cart emulation
4
5 ***********************************************************************************************************/
6
7
8#include "emu.h"
9#include "machine/sat_dram.h"
10
11
12//-------------------------------------------------
13//  constructor
14//-------------------------------------------------
15
16const device_type SATURN_DRAM_8MB = &device_creator<saturn_dram8mb_device>;
17const device_type SATURN_DRAM_32MB = &device_creator<saturn_dram32mb_device>;
18
19
20saturn_dram_device::saturn_dram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 size)
21               : device_t(mconfig, type, name, tag, owner, clock),
22                  device_sat_cart_interface( mconfig, *this ),
23                  m_size(size)
24{
25}
26
27saturn_dram8mb_device::saturn_dram8mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
28               : saturn_dram_device(mconfig, SATURN_DRAM_8MB, "Saturn Data RAM 8Mbit Cart", tag, owner, clock, 0x400000/4)
29{
30   m_cart_type = 0x5a;
31}
32
33saturn_dram32mb_device::saturn_dram32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
34               : saturn_dram_device(mconfig, SATURN_DRAM_32MB, "Saturn Data RAM 32Mbit Cart", tag, owner, clock, 0x800000/4)
35{
36   m_cart_type = 0x5c;
37}
38
39
40//-------------------------------------------------
41//  mapper specific start/reset
42//-------------------------------------------------
43
44void saturn_dram_device::device_start()
45{
46   // TODO: only allocate the real amount of RAM
47   m_ext_dram0 = auto_alloc_array_clear(machine(), UINT32, 0x400000/4);
48   m_ext_dram1 = auto_alloc_array_clear(machine(), UINT32, 0x400000/4);
49   m_ext_dram0_size = 0x400000;
50   m_ext_dram1_size = 0x400000;
51   save_pointer(NAME(m_ext_dram0), 0x400000/4);
52   save_pointer(NAME(m_ext_dram1), 0x400000/4);
53}
54
55void saturn_dram_device::device_reset()
56{
57}
58
59
60/*-------------------------------------------------
61 mapper specific handlers
62 -------------------------------------------------*/
63
64// RAM: two DRAM chips are present in the cart
65
66READ32_MEMBER(saturn_dram_device::read_ext_dram0)
67{
68   if (offset < m_size/2)
69      return m_ext_dram0[offset];
70   else
71   {
72      mame_printf_error("DRAM0 read beyond its boundary! offs: %X\n", offset);
73      return 0xffffffff;
74   }
75}
76
77READ32_MEMBER(saturn_dram_device::read_ext_dram1)
78{
79   if (offset < m_size/2)
80      return m_ext_dram1[offset];
81   else
82   {
83      mame_printf_error("DRAM1 read beyond its boundary! offs: %X\n", offset);
84      return 0xffffffff;
85   }
86}
87
88WRITE32_MEMBER(saturn_dram_device::write_ext_dram0)
89{
90   if (offset < m_size/2)
91      COMBINE_DATA(&m_ext_dram0[offset]);
92   else
93      mame_printf_error("DRAM0 write beyond its boundary! offs: %X data: %X\n", offset, data);
94}
95
96WRITE32_MEMBER(saturn_dram_device::write_ext_dram1)
97{
98   if (offset < m_size/2)
99      COMBINE_DATA(&m_ext_dram1[offset]);
100   else
101      mame_printf_error("DRAM1 write beyond its boundary! offs: %X data: %X\n", offset, data);
102}
Property changes on: trunk/src/mess/machine/sat_dram.c
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mess/machine/sat_dram.h
r0r21966
1#ifndef __SAT_DRAM_H
2#define __SAT_DRAM_H
3
4#include "machine/sat_slot.h"
5
6
7// ======================> saturn_dram_device
8
9class saturn_dram_device : public device_t,
10                     public device_sat_cart_interface
11{
12public:
13   // construction/destruction
14   saturn_dram_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 size);
15
16   // device-level overrides
17   virtual void device_start();
18   virtual void device_reset();
19   virtual void device_config_complete() { m_shortname = "sat_dram"; }
20
21   // reading and writing
22   virtual DECLARE_READ32_MEMBER(read_ext_dram0);
23   virtual DECLARE_READ32_MEMBER(read_ext_dram1);
24   virtual DECLARE_WRITE32_MEMBER(write_ext_dram0);
25   virtual DECLARE_WRITE32_MEMBER(write_ext_dram1);
26
27   UINT32 m_size;   // this is the size of DRAM0 + DRAM1 in dword units, so accesses to each bank go up to (m_size/2)-1
28};
29
30class saturn_dram8mb_device : public saturn_dram_device
31{
32public:
33   // construction/destruction
34   saturn_dram8mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
35   
36   // device-level overrides
37   virtual void device_config_complete() { m_shortname = "sat_dram_8mb"; }
38};
39
40class saturn_dram32mb_device : public saturn_dram_device
41{
42public:
43   // construction/destruction
44   saturn_dram32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
45   
46   // device-level overrides
47   virtual void device_config_complete() { m_shortname = "sat_dram_32mb"; }
48};
49
50
51
52// device type definition
53extern const device_type SATURN_DRAM_8MB;
54extern const device_type SATURN_DRAM_32MB;
55
56#endif
Property changes on: trunk/src/mess/machine/sat_dram.h
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/mame/includes/stv.h
r21965r21966
139139   legacy_cpu_device* m_audiocpu;
140140
141141   bitmap_rgb32 m_tmpbitmap;
142   DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
143   DECLARE_INPUT_CHANGED_MEMBER(nmi_reset);
144   DECLARE_INPUT_CHANGED_MEMBER(tray_open);
145   DECLARE_INPUT_CHANGED_MEMBER(tray_close);
146
147   DECLARE_DRIVER_INIT(saturnus);
148   DECLARE_DRIVER_INIT(saturneu);
149   DECLARE_DRIVER_INIT(saturnjp);
150   DECLARE_MACHINE_START(saturn);
151   DECLARE_MACHINE_RESET(saturn);
152142   DECLARE_VIDEO_START(stv_vdp2);
153143   UINT32 screen_update_saturn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
154144   UINT32 screen_update_stv_vdp2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
r21965r21966
174164   DECLARE_WRITE32_MEMBER(saturn_sinit_w);
175165   DECLARE_READ8_MEMBER(saturn_backupram_r);
176166   DECLARE_WRITE8_MEMBER(saturn_backupram_w);
177   DECLARE_READ8_MEMBER(saturn_cart_type_r);
178167   TIMER_CALLBACK_MEMBER(stv_rtc_increment);
179   DECLARE_READ32_MEMBER(saturn_null_ram_r);
180   DECLARE_WRITE32_MEMBER(saturn_null_ram_w);
181   DECLARE_READ32_MEMBER(saturn_cart_dram0_r);
182   DECLARE_WRITE32_MEMBER(saturn_cart_dram0_w);
183   DECLARE_READ32_MEMBER(saturn_cart_dram1_r);
184   DECLARE_WRITE32_MEMBER(saturn_cart_dram1_w);
185   DECLARE_READ32_MEMBER(saturn_cs1_r);
186   DECLARE_WRITE32_MEMBER(saturn_cs1_w);
187168   WRITE_LINE_MEMBER(scsp_to_main_irq);
188   void saturn_init_driver(int rgn);
189169
190170   int m_scsp_last_line;
191171
r21965r21966
195175   DECLARE_READ8_MEMBER( saturn_SMPC_r );
196176   DECLARE_WRITE8_MEMBER( saturn_SMPC_w );
197177
198   DECLARE_DEVICE_IMAGE_LOAD_MEMBER( sat_cart );
199
200178   DECLARE_READ16_MEMBER ( saturn_vdp1_regs_r );
201179   DECLARE_READ32_MEMBER ( saturn_vdp1_vram_r );
202180   DECLARE_READ32_MEMBER ( saturn_vdp1_framebuffer0_r );
r21965r21966
213191   DECLARE_WRITE32_MEMBER ( saturn_vdp2_cram_w );
214192   DECLARE_WRITE16_MEMBER ( saturn_vdp2_regs_w );
215193
216   DECLARE_READ32_MEMBER( abus_dummy_r );
217194
218195   /* VDP1 */
219196   void stv_set_framebuffer_config( void );

Previous 199869 Revisions Next


© 1997-2024 The MAME Team