trunk/src/mame/drivers/gluck2.c
| r243627 | r243628 | |
| 204 | 204 | public: |
| 205 | 205 | gluck2_state(const machine_config &mconfig, device_type type, const char *tag) |
| 206 | 206 | : driver_device(mconfig, type, tag) , |
| 207 | | m_maincpu(*this, "maincpu"), |
| 208 | | m_gfxdecode(*this, "gfxdecode"), |
| 209 | 207 | m_videoram(*this, "videoram"), |
| 210 | | m_colorram(*this, "colorram") { } |
| 208 | m_colorram(*this, "colorram"), |
| 209 | m_maincpu(*this, "maincpu"), |
| 210 | m_gfxdecode(*this, "gfxdecode"){ } |
| 211 | 211 | |
| 212 | | required_device<cpu_device> m_maincpu; |
| 213 | | required_device<gfxdecode_device> m_gfxdecode; |
| 214 | | |
| 215 | 212 | required_shared_ptr<UINT8> m_videoram; |
| 216 | 213 | required_shared_ptr<UINT8> m_colorram; |
| 217 | | |
| 218 | 214 | tilemap_t *m_bg_tilemap; |
| 219 | | |
| 220 | | DECLARE_WRITE8_MEMBER(videoram_w); |
| 221 | | DECLARE_WRITE8_MEMBER(colorram_w); |
| 215 | DECLARE_WRITE8_MEMBER(gluck2_videoram_w); |
| 216 | DECLARE_WRITE8_MEMBER(gluck2_colorram_w); |
| 222 | 217 | DECLARE_WRITE8_MEMBER(counters_w); |
| 223 | | TILE_GET_INFO_MEMBER(get_tile_info); |
| 224 | | |
| 218 | TILE_GET_INFO_MEMBER(get_gluck2_tile_info); |
| 225 | 219 | virtual void video_start(); |
| 226 | 220 | DECLARE_PALETTE_INIT(gluck2); |
| 227 | | |
| 228 | | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 221 | UINT32 screen_update_gluck2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 222 | required_device<cpu_device> m_maincpu; |
| 223 | required_device<gfxdecode_device> m_gfxdecode; |
| 229 | 224 | }; |
| 230 | 225 | |
| 231 | 226 | |
| r243627 | r243628 | |
| 234 | 229 | *********************************************/ |
| 235 | 230 | |
| 236 | 231 | |
| 237 | | WRITE8_MEMBER(gluck2_state::videoram_w) |
| 232 | WRITE8_MEMBER(gluck2_state::gluck2_videoram_w) |
| 238 | 233 | { |
| 239 | 234 | m_videoram[offset] = data; |
| 240 | 235 | m_bg_tilemap->mark_tile_dirty(offset); |
| 241 | 236 | } |
| 242 | 237 | |
| 243 | | WRITE8_MEMBER(gluck2_state::colorram_w) |
| 238 | WRITE8_MEMBER(gluck2_state::gluck2_colorram_w) |
| 244 | 239 | { |
| 245 | 240 | m_colorram[offset] = data; |
| 246 | 241 | m_bg_tilemap->mark_tile_dirty(offset); |
| 247 | 242 | } |
| 248 | 243 | |
| 249 | 244 | |
| 250 | | TILE_GET_INFO_MEMBER(gluck2_state::get_tile_info) |
| 245 | TILE_GET_INFO_MEMBER(gluck2_state::get_gluck2_tile_info) |
| 251 | 246 | { |
| 252 | 247 | /* - bits - |
| 253 | 248 | 7654 3210 |
| r243627 | r243628 | |
| 266 | 261 | |
| 267 | 262 | void gluck2_state::video_start() |
| 268 | 263 | { |
| 269 | | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gluck2_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 264 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gluck2_state::get_gluck2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 270 | 265 | } |
| 271 | 266 | |
| 272 | 267 | |
| 273 | | UINT32 gluck2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 268 | UINT32 gluck2_state::screen_update_gluck2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 274 | 269 | { |
| 275 | 270 | m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); |
| 276 | 271 | return 0; |
| r243627 | r243628 | |
| 345 | 340 | AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) |
| 346 | 341 | AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) |
| 347 | 342 | AM_RANGE(0x0844, 0x084b) AM_NOP /* see below */ |
| 348 | | AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* 6116 #1 (2K x 8) RAM (only 1st half used) */ |
| 349 | | AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") /* 6116 #2 (2K x 8) RAM (only 1st half used) */ |
| 343 | AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(gluck2_videoram_w) AM_SHARE("videoram") /* 6116 #1 (2K x 8) RAM (only 1st half used) */ |
| 344 | AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(gluck2_colorram_w) AM_SHARE("colorram") /* 6116 #2 (2K x 8) RAM (only 1st half used) */ |
| 350 | 345 | AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW1") |
| 351 | 346 | AM_RANGE(0x2d00, 0x2d01) AM_DEVWRITE("ymsnd", ym2413_device, write) |
| 352 | 347 | AM_RANGE(0x3400, 0x3400) AM_READ_PORT("IN0") |
| r243627 | r243628 | |
| 530 | 525 | */ |
| 531 | 526 | MCFG_SCREEN_SIZE((39+1)*8, (38+1)*8) /* from MC6845 init, registers 00 & 04. (value - 1) */ |
| 532 | 527 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) /* from MC6845 init, registers 01 & 06. */ |
| 533 | | MCFG_SCREEN_UPDATE_DRIVER(gluck2_state, screen_update) |
| 528 | MCFG_SCREEN_UPDATE_DRIVER(gluck2_state, screen_update_gluck2) |
| 534 | 529 | MCFG_SCREEN_PALETTE("palette") |
| 535 | 530 | |
| 536 | 531 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", gluck2) |
| r243627 | r243628 | |
| 583 | 578 | *********************************************/ |
| 584 | 579 | |
| 585 | 580 | /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ |
| 586 | | GAME( 1992, gluck2, 0, gluck2, gluck2, driver_device, 0, ROT0, "Yung Yu / CYE", "Good Luck II", GAME_SUPPORTS_SAVE ) |
| 581 | GAME( 1992, gluck2, 0, gluck2, gluck2, driver_device, 0, ROT0, "Yung Yu / CYE", "Good Luck II", 0 ) |
trunk/src/mame/drivers/iqblock.c
| r243627 | r243628 | |
| 25 | 25 | Stephh's notes : |
| 26 | 26 | |
| 27 | 27 | - Coin 2 as well as buttons 2 to 4 for each player are only read in "test mode". |
| 28 | | Same issue for Dip Switches 0-7 and 1-2 to 1-6. |
| 28 | Same issue for Dip Siwtches 0-7 and 1-2 to 1-6. |
| 29 | 29 | Some other games on the same hardware might use them. |
| 30 | 30 | - Dip Switch 0 is stored at 0xf0ac and Dip Switch 1 is stored at 0xf0ad. |
| 31 | 31 | However they are both read back at the same time with "ld hl,($F0AC)" instructions. |
| r243627 | r243628 | |
| 73 | 73 | } |
| 74 | 74 | |
| 75 | 75 | |
| 76 | | TIMER_DEVICE_CALLBACK_MEMBER(iqblock_state::irq) |
| 76 | TIMER_DEVICE_CALLBACK_MEMBER(iqblock_state::iqblock_irq) |
| 77 | 77 | { |
| 78 | 78 | int scanline = param; |
| 79 | 79 | |
| r243627 | r243628 | |
| 87 | 87 | } |
| 88 | 88 | |
| 89 | 89 | |
| 90 | | WRITE8_MEMBER(iqblock_state::irqack_w) |
| 90 | WRITE8_MEMBER(iqblock_state::iqblock_irqack_w) |
| 91 | 91 | { |
| 92 | 92 | m_maincpu->set_input_line(0, CLEAR_LINE); |
| 93 | 93 | } |
| r243627 | r243628 | |
| 119 | 119 | AM_RANGE(0x5090, 0x5090) AM_READ_PORT("SW0") |
| 120 | 120 | AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("SW1") |
| 121 | 121 | AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) // UM3567_data_port_0_w |
| 122 | | AM_RANGE(0x50c0, 0x50c0) AM_WRITE(irqack_w) |
| 123 | | AM_RANGE(0x6000, 0x603f) AM_WRITE(fgscroll_w) |
| 124 | | AM_RANGE(0x6800, 0x69ff) AM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") /* initialized up to 6fff... bug or larger tilemap? */ |
| 125 | | AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") |
| 122 | AM_RANGE(0x50c0, 0x50c0) AM_WRITE(iqblock_irqack_w) |
| 123 | AM_RANGE(0x6000, 0x603f) AM_WRITE(iqblock_fgscroll_w) |
| 124 | AM_RANGE(0x6800, 0x69ff) AM_WRITE(iqblock_fgvideoram_w) AM_SHARE("fgvideoram") /* initialized up to 6fff... bug or larger tilemap? */ |
| 125 | AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(iqblock_bgvideoram_w) AM_SHARE("bgvideoram") |
| 126 | 126 | AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("user1", 0) |
| 127 | 127 | ADDRESS_MAP_END |
| 128 | 128 | |
| r243627 | r243628 | |
| 340 | 340 | MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6 MHz */ |
| 341 | 341 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 342 | 342 | MCFG_CPU_IO_MAP(main_portmap) |
| 343 | | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", iqblock_state, irq, "screen", 0, 1) |
| 343 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", iqblock_state, iqblock_irq, "screen", 0, 1) |
| 344 | 344 | |
| 345 | 345 | MCFG_DEVICE_ADD("ppi8255", I8255A, 0) |
| 346 | 346 | MCFG_I8255_IN_PORTA_CB(IOPORT("P1")) |
| r243627 | r243628 | |
| 354 | 354 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 355 | 355 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 356 | 356 | MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 30*8-1) |
| 357 | | MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update) |
| 357 | MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update_iqblock) |
| 358 | 358 | MCFG_SCREEN_PALETTE("palette") |
| 359 | 359 | |
| 360 | 360 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", iqblock) |
| r243627 | r243628 | |
| 531 | 531 | |
| 532 | 532 | |
| 533 | 533 | |
| 534 | | GAME( 1993, iqblock, 0, iqblock, iqblock, iqblock_state, iqblock, ROT0, "IGS", "IQ-Block", GAME_SUPPORTS_SAVE ) |
| 535 | | GAME( 1993, grndtour, 0, iqblock, grndtour,iqblock_state, grndtour, ROT0, "IGS", "Grand Tour", GAME_SUPPORTS_SAVE ) |
| 534 | GAME( 1993, iqblock, 0, iqblock, iqblock, iqblock_state, iqblock, ROT0, "IGS", "IQ-Block", 0 ) |
| 535 | GAME( 1993, grndtour, 0, iqblock, grndtour,iqblock_state, grndtour, ROT0, "IGS", "Grand Tour", 0 ) |
trunk/src/mame/drivers/progolf.c
| r243627 | r243628 | |
| 64 | 64 | public: |
| 65 | 65 | progolf_state(const machine_config &mconfig, device_type type, const char *tag) |
| 66 | 66 | : driver_device(mconfig, type, tag), |
| 67 | m_fbram(*this, "fbram"), |
| 67 | 68 | m_maincpu(*this, "maincpu"), |
| 68 | 69 | m_audiocpu(*this, "audiocpu"), |
| 69 | 70 | m_gfxdecode(*this, "gfxdecode"), |
| 70 | | m_palette(*this, "palette"), |
| 71 | | m_videoram(*this, "videoram"), |
| 72 | | m_fbram(*this, "fbram") { } |
| 71 | m_palette(*this, "palette") { } |
| 73 | 72 | |
| 74 | | required_device<cpu_device> m_maincpu; |
| 75 | | required_device<cpu_device> m_audiocpu; |
| 76 | | required_device<gfxdecode_device> m_gfxdecode; |
| 77 | | required_device<palette_device> m_palette; |
| 78 | | |
| 79 | | required_shared_ptr<UINT8> m_videoram; |
| 80 | | required_shared_ptr<UINT8> m_fbram; |
| 81 | | |
| 73 | UINT8 *m_videoram; |
| 82 | 74 | UINT8 m_char_pen; |
| 83 | 75 | UINT8 m_char_pen_vreg; |
| 84 | 76 | UINT8 *m_fg_fb; |
| 77 | required_shared_ptr<UINT8> m_fbram; |
| 85 | 78 | UINT8 m_scrollx_hi; |
| 86 | 79 | UINT8 m_scrollx_lo; |
| 87 | 80 | UINT8 m_gfx_switch; |
| 88 | 81 | UINT8 m_sound_cmd; |
| 89 | | |
| 90 | | DECLARE_WRITE8_MEMBER(charram_w); |
| 91 | | DECLARE_WRITE8_MEMBER(char_vregs_w); |
| 92 | | DECLARE_WRITE8_MEMBER(scrollx_lo_w); |
| 93 | | DECLARE_WRITE8_MEMBER(scrollx_hi_w); |
| 94 | | DECLARE_WRITE8_MEMBER(flip_screen_w); |
| 82 | DECLARE_WRITE8_MEMBER(progolf_charram_w); |
| 83 | DECLARE_WRITE8_MEMBER(progolf_char_vregs_w); |
| 84 | DECLARE_WRITE8_MEMBER(progolf_scrollx_lo_w); |
| 85 | DECLARE_WRITE8_MEMBER(progolf_scrollx_hi_w); |
| 86 | DECLARE_WRITE8_MEMBER(progolf_flip_screen_w); |
| 95 | 87 | DECLARE_WRITE8_MEMBER(audio_command_w); |
| 96 | 88 | DECLARE_READ8_MEMBER(audio_command_r); |
| 97 | | DECLARE_READ8_MEMBER(videoram_r); |
| 98 | | DECLARE_WRITE8_MEMBER(videoram_w); |
| 99 | | |
| 89 | DECLARE_READ8_MEMBER(progolf_videoram_r); |
| 90 | DECLARE_WRITE8_MEMBER(progolf_videoram_w); |
| 100 | 91 | DECLARE_INPUT_CHANGED_MEMBER(coin_inserted); |
| 101 | | |
| 102 | | virtual void machine_start(); |
| 103 | 92 | virtual void video_start(); |
| 104 | 93 | DECLARE_PALETTE_INIT(progolf); |
| 105 | | |
| 106 | | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 94 | UINT32 screen_update_progolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 95 | required_device<cpu_device> m_maincpu; |
| 96 | required_device<cpu_device> m_audiocpu; |
| 97 | required_device<gfxdecode_device> m_gfxdecode; |
| 98 | required_device<palette_device> m_palette; |
| 107 | 99 | }; |
| 108 | 100 | |
| 109 | 101 | |
| 110 | | void progolf_state::machine_start() |
| 111 | | { |
| 112 | | save_item(NAME(m_sound_cmd)); |
| 113 | | } |
| 114 | 102 | |
| 103 | |
| 115 | 104 | void progolf_state::video_start() |
| 116 | 105 | { |
| 117 | 106 | m_scrollx_hi = 0; |
| 118 | 107 | m_scrollx_lo = 0; |
| 119 | 108 | |
| 120 | 109 | m_fg_fb = auto_alloc_array(machine(), UINT8, 0x2000*8); |
| 121 | | |
| 122 | | save_item(NAME(m_char_pen)); |
| 123 | | save_item(NAME(m_char_pen_vreg)); |
| 124 | | save_pointer(NAME(m_fg_fb), 0x2000*8); |
| 125 | | save_item(NAME(m_scrollx_hi)); |
| 126 | | save_item(NAME(m_scrollx_lo)); |
| 127 | | save_item(NAME(m_gfx_switch)); |
| 110 | m_videoram = auto_alloc_array(machine(), UINT8, 0x1000); |
| 128 | 111 | } |
| 129 | 112 | |
| 130 | 113 | |
| 131 | | UINT32 progolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 114 | UINT32 progolf_state::screen_update_progolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 132 | 115 | { |
| 116 | UINT8 *videoram = m_videoram; |
| 133 | 117 | int count,color,x,y,xi,yi; |
| 134 | 118 | |
| 135 | 119 | { |
| r243627 | r243628 | |
| 141 | 125 | { |
| 142 | 126 | for(y=0;y<32;y++) |
| 143 | 127 | { |
| 144 | | int tile = m_videoram[count]; |
| 128 | int tile = videoram[count]; |
| 145 | 129 | |
| 146 | 130 | m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tile,1,0,0,(256-x*8)+scroll,y*8); |
| 147 | 131 | /* wrap-around */ |
| r243627 | r243628 | |
| 179 | 163 | return 0; |
| 180 | 164 | } |
| 181 | 165 | |
| 182 | | WRITE8_MEMBER(progolf_state::charram_w) |
| 166 | WRITE8_MEMBER(progolf_state::progolf_charram_w) |
| 183 | 167 | { |
| 184 | 168 | int i; |
| 185 | 169 | m_fbram[offset] = data; |
| r243627 | r243628 | |
| 201 | 185 | } |
| 202 | 186 | } |
| 203 | 187 | |
| 204 | | WRITE8_MEMBER(progolf_state::char_vregs_w) |
| 188 | WRITE8_MEMBER(progolf_state::progolf_char_vregs_w) |
| 205 | 189 | { |
| 206 | 190 | m_char_pen = data & 0x07; |
| 207 | 191 | m_gfx_switch = data & 0xf0; |
| 208 | 192 | m_char_pen_vreg = data & 0x30; |
| 209 | 193 | } |
| 210 | 194 | |
| 211 | | WRITE8_MEMBER(progolf_state::scrollx_lo_w) |
| 195 | WRITE8_MEMBER(progolf_state::progolf_scrollx_lo_w) |
| 212 | 196 | { |
| 213 | 197 | m_scrollx_lo = data; |
| 214 | 198 | } |
| 215 | 199 | |
| 216 | | WRITE8_MEMBER(progolf_state::scrollx_hi_w) |
| 200 | WRITE8_MEMBER(progolf_state::progolf_scrollx_hi_w) |
| 217 | 201 | { |
| 218 | 202 | m_scrollx_hi = data; |
| 219 | 203 | } |
| 220 | 204 | |
| 221 | | WRITE8_MEMBER(progolf_state::flip_screen_w) |
| 205 | WRITE8_MEMBER(progolf_state::progolf_flip_screen_w) |
| 222 | 206 | { |
| 223 | 207 | flip_screen_set(data & 1); |
| 224 | 208 | if(data & 0xfe) |
| r243627 | r243628 | |
| 237 | 221 | return m_sound_cmd; |
| 238 | 222 | } |
| 239 | 223 | |
| 240 | | READ8_MEMBER(progolf_state::videoram_r) |
| 224 | READ8_MEMBER(progolf_state::progolf_videoram_r) |
| 241 | 225 | { |
| 226 | UINT8 *videoram = m_videoram; |
| 242 | 227 | UINT8 *gfx_rom = memregion("gfx1")->base(); |
| 243 | 228 | |
| 244 | 229 | if (offset >= 0x0800) |
| r243627 | r243628 | |
| 250 | 235 | else if (m_gfx_switch == 0x70) |
| 251 | 236 | return gfx_rom[offset + 0x2000]; |
| 252 | 237 | else |
| 253 | | return m_videoram[offset]; |
| 238 | return videoram[offset]; |
| 254 | 239 | } else { |
| 255 | 240 | if (m_gfx_switch == 0x10) |
| 256 | 241 | return gfx_rom[offset]; |
| r243627 | r243628 | |
| 259 | 244 | else if (m_gfx_switch == 0x30) |
| 260 | 245 | return gfx_rom[offset + 0x2000]; |
| 261 | 246 | else |
| 262 | | return m_videoram[offset]; |
| 247 | return videoram[offset]; |
| 263 | 248 | } |
| 264 | 249 | } |
| 265 | 250 | |
| 266 | | WRITE8_MEMBER(progolf_state::videoram_w) |
| 251 | WRITE8_MEMBER(progolf_state::progolf_videoram_w) |
| 267 | 252 | { |
| 253 | UINT8 *videoram = m_videoram; |
| 268 | 254 | //if(m_gfx_switch & 0x40) |
| 269 | | m_videoram[offset] = data; |
| 255 | videoram[offset] = data; |
| 270 | 256 | } |
| 271 | 257 | |
| 272 | 258 | static ADDRESS_MAP_START( main_cpu, AS_PROGRAM, 8, progolf_state ) |
| 273 | 259 | AM_RANGE(0x0000, 0x5fff) AM_RAM |
| 274 | | AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(charram_w) AM_SHARE("fbram") |
| 275 | | AM_RANGE(0x8000, 0x8fff) AM_READWRITE(videoram_r, videoram_w) AM_SHARE("videoram") |
| 276 | | AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN2") AM_WRITE(char_vregs_w) |
| 277 | | AM_RANGE(0x9200, 0x9200) AM_READ_PORT("P1") AM_WRITE(scrollx_hi_w) //p1 inputs |
| 278 | | AM_RANGE(0x9400, 0x9400) AM_READ_PORT("P2") AM_WRITE(scrollx_lo_w) //p2 inputs |
| 279 | | AM_RANGE(0x9600, 0x9600) AM_READ_PORT("IN0") AM_WRITE(flip_screen_w) /* VBLANK */ |
| 260 | AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(progolf_charram_w) AM_SHARE("fbram") |
| 261 | AM_RANGE(0x8000, 0x8fff) AM_READWRITE(progolf_videoram_r,progolf_videoram_w) |
| 262 | AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN2") AM_WRITE(progolf_char_vregs_w) |
| 263 | AM_RANGE(0x9200, 0x9200) AM_READ_PORT("P1") AM_WRITE(progolf_scrollx_hi_w) //p1 inputs |
| 264 | AM_RANGE(0x9400, 0x9400) AM_READ_PORT("P2") AM_WRITE(progolf_scrollx_lo_w) //p2 inputs |
| 265 | AM_RANGE(0x9600, 0x9600) AM_READ_PORT("IN0") AM_WRITE(progolf_flip_screen_w) /* VBLANK */ |
| 280 | 266 | AM_RANGE(0x9800, 0x9800) AM_READ_PORT("DSW1") |
| 281 | 267 | AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("crtc", mc6845_device, address_w) |
| 282 | 268 | AM_RANGE(0x9801, 0x9801) AM_DEVWRITE("crtc", mc6845_device, register_w) |
| r243627 | r243628 | |
| 376 | 362 | PORT_DIPUNUSED( 0x80, IP_ACTIVE_HIGH ) |
| 377 | 363 | INPUT_PORTS_END |
| 378 | 364 | |
| 379 | | static const gfx_layout charlayout = |
| 365 | static const gfx_layout progolf_charlayout = |
| 380 | 366 | { |
| 381 | 367 | 8,8, /* 8*8 characters */ |
| 382 | 368 | RGN_FRAC(1,3), /* 512 characters */ |
| r243627 | r243628 | |
| 388 | 374 | }; |
| 389 | 375 | |
| 390 | 376 | static GFXDECODE_START( progolf ) |
| 391 | | GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 8 ) /* sprites */ |
| 377 | GFXDECODE_ENTRY( "gfx1", 0x0000, progolf_charlayout, 0, 8 ) /* sprites */ |
| 392 | 378 | GFXDECODE_END |
| 393 | 379 | |
| 394 | 380 | |
| r243627 | r243628 | |
| 437 | 423 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072)) |
| 438 | 424 | MCFG_SCREEN_SIZE(256, 256) |
| 439 | 425 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) |
| 440 | | MCFG_SCREEN_UPDATE_DRIVER(progolf_state, screen_update) |
| 426 | MCFG_SCREEN_UPDATE_DRIVER(progolf_state, screen_update_progolf) |
| 441 | 427 | MCFG_SCREEN_PALETTE("palette") |
| 442 | 428 | |
| 443 | 429 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", progolf) |
| r243627 | r243628 | |
| 514 | 500 | |
| 515 | 501 | |
| 516 | 502 | // this uses DECO222 style encryption |
| 517 | | GAME( 1981, progolf, 0, progolf, progolf, driver_device, 0, ROT270, "Data East Corporation", "18 Holes Pro Golf (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 503 | GAME( 1981, progolf, 0, progolf, progolf, driver_device, 0, ROT270, "Data East Corporation", "18 Holes Pro Golf (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL ) |
| 518 | 504 | // this uses DECO CPU-6 as custom module CPU (the same as Zoar, are we sure? our Zoar has different encryption, CPU-7 style) |
| 519 | | GAME( 1981, progolfa, progolf, progolfa,progolf, driver_device, 0, ROT270, "Data East Corporation", "18 Holes Pro Golf (set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 505 | GAME( 1981, progolfa, progolf, progolfa,progolf, driver_device, 0, ROT270, "Data East Corporation", "18 Holes Pro Golf (set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL ) |
trunk/src/mame/drivers/quizo.c
| r243627 | r243628 | |
| 35 | 35 | : driver_device(mconfig, type, tag), |
| 36 | 36 | m_maincpu(*this, "maincpu") { } |
| 37 | 37 | |
| 38 | | required_device<cpu_device> m_maincpu; |
| 39 | | |
| 40 | 38 | UINT8 *m_videoram; |
| 41 | 39 | UINT8 m_port60; |
| 42 | 40 | UINT8 m_port70; |
| 43 | | |
| 44 | 41 | DECLARE_WRITE8_MEMBER(vram_w); |
| 45 | 42 | DECLARE_WRITE8_MEMBER(port70_w); |
| 46 | 43 | DECLARE_WRITE8_MEMBER(port60_w); |
| 47 | | |
| 48 | 44 | DECLARE_DRIVER_INIT(quizo); |
| 49 | 45 | DECLARE_PALETTE_INIT(quizo); |
| 50 | | |
| 51 | | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 46 | UINT32 screen_update_quizo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 47 | required_device<cpu_device> m_maincpu; |
| 52 | 48 | }; |
| 53 | 49 | |
| 54 | 50 | |
| r243627 | r243628 | |
| 86 | 82 | } |
| 87 | 83 | } |
| 88 | 84 | |
| 89 | | UINT32 quizo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 85 | UINT32 quizo_state::screen_update_quizo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 90 | 86 | { |
| 87 | UINT8 *videoram = m_videoram; |
| 91 | 88 | int x,y; |
| 92 | 89 | for(y=0;y<200;y++) |
| 93 | 90 | { |
| 94 | 91 | for(x=0;x<80;x++) |
| 95 | 92 | { |
| 96 | | int data=m_videoram[y*80+x]; |
| 97 | | int data1=m_videoram[y*80+x+0x4000]; |
| 93 | int data=videoram[y*80+x]; |
| 94 | int data1=videoram[y*80+x+0x4000]; |
| 98 | 95 | int pix; |
| 99 | 96 | |
| 100 | 97 | pix=(data&1)|(((data>>4)&1)<<1)|((data1&1)<<2)|(((data1>>4)&1)<<3); |
| r243627 | r243628 | |
| 118 | 115 | |
| 119 | 116 | WRITE8_MEMBER(quizo_state::vram_w) |
| 120 | 117 | { |
| 118 | UINT8 *videoram = m_videoram; |
| 121 | 119 | int bank=(m_port70&8)?1:0; |
| 122 | | m_videoram[offset+bank*0x4000]=data; |
| 120 | videoram[offset+bank*0x4000]=data; |
| 123 | 121 | } |
| 124 | 122 | |
| 125 | 123 | WRITE8_MEMBER(quizo_state::port70_w) |
| r243627 | r243628 | |
| 135 | 133 | data=0; |
| 136 | 134 | } |
| 137 | 135 | m_port60=data; |
| 138 | | membank("bank1")->set_entry(rombankLookup[data]); |
| 136 | membank("bank1")->set_base(&memregion("user1")->base()[rombankLookup[data]*0x4000] ); |
| 139 | 137 | } |
| 140 | 138 | |
| 141 | 139 | static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, quizo_state ) |
| r243627 | r243628 | |
| 220 | 218 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 221 | 219 | MCFG_SCREEN_SIZE(320, 200) |
| 222 | 220 | MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8, 200-1) |
| 223 | | MCFG_SCREEN_UPDATE_DRIVER(quizo_state, screen_update) |
| 221 | MCFG_SCREEN_UPDATE_DRIVER(quizo_state, screen_update_quizo) |
| 224 | 222 | MCFG_SCREEN_PALETTE("palette") |
| 225 | 223 | |
| 226 | 224 | MCFG_PALETTE_ADD("palette", 16) |
| r243627 | r243628 | |
| 267 | 265 | DRIVER_INIT_MEMBER(quizo_state,quizo) |
| 268 | 266 | { |
| 269 | 267 | m_videoram=auto_alloc_array(machine(), UINT8, 0x4000*2); |
| 270 | | membank("bank1")->configure_entries(0, 6, memregion("user1")->base(), 0x4000); |
| 271 | | |
| 272 | | save_pointer(NAME(m_videoram), 0x4000*2); |
| 273 | | //save_item(NAME(m_port60)); |
| 274 | | save_item(NAME(m_port70)); |
| 275 | 268 | } |
| 276 | 269 | |
| 277 | | GAME( 1985, quizo, 0, quizo, quizo, quizo_state, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 1)", GAME_SUPPORTS_SAVE ) |
| 278 | | GAME( 1985, quizoa, quizo, quizo, quizo, quizo_state, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 2)", GAME_SUPPORTS_SAVE ) |
| 270 | GAME( 1985, quizo, 0, quizo, quizo, quizo_state, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 1)", 0 ) |
| 271 | GAME( 1985, quizoa, quizo, quizo, quizo, quizo_state, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 2)", 0 ) |
trunk/src/mame/drivers/scotrsht.c
| r243627 | r243628 | |
| 45 | 45 | flip_screen_set(data & 0x08); |
| 46 | 46 | } |
| 47 | 47 | |
| 48 | | INTERRUPT_GEN_MEMBER(scotrsht_state::interrupt) |
| 48 | INTERRUPT_GEN_MEMBER(scotrsht_state::scotrsht_interrupt) |
| 49 | 49 | { |
| 50 | 50 | if (m_irq_enable) |
| 51 | | m_maincpu->set_input_line(0, HOLD_LINE); |
| 51 | device.execute().set_input_line(0, HOLD_LINE); |
| 52 | 52 | } |
| 53 | 53 | |
| 54 | | WRITE8_MEMBER(scotrsht_state::soundlatch_w) |
| 54 | WRITE8_MEMBER(scotrsht_state::scotrsht_soundlatch_w) |
| 55 | 55 | { |
| 56 | 56 | soundlatch_byte_w(space, 0, data); |
| 57 | 57 | m_audiocpu->set_input_line(0, HOLD_LINE); |
| 58 | 58 | } |
| 59 | 59 | |
| 60 | 60 | static ADDRESS_MAP_START( scotrsht_map, AS_PROGRAM, 8, scotrsht_state ) |
| 61 | | AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") |
| 62 | | AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 61 | AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(scotrsht_colorram_w) AM_SHARE("colorram") |
| 62 | AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(scotrsht_videoram_w) AM_SHARE("videoram") |
| 63 | 63 | AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram") /* sprites */ |
| 64 | 64 | AM_RANGE(0x10c0, 0x1fff) AM_RAM /* work ram */ |
| 65 | 65 | AM_RANGE(0x2000, 0x201f) AM_RAM AM_SHARE("scroll") /* scroll registers */ |
| 66 | 66 | AM_RANGE(0x2040, 0x2040) AM_WRITENOP |
| 67 | 67 | AM_RANGE(0x2041, 0x2041) AM_WRITENOP |
| 68 | 68 | AM_RANGE(0x2042, 0x2042) AM_WRITENOP /* it should be -> bit 2 = scroll direction like in jailbrek, but it's not used */ |
| 69 | | AM_RANGE(0x2043, 0x2043) AM_WRITE(charbank_w) |
| 69 | AM_RANGE(0x2043, 0x2043) AM_WRITE(scotrsht_charbank_w) |
| 70 | 70 | AM_RANGE(0x2044, 0x2044) AM_WRITE(ctrl_w) |
| 71 | | AM_RANGE(0x3000, 0x3000) AM_WRITE(palettebank_w) |
| 72 | | AM_RANGE(0x3100, 0x3100) AM_WRITE(soundlatch_w) |
| 71 | AM_RANGE(0x3000, 0x3000) AM_WRITE(scotrsht_palettebank_w) |
| 72 | AM_RANGE(0x3100, 0x3100) AM_WRITE(scotrsht_soundlatch_w) |
| 73 | 73 | AM_RANGE(0x3200, 0x3200) AM_WRITENOP /* it writes 0, 1 */ |
| 74 | 74 | AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW2") |
| 75 | 75 | AM_RANGE(0x3200, 0x3200) AM_READ_PORT("DSW3") |
| r243627 | r243628 | |
| 182 | 182 | /* basic machine hardware */ |
| 183 | 183 | MCFG_CPU_ADD("maincpu", M6809, 18432000/6) /* 3.072 MHz */ |
| 184 | 184 | MCFG_CPU_PROGRAM_MAP(scotrsht_map) |
| 185 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", scotrsht_state, interrupt) |
| 185 | MCFG_CPU_VBLANK_INT_DRIVER("screen", scotrsht_state, scotrsht_interrupt) |
| 186 | 186 | |
| 187 | 187 | MCFG_CPU_ADD("audiocpu", Z80, 18432000/6) /* 3.072 MHz */ |
| 188 | 188 | MCFG_CPU_PROGRAM_MAP(scotrsht_sound_map) |
| r243627 | r243628 | |
| 194 | 194 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 195 | 195 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 196 | 196 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 197 | | MCFG_SCREEN_UPDATE_DRIVER(scotrsht_state, screen_update) |
| 197 | MCFG_SCREEN_UPDATE_DRIVER(scotrsht_state, screen_update_scotrsht) |
| 198 | 198 | MCFG_SCREEN_PALETTE("palette") |
| 199 | 199 | |
| 200 | 200 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", scotrsht) |
| r243627 | r243628 | |
| 240 | 240 | ROM_LOAD( "gx545_6301_8f.bin", 0x0400, 0x0100, CRC(c1c7cf58) SHA1(08452228bf13e43ce4a05806f79e9cd1542416f1) ) /* sprites lookup */ |
| 241 | 241 | ROM_END |
| 242 | 242 | |
| 243 | | GAME( 1985, scotrsht, 0, scotrsht, scotrsht, driver_device, 0, ROT90,"Konami", "Scooter Shooter", GAME_SUPPORTS_SAVE ) |
| 243 | GAME( 1985, scotrsht, 0, scotrsht, scotrsht, driver_device, 0, ROT90,"Konami", "Scooter Shooter", 0 ) |
trunk/src/mame/includes/scotrsht.h
| r243627 | r243628 | |
| 3 | 3 | public: |
| 4 | 4 | scotrsht_state(const machine_config &mconfig, device_type type, const char *tag) |
| 5 | 5 | : driver_device(mconfig, type, tag), |
| 6 | | m_maincpu(*this, "maincpu"), |
| 7 | | m_audiocpu(*this, "audiocpu"), |
| 8 | | m_gfxdecode(*this, "gfxdecode"), |
| 9 | | m_palette(*this, "palette"), |
| 10 | 6 | m_colorram(*this, "colorram"), |
| 11 | 7 | m_videoram(*this, "videoram"), |
| 12 | 8 | m_spriteram(*this, "spriteram"), |
| 13 | | m_scroll(*this, "scroll") { } |
| 9 | m_scroll(*this, "scroll"), |
| 10 | m_maincpu(*this, "maincpu"), |
| 11 | m_audiocpu(*this, "audiocpu"), |
| 12 | m_gfxdecode(*this, "gfxdecode"), |
| 13 | m_palette(*this, "palette") { } |
| 14 | 14 | |
| 15 | | required_device<cpu_device> m_maincpu; |
| 16 | | required_device<cpu_device> m_audiocpu; |
| 17 | | required_device<gfxdecode_device> m_gfxdecode; |
| 18 | | required_device<palette_device> m_palette; |
| 19 | | |
| 15 | int m_irq_enable; |
| 20 | 16 | required_shared_ptr<UINT8> m_colorram; |
| 21 | 17 | required_shared_ptr<UINT8> m_videoram; |
| 22 | 18 | required_shared_ptr<UINT8> m_spriteram; |
| 23 | 19 | required_shared_ptr<UINT8> m_scroll; |
| 24 | | |
| 25 | 20 | tilemap_t *m_bg_tilemap; |
| 26 | | |
| 27 | | int m_irq_enable; |
| 28 | 21 | int m_charbank; |
| 29 | 22 | int m_palette_bank; |
| 30 | | |
| 31 | 23 | DECLARE_WRITE8_MEMBER(ctrl_w); |
| 32 | | DECLARE_WRITE8_MEMBER(soundlatch_w); |
| 33 | | DECLARE_WRITE8_MEMBER(videoram_w); |
| 34 | | DECLARE_WRITE8_MEMBER(colorram_w); |
| 35 | | DECLARE_WRITE8_MEMBER(charbank_w); |
| 36 | | DECLARE_WRITE8_MEMBER(palettebank_w); |
| 37 | | |
| 38 | | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 39 | | |
| 40 | | INTERRUPT_GEN_MEMBER(interrupt); |
| 41 | | |
| 24 | DECLARE_WRITE8_MEMBER(scotrsht_soundlatch_w); |
| 25 | DECLARE_WRITE8_MEMBER(scotrsht_videoram_w); |
| 26 | DECLARE_WRITE8_MEMBER(scotrsht_colorram_w); |
| 27 | DECLARE_WRITE8_MEMBER(scotrsht_charbank_w); |
| 28 | DECLARE_WRITE8_MEMBER(scotrsht_palettebank_w); |
| 29 | TILE_GET_INFO_MEMBER(scotrsht_get_bg_tile_info); |
| 42 | 30 | virtual void video_start(); |
| 43 | 31 | DECLARE_PALETTE_INIT(scotrsht); |
| 44 | | |
| 45 | | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 32 | UINT32 screen_update_scotrsht(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 33 | INTERRUPT_GEN_MEMBER(scotrsht_interrupt); |
| 46 | 34 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); |
| 35 | required_device<cpu_device> m_maincpu; |
| 36 | required_device<cpu_device> m_audiocpu; |
| 37 | required_device<gfxdecode_device> m_gfxdecode; |
| 38 | required_device<palette_device> m_palette; |
| 47 | 39 | }; |
trunk/src/mame/video/scotrsht.c
| r243627 | r243628 | |
| 34 | 34 | } |
| 35 | 35 | } |
| 36 | 36 | |
| 37 | | WRITE8_MEMBER(scotrsht_state::videoram_w) |
| 37 | WRITE8_MEMBER(scotrsht_state::scotrsht_videoram_w) |
| 38 | 38 | { |
| 39 | 39 | m_videoram[offset] = data; |
| 40 | 40 | m_bg_tilemap->mark_tile_dirty(offset); |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | | WRITE8_MEMBER(scotrsht_state::colorram_w) |
| 43 | WRITE8_MEMBER(scotrsht_state::scotrsht_colorram_w) |
| 44 | 44 | { |
| 45 | 45 | m_colorram[offset] = data; |
| 46 | 46 | m_bg_tilemap->mark_tile_dirty(offset); |
| 47 | 47 | } |
| 48 | 48 | |
| 49 | | WRITE8_MEMBER(scotrsht_state::charbank_w) |
| 49 | WRITE8_MEMBER(scotrsht_state::scotrsht_charbank_w) |
| 50 | 50 | { |
| 51 | 51 | if (m_charbank != (data & 0x01)) |
| 52 | 52 | { |
| r243627 | r243628 | |
| 57 | 57 | /* other bits unknown */ |
| 58 | 58 | } |
| 59 | 59 | |
| 60 | | WRITE8_MEMBER(scotrsht_state::palettebank_w) |
| 60 | WRITE8_MEMBER(scotrsht_state::scotrsht_palettebank_w) |
| 61 | 61 | { |
| 62 | 62 | if (m_palette_bank != ((data & 0x70) >> 4)) |
| 63 | 63 | { |
| r243627 | r243628 | |
| 72 | 72 | } |
| 73 | 73 | |
| 74 | 74 | |
| 75 | | TILE_GET_INFO_MEMBER(scotrsht_state::get_bg_tile_info) |
| 75 | TILE_GET_INFO_MEMBER(scotrsht_state::scotrsht_get_bg_tile_info) |
| 76 | 76 | { |
| 77 | 77 | int attr = m_colorram[tile_index]; |
| 78 | 78 | int code = m_videoram[tile_index] + (m_charbank << 9) + ((attr & 0x40) << 2); |
| r243627 | r243628 | |
| 90 | 90 | /* Same as Jailbreak + palette bank */ |
| 91 | 91 | void scotrsht_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ) |
| 92 | 92 | { |
| 93 | | for (int i = 0; i < m_spriteram.bytes(); i += 4) |
| 93 | UINT8 *spriteram = m_spriteram; |
| 94 | int i; |
| 95 | |
| 96 | for (i = 0; i < m_spriteram.bytes(); i += 4) |
| 94 | 97 | { |
| 95 | | int attr = m_spriteram[i + 1]; // attributes = ?tyxcccc |
| 96 | | int code = m_spriteram[i] + ((attr & 0x40) << 2); |
| 98 | int attr = spriteram[i + 1]; // attributes = ?tyxcccc |
| 99 | int code = spriteram[i] + ((attr & 0x40) << 2); |
| 97 | 100 | int color = (attr & 0x0f) + m_palette_bank * 16; |
| 98 | 101 | int flipx = attr & 0x10; |
| 99 | 102 | int flipy = attr & 0x20; |
| 100 | | int sx = m_spriteram[i + 2] - ((attr & 0x80) << 1); |
| 101 | | int sy = m_spriteram[i + 3]; |
| 103 | int sx = spriteram[i + 2] - ((attr & 0x80) << 1); |
| 104 | int sy = spriteram[i + 3]; |
| 102 | 105 | |
| 103 | 106 | if (flip_screen()) |
| 104 | 107 | { |
| r243627 | r243628 | |
| 116 | 119 | |
| 117 | 120 | void scotrsht_state::video_start() |
| 118 | 121 | { |
| 119 | | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(scotrsht_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); |
| 122 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(scotrsht_state::scotrsht_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); |
| 120 | 123 | |
| 121 | 124 | m_bg_tilemap->set_scroll_cols(64); |
| 122 | | |
| 123 | | save_item(NAME(m_irq_enable)); |
| 124 | | save_item(NAME(m_charbank)); |
| 125 | | save_item(NAME(m_palette_bank)); |
| 126 | 125 | } |
| 127 | 126 | |
| 128 | | UINT32 scotrsht_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 127 | UINT32 scotrsht_state::screen_update_scotrsht(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 129 | 128 | { |
| 130 | | for (int col = 0; col < 32; col++) |
| 129 | int col; |
| 130 | |
| 131 | for (col = 0; col < 32; col++) |
| 131 | 132 | m_bg_tilemap->set_scrolly(col, m_scroll[col]); |
| 132 | 133 | |
| 133 | 134 | m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); |