trunk/src/mame/audio/m72.cpp
| r252883 | r252884 | |
| 49 | 49 | const device_type M72 = &device_creator<m72_audio_device>; |
| 50 | 50 | |
| 51 | 51 | m72_audio_device::m72_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 52 | | : device_t(mconfig, M72, "Irem M72 Audio Custom", tag, owner, clock, "m72_audio", __FILE__), |
| 53 | | device_sound_interface(mconfig, *this), |
| 54 | | m_irqvector(0), |
| 55 | | m_sample_addr(0), |
| 56 | | m_samples(nullptr), |
| 57 | | m_samples_size(0) |
| 52 | : device_t(mconfig, M72, "Irem M72 Audio Custom", tag, owner, clock, "m72_audio", __FILE__) |
| 53 | , device_sound_interface(mconfig, *this) |
| 54 | , m_irqvector(0) |
| 55 | , m_sample_addr(0) |
| 56 | , m_samples(*this, "samples") |
| 57 | , m_samples_size(0) |
| 58 | 58 | { |
| 59 | 59 | } |
| 60 | 60 | |
| r252883 | r252884 | |
| 74 | 74 | |
| 75 | 75 | void m72_audio_device::device_start() |
| 76 | 76 | { |
| 77 | | m_samples = machine().root_device().memregion("samples")->base(); |
| 78 | | m_samples_size = machine().root_device().memregion("samples")->bytes(); |
| 77 | m_samples_size = m_samples.bytes(); |
| 79 | 78 | m_space = &machine().device("soundcpu")->memory().space(AS_IO); |
| 80 | 79 | m_dac = machine().device<dac_device>("dac"); |
| 81 | 80 | |
trunk/src/mame/drivers/hornet.cpp
| r252883 | r252884 | |
| 351 | 351 | m_dsw(*this, "DSW"), |
| 352 | 352 | m_eepromout(*this, "EEPROMOUT"), |
| 353 | 353 | m_analog1(*this, "ANALOG1"), |
| 354 | | m_analog2(*this, "ANALOG2") |
| 354 | m_analog2(*this, "ANALOG2"), |
| 355 | m_user3_ptr(*this, "user3"), |
| 356 | m_user5_ptr(*this, "user5") |
| 355 | 357 | { } |
| 356 | 358 | |
| 357 | 359 | // TODO: Needs verification on real hardware |
| r252883 | r252884 | |
| 373 | 375 | optional_device<eeprom_serial_93cxx_device> m_lan_eeprom; |
| 374 | 376 | required_ioport m_in0, m_in1, m_in2, m_dsw; |
| 375 | 377 | optional_ioport m_eepromout, m_analog1, m_analog2; |
| 378 | optional_region_ptr<UINT8> m_user3_ptr; |
| 379 | optional_region_ptr<UINT8> m_user5_ptr; |
| 376 | 380 | |
| 377 | 381 | emu_timer *m_sound_irq_timer; |
| 378 | 382 | UINT8 m_led_reg0; |
| r252883 | r252884 | |
| 946 | 950 | |
| 947 | 951 | void hornet_state::machine_reset() |
| 948 | 952 | { |
| 949 | | UINT8 *usr3 = memregion("user3")->base(); |
| 950 | | UINT8 *usr5 = memregion("user5")->base(); |
| 951 | | if (usr3 != nullptr) |
| 953 | if (m_user3_ptr) |
| 952 | 954 | { |
| 953 | | membank("bank1")->configure_entries(0, memregion("user3")->bytes() / 0x10000, usr3, 0x10000); |
| 955 | membank("bank1")->configure_entries(0, m_user3_ptr.bytes() / 0x10000, m_user3_ptr, 0x10000); |
| 954 | 956 | membank("bank1")->set_entry(0); |
| 955 | 957 | } |
| 956 | 958 | |
| 957 | 959 | m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); |
| 958 | 960 | |
| 959 | | if (usr5) |
| 960 | | membank("bank5")->set_base(usr5); |
| 961 | if (m_user5_ptr) |
| 962 | { |
| 963 | membank("bank5")->set_base(m_user5_ptr); |
| 964 | } |
| 961 | 965 | } |
| 962 | 966 | |
| 963 | 967 | ADC12138_IPT_CONVERT_CB(hornet_state::adc12138_input_callback) |
| r252883 | r252884 | |
| 1038 | 1042 | |
| 1039 | 1043 | MACHINE_RESET_MEMBER(hornet_state,hornet_2board) |
| 1040 | 1044 | { |
| 1041 | | UINT8 *usr3 = memregion("user3")->base(); |
| 1042 | | UINT8 *usr5 = memregion("user5")->base(); |
| 1043 | | |
| 1044 | | if (usr3 != nullptr) |
| 1045 | if (m_user3_ptr) |
| 1045 | 1046 | { |
| 1046 | | membank("bank1")->configure_entries(0, memregion("user3")->bytes() / 0x10000, usr3, 0x10000); |
| 1047 | membank("bank1")->configure_entries(0, m_user3_ptr.bytes() / 0x10000, m_user3_ptr, 0x10000); |
| 1047 | 1048 | membank("bank1")->set_entry(0); |
| 1048 | 1049 | } |
| 1049 | 1050 | m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); |
| 1050 | 1051 | m_dsp2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); |
| 1051 | 1052 | |
| 1052 | | if (usr5) |
| 1053 | if (m_user5_ptr) |
| 1053 | 1054 | { |
| 1054 | | membank("bank5")->set_base(usr5); |
| 1055 | | membank("bank6")->set_base(usr5); |
| 1055 | membank("bank5")->set_base(m_user5_ptr); |
| 1056 | membank("bank6")->set_base(m_user5_ptr); |
| 1056 | 1057 | } |
| 1057 | 1058 | } |
| 1058 | 1059 | |
trunk/src/mame/drivers/namcos86.cpp
| r252883 | r252884 | |
| 185 | 185 | { |
| 186 | 186 | /* if the ROM expansion module is available, don't do anything. This avoids conflict */ |
| 187 | 187 | /* with bankswitch1_ext_w() in wndrmomo */ |
| 188 | | if (memregion("user1")->base()) return; |
| 188 | if (m_user1_ptr) |
| 189 | return; |
| 189 | 190 | |
| 190 | 191 | membank("bank1")->set_entry(data & 0x03); |
| 191 | 192 | } |
| 192 | 193 | |
| 193 | 194 | WRITE8_MEMBER(namcos86_state::bankswitch1_ext_w) |
| 194 | 195 | { |
| 195 | | UINT8 *base = memregion("user1")->base(); |
| 196 | if (!m_user1_ptr) |
| 197 | return; |
| 196 | 198 | |
| 197 | | if (base == nullptr) return; |
| 198 | | |
| 199 | 199 | membank("bank1")->set_entry(data & 0x1f); |
| 200 | 200 | } |
| 201 | 201 | |
| r252883 | r252884 | |
| 288 | 288 | WRITE8_MEMBER(namcos86_state::cus115_w) |
| 289 | 289 | { |
| 290 | 290 | /* make sure the expansion board is present */ |
| 291 | | if (!memregion("user1")->base()) |
| 291 | if (!m_user1_ptr) |
| 292 | 292 | { |
| 293 | 293 | popmessage("expansion board not present"); |
| 294 | 294 | return; |
| r252883 | r252884 | |
| 317 | 317 | |
| 318 | 318 | void namcos86_state::machine_start() |
| 319 | 319 | { |
| 320 | | if (!memregion("user1")->base()) |
| 320 | if (m_user1_ptr) |
| 321 | membank("bank1")->configure_entries(0, 32, m_user1_ptr, 0x2000); |
| 322 | else |
| 321 | 323 | membank("bank1")->configure_entries(0, 4, memregion("cpu1")->base(), 0x2000); |
| 322 | | else |
| 323 | | membank("bank1")->configure_entries(0, 32, memregion("user1")->base(), 0x2000); |
| 324 | 324 | |
| 325 | 325 | if (membank("bank2")) |
| 326 | 326 | membank("bank2")->configure_entries(0, 4, memregion("cpu2")->base(), 0x2000); |
trunk/src/mame/includes/m107.h
| r252883 | r252884 | |
| 18 | 18 | { |
| 19 | 19 | public: |
| 20 | 20 | m107_state(const machine_config &mconfig, device_type type, const char *tag) |
| 21 | | : driver_device(mconfig, type, tag), |
| 22 | | m_maincpu(*this, "maincpu"), |
| 23 | | m_soundcpu(*this, "soundcpu"), |
| 24 | | m_gfxdecode(*this, "gfxdecode"), |
| 25 | | m_screen(*this, "screen"), |
| 26 | | m_palette(*this, "palette"), |
| 27 | | m_spriteram(*this, "spriteram"), |
| 28 | | m_vram_data(*this, "vram_data"), |
| 29 | | m_upd71059c(*this, "upd71059c") |
| 30 | | { } |
| 21 | : driver_device(mconfig, type, tag) |
| 22 | , m_maincpu(*this, "maincpu") |
| 23 | , m_soundcpu(*this, "soundcpu") |
| 24 | , m_gfxdecode(*this, "gfxdecode") |
| 25 | , m_screen(*this, "screen") |
| 26 | , m_palette(*this, "palette") |
| 27 | , m_spriteram(*this, "spriteram") |
| 28 | , m_vram_data(*this, "vram_data") |
| 29 | , m_upd71059c(*this, "upd71059c") |
| 30 | , m_user1_ptr(*this, "user1") |
| 31 | { |
| 32 | } |
| 31 | 33 | |
| 32 | 34 | required_device<cpu_device> m_maincpu; |
| 33 | 35 | required_device<cpu_device> m_soundcpu; |
| r252883 | r252884 | |
| 38 | 40 | required_shared_ptr<UINT16> m_spriteram; |
| 39 | 41 | required_shared_ptr<UINT16> m_vram_data; |
| 40 | 42 | required_device<pic8259_device> m_upd71059c; |
| 43 | optional_region_ptr<UINT8> m_user1_ptr; |
| 41 | 44 | |
| 42 | 45 | // driver init |
| 43 | 46 | UINT8 m_spritesystem; |
trunk/src/mame/includes/namcos86.h
| r252883 | r252884 | |
| 6 | 6 | { |
| 7 | 7 | public: |
| 8 | 8 | namcos86_state(const machine_config &mconfig, device_type type, const char *tag) |
| 9 | | : driver_device(mconfig, type, tag), |
| 10 | | m_cpu1(*this, "cpu1"), |
| 11 | | m_cpu2(*this, "cpu2"), |
| 12 | | m_cus30(*this, "namco"), |
| 13 | | m_gfxdecode(*this, "gfxdecode"), |
| 14 | | m_palette(*this, "palette"), |
| 15 | | m_rthunder_videoram1(*this, "videoram1"), |
| 16 | | m_rthunder_videoram2(*this, "videoram2"), |
| 17 | | m_rthunder_spriteram(*this, "spriteram") { } |
| 9 | : driver_device(mconfig, type, tag) |
| 10 | , m_cpu1(*this, "cpu1") |
| 11 | , m_cpu2(*this, "cpu2") |
| 12 | , m_cus30(*this, "namco") |
| 13 | , m_gfxdecode(*this, "gfxdecode") |
| 14 | , m_palette(*this, "palette") |
| 15 | , m_rthunder_videoram1(*this, "videoram1") |
| 16 | , m_rthunder_videoram2(*this, "videoram2") |
| 17 | , m_rthunder_spriteram(*this, "spriteram") |
| 18 | , m_user1_ptr(*this, "user1") |
| 19 | { |
| 20 | } |
| 18 | 21 | |
| 19 | 22 | required_device<cpu_device> m_cpu1; |
| 20 | 23 | required_device<cpu_device> m_cpu2; |
| r252883 | r252884 | |
| 24 | 27 | required_shared_ptr<UINT8> m_rthunder_videoram1; |
| 25 | 28 | required_shared_ptr<UINT8> m_rthunder_videoram2; |
| 26 | 29 | required_shared_ptr<UINT8> m_rthunder_spriteram; |
| 30 | optional_region_ptr<UINT8> m_user1_ptr; |
| 27 | 31 | |
| 28 | 32 | UINT8 *m_spriteram; |
| 29 | 33 | int m_wdog; |
trunk/src/mame/includes/nbmj8891.h
| r252883 | r252884 | |
| 11 | 11 | }; |
| 12 | 12 | |
| 13 | 13 | nbmj8891_state(const machine_config &mconfig, device_type type, const char *tag) |
| 14 | | : driver_device(mconfig, type, tag) , |
| 15 | | m_maincpu(*this, "maincpu"), |
| 16 | | m_nb1413m3(*this, "nb1413m3"), |
| 17 | | m_screen(*this, "screen"), |
| 18 | | m_palette(*this, "palette") { } |
| 14 | : driver_device(mconfig, type, tag) |
| 15 | , m_maincpu(*this, "maincpu") |
| 16 | , m_nb1413m3(*this, "nb1413m3") |
| 17 | , m_screen(*this, "screen") |
| 18 | , m_palette(*this, "palette") |
| 19 | , m_clut_ptr(*this, "protection") |
| 20 | { |
| 21 | } |
| 19 | 22 | |
| 20 | 23 | required_device<cpu_device> m_maincpu; |
| 21 | 24 | required_device<nb1413m3_device> m_nb1413m3; |
| 22 | 25 | required_device<screen_device> m_screen; |
| 23 | 26 | required_device<palette_device> m_palette; |
| 27 | optional_region_ptr<UINT8> m_clut_ptr; |
| 24 | 28 | |
| 25 | 29 | int m_scrolly; |
| 26 | 30 | int m_blitter_destx; |
trunk/src/mame/video/m107.cpp
| r252883 | r252884 | |
| 160 | 160 | void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 161 | 161 | { |
| 162 | 162 | UINT16 *spriteram = m_buffered_spriteram.get(); |
| 163 | | int offs; |
| 164 | | UINT8 *rom = memregion("user1")->base(); |
| 165 | 163 | |
| 166 | | for (offs = 0;offs < 0x800;offs += 4) |
| 164 | for (int offs = 0; offs < 0x800; offs += 4) |
| 167 | 165 | { |
| 168 | | int x,y,sprite,colour,fx,fy,y_multi,i,s_ptr,pri_mask; |
| 166 | int pri_mask = (!(spriteram[offs + 2] & 0x80)) ? 2 : 0; |
| 169 | 167 | |
| 170 | | pri_mask = (!(spriteram[offs+2]&0x80)) ? 2 : 0; |
| 168 | int y = spriteram[offs + 0] & 0x1ff; |
| 169 | int x = spriteram[offs + 3] & 0x1ff; |
| 171 | 170 | |
| 172 | | y=spriteram[offs+0]; |
| 173 | | x=spriteram[offs+3]; |
| 174 | | x&=0x1ff; |
| 175 | | y&=0x1ff; |
| 176 | | |
| 177 | 171 | if (x==0 || y==0) continue; /* offscreen */ |
| 178 | 172 | |
| 179 | | sprite=spriteram[offs+1]&0x7fff; |
| 173 | int sprite_code = spriteram[offs + 1] & 0x7fff; |
| 180 | 174 | |
| 181 | 175 | x = x - 16; |
| 182 | 176 | y = 384 - 16 - y; |
| 183 | 177 | |
| 184 | | colour=spriteram[offs+2]&0x7f; |
| 185 | | fx=(spriteram[offs+2]>>8)&0x1; |
| 186 | | fy=(spriteram[offs+2]>>8)&0x2; |
| 187 | | y_multi=(spriteram[offs+0]>>11)&0x3; |
| 178 | int colour = spriteram[offs + 2] & 0x7f; |
| 179 | bool fx = (spriteram[offs + 2] >> 8) & 0x1; |
| 180 | bool fy = (spriteram[offs + 2] >> 8) & 0x2; |
| 181 | int y_multi=(spriteram[offs + 0] >> 11) & 0x3; |
| 188 | 182 | |
| 189 | 183 | if (m_spritesystem == 0) |
| 190 | 184 | { |
| 191 | | y_multi=1 << y_multi; /* 1, 2, 4 or 8 */ |
| 185 | y_multi = 1 << y_multi; /* 1, 2, 4 or 8 */ |
| 192 | 186 | |
| 193 | | s_ptr = 0; |
| 194 | | if (!fy) s_ptr+=y_multi-1; |
| 187 | int s_ptr = fy ? 0 : y_multi - 1; |
| 195 | 188 | |
| 196 | | for (i=0; i<y_multi; i++) |
| 189 | for (int i = 0; i < y_multi; i++) |
| 197 | 190 | { |
| 198 | | m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect, |
| 199 | | sprite + s_ptr, |
| 200 | | colour, |
| 201 | | fx,fy, |
| 202 | | x,y-i*16, |
| 203 | | screen.priority(),pri_mask,0); |
| 191 | m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, sprite_code + s_ptr, colour, fx, fy, x, y - i * 16, screen.priority(), pri_mask, 0); |
| 192 | m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, sprite_code + s_ptr, colour, fx, fy, x, (y - i * 16) - 0x200, screen.priority(), pri_mask, 0); /* wrap-around y */ |
| 204 | 193 | |
| 205 | | /* wrap-around y */ |
| 206 | | m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect, |
| 207 | | sprite + s_ptr, |
| 208 | | colour, |
| 209 | | fx,fy, |
| 210 | | x,(y-i*16) - 0x200, |
| 211 | | screen.priority(),pri_mask,0); |
| 212 | | |
| 213 | | if (fy) s_ptr++; else s_ptr--; |
| 194 | if (fy) |
| 195 | s_ptr++; |
| 196 | else |
| 197 | s_ptr--; |
| 214 | 198 | } |
| 215 | 199 | } |
| 216 | 200 | else |
| 217 | 201 | { |
| 218 | | int rom_offs = sprite*8; |
| 202 | int rom_offs = sprite_code * 8; |
| 219 | 203 | |
| 220 | | if (rom[rom_offs+1] || rom[rom_offs+3] || rom[rom_offs+5] || rom[rom_offs+7]) |
| 204 | if (m_user1_ptr[rom_offs + 1] || m_user1_ptr[rom_offs + 3] || m_user1_ptr[rom_offs + 5] || m_user1_ptr[rom_offs + 7]) |
| 221 | 205 | { |
| 222 | 206 | while (rom_offs < 0x40000) /* safety check */ |
| 223 | 207 | { |
| 208 | UINT8 *sprite = m_user1_ptr + rom_offs; |
| 224 | 209 | /* |
| 225 | 210 | [1] |
| 226 | 211 | x--- ---- end of block marker |
| r252883 | r252884 | |
| 241 | 226 | ---- ---x X offs hi byte |
| 242 | 227 | */ |
| 243 | 228 | |
| 244 | | int xdisp = rom[rom_offs+6]+256*rom[rom_offs+7]; |
| 245 | | int ydisp = rom[rom_offs+2]+256*rom[rom_offs+3]; |
| 246 | | int ffx=fx^(rom[rom_offs+1]&1); |
| 247 | | int ffy=fy^(rom[rom_offs+1]&2); |
| 248 | | sprite=rom[rom_offs+4]+256*rom[rom_offs+5]; |
| 249 | | y_multi=1<<((rom[rom_offs+3]>>1)&0x3); |
| 250 | | if (fx) xdisp = -xdisp-16; |
| 251 | | if (fy) ydisp = -ydisp - (16*y_multi-1); |
| 252 | | if (!ffy) sprite+=y_multi-1; |
| 253 | | for (i=0; i<y_multi; i++) |
| 229 | int xdisp = (sprite[7] << 8) | sprite[6]; |
| 230 | int ydisp = (sprite[3] << 8) | sprite[2]; |
| 231 | int ffx = fx ^ (sprite[1] & 1); |
| 232 | int ffy = fy ^ (sprite[1] & 2); |
| 233 | sprite_code = (sprite[5] << 8) | sprite[4]; |
| 234 | y_multi = 1 << ((sprite[3] >> 1) & 0x3); |
| 235 | if (fx) |
| 236 | xdisp = -xdisp - 16; |
| 237 | if (fy) |
| 238 | ydisp = -ydisp - (16 * y_multi - 1); |
| 239 | if (!ffy) |
| 240 | sprite += y_multi - 1; |
| 241 | |
| 242 | for (int i = 0; i < y_multi; i++) |
| 254 | 243 | { |
| 255 | | m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect, |
| 256 | | sprite+(ffy?i:-i), |
| 257 | | colour, |
| 258 | | ffx,ffy, |
| 259 | | (x+xdisp)&0x1ff,(y-ydisp-16*i)&0x1ff, |
| 260 | | screen.priority(),pri_mask,0); |
| 244 | m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, sprite_code + (ffy ? i : -i), colour, ffx, ffy, (x + xdisp) & 0x1ff, (y - ydisp - 16 * i) & 0x1ff, screen.priority(), pri_mask, 0); |
| 261 | 245 | |
| 262 | 246 | /* wrap-around y */ |
| 263 | | m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect, |
| 264 | | sprite+(ffy?i:-i), |
| 265 | | colour, |
| 266 | | ffx,ffy, |
| 267 | | (x+xdisp)&0x1ff,((y-ydisp-16*i)&0x1ff)-0x200, |
| 268 | | screen.priority(),pri_mask,0); |
| 247 | m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, sprite_code + (ffy ? i : -i), colour, ffx, ffy, (x + xdisp) & 0x1ff, ((y - ydisp - 16 * i) & 0x1ff) - 0x200, screen.priority(), pri_mask, 0); |
| 269 | 248 | } |
| 270 | 249 | |
| 271 | | if (rom[rom_offs+1]&0x80) break; /* end of block */ |
| 250 | if (sprite[1] & 0x80) |
| 251 | break; /* end of block */ |
| 272 | 252 | |
| 273 | 253 | rom_offs += 8; |
| 274 | 254 | } |
trunk/src/mame/video/st0020.cpp
| r252883 | r252884 | |
| 16 | 16 | const device_type ST0020_SPRITES = &device_creator<st0020_device>; |
| 17 | 17 | |
| 18 | 18 | st0020_device::st0020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 19 | | : device_t(mconfig, ST0020_SPRITES, "Seta ST0020 Sprites", tag, owner, clock, "st0020", __FILE__), |
| 20 | | m_gfxdecode(*this), |
| 21 | | m_palette(*this) |
| 19 | : device_t(mconfig, ST0020_SPRITES, "Seta ST0020 Sprites", tag, owner, clock, "st0020", __FILE__) |
| 20 | , m_gfxdecode(*this) |
| 21 | , m_palette(*this) |
| 22 | , m_rom_ptr(*this, ":st0020") |
| 22 | 23 | { |
| 23 | 24 | m_is_st0032 = 0; |
| 24 | 25 | m_is_jclub2 = 0; |
| r252883 | r252884 | |
| 183 | 184 | UINT32 dst = (st0020_blitram[0xc4/2] + (st0020_blitram[0xc6/2] << 16)) << 4; |
| 184 | 185 | UINT32 len = (st0020_blitram[0xc8/2]) << 4; |
| 185 | 186 | |
| 186 | | UINT8 *rom = memregion(":st0020")->base(); |
| 187 | | |
| 188 | | |
| 189 | | if (!rom) |
| 187 | if (!m_rom_ptr) |
| 190 | 188 | { |
| 191 | 189 | logerror("CPU #0 PC: %06X - Blit out of range: src %x, dst %x, len %x\n",space.device().safe_pc(),src,dst,len); |
| 192 | 190 | return; |
| 193 | 191 | } |
| 194 | 192 | |
| 195 | | size_t size = memregion(":st0020")->bytes(); |
| 193 | size_t size = m_rom_ptr.bytes(); |
| 196 | 194 | |
| 197 | 195 | if ( (src+len <= size) && (dst+len <= 4 * 0x100000) ) |
| 198 | 196 | { |
| 199 | | memcpy( &m_st0020_gfxram[dst/2], &rom[src], len ); |
| 197 | memcpy( &m_st0020_gfxram[dst/2], &m_rom_ptr[src], len ); |
| 200 | 198 | |
| 201 | 199 | if (len % (16*8)) len = len / (16*8) + 1; |
| 202 | 200 | else len = len / (16*8); |