src/mess/machine/pce.c
| r996 | r997 | |
| 14 | 14 | |
| 15 | 15 | struct pce_struct pce; |
| 16 | 16 | |
| 17 | static UINT8 *cartridge_ram; |
| 18 | |
| 17 | 19 | /* joystick related data*/ |
| 18 | 20 | |
| 19 | 21 | #define JOY_CLOCK 0x01 |
| r996 | r997 | |
| 24 | 26 | |
| 25 | 27 | static WRITE8_HANDLER( pce_sf2_banking_w ) { |
| 26 | 28 | memory_set_bankptr( 2, memory_region(REGION_USER1) + ( offset + 1 ) * 0x080000 ); |
| 29 | memory_set_bankptr( 3, memory_region(REGION_USER1) + ( offset + 1 ) * 0x080000 + 0x8000 ); |
| 27 | 30 | } |
| 28 | 31 | |
| 32 | static WRITE8_HANDLER( pce_populous_ram_w ) { |
| 33 | cartridge_ram[ offset ] = data; |
| 34 | } |
| 35 | |
| 29 | 36 | DEVICE_LOAD(pce_cart) |
| 30 | 37 | { |
| 31 | 38 | int size; |
| r996 | r997 | |
| 110 | 117 | |
| 111 | 118 | memory_set_bankptr( 1, ROM ); |
| 112 | 119 | memory_set_bankptr( 2, ROM + 0x080000 ); |
| 113 | | memory_set_bankptr( 3, ROM + 0x100000 ); |
| 120 | memory_set_bankptr( 3, ROM + 0x088000 ); |
| 121 | memory_set_bankptr( 4, ROM + 0x100000 ); |
| 114 | 122 | |
| 115 | 123 | /* Check for Street fighter 2 */ |
| 116 | 124 | if ( size == PCE_ROM_MAXSIZE ) { |
| 117 | 125 | memory_install_write8_handler( 0, ADDRESS_SPACE_PROGRAM, 0x01ff0, 0x01ff3, 0, 0, pce_sf2_banking_w ); |
| 118 | 126 | } |
| 127 | |
| 128 | /* Check for Populous */ |
| 129 | if ( ! memcmp( ROM + 0x1F26, "POPULOUS", 8 ) ) { |
| 130 | cartridge_ram = auto_malloc( 0x8000 ); |
| 131 | memory_set_bankptr( 2, cartridge_ram ); |
| 132 | memory_install_write8_handler( 0, ADDRESS_SPACE_PROGRAM, 0x080000, 0x087FFF, 0, 0, pce_populous_ram_w ); |
| 133 | } |
| 119 | 134 | return 0; |
| 120 | 135 | } |
| 121 | 136 | |
src/mess/drivers/pce.c
| r996 | r997 | |
| 18 | 18 | - Add 6 button joystick support |
| 19 | 19 | - Add 263 line mode |
| 20 | 20 | - Sprite DMA should use vdc VRAM functions |
| 21 | |
| 22 | Banking |
| 23 | ======= |
| 24 | |
| 25 | Normally banks 00-F6 are assigned to regular HuCard ROM space. There |
| 26 | are a couple of special situations: |
| 27 | |
| 28 | Street Fighter II: |
| 29 | - address space banks 40-7F switchable by writing to 1FF0-1FF3 |
| 30 | 1FF0 - select rom banks 40-7F |
| 31 | 1FF1 - select rom banks 80-BF |
| 32 | 1FF2 - select rom banks C0-FF |
| 33 | 1FF3 - select rom banks 100-13F |
| 34 | |
| 35 | Populous: |
| 36 | - address space banks 40-43 contains 32KB RAM |
| 37 | |
| 38 | CDRom units: |
| 39 | - address space banks 80-87 contains 64KB RAM |
| 40 | |
| 41 | Super System Card: |
| 42 | - address space banks 68-7F contains 192KB RAM |
| 43 | |
| 21 | 44 | **********************************************************************/ |
| 22 | 45 | |
| 23 | 46 | /********************************************************************** |
| r996 | r997 | |
| 40 | 63 | |
| 41 | 64 | ADDRESS_MAP_START( pce_mem , ADDRESS_SPACE_PROGRAM, 8) |
| 42 | 65 | AM_RANGE( 0x000000, 0x07FFFF) AM_ROMBANK(1) |
| 43 | | AM_RANGE( 0x080000, 0x0FFFFF) AM_ROMBANK(2) |
| 44 | | AM_RANGE( 0x100000, 0x1EDFFF) AM_ROMBANK(3) |
| 66 | AM_RANGE( 0x080000, 0x087FFF) AM_ROMBANK(2) |
| 67 | AM_RANGE( 0x088000, 0x0FFFFF) AM_ROMBANK(3) |
| 68 | AM_RANGE( 0x100000, 0x1EDFFF) AM_ROMBANK(4) |
| 45 | 69 | AM_RANGE( 0x1EE000, 0x1EFFFF) AM_RAM AM_BASE( &pce_nvram ) |
| 46 | 70 | AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000) AM_BASE( &pce_user_ram ) |
| 47 | 71 | AM_RANGE( 0x1FE000, 0x1FE3FF) AM_READWRITE( vdc_0_r, vdc_0_w ) |
| r996 | r997 | |
| 59 | 83 | |
| 60 | 84 | ADDRESS_MAP_START( sgx_mem , ADDRESS_SPACE_PROGRAM, 8) |
| 61 | 85 | AM_RANGE( 0x000000, 0x07FFFF) AM_ROMBANK(1) |
| 62 | | AM_RANGE( 0x080000, 0x0FFFFF) AM_ROMBANK(2) |
| 63 | | AM_RANGE( 0x100000, 0x1EDFFF) AM_ROMBANK(3) |
| 86 | AM_RANGE( 0x080000, 0x087FFF) AM_ROMBANK(2) |
| 87 | AM_RANGE( 0x088000, 0x0FFFFF) AM_ROMBANK(3) |
| 88 | AM_RANGE( 0x100000, 0x1EDFFF) AM_ROMBANK(4) |
| 64 | 89 | AM_RANGE( 0x1EE000, 0x1EFFFF) AM_RAM AM_BASE( &pce_nvram ) |
| 65 | 90 | AM_RANGE( 0x1F0000, 0x1F7FFF) AM_RAM AM_BASE( &pce_user_ram ) |
| 66 | 91 | AM_RANGE( 0x1FE000, 0x1FE007) AM_READWRITE( vdc_0_r, vdc_0_w ) AM_MIRROR(0x03E0) |