| 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 |