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* |
r21965 | r21966 | |
---|---|---|
1634 | 1634 | $(MESS_DRIVERS)/dccons.o \ |
1635 | 1635 | $(MAME_MACHINE)/gdrom.o \ |
1636 | 1636 | $(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 \ | |
1637 | 1641 | $(MESS_DRIVERS)/saturn.o \ |
1638 | 1642 | $(MESS_MACHINE)/sms.o \ |
1639 | 1643 | $(MESS_DRIVERS)/sms.o \ |
r21965 | r21966 | |
---|---|---|
67 | 67 | #include "machine/smpc.h" |
68 | 68 | #include "includes/stv.h" |
69 | 69 | #include "imagedev/chd_cd.h" |
70 | #include "imagedev/cartslot.h" | |
71 | 70 | #include "coreutil.h" |
72 | 71 | |
72 | #include "machine/sat_slot.h" | |
73 | #include "machine/sat_rom.h" | |
74 | #include "machine/sat_dram.h" | |
75 | #include "machine/sat_bram.h" | |
73 | 76 | |
74 | 77 | |
78 | class sat_console_state : public saturn_state | |
79 | { | |
80 | public: | |
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 | ||
75 | 109 | /* TODO: if you change the driver configuration then NVRAM contents gets screwed, needs mods in MAME framework */ |
76 | 110 | static NVRAM_HANDLER(saturn) |
77 | 111 | { |
78 | sat | |
112 | sat_console_state *state = machine.driver_data<sat_console_state>(); | |
79 | 113 | 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]; | |
82 | 115 | static const UINT8 init[16] = |
83 | 116 | { |
84 | 117 | 'B', 'a', 'c', 'k', 'U', 'p', 'R', 'a', 'm', ' ', 'F', 'o', 'r', 'm', 'a', 't' |
r21965 | r21966 | |
89 | 122 | { |
90 | 123 | for(i=0;i<BUP_SIZE;i++) |
91 | 124 | 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 | |
96 | 125 | for(i=0;i<4;i++) |
97 | backup_file[i+(BUP_SIZE) | |
126 | backup_file[i+(BUP_SIZE)] = state->m_smpc.SMEM[i]; | |
98 | 127 | |
99 | file->write(backup_file, (BUP_SIZE)+ | |
128 | file->write(backup_file, (BUP_SIZE)+4); | |
100 | 129 | } |
101 | 130 | else |
102 | 131 | { |
103 | 132 | if (file) |
104 | 133 | { |
105 | file->read(backup_file, (BUP_SIZE)+ | |
134 | file->read(backup_file, (BUP_SIZE)+4); | |
106 | 135 | |
107 | 136 | for(i=0;i<BUP_SIZE;i++) |
108 | 137 | 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 | |
113 | 138 | for(i=0;i<4;i++) |
114 | state->m_smpc.SMEM[i] = backup_file[i+BUP_SIZE | |
139 | state->m_smpc.SMEM[i] = backup_file[i+BUP_SIZE]; | |
115 | 140 | } |
116 | 141 | else |
117 | 142 | { |
r21965 | r21966 | |
122 | 147 | for(j=0;j<16;j++) |
123 | 148 | state->m_backupram[i*16+j] = init[j]; |
124 | 149 | } |
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 | |
133 | 150 | memset(state->m_smpc.SMEM, 0, 4); // TODO: default for each region |
134 | 151 | } |
135 | 152 | } |
136 | 153 | } |
137 | 154 | |
138 | READ8_MEMBER(sat | |
155 | READ8_MEMBER(sat_console_state::saturn_cart_type_r) | |
139 | 156 | { |
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; | |
143 | 161 | } |
144 | 162 | |
145 | 163 | /* TODO: Bug! accesses this one, if returning 0 the SH-2 hard-crashes. Might be an actual bug with the CD block. */ |
146 | READ32_HANDLER( sat | |
164 | READ32_HANDLER( sat_console_state::abus_dummy_r ) | |
147 | 165 | { |
148 | 166 | logerror("A-Bus Dummy access %08x\n",offset*4); |
149 | 167 | return -1; |
150 | 168 | } |
151 | 169 | |
152 | static ADDRESS_MAP_START( saturn_mem, AS_PROGRAM, 32, sat | |
170 | static ADDRESS_MAP_START( saturn_mem, AS_PROGRAM, 32, sat_console_state ) | |
153 | 171 | AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_SHARE("share6") // bios |
154 | 172 | AM_RANGE(0x00100000, 0x0010007f) AM_READWRITE8(saturn_SMPC_r, saturn_SMPC_w,0xffffffff) |
155 | 173 | AM_RANGE(0x00180000, 0x0018ffff) AM_READWRITE8(saturn_backupram_r, saturn_backupram_w,0xffffffff) AM_SHARE("share1") |
156 | 174 | AM_RANGE(0x00200000, 0x002fffff) AM_RAM AM_MIRROR(0x20100000) AM_SHARE("workram_l") |
157 | 175 | AM_RANGE(0x01000000, 0x017fffff) AM_WRITE(saturn_minit_w) |
158 | 176 | 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 | |
162 | 180 | AM_RANGE(0x04fffffc, 0x04ffffff) AM_READ8(saturn_cart_type_r,0x000000ff) |
163 | 181 | AM_RANGE(0x05000000, 0x057fffff) AM_READ(abus_dummy_r) |
164 | 182 | AM_RANGE(0x05800000, 0x0589ffff) AM_READWRITE(stvcd_r, stvcd_w) |
r21965 | r21966 | |
175 | 193 | AM_RANGE(0x05fe0000, 0x05fe00cf) AM_READWRITE(saturn_scu_r, saturn_scu_w) |
176 | 194 | AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_MIRROR(0x21f00000) AM_SHARE("workram_h") |
177 | 195 | AM_RANGE(0x20000000, 0x2007ffff) AM_ROM AM_SHARE("share6") // bios mirror |
178 | AM_RANGE(0x22000000, 0x24ffffff) AM_ROM | |
196 | // AM_RANGE(0x22000000, 0x24ffffff) AM_ROM // Cartridge area mirror | |
179 | 197 | AM_RANGE(0x45000000, 0x46ffffff) AM_WRITENOP |
180 | 198 | AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP // cache address array |
181 | 199 | AM_RANGE(0xc0000000, 0xc00007ff) AM_RAM // cache data array, Dragon Ball Z sprites relies on this |
182 | 200 | ADDRESS_MAP_END |
183 | 201 | |
184 | static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 16, sat | |
202 | static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 16, sat_console_state ) | |
185 | 203 | AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("sound_ram") |
186 | 204 | AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE_LEGACY("scsp", scsp_r, scsp_w) |
187 | 205 | ADDRESS_MAP_END |
r21965 | r21966 | |
189 | 207 | |
190 | 208 | /* keyboard code */ |
191 | 209 | /* TODO: needs a proper keycode table */ |
192 | INPUT_CHANGED_MEMBER(sat | |
210 | INPUT_CHANGED_MEMBER(sat_console_state::key_stroke) | |
193 | 211 | { |
194 | 212 | if(newval && !oldval) |
195 | 213 | { |
r21965 | r21966 | |
269 | 287 | |
270 | 288 | #define SATURN_KEYBOARD PORT_CONDITION("INPUT_TYPE", 0x0f, EQUALS, 0x05) |
271 | 289 | |
272 | INPUT_CHANGED_MEMBER(sat | |
290 | INPUT_CHANGED_MEMBER(sat_console_state::nmi_reset) | |
273 | 291 | { |
274 | 292 | /* TODO: correct? */ |
275 | 293 | if(!m_NMI_reset) |
r21965 | r21966 | |
280 | 298 | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
281 | 299 | } |
282 | 300 | |
283 | INPUT_CHANGED_MEMBER(sat | |
301 | INPUT_CHANGED_MEMBER(sat_console_state::tray_open) | |
284 | 302 | { |
285 | 303 | if(newval) |
286 | 304 | stvcd_set_tray_open(); |
287 | 305 | } |
288 | 306 | |
289 | INPUT_CHANGED_MEMBER(sat | |
307 | INPUT_CHANGED_MEMBER(sat_console_state::tray_close) | |
290 | 308 | { |
291 | 309 | if(newval) |
292 | 310 | stvcd_set_tray_close(); |
r21965 | r21966 | |
294 | 312 | |
295 | 313 | static INPUT_PORTS_START( saturn ) |
296 | 314 | 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") | |
300 | 318 | |
301 | 319 | PORT_START("JOY1") |
302 | 320 | SATURN_PAD_P1(0x0f, 0) |
r21965 | r21966 | |
307 | 325 | /* TODO: there's no info about the keycode used on Saturn keyboard, following is trial & error with Game Basic software */ |
308 | 326 | PORT_START("KEY0") // 0x00 - 0x07 |
309 | 327 | 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 | |
317 | 335 | |
318 | 336 | 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 | |
327 | 345 | |
328 | 346 | 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 | |
331 | 349 | /* 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 | |
335 | 353 | |
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 | |
339 | 357 | |
340 | 358 | 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 | |
349 | 367 | |
350 | 368 | 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 | |
359 | 377 | |
360 | 378 | 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 | |
369 | 387 | |
370 | 388 | 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 | |
379 | 397 | |
380 | 398 | 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 | |
389 | 407 | |
390 | 408 | 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 | |
399 | 417 | |
400 | 418 | 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 | |
409 | 427 | |
410 | 428 | 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 | |
419 | 437 | |
420 | 438 | 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 | |
429 | 447 | |
430 | 448 | 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 | |
439 | 457 | |
440 | 458 | 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 | |
449 | 467 | |
450 | 468 | 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 | |
459 | 477 | |
460 | 478 | 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 | |
469 | 487 | |
470 | 488 | 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 | |
475 | 493 | |
476 | 494 | PORT_START("MOUSEB1") |
477 | 495 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Pointer Left Button") PORT_PLAYER(1) PORT_CONDITION("INPUT_TYPE", 0x0f, EQUALS, 0x04) |
r21965 | r21966 | |
549 | 567 | MD_PAD_P2(0xf0, 0x60) // MD 3 buttons pad |
550 | 568 | MD_PAD_P2(0xf0, 0x70) // MD 6 buttons pad |
551 | 569 | |
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 | ||
562 | 570 | PORT_START("INPUT_TYPE") |
563 | 571 | PORT_CONFNAME(0x0f,0x00,"Controller Port 1") |
564 | 572 | PORT_CONFSETTING(0x00,"Digital Device (standard Saturn pad)") |
r21965 | r21966 | |
599 | 607 | DEVCB_DRIVER_LINE_MEMBER(saturn_state, scsp_to_main_irq) |
600 | 608 | }; |
601 | 609 | |
602 | MACHINE_START_MEMBER(sat | |
610 | MACHINE_START_MEMBER(sat_console_state,saturn) | |
603 | 611 | { |
604 | 612 | system_time systime; |
605 | 613 | machine().base_datetime(systime); |
r21965 | r21966 | |
609 | 617 | m_audiocpu = downcast<legacy_cpu_device*>( machine().device<cpu_device>("audiocpu") ); |
610 | 618 | |
611 | 619 | 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 | ||
613 | 660 | // save states |
614 | 661 | state_save_register_global_pointer(machine(), m_scu_regs, 0x100/4); |
615 | 662 | state_save_register_global_pointer(machine(), m_scsp_regs, 0x1000/2); |
r21965 | r21966 | |
628 | 675 | state_save_register_global(machine(), m_smpc.pmode); |
629 | 676 | state_save_register_global(machine(), m_smpc.SR); |
630 | 677 | state_save_register_global_array(machine(), m_smpc.SMEM); |
631 | state_save_register_global_pointer(machine(), m_cart_dram, 0x400000/4); | |
632 | 678 | |
633 | machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(sat | |
679 | machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(sat_console_state::stvcd_exit), this)); | |
634 | 680 | |
635 | 681 | m_smpc.rtc_data[0] = DectoBCD(systime.local_time.year /100); |
636 | 682 | m_smpc.rtc_data[1] = DectoBCD(systime.local_time.year %100); |
r21965 | r21966 | |
640 | 686 | m_smpc.rtc_data[5] = DectoBCD(systime.local_time.minute); |
641 | 687 | m_smpc.rtc_data[6] = DectoBCD(systime.local_time.second); |
642 | 688 | |
643 | m_stv_rtc_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sat | |
689 | m_stv_rtc_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sat_console_state::stv_rtc_increment),this)); | |
644 | 690 | |
645 | m68k_set_reset_callback(m_audiocpu, &sat | |
691 | m68k_set_reset_callback(m_audiocpu, &sat_console_state::m68k_reset_callback); | |
646 | 692 | } |
647 | 693 | |
648 | 694 | /* Die Hard Trilogy tests RAM address 0x25e7ffe bit 2 with Slave during FRT minit irq, in-development tool for breaking execution of it? */ |
649 | READ32_MEMBER(sat | |
695 | READ32_MEMBER(sat_console_state::saturn_null_ram_r) | |
650 | 696 | { |
651 | 697 | return 0xffffffff; |
652 | 698 | } |
653 | 699 | |
654 | WRITE32_MEMBER(sat | |
700 | WRITE32_MEMBER(sat_console_state::saturn_null_ram_w) | |
655 | 701 | { |
656 | 702 | } |
657 | 703 | |
658 | RE | |
704 | MACHINE_RESET_MEMBER(sat_console_state,saturn) | |
659 | 705 | { |
660 | return m_cart_dram[offset]; | |
661 | } | |
662 | ||
663 | WRITE32_MEMBER(saturn_state::saturn_cart_dram0_w) | |
664 | { | |
665 | COMBINE_DATA(&m_cart_dram[offset]); | |
666 | } | |
667 | ||
668 | READ32_MEMBER(saturn_state::saturn_cart_dram1_r) | |
669 | { | |
670 | return m_cart_dram[offset+0x200000/4]; | |
671 | } | |
672 | ||
673 | WRITE32_MEMBER(saturn_state::saturn_cart_dram1_w) | |
674 | { | |
675 | COMBINE_DATA(&m_cart_dram[offset+0x200000/4]); | |
676 | } | |
677 | ||
678 | READ32_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 | ||
691 | WRITE32_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 | ||
699 | MACHINE_RESET_MEMBER(saturn_state,saturn) | |
700 | { | |
701 | 706 | m_scsp_last_line = 0; |
702 | 707 | |
703 | 708 | // don't let the slave cpu and the 68k go anywhere |
r21965 | r21966 | |
721 | 726 | |
722 | 727 | stvcd_reset(); |
723 | 728 | |
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 | ||
769 | 729 | m_vdp2.old_crmd = -1; |
770 | 730 | m_vdp2.old_tvmd = -1; |
771 | 731 | |
r21965 | r21966 | |
780 | 740 | }; |
781 | 741 | |
782 | 742 | |
743 | static MACHINE_CONFIG_START( saturn, sat_console_state ) | |
783 | 744 | |
784 | ||
785 | DEVICE_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 | ||
816 | static MACHINE_CONFIG_START( saturn, saturn_state ) | |
817 | ||
818 | 745 | /* basic machine hardware */ |
819 | 746 | MCFG_CPU_ADD("maincpu", SH2, MASTER_CLOCK_352/2) // 28.6364 MHz |
820 | 747 | MCFG_CPU_PROGRAM_MAP(saturn_mem) |
821 | 748 | MCFG_CPU_CONFIG(sh2_conf_master) |
822 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sat | |
749 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sat_console_state, saturn_scanline, "screen", 0, 1) | |
823 | 750 | |
824 | 751 | MCFG_CPU_ADD("slave", SH2, MASTER_CLOCK_352/2) // 28.6364 MHz |
825 | 752 | MCFG_CPU_PROGRAM_MAP(saturn_mem) |
826 | 753 | MCFG_CPU_CONFIG(sh2_conf_slave) |
827 | MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_scantimer", sat | |
754 | MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_scantimer", sat_console_state, saturn_slave_scanline, "screen", 0, 1) | |
828 | 755 | |
829 | 756 | MCFG_CPU_ADD("audiocpu", M68000, 11289600) //256 x 44100 Hz = 11.2896 MHz |
830 | 757 | MCFG_CPU_PROGRAM_MAP(sound_mem) |
831 | 758 | |
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) | |
834 | 761 | |
835 | 762 | MCFG_NVRAM_HANDLER(saturn) |
836 | 763 | |
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) | |
839 | 766 | |
840 | 767 | /* video hardware */ |
841 | 768 | MCFG_SCREEN_ADD("screen", RASTER) |
842 | 769 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 427, 0, 320, 263, 0, 224) |
843 | MCFG_SCREEN_UPDATE_DRIVER(sat | |
770 | MCFG_SCREEN_UPDATE_DRIVER(sat_console_state, screen_update_stv_vdp2) | |
844 | 771 | MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness. |
845 | 772 | |
846 | 773 | MCFG_GFXDECODE(stv) |
847 | 774 | |
848 | MCFG_VIDEO_START_OVERRIDE(sat | |
775 | MCFG_VIDEO_START_OVERRIDE(sat_console_state,stv_vdp2) | |
849 | 776 | |
850 | 777 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
851 | 778 | |
r21965 | r21966 | |
859 | 786 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
860 | 787 | MACHINE_CONFIG_END |
861 | 788 | |
789 | static 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) | |
797 | SLOT_INTERFACE_END | |
798 | ||
799 | ||
862 | 800 | MACHINE_CONFIG_DERIVED( saturnus, saturn ) |
863 | 801 | MCFG_CDROM_ADD( "cdrom",saturn_cdrom ) |
864 | 802 | MCFG_SOFTWARE_LIST_ADD("cd_list","saturn") |
865 | 803 | MCFG_SOFTWARE_LIST_FILTER("cd_list","NTSC-U") |
866 | 804 | |
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) | |
870 | 806 | MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart") |
871 | 807 | |
872 | 808 | MACHINE_CONFIG_END |
r21965 | r21966 | |
876 | 812 | MCFG_SOFTWARE_LIST_ADD("cd_list","saturn") |
877 | 813 | MCFG_SOFTWARE_LIST_FILTER("cd_list","PAL") |
878 | 814 | |
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) | |
882 | 816 | MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart") |
883 | 817 | |
884 | 818 | MACHINE_CONFIG_END |
r21965 | r21966 | |
888 | 822 | MCFG_SOFTWARE_LIST_ADD("cd_list","saturn") |
889 | 823 | MCFG_SOFTWARE_LIST_FILTER("cd_list","NTSC-J") |
890 | 824 | |
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) | |
894 | 826 | MCFG_SOFTWARE_LIST_ADD("cart_list","sat_cart") |
895 | 827 | |
896 | 828 | MACHINE_CONFIG_END |
897 | 829 | |
898 | 830 | |
899 | void sat | |
831 | void sat_console_state::saturn_init_driver(int rgn) | |
900 | 832 | { |
901 | 833 | m_saturn_region = rgn; |
902 | 834 | m_vdp2.pal = (rgn == 12) ? 1 : 0; |
r21965 | r21966 | |
913 | 845 | |
914 | 846 | m_scu_regs = auto_alloc_array_clear(machine(), UINT32, 0x100/4); |
915 | 847 | m_scsp_regs = auto_alloc_array_clear(machine(), UINT16, 0x1000/2); |
916 | m_cart_dram = auto_alloc_array_clear(machine(), UINT32, 0x400000/4); | |
917 | 848 | m_backupram = auto_alloc_array_clear(machine(), UINT8, 0x8000); |
918 | m_cart_backupram = auto_alloc_array_clear(machine(), UINT8, 0x400000); | |
919 | 849 | } |
920 | 850 | |
921 | DRIVER_INIT_MEMBER(sat | |
851 | DRIVER_INIT_MEMBER(sat_console_state,saturnus) | |
922 | 852 | { |
923 | 853 | saturn_init_driver(4); |
924 | 854 | } |
925 | 855 | |
926 | DRIVER_INIT_MEMBER(sat | |
856 | DRIVER_INIT_MEMBER(sat_console_state,saturneu) | |
927 | 857 | { |
928 | 858 | saturn_init_driver(12); |
929 | 859 | } |
930 | 860 | |
931 | DRIVER_INIT_MEMBER(sat | |
861 | DRIVER_INIT_MEMBER(sat_console_state,saturnjp) | |
932 | 862 | { |
933 | 863 | saturn_init_driver(1); |
934 | 864 | } |
r21965 | r21966 | |
943 | 873 | ROMX_LOAD("sega1003.bin", 0x00000000, 0x00080000, CRC(b3c63c25) SHA1(7b23b53d62de0f29a23e423d0fe751dfb469c2fa), ROM_BIOS(2)) |
944 | 874 | ROM_SYSTEM_BIOS(2, "100", "Japan v1.00 (940921)") |
945 | 875 | 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) | |
947 | 876 | ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */ |
948 | 877 | ROM_COPY( "maincpu",0,0,0x080000) |
949 | 878 | ROM_END |
r21965 | r21966 | |
956 | 885 | ROMX_LOAD("mpr-17933.bin", 0x00000000, 0x00080000, CRC(4afcf0fa) SHA1(faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3), ROM_BIOS(1)) |
957 | 886 | ROM_SYSTEM_BIOS(1, "100a", "Overseas v1.00a (941115)") |
958 | 887 | 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) | |
960 | 888 | ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */ |
961 | 889 | ROM_COPY( "maincpu",0,0,0x080000) |
962 | 890 | ROM_END |
r21965 | r21966 | |
968 | 896 | ROMX_LOAD("mpr-17933.bin", 0x00000000, 0x00080000, CRC(4afcf0fa) SHA1(faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3), ROM_BIOS(1)) |
969 | 897 | ROM_SYSTEM_BIOS(1, "100a", "Overseas v1.00a (941115)") |
970 | 898 | 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) | |
972 | 899 | ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */ |
973 | 900 | ROM_COPY( "maincpu",0,0,0x080000) |
974 | 901 | ROM_END |
r21965 | r21966 | |
976 | 903 | ROM_START(vsaturn) |
977 | 904 | ROM_REGION( 0x480000, "maincpu", ROMREGION_ERASEFF ) /* SH2 code */ |
978 | 905 | ROM_LOAD("vsaturn.bin", 0x00000000, 0x00080000, CRC(e4d61811) SHA1(4154e11959f3d5639b11d7902b3a393a99fb5776)) |
979 | // ROM_CART_LOAD("cart", 0x080000, 0x400000, ROM_NOMIRROR | ROM_OPTIONAL) | |
980 | 906 | ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */ |
981 | 907 | ROM_COPY( "maincpu",0,0,0x080000) |
982 | 908 | ROM_END |
r21965 | r21966 | |
984 | 910 | ROM_START(hisaturn) |
985 | 911 | ROM_REGION( 0x480000, "maincpu", ROMREGION_ERASEFF ) /* SH2 code */ |
986 | 912 | ROM_LOAD("hisaturn.bin", 0x00000000, 0x00080000, CRC(721e1b60) SHA1(49d8493008fa715ca0c94d99817a5439d6f2c796)) |
987 | // ROM_CART_LOAD("cart", 0x080000, 0x400000, ROM_NOMIRROR | ROM_OPTIONAL) | |
988 | 913 | ROM_REGION( 0x080000, "slave", 0 ) /* SH2 code */ |
989 | 914 | ROM_COPY( "maincpu",0,0,0x080000) |
990 | 915 | ROM_END |
991 | 916 | |
992 | 917 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
993 | CONS( 1994, saturn, 0, 0, saturnus, saturn, saturn_state, saturnus, "Sega", "Saturn (USA)", GAME_NOT_WORKING ) | |
994 | CONS( 1994, saturnjp, saturn, 0, saturnjp, saturn, saturn_state, saturnjp, "Sega", "Saturn (Japan)", GAME_NOT_WORKING ) | |
995 | CONS( 1994, saturneu, saturn, 0, saturneu, saturn, saturn_state, saturneu, "Sega", "Saturn (PAL)", GAME_NOT_WORKING ) | |
996 | CONS( 1995, vsaturn, saturn, 0, saturnjp, saturn, saturn_state, saturnjp, "JVC", "V-Saturn", GAME_NOT_WORKING ) | |
997 | CONS( 1995, hisaturn, saturn, 0, saturnjp, saturn, saturn_state, saturnjp, "Hitachi", "HiSaturn", GAME_NOT_WORKING ) | |
918 | CONS( 1994, saturn, 0, 0, saturnus, saturn, sat_console_state, saturnus, "Sega", "Saturn (USA)", GAME_NOT_WORKING ) | |
919 | CONS( 1994, saturnjp, saturn, 0, saturnjp, saturn, sat_console_state, saturnjp, "Sega", "Saturn (Japan)", GAME_NOT_WORKING ) | |
920 | CONS( 1994, saturneu, saturn, 0, saturneu, saturn, sat_console_state, saturneu, "Sega", "Saturn (PAL)", GAME_NOT_WORKING ) | |
921 | CONS( 1995, vsaturn, saturn, 0, saturnjp, saturn, sat_console_state, saturnjp, "JVC", "V-Saturn", GAME_NOT_WORKING ) | |
922 | CONS( 1995, hisaturn, saturn, 0, saturnjp, saturn, sat_console_state, saturnjp, "Hitachi", "HiSaturn", GAME_NOT_WORKING ) |
r0 | r21966 | |
---|---|---|
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 | ||
30 | const device_type SATURN_CART_SLOT = &device_creator<sat_cart_slot_device>; | |
31 | ||
32 | ||
33 | //------------------------------------------------- | |
34 | // device_sat_cart_interface - constructor | |
35 | //------------------------------------------------- | |
36 | ||
37 | device_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 | ||
55 | device_sat_cart_interface::~device_sat_cart_interface() | |
56 | { | |
57 | } | |
58 | ||
59 | //------------------------------------------------- | |
60 | // rom_alloc - alloc the space for the cart | |
61 | //------------------------------------------------- | |
62 | ||
63 | void 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 | //------------------------------------------------- | |
81 | sat_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 | ||
93 | sat_cart_slot_device::~sat_cart_slot_device() | |
94 | { | |
95 | } | |
96 | ||
97 | //------------------------------------------------- | |
98 | // device_start - device-specific startup | |
99 | //------------------------------------------------- | |
100 | ||
101 | void 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 | ||
112 | void 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 | ||
125 | bool 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 | ||
166 | void sat_cart_slot_device::call_unload() | |
167 | { | |
168 | } | |
169 | ||
170 | ||
171 | ||
172 | /*------------------------------------------------- | |
173 | call softlist load | |
174 | -------------------------------------------------*/ | |
175 | ||
176 | bool 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 | ||
187 | const 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 | ||
194 | int 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 | ||
208 | READ32_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 | ||
216 | READ32_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 | ||
224 | READ32_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 | ||
232 | READ32_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 | |
241 | READ32_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 | ||
257 | WRITE32_MEMBER(sat_cart_slot_device::write_ext_dram0) | |
258 | { | |
259 | if (m_cart) | |
260 | m_cart->write_ext_dram0(space, offset, data); | |
261 | } | |
262 | ||
263 | WRITE32_MEMBER(sat_cart_slot_device::write_ext_dram1) | |
264 | { | |
265 | if (m_cart) | |
266 | m_cart->write_ext_dram1(space, offset, data); | |
267 | } | |
268 | ||
269 | WRITE32_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 | |
276 | WRITE32_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 |
Added: svn:eol-style + native Added: svn:mime-type + text/plain |
r0 | r21966 | |
---|---|---|
1 | #ifndef __SAT_SLOT_H | |
2 | #define __SAT_SLOT_H | |
3 | ||
4 | /*************************************************************************** | |
5 | TYPE DEFINITIONS | |
6 | ***************************************************************************/ | |
7 | ||
8 | ||
9 | // ======================> device_sat_cart_interface | |
10 | ||
11 | class device_sat_cart_interface : public device_slot_card_interface | |
12 | { | |
13 | public: | |
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 | ||
63 | class sat_cart_slot_device : public device_t, | |
64 | public device_image_interface, | |
65 | public device_slot_interface | |
66 | { | |
67 | public: | |
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 | |
111 | extern 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 |
Added: svn:eol-style + native Added: svn:mime-type + text/plain |
r0 | r21966 | |
---|---|---|
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 | ||
16 | const device_type SATURN_ROM = &device_creator<saturn_rom_device>; | |
17 | ||
18 | ||
19 | saturn_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 | ||
25 | saturn_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 | ||
37 | void saturn_rom_device::device_start() | |
38 | { | |
39 | } | |
40 | ||
41 | void saturn_rom_device::device_reset() | |
42 | { | |
43 | } | |
44 | ||
45 | ||
46 | /*------------------------------------------------- | |
47 | mapper specific handlers | |
48 | -------------------------------------------------*/ | |
49 | ||
50 | READ32_MEMBER(saturn_rom_device::read_rom) | |
51 | { | |
52 | return m_rom[offset & (m_rom_size - 1)]; | |
53 | } | |
54 |
Added: svn:eol-style + native Added: svn:mime-type + text/plain |
r0 | r21966 | |
---|---|---|
1 | #ifndef __SAT_ROM_H | |
2 | #define __SAT_ROM_H | |
3 | ||
4 | #include "machine/sat_slot.h" | |
5 | ||
6 | ||
7 | // ======================> saturn_rom_device | |
8 | ||
9 | class saturn_rom_device : public device_t, | |
10 | public device_sat_cart_interface | |
11 | { | |
12 | public: | |
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 | |
31 | extern const device_type SATURN_ROM; | |
32 | ||
33 | ||
34 | #endif |
Added: svn:eol-style + native Added: svn:mime-type + text/plain |
r0 | r21966 | |
---|---|---|
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 | ||
16 | const device_type SATURN_BRAM_4MB = &device_creator<saturn_bram4mb_device>; | |
17 | const device_type SATURN_BRAM_8MB = &device_creator<saturn_bram8mb_device>; | |
18 | const device_type SATURN_BRAM_16MB = &device_creator<saturn_bram16mb_device>; | |
19 | const device_type SATURN_BRAM_32MB = &device_creator<saturn_bram32mb_device>; | |
20 | ||
21 | ||
22 | saturn_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 | ||
30 | saturn_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 | ||
36 | saturn_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 | ||
42 | saturn_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 | ||
48 | saturn_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 | ||
59 | void 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 | ||
67 | void saturn_bram_device::device_reset() | |
68 | { | |
69 | } | |
70 | ||
71 | ||
72 | /*------------------------------------------------- | |
73 | IO handlers | |
74 | -------------------------------------------------*/ | |
75 | ||
76 | // Battery RAM: single chip | |
77 | ||
78 | READ32_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 | ||
89 | WRITE32_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 | |
103 | READ8_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 | ||
114 | WRITE8_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 |
Added: svn:mime-type + text/plain Added: svn:eol-style + native |
r0 | r21966 | |
---|---|---|
1 | #ifndef __SAT_BRAM_H | |
2 | #define __SAT_BRAM_H | |
3 | ||
4 | #include "machine/sat_slot.h" | |
5 | ||
6 | ||
7 | // ======================> saturn_bram_device | |
8 | ||
9 | class saturn_bram_device : public device_t, | |
10 | public device_sat_cart_interface, | |
11 | public device_nvram_interface | |
12 | { | |
13 | public: | |
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 | ||
38 | class saturn_bram4mb_device : public saturn_bram_device | |
39 | { | |
40 | public: | |
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 | ||
48 | class saturn_bram8mb_device : public saturn_bram_device | |
49 | { | |
50 | public: | |
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 | ||
58 | class saturn_bram16mb_device : public saturn_bram_device | |
59 | { | |
60 | public: | |
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 | ||
68 | class saturn_bram32mb_device : public saturn_bram_device | |
69 | { | |
70 | public: | |
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 | |
81 | extern const device_type SATURN_BRAM_4MB; | |
82 | extern const device_type SATURN_BRAM_8MB; | |
83 | extern const device_type SATURN_BRAM_16MB; | |
84 | extern const device_type SATURN_BRAM_32MB; | |
85 | ||
86 | #endif |
Added: svn:eol-style + native Added: svn:mime-type + text/plain |
r0 | r21966 | |
---|---|---|
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 | ||
16 | const device_type SATURN_DRAM_8MB = &device_creator<saturn_dram8mb_device>; | |
17 | const device_type SATURN_DRAM_32MB = &device_creator<saturn_dram32mb_device>; | |
18 | ||
19 | ||
20 | saturn_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 | ||
27 | saturn_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 | ||
33 | saturn_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 | ||
44 | void 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 | ||
55 | void 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 | ||
66 | READ32_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 | ||
77 | READ32_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 | ||
88 | WRITE32_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 | ||
96 | WRITE32_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 | } |
Added: svn:eol-style + native Added: svn:mime-type + text/plain |
r0 | r21966 | |
---|---|---|
1 | #ifndef __SAT_DRAM_H | |
2 | #define __SAT_DRAM_H | |
3 | ||
4 | #include "machine/sat_slot.h" | |
5 | ||
6 | ||
7 | // ======================> saturn_dram_device | |
8 | ||
9 | class saturn_dram_device : public device_t, | |
10 | public device_sat_cart_interface | |
11 | { | |
12 | public: | |
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 | ||
30 | class saturn_dram8mb_device : public saturn_dram_device | |
31 | { | |
32 | public: | |
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 | ||
40 | class saturn_dram32mb_device : public saturn_dram_device | |
41 | { | |
42 | public: | |
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 | |
53 | extern const device_type SATURN_DRAM_8MB; | |
54 | extern const device_type SATURN_DRAM_32MB; | |
55 | ||
56 | #endif |
Added: svn:eol-style + native Added: svn:mime-type + text/plain |
r21965 | r21966 | |
---|---|---|
139 | 139 | legacy_cpu_device* m_audiocpu; |
140 | 140 | |
141 | 141 | 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); | |
152 | 142 | DECLARE_VIDEO_START(stv_vdp2); |
153 | 143 | UINT32 screen_update_saturn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
154 | 144 | UINT32 screen_update_stv_vdp2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
r21965 | r21966 | |
174 | 164 | DECLARE_WRITE32_MEMBER(saturn_sinit_w); |
175 | 165 | DECLARE_READ8_MEMBER(saturn_backupram_r); |
176 | 166 | DECLARE_WRITE8_MEMBER(saturn_backupram_w); |
177 | DECLARE_READ8_MEMBER(saturn_cart_type_r); | |
178 | 167 | 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); | |
187 | 168 | WRITE_LINE_MEMBER(scsp_to_main_irq); |
188 | void saturn_init_driver(int rgn); | |
189 | 169 | |
190 | 170 | int m_scsp_last_line; |
191 | 171 | |
r21965 | r21966 | |
195 | 175 | DECLARE_READ8_MEMBER( saturn_SMPC_r ); |
196 | 176 | DECLARE_WRITE8_MEMBER( saturn_SMPC_w ); |
197 | 177 | |
198 | DECLARE_DEVICE_IMAGE_LOAD_MEMBER( sat_cart ); | |
199 | ||
200 | 178 | DECLARE_READ16_MEMBER ( saturn_vdp1_regs_r ); |
201 | 179 | DECLARE_READ32_MEMBER ( saturn_vdp1_vram_r ); |
202 | 180 | DECLARE_READ32_MEMBER ( saturn_vdp1_framebuffer0_r ); |
r21965 | r21966 | |
213 | 191 | DECLARE_WRITE32_MEMBER ( saturn_vdp2_cram_w ); |
214 | 192 | DECLARE_WRITE16_MEMBER ( saturn_vdp2_regs_w ); |
215 | 193 | |
216 | DECLARE_READ32_MEMBER( abus_dummy_r ); | |
217 | 194 | |
218 | 195 | /* VDP1 */ |
219 | 196 | void stv_set_framebuffer_config( void ); |
Previous | 199869 Revisions | Next |