| Previous | 199869 Revisions | Next |
| r20390 Monday 21st January, 2013 at 16:48:11 UTC by Roberto Fresca |
|---|
| Improvements to sanremo.c driver... [Roberto Fresca] - Graphics decode. - Proper ROM load. - Accurate memory map. - Hooked CPU & interrupts. - Added CRTC support. - Added AY-3-8910 sound and ports support. - Added input ports. - Added output-lamps port. - Added button-lamps layout. - NVRAM support. |
| [src/mame] | mame.lst mame.mak |
| [src/mame/drivers] | sanremo.c |
| [src/mame/layout] | sanremo.lay* |
| r0 | r20390 | |
|---|---|---|
| 1 | <?xml version="1.0"?> | |
| 2 | <mamelayout version="2"> | |
| 3 | <element name="discard1" defstate="0"> | |
| 4 | <rect state="1"> | |
| 5 | <color red="1.0" green="0.0" blue="0.0" /> | |
| 6 | </rect> | |
| 7 | <rect state="0"> | |
| 8 | <color red="0.3" green="0.0" blue="0.0" /> | |
| 9 | </rect> | |
| 10 | <text string="DISCARD 1"> | |
| 11 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 12 | <bounds x="0" y="0.2" width="1" height="0.6" /> | |
| 13 | </text> | |
| 14 | </element> | |
| 15 | ||
| 16 | <element name="discard2" defstate="0"> | |
| 17 | <rect state="1"> | |
| 18 | <color red="1.0" green="0.0" blue="0.0" /> | |
| 19 | </rect> | |
| 20 | <rect state="0"> | |
| 21 | <color red="0.3" green="0.0" blue="0.0" /> | |
| 22 | </rect> | |
| 23 | <text string="DISCARD 2"> | |
| 24 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 25 | <bounds x="0" y="0.1" width="1" height="0.4" /> | |
| 26 | </text> | |
| 27 | <text string="BASSO/LEFT"> | |
| 28 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 29 | <bounds x="0" y="0.5" width="1" height="0.4" /> | |
| 30 | </text> | |
| 31 | </element> | |
| 32 | ||
| 33 | <element name="discard3" defstate="0"> | |
| 34 | <rect state="1"> | |
| 35 | <color red="1.0" green="0.0" blue="0.0" /> | |
| 36 | </rect> | |
| 37 | <rect state="0"> | |
| 38 | <color red="0.3" green="0.0" blue="0.0" /> | |
| 39 | </rect> | |
| 40 | <text string="DISCARD 3"> | |
| 41 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 42 | <bounds x="0" y="0.2" width="1" height="0.6" /> | |
| 43 | </text> | |
| 44 | </element> | |
| 45 | ||
| 46 | <element name="discard4" defstate="0"> | |
| 47 | <rect state="1"> | |
| 48 | <color red="1.0" green="0.0" blue="0.0" /> | |
| 49 | </rect> | |
| 50 | <rect state="0"> | |
| 51 | <color red="0.3" green="0.0" blue="0.0" /> | |
| 52 | </rect> | |
| 53 | <text string="DISCARD 4"> | |
| 54 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 55 | <bounds x="0" y="0.1" width="1" height="0.4" /> | |
| 56 | </text> | |
| 57 | <text string="ALTO/RIGHT"> | |
| 58 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 59 | <bounds x="0" y="0.5" width="1" height="0.4" /> | |
| 60 | </text> | |
| 61 | </element> | |
| 62 | ||
| 63 | <element name="discard5" defstate="0"> | |
| 64 | <rect state="1"> | |
| 65 | <color red="1.0" green="0.0" blue="0.0" /> | |
| 66 | </rect> | |
| 67 | <rect state="0"> | |
| 68 | <color red="0.3" green="0.0" blue="0.0" /> | |
| 69 | </rect> | |
| 70 | <text string="DISCARD 5"> | |
| 71 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 72 | <bounds x="0" y="0.2" width="1" height="0.6" /> | |
| 73 | </text> | |
| 74 | </element> | |
| 75 | ||
| 76 | <element name="bet" defstate="0"> | |
| 77 | <rect state="1"> | |
| 78 | <color red="0.0" green="1.0" blue="0.0" /> | |
| 79 | </rect> | |
| 80 | <rect state="0"> | |
| 81 | <color red="0.0" green="0.3" blue="0.0" /> | |
| 82 | </rect> | |
| 83 | <text string="BET"> | |
| 84 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 85 | <bounds x="0" y="0.2" width="1" height="0.6" /> | |
| 86 | </text> | |
| 87 | </element> | |
| 88 | ||
| 89 | <element name="start" defstate="0"> | |
| 90 | <rect state="1"> | |
| 91 | <color red="0.0" green="1.0" blue="0.0" /> | |
| 92 | </rect> | |
| 93 | <rect state="0"> | |
| 94 | <color red="0.0" green="0.3" blue="0.0" /> | |
| 95 | </rect> | |
| 96 | <text string="START"> | |
| 97 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 98 | <bounds x="0" y="0.1" width="1" height="0.4" /> | |
| 99 | </text> | |
| 100 | <text string="PICK"> | |
| 101 | <color red="0.0" green="0.0" blue="0.0" /> | |
| 102 | <bounds x="0" y="0.5" width="1" height="0.4" /> | |
| 103 | </text> | |
| 104 | </element> | |
| 105 | ||
| 106 | ||
| 107 | <view name="Button Lamps"> | |
| 108 | <screen index="0"> | |
| 109 | <bounds left="0" top="0" right="4" bottom="3" /> | |
| 110 | </screen> | |
| 111 | <bezel name="lamp0" element="discard1"> | |
| 112 | <bounds x="0.15" y="3.13" width="0.55" height="0.24" /> | |
| 113 | </bezel> | |
| 114 | <bezel name="lamp1" element="discard2"> | |
| 115 | <bounds x="0.80" y="3.13" width="0.55" height="0.24" /> | |
| 116 | </bezel> | |
| 117 | <bezel name="lamp2" element="discard3"> | |
| 118 | <bounds x="1.45" y="3.13" width="0.55" height="0.24" /> | |
| 119 | </bezel> | |
| 120 | <bezel name="lamp3" element="discard4"> | |
| 121 | <bounds x="2.1" y="3.13" width="0.55" height="0.24" /> | |
| 122 | </bezel> | |
| 123 | <bezel name="lamp4" element="discard5"> | |
| 124 | <bounds x="2.75" y="3.13" width="0.55" height="0.24" /> | |
| 125 | </bezel> | |
| 126 | <bezel name="lamp5" element="start"> | |
| 127 | <bounds x="3.45" y="3.28" width="0.55" height="0.24" /> | |
| 128 | </bezel> | |
| 129 | <bezel name="lamp6" element="bet"> | |
| 130 | <bounds x="3.45" y="3.02" width="0.55" height="0.24" /> | |
| 131 | </bezel> | |
| 132 | </view> | |
| 133 | </mamelayout> |
| Added: svn:eol-style + native Added: svn:mime-type + text/plain |
| r20389 | r20390 | |
|---|---|---|
| 1 | 1 | /****************************************************************************** |
| 2 | 2 | |
| 3 | Number One | |
| 4 | ||
| 5 | 8bit gambling hardware. | |
| 3 | 6 | San Remo Games. |
| 4 | 8bit gambling hardware. | |
| 5 | 7 | |
| 8 | ||
| 6 | 9 | Driver by Roberto Fresca. |
| 7 | 10 | |
| 8 | 11 | |
| r20389 | r20390 | |
| 10 | 13 | |
| 11 | 14 | *** Hardware notes *** |
| 12 | 15 | |
| 13 | - CPU: 1x TMPZ84C00AP-6. | |
| 14 | - CRTC: 1x MC6845. | |
| 15 | - SND: 1x WF19054 (AY-3-8910). | |
| 16 | - CPU: 1x TMPZ84C00AP-6 [IC7] | |
| 17 | - CRTC: 1x MC68B45P [IC14] | |
| 18 | - SND: 1x WF19054 (AY-3-8910) [IC32] | |
| 16 | 19 | - CLK: 1x crystal @ 18.000 MHz. |
| 17 | 20 | |
| 18 | - PLDs: 3x PALCE (read protected). | |
| 21 | - ROM: 1x NM27C256 [IC26] | |
| 22 | 4x 27C512 [IC27, IC28, IC29, IC30] | |
| 19 | 23 | |
| 24 | - RAM: 1x UMC UM6116-3L (2K x 8 SRAM) (battery backed) [IC15] | |
| 25 | 2x GoldStar GN76C28K-10 (2K x 8 SRAM) [IC20, IC21] | |
| 20 | 26 | |
| 27 | - PLDs: 4x unknown PALCE (DIP-20, read protected) [IC4, IC24, IC25 & IC31] | |
| 28 | ||
| 29 | - 1x 8 DIP switches bank. | |
| 30 | ||
| 31 | - 1x 28x2 JAMMA edge connector [CN3] | |
| 32 | - 1x 4 legs connector [CN2] | |
| 33 | - 1x 5 legs connector [CN5] | |
| 34 | - 1x trimmer (volume) [P1] | |
| 35 | ||
| 36 | ||
| 37 | Graphics seems to have the insanely amount of 32 banks of 256 tiles, but with | |
| 38 | some scrambled logic (maybe driven through PLDs)... | |
| 39 | ||
| 40 | ||
| 21 | 41 | ******************************************************************************* |
| 22 | 42 | |
| 23 | 43 | Game Notes |
| 24 | 44 | ---------- |
| 25 | 45 | |
| 26 | Nothing yet... | |
| 46 | You can switch the game to use numbers or cards through the Test Mode. | |
| 47 | To enter the Test Mode, just turn the DIP switch 7 ON. | |
| 27 | 48 | |
| 28 | 49 | |
| 29 | 50 | ******************************************************************************* |
| 30 | 51 | |
| 31 | 52 | Driver updates: |
| 32 | 53 | |
| 33 | [2012/01/19] Preliminary driver... | |
| 34 | 54 | |
| 55 | [2012/01/19] | |
| 35 | 56 | |
| 57 | - Initial release. Preliminary driver. | |
| 58 | ||
| 59 | ||
| 60 | [2012/01/20] | |
| 61 | ||
| 62 | - Graphics decode. | |
| 63 | - Proper ROM load. | |
| 64 | - Memory Map. | |
| 65 | - Hooked CPU & interrupts. | |
| 66 | - Added CRTC support. | |
| 67 | - Added AY-3-8910 support. | |
| 68 | - Added input ports. | |
| 69 | - Added output-lamps port. | |
| 70 | - Added Button-Lamps layout. | |
| 71 | - Complete lamps support. | |
| 72 | - NVRAM support. | |
| 73 | ||
| 74 | ||
| 36 | 75 | TODO: |
| 37 | 76 | |
| 38 | - Fix video RAM | |
| 39 | - Interrupts. | |
| 40 | - Hook inputs. | |
| 41 | - Hook AY-8910. | |
| 77 | - Fix GFX banking. | |
| 78 | - Hook the intensity layer. | |
| 79 | - Figure out activity in some output ports. | |
| 42 | 80 | |
| 43 | 81 | |
| 44 | 82 | *******************************************************************************/ |
| r20389 | r20390 | |
| 51 | 89 | #include "video/mc6845.h" |
| 52 | 90 | #include "sound/ay8910.h" |
| 53 | 91 | #include "machine/nvram.h" |
| 92 | #include "sanremo.lh" | |
| 54 | 93 | |
| 55 | 94 | |
| 56 | 95 | class sanremo_state : public driver_device |
| r20389 | r20390 | |
| 58 | 97 | public: |
| 59 | 98 | sanremo_state(const machine_config &mconfig, device_type type, const char *tag) |
| 60 | 99 | : driver_device(mconfig, type, tag) , |
| 61 | m_videoram(*this, "videoram"), | |
| 62 | m_colorram(*this, "colorram"){ } | |
| 100 | m_videoram(*this, "videoram"){ } | |
| 63 | 101 | |
| 64 | 102 | required_shared_ptr<UINT8> m_videoram; |
| 65 | required_shared_ptr<UINT8> m_colorram; | |
| 66 | 103 | tilemap_t *m_bg_tilemap; |
| 67 | 104 | DECLARE_WRITE8_MEMBER(sanremo_videoram_w); |
| 68 | DECLARE_WRITE8_MEMBER(sanremo_colorram_w); | |
| 69 | 105 | TILE_GET_INFO_MEMBER(get_sanremo_tile_info); |
| 70 | DECLARE_READ8_MEMBER(testa_r); | |
| 71 | DECLARE_WRITE8_MEMBER(testa_w); | |
| 106 | DECLARE_WRITE8_MEMBER(banksel_w); | |
| 107 | DECLARE_WRITE8_MEMBER(lamps_w); | |
| 108 | int banksel; | |
| 72 | 109 | virtual void video_start(); |
| 110 | virtual void palette_init(); | |
| 73 | 111 | UINT32 screen_update_sanremo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 74 | 112 | }; |
| 75 | 113 | |
| 76 | 114 | |
| 77 | /************************* | |
| 78 | * Video Hardware * | |
| 79 | *************************/ | |
| 115 | /********************************************* | |
| 116 | * Video Hardware * | |
| 117 | *********************************************/ | |
| 80 | 118 | |
| 81 | 119 | |
| 82 | 120 | WRITE8_MEMBER(sanremo_state::sanremo_videoram_w) |
| r20389 | r20390 | |
| 85 | 123 | m_bg_tilemap->mark_tile_dirty(offset); |
| 86 | 124 | } |
| 87 | 125 | |
| 88 | WRITE8_MEMBER(sanremo_state::sanremo_colorram_w) | |
| 89 | { | |
| 90 | m_colorram[offset] = data; | |
| 91 | m_bg_tilemap->mark_tile_dirty(offset); | |
| 92 | } | |
| 93 | ||
| 94 | 126 | TILE_GET_INFO_MEMBER(sanremo_state::get_sanremo_tile_info) |
| 95 | 127 | { |
| 96 | int attr = m_colorram[tile_index]; | |
| 97 | 128 | int code = m_videoram[tile_index]; |
| 129 | int bank = banksel; | |
| 98 | 130 | |
| 99 | SET_TILE_INFO_MEMBER( 0, code, attr, 0); | |
| 100 | ||
| 131 | SET_TILE_INFO_MEMBER( bank, code, 0, 0); | |
| 101 | 132 | } |
| 102 | 133 | |
| 103 | 134 | void sanremo_state::video_start() |
| 104 | 135 | { |
| 105 | m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(sanremo_state::get_sanremo_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, | |
| 136 | m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(sanremo_state::get_sanremo_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 48, 48); | |
| 106 | 137 | } |
| 107 | 138 | |
| 108 | ||
| 109 | 139 | UINT32 sanremo_state::screen_update_sanremo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 110 | 140 | { |
| 111 | 141 | m_bg_tilemap->draw(bitmap, cliprect, 0, 0); |
| 112 | 142 | return 0; |
| 113 | 143 | } |
| 114 | 144 | |
| 145 | void sanremo_state::palette_init() | |
| 146 | { | |
| 147 | // TODO: implement 3bpp + I | |
| 148 | } | |
| 115 | 149 | |
| 116 | 150 | |
| 117 | /****************************** | |
| 118 | * R/W Handlers * | |
| 119 | ******************************/ | |
| 151 | /************************************************** | |
| 152 | * R/W Handlers * | |
| 153 | **************************************************/ | |
| 120 | 154 | |
| 121 | RE | |
| 155 | WRITE8_MEMBER(sanremo_state::lamps_w) | |
| 122 | 156 | { |
| 123 | return machine().rand() & 0xff; | |
| 157 | /* LAMPS: | |
| 158 | ||
| 159 | 7654 3210 | |
| 160 | ---- ---x DISCARD 1 | |
| 161 | ---- --x- DISCARD 2 | |
| 162 | ---- -x-- DISCARD 3 | |
| 163 | ---- x--- DISCARD 4 | |
| 164 | ---x ---- DISCARD 5 | |
| 165 | --x- ---- START | |
| 166 | -x-- ---- BET | |
| 167 | x--- ---- (always on) | |
| 168 | */ | |
| 169 | output_set_lamp_value(0, (data >> 0) & 1); /* DISCARD 1 */ | |
| 170 | output_set_lamp_value(1, (data >> 1) & 1); /* DISCARD 2 */ | |
| 171 | output_set_lamp_value(2, (data >> 2) & 1); /* DISCARD 3 */ | |
| 172 | output_set_lamp_value(3, (data >> 3) & 1); /* DISCARD 4 */ | |
| 173 | output_set_lamp_value(4, (data >> 4) & 1); /* DISCARD 5 */ | |
| 174 | output_set_lamp_value(5, (data >> 5) & 1); /* START */ | |
| 175 | output_set_lamp_value(6, (data >> 6) & 1); /* BET */ | |
| 124 | 176 | } |
| 125 | 177 | |
| 126 | WRITE8_MEMBER(sanremo_state:: | |
| 178 | WRITE8_MEMBER(sanremo_state::banksel_w) | |
| 127 | 179 | { |
| 128 | // printf("%02x TESTA\n", data); | |
| 180 | /* GFX banks selector. | |
| 181 | ||
| 182 | 7654 3210 | |
| 183 | ---x xxxx GFX banks selector | |
| 184 | xxx- ---- unknown | |
| 185 | */ | |
| 186 | banksel = data & 0x1f; | |
| 187 | ||
| 188 | // printf("BANKSEL %02x\n", data); | |
| 129 | 189 | } |
| 130 | 190 | |
| 131 | 191 | |
| 192 | /********************************************* | |
| 193 | * Memory map information * | |
| 194 | *********************************************/ | |
| 132 | 195 | |
| 133 | /************************* | |
| 134 | * Memory map information * | |
| 135 | *************************/ | |
| 136 | ||
| 137 | 196 | static ADDRESS_MAP_START( sanremo_map, AS_PROGRAM, 8, sanremo_state ) |
| 138 | 197 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 139 | AM_RANGE(0xc000, 0xc7ff) AM_RAM // seems to be working RAM | |
| 140 | AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(sanremo_videoram_w) AM_SHARE("videoram") // filling 8000-87ff with 0x0b ??? | |
| 141 | AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(sanremo_colorram_w) AM_SHARE("colorram") // filling 8000-87ff with 0x0b ??? | |
| 142 | AM_RANGE(0xf800, 0xffff) AM_RAM // dunno.. writting at very end. | |
| 143 | ||
| 198 | AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(sanremo_videoram_w) AM_SHARE("videoram") // 2x 76C28 (only 1 used?) | |
| 199 | AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") // battery backed UM6116 | |
| 144 | 200 | ADDRESS_MAP_END |
| 145 | 201 | |
| 146 | 202 | static ADDRESS_MAP_START( sanremo_portmap, AS_IO, 8, sanremo_state ) |
| 147 | 203 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 148 | AM_RANGE(0x01, 0x01) AM_READ(testa_r) | |
| 149 | AM_RANGE(0x03, 0x03) AM_WRITE(testa_w) | |
| 204 | AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") | |
| 205 | AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") | |
| 150 | 206 | AM_RANGE(0x04, 0x04) AM_DEVWRITE("crtc", mc6845_device, address_w) |
| 207 | AM_RANGE(0x05, 0x05) AM_WRITE(lamps_w) | |
| 151 | 208 | AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) |
| 209 | AM_RANGE(0x17, 0x17) AM_DEVWRITE_LEGACY("ay8910", ay8910_data_w) | |
| 210 | AM_RANGE(0x24, 0x24) AM_WRITE(banksel_w) | |
| 211 | AM_RANGE(0x27, 0x27) AM_DEVREAD_LEGACY("ay8910", ay8910_r) | |
| 212 | AM_RANGE(0x37, 0x37) AM_DEVWRITE_LEGACY("ay8910", ay8910_address_w) | |
| 213 | ADDRESS_MAP_END | |
| 152 | 214 | |
| 153 | 215 | /* |
| 154 | 216 | |
| 155 | 00 W | |
| 156 | 01 R -- read and xor to 03 | |
| 157 | 02 R | |
| 158 | 03 W | |
| 217 | 00 W -- contents of $C110 --> output port (normal 07, hopper 84). | |
| 218 | 01 R -- IN0 (read and xor to port 03h) | |
| 219 | 02 R -- IN1 | |
| 220 | 03 W -- ??? (from IN0) | |
| 159 | 221 | 04 W -- CRTC address |
| 160 | 06 W | |
| 222 | 05 W -- contents of $C117 --> lamps. | |
| 223 | 06 W -- contents of $C118 --> output port (mech pulses?) | |
| 161 | 224 | 14 W -- CRTC register |
| 162 | 15 W | |
| 163 | 17 W | |
| 164 | 24 W -- sequence 05 05 05 05 05 05 05 05 05 06 07 0A 0B 0C 0D | |
| 165 | 27 R | |
| 166 | 37 W | |
| 225 | 15 W -- contents of $C119 --> unknown | |
| 226 | 17 W -- AY8910 data | |
| 227 | 24 W -- sequence 05 05 05 05 05 05 05 05 05 06 07 0A 0B 0C 0D (banking) | |
| 228 | 27 R -- AY8910 read | |
| 229 | 37 W -- AY8910 address | |
| 167 | 230 | |
| 168 | 231 | */ |
| 169 | 232 | |
| 170 | ADDRESS_MAP_END | |
| 171 | 233 | |
| 234 | /********************************************* | |
| 235 | * Input ports * | |
| 236 | *********************************************/ | |
| 172 | 237 | |
| 173 | /************************* | |
| 174 | * Input ports * | |
| 175 | *************************/ | |
| 238 | static INPUT_PORTS_START( number1 ) | |
| 239 | PORT_START("IN0") // from I/O port 01h. | |
| 240 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN1-1") PORT_CODE(KEYCODE_A) | |
| 241 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) | |
| 242 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) | |
| 243 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN1-4") PORT_CODE(KEYCODE_S) | |
| 244 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN1-5") PORT_CODE(KEYCODE_D) | |
| 245 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN1-6") PORT_CODE(KEYCODE_F) | |
| 246 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) | |
| 247 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN1-8") PORT_CODE(KEYCODE_G) | |
| 176 | 248 | |
| 177 | static INPUT_PORTS_START( sanremo ) | |
| 249 | PORT_START("IN1") // from I/O port 02h. | |
| 250 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) | |
| 251 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start") | |
| 252 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2 / Basso (Low) / Left Card") | |
| 253 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4 / Alto (High) / Right Card") | |
| 254 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN0-5") PORT_CODE(KEYCODE_H) | |
| 255 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3") | |
| 256 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5") | |
| 257 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1") | |
| 258 | ||
| 259 | PORT_START("DSW") // from AY-8910 por A. | |
| 260 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:1") | |
| 261 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) | |
| 262 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) | |
| 263 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:2") | |
| 264 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) | |
| 265 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) | |
| 266 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:3") | |
| 267 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) | |
| 268 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) | |
| 269 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:4") | |
| 270 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) | |
| 271 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) | |
| 272 | PORT_DIPNAME( 0x10, 0x00, "Auto Hold" ) PORT_DIPLOCATION("DSW:5") | |
| 273 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) | |
| 274 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) | |
| 275 | PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:6") | |
| 276 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) | |
| 277 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) | |
| 278 | PORT_DIPNAME( 0x40, 0x00, "Test Mode" ) PORT_DIPLOCATION("DSW:7") | |
| 279 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) | |
| 280 | PORT_DIPSETTING( 0x40, DEF_STR( On ) ) | |
| 281 | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:8") | |
| 282 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) | |
| 283 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) | |
| 284 | ||
| 178 | 285 | INPUT_PORTS_END |
| 179 | 286 | |
| 180 | 287 | |
| 181 | /************************* | |
| 182 | * Graphics Layouts * | |
| 183 | *************************/ | |
| 288 | /********************************************* | |
| 289 | * Graphics Layouts * | |
| 290 | *********************************************/ | |
| 184 | 291 | |
| 185 | static const gfx_layout | |
| 292 | static const gfx_layout tilelayout = | |
| 186 | 293 | { |
| 187 | 294 | 8, 8, |
| 188 | RGN_FRAC(1,1), | |
| 189 | 1, | |
| 190 | { 0 }, | |
| 295 | RGN_FRAC(1,3), | |
| 296 | 3, | |
| 297 | { 0, RGN_FRAC(1,3), RGN_FRAC(2,3) }, | |
| 191 | 298 | { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 192 | 299 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 193 | 300 | 8*8 |
| 194 | 301 | }; |
| 195 | 302 | |
| 196 | static const gfx_layout | |
| 303 | static const gfx_layout ilayout = | |
| 197 | 304 | { |
| 198 | 305 | 8, 8, |
| 199 | RGN_FRAC(1,3), | |
| 200 | 3, | |
| 201 | { 0, RGN_FRAC(1,3), RGN_FRAC(2,3) }, | |
| 306 | RGN_FRAC(1,1), | |
| 307 | 1, | |
| 308 | { 0 }, | |
| 202 | 309 | { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 203 | 310 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, |
| 204 | 311 | 8*8 |
| 205 | 312 | }; |
| 206 | 313 | |
| 207 | 314 | |
| 208 | /****************************** | |
| 209 | * Graphics Decode Information * | |
| 210 | ******************************/ | |
| 315 | /************************************************** | |
| 316 | * Graphics Decode Information * | |
| 317 | **************************************************/ | |
| 211 | 318 | |
| 212 | 319 | static GFXDECODE_START( sanremo ) |
| 213 | GFXDECODE_ENTRY( "gfxbnk1", 0, tilelayout, 0, 1 ) | |
| 214 | GFXDECODE_ENTRY( "gfxbnk0", 0, charlayout, 0, 8 ) | |
| 320 | GFXDECODE_ENTRY( "gfx", 0, tilelayout, 0, 1 ) // ok | |
| 321 | GFXDECODE_ENTRY( "gfx", 0x800, tilelayout, 0, 1 ) | |
| 322 | GFXDECODE_ENTRY( "gfx", 0x1000, tilelayout, 0, 1 ) | |
| 323 | GFXDECODE_ENTRY( "gfx", 0x1800, tilelayout, 0, 1 ) | |
| 324 | GFXDECODE_ENTRY( "gfx", 0x2000, tilelayout, 0, 1 ) // ok tiles 0x400 (joker1) | |
| 325 | GFXDECODE_ENTRY( "gfx", 0x2800, tilelayout, 0, 1 ) // ok tiles 0x500 (joker2) | |
| 326 | GFXDECODE_ENTRY( "gfx", 0x3000, tilelayout, 0, 1 ) | |
| 327 | GFXDECODE_ENTRY( "gfx", 0x3800, tilelayout, 0, 1 ) | |
| 328 | ||
| 329 | GFXDECODE_ENTRY( "gfx", 0x4000, tilelayout, 0, 1 ) | |
| 330 | GFXDECODE_ENTRY( "gfx", 0x4800, tilelayout, 0, 1 ) | |
| 331 | GFXDECODE_ENTRY( "gfx", 0x5000, tilelayout, 0, 1 ) | |
| 332 | GFXDECODE_ENTRY( "gfx", 0x5800, tilelayout, 0, 1 ) | |
| 333 | GFXDECODE_ENTRY( "gfx", 0x6000, tilelayout, 0, 1 ) | |
| 334 | GFXDECODE_ENTRY( "gfx", 0x6800, tilelayout, 0, 1 ) | |
| 335 | GFXDECODE_ENTRY( "gfx", 0x7000, tilelayout, 0, 1 ) | |
| 336 | GFXDECODE_ENTRY( "gfx", 0x7800, tilelayout, 0, 1 ) | |
| 337 | ||
| 338 | GFXDECODE_ENTRY( "gfx", 0x8000, tilelayout, 0, 1 ) | |
| 339 | GFXDECODE_ENTRY( "gfx", 0x8800, tilelayout, 0, 1 ) | |
| 340 | GFXDECODE_ENTRY( "gfx", 0x9000, tilelayout, 0, 1 ) | |
| 341 | GFXDECODE_ENTRY( "gfx", 0x9800, tilelayout, 0, 1 ) | |
| 342 | GFXDECODE_ENTRY( "gfx", 0xa000, tilelayout, 0, 1 ) | |
| 343 | GFXDECODE_ENTRY( "gfx", 0xa800, tilelayout, 0, 1 ) // ok tiles 0x1500 (light lucky clubs) | |
| 344 | GFXDECODE_ENTRY( "gfx", 0xb000, tilelayout, 0, 1 ) // ok tiles 0x1600 (dark lucky clubs) | |
| 345 | GFXDECODE_ENTRY( "gfx", 0xb800, tilelayout, 0, 1 ) | |
| 346 | ||
| 347 | GFXDECODE_ENTRY( "gfx", 0xc000, tilelayout, 0, 1 ) | |
| 348 | GFXDECODE_ENTRY( "gfx", 0xc800, tilelayout, 0, 1 ) | |
| 349 | GFXDECODE_ENTRY( "gfx", 0xd000, tilelayout, 0, 1 ) | |
| 350 | GFXDECODE_ENTRY( "gfx", 0xd800, tilelayout, 0, 1 ) | |
| 351 | GFXDECODE_ENTRY( "gfx", 0xe000, tilelayout, 0, 1 ) | |
| 352 | GFXDECODE_ENTRY( "gfx", 0xe800, tilelayout, 0, 1 ) | |
| 353 | GFXDECODE_ENTRY( "gfx", 0xf000, tilelayout, 0, 1 ) | |
| 354 | GFXDECODE_ENTRY( "gfx", 0xf800, tilelayout, 0, 1 ) | |
| 355 | ||
| 356 | GFXDECODE_ENTRY( "gfxi", 0, ilayout, 0, 1 ) // Intensity, just to see the layer graphically | |
| 215 | 357 | GFXDECODE_END |
| 216 | 358 | |
| 217 | 359 | |
| 218 | /************************ | |
| 219 | * CRTC Interface * | |
| 220 | ************************/ | |
| 360 | /******************************************** | |
| 361 | * CRTC Interface * | |
| 362 | ********************************************/ | |
| 221 | 363 | |
| 222 | static MC6845_INTERFACE( mc6845_intf ) | |
| 364 | static const mc6845_interface mc6845_intf = | |
| 365 | /* | |
| 366 | *** MC6845 init *** | |
| 367 | ||
| 368 | Register: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | |
| 369 | Value: 0x45 0x30 0x36 0x0A 0x28 0x00 0x26 0x27 0x00 0x07 0x20 0x0B 0x00 0x00 0x00 0x00 0x00 0x00. | |
| 370 | ||
| 371 | */ | |
| 223 | 372 | { |
| 224 | 373 | "screen", /* screen we are acting on */ |
| 225 | 374 | false, /* show border area */ |
| r20389 | r20390 | |
| 235 | 384 | }; |
| 236 | 385 | |
| 237 | 386 | |
| 238 | /************************* | |
| 239 | * Sound Interfaces * | |
| 240 | *************************/ | |
| 387 | /******************************************** | |
| 388 | * Sound Interface * | |
| 389 | ********************************************/ | |
| 241 | 390 | |
| 242 | 391 | static const ay8910_interface ay8910_config = |
| 243 | 392 | { |
| 244 | 393 | AY8910_LEGACY_OUTPUT, |
| 245 | 394 | AY8910_DEFAULT_LOADS, |
| 395 | DEVCB_INPUT_PORT("DSW"), | |
| 246 | 396 | DEVCB_NULL, |
| 247 | 397 | DEVCB_NULL, |
| 248 | DEVCB_NULL, | |
| 249 | 398 | DEVCB_NULL |
| 250 | 399 | }; |
| 251 | 400 | |
| 252 | 401 | |
| 253 | /************************* | |
| 254 | * Machine Drivers * | |
| 255 | *************************/ | |
| 402 | /********************************************* | |
| 403 | * Machine Drivers * | |
| 404 | *********************************************/ | |
| 256 | 405 | |
| 257 | 406 | static MACHINE_CONFIG_START( sanremo, sanremo_state ) |
| 258 | 407 | |
| r20389 | r20390 | |
| 260 | 409 | MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/3) |
| 261 | 410 | MCFG_CPU_PROGRAM_MAP(sanremo_map) |
| 262 | 411 | MCFG_CPU_IO_MAP(sanremo_portmap) |
| 263 | ||
| 412 | MCFG_CPU_VBLANK_INT_DRIVER("screen", sanremo_state, irq0_line_hold) | |
| 264 | 413 | |
| 265 | ||
| 414 | MCFG_NVRAM_ADD_0FILL("nvram") | |
| 266 | 415 | |
| 267 | 416 | /* video hardware */ |
| 268 | 417 | MCFG_SCREEN_ADD("screen", RASTER) |
| r20389 | r20390 | |
| 285 | 434 | MACHINE_CONFIG_END |
| 286 | 435 | |
| 287 | 436 | |
| 288 | /************************* | |
| 289 | * Rom Load * | |
| 290 | *************************/ | |
| 437 | /********************************************* | |
| 438 | * Rom Load * | |
| 439 | *********************************************/ | |
| 291 | 440 | |
| 292 | ROM_START( | |
| 441 | ROM_START( number1 ) | |
| 293 | 442 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 294 | 443 | ROM_LOAD( "no_g0.ic26", 0x0000, 0x8000, CRC(2d83646f) SHA1(d1fafcce44ed3ec3dd53d84338c42244ebfca820) ) |
| 295 | 444 | |
| 296 | ROM_REGION( 0x10000, "gfxbnk0", 0 ) | |
| 297 | ROM_LOAD( "no_i4.ic30", 0x00000, 0x10000, CRC(55b351a4) SHA1(b0c8a30dde076520234281da051f21f1b7cb3166) ) // i? | |
| 445 | ROM_REGION( 0x10000, "gfxi", 0 ) | |
| 446 | ROM_LOAD( "no_i4.ic30", 0x00000, 0x10000, CRC(55b351a4) SHA1(b0c8a30dde076520234281da051f21f1b7cb3166) ) // i | |
| 298 | 447 | |
| 299 | ROM_REGION( 0x30000, "gfx | |
| 448 | ROM_REGION( 0x30000, "gfx", 0 ) | |
| 300 | 449 | ROM_LOAD( "no_b4.ic27", 0x00000, 0x10000, CRC(e48b1c8a) SHA1(88f60268fd43c06e146d936a1bdc078c44e2a213) ) // b |
| 301 | 450 | ROM_LOAD( "no_g4.ic28", 0x10000, 0x10000, CRC(4eea9a9b) SHA1(c86c083ccf08c3c310028920f9a0fe809fd7ccbe) ) // g |
| 302 | 451 | ROM_LOAD( "no_r4.ic29", 0x20000, 0x10000, CRC(ab08cdaf) SHA1(e0518403039b6bada79ffe4c6bc22fbb64d16e43) ) // r |
| 303 | 452 | |
| 453 | ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ | |
| 454 | ROM_LOAD( "number1_nvram.bin", 0x0000, 0x0800, CRC(4ece7b39) SHA1(49815571d75a39ab67d26691f902dfbd4e05feb4) ) | |
| 455 | ||
| 304 | 456 | ROM_REGION( 0x0600, "plds", 0 ) |
| 305 | 457 | ROM_LOAD( "palce1.bin", 0x0000, 0x0104, NO_DUMP ) /* PALCE is read protected */ |
| 306 | 458 | ROM_LOAD( "palce2.bin", 0x0200, 0x0104, NO_DUMP ) /* PALCE is read protected */ |
| r20389 | r20390 | |
| 308 | 460 | ROM_END |
| 309 | 461 | |
| 310 | 462 | |
| 311 | /************************* | |
| 312 | * Game Drivers * | |
| 313 | *************************/ | |
| 463 | /********************************************* | |
| 464 | * Game Drivers * | |
| 465 | *********************************************/ | |
| 314 | 466 | |
| 315 | /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ | |
| 316 | GAME( 198?, sanremo, 0, sanremo, sanremo, driver_device, 0, ROT0, "San Remo Games", "Unknown San Remo poker game", GAME_NOT_WORKING ) | |
| 467 | /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... LAYOUT */ | |
| 468 | GAMEL( 1996, number1, 0, sanremo, number1, driver_device, 0, ROT0, "San Remo Games", "Number One", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING, layout_sanremo ) |
| r20389 | r20390 | |
|---|---|---|
| 30419 | 30419 | bingoman |
| 30420 | 30420 | bingomana |
| 30421 | 30421 | |
| 30422 | ||
| 30422 | number1 // 1996 San Remo Games |
| r20389 | r20390 | |
|---|---|---|
| 2266 | 2266 | $(DRIVERS)/s11b.o: $(LAYOUT)/s11b.lh |
| 2267 | 2267 | $(DRIVERS)/s11c.o: $(LAYOUT)/s11c.lh |
| 2268 | 2268 | |
| 2269 | $(DRIVERS)/sanremo.o: $(LAYOUT)/sanremo.lh | |
| 2270 | ||
| 2269 | 2271 | $(DRIVERS)/sbrkout.o: $(LAYOUT)/sbrkout.lh |
| 2270 | 2272 | |
| 2271 | 2273 | $(DRIVERS)/sderby.o: $(LAYOUT)/sderby.lh \ |
| Previous | 199869 Revisions | Next |