trunk/src/mame/includes/namcos2.h
| r17639 | r17640 | |
| 85 | 85 | NAMCOFL_FINAL_LAP_R |
| 86 | 86 | }; |
| 87 | 87 | |
| 88 | class namcos2_state : public driver_device |
| 89 | { |
| 90 | public: |
| 91 | namcos2_state(const machine_config &mconfig, device_type type, const char *tag) |
| 92 | : driver_device(mconfig, type, tag), |
| 93 | m_dpram(*this, "dpram"), |
| 94 | m_spriteram(*this, "spriteram"), |
| 95 | m_paletteram(*this, "paletteram"), |
| 96 | m_rozram(*this, "rozram") |
| 97 | { } |
| 98 | DECLARE_READ16_MEMBER(dpram_word_r); |
| 99 | DECLARE_WRITE16_MEMBER(dpram_word_w); |
| 100 | DECLARE_READ8_MEMBER(dpram_byte_r); |
| 101 | DECLARE_WRITE8_MEMBER(dpram_byte_w); |
| 102 | DECLARE_DRIVER_INIT(cosmogng); |
| 103 | DECLARE_DRIVER_INIT(sgunner2); |
| 104 | DECLARE_DRIVER_INIT(kyukaidk); |
| 105 | DECLARE_DRIVER_INIT(bubbletr); |
| 106 | DECLARE_DRIVER_INIT(suzuk8h2); |
| 107 | DECLARE_DRIVER_INIT(burnforc); |
| 108 | DECLARE_DRIVER_INIT(gollygho); |
| 109 | DECLARE_DRIVER_INIT(rthun2j); |
| 110 | DECLARE_DRIVER_INIT(sws); |
| 111 | DECLARE_DRIVER_INIT(finehour); |
| 112 | DECLARE_DRIVER_INIT(finallap); |
| 113 | DECLARE_DRIVER_INIT(dirtfoxj); |
| 114 | DECLARE_DRIVER_INIT(marvlanj); |
| 115 | DECLARE_DRIVER_INIT(sws92); |
| 116 | DECLARE_DRIVER_INIT(dsaber); |
| 117 | DECLARE_DRIVER_INIT(assault); |
| 118 | DECLARE_DRIVER_INIT(mirninja); |
| 119 | DECLARE_DRIVER_INIT(finalap2); |
| 120 | DECLARE_DRIVER_INIT(valkyrie); |
| 121 | DECLARE_DRIVER_INIT(fourtrax); |
| 122 | DECLARE_DRIVER_INIT(finalap3); |
| 123 | DECLARE_DRIVER_INIT(luckywld); |
| 124 | DECLARE_DRIVER_INIT(assaultj); |
| 125 | DECLARE_DRIVER_INIT(dsaberj); |
| 126 | DECLARE_DRIVER_INIT(suzuka8h); |
| 127 | DECLARE_DRIVER_INIT(phelios); |
| 128 | DECLARE_DRIVER_INIT(sws93); |
| 129 | DECLARE_DRIVER_INIT(metlhawk); |
| 130 | DECLARE_DRIVER_INIT(sws92g); |
| 131 | DECLARE_DRIVER_INIT(assaultp_hack); |
| 132 | DECLARE_DRIVER_INIT(assaultp); |
| 133 | DECLARE_DRIVER_INIT(ordyne); |
| 134 | DECLARE_DRIVER_INIT(marvland); |
| 135 | DECLARE_DRIVER_INIT(rthun2); |
| 136 | |
| 137 | virtual void video_start(); |
| 138 | void video_start_finallap(); |
| 139 | void video_start_luckywld(); |
| 140 | void video_start_metlhawk(); |
| 141 | void video_start_sgunner(); |
| 142 | |
| 143 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 144 | UINT32 screen_update_finallap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 145 | UINT32 screen_update_luckywld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 146 | UINT32 screen_update_metlhawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 147 | UINT32 screen_update_sgunner(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 148 | |
| 149 | DECLARE_READ16_MEMBER( paletteram_word_r ); |
| 150 | DECLARE_WRITE16_MEMBER( paletteram_word_w ); |
| 151 | DECLARE_READ16_MEMBER( spriteram_word_r ); |
| 152 | DECLARE_WRITE16_MEMBER( spriteram_word_w ); |
| 153 | DECLARE_READ16_MEMBER( rozram_word_r ); |
| 154 | DECLARE_WRITE16_MEMBER( rozram_word_w ); |
| 155 | DECLARE_READ16_MEMBER( roz_ctrl_word_r ); |
| 156 | DECLARE_WRITE16_MEMBER( roz_ctrl_word_w ); |
| 157 | |
| 158 | void update_palette(); |
| 159 | void apply_clip( rectangle &clip, const rectangle &cliprect ); |
| 160 | void draw_roz(bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 161 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control ); |
| 162 | void draw_sprites_metalhawk(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri ); |
| 163 | UINT16 get_palette_register( int which ); |
| 164 | |
| 165 | required_shared_ptr<UINT8> m_dpram; /* 2Kx8 */ |
| 166 | optional_shared_ptr<UINT16> m_spriteram; |
| 167 | required_shared_ptr<UINT16> m_paletteram; |
| 168 | optional_shared_ptr<UINT16> m_rozram; |
| 169 | |
| 170 | UINT16 m_roz_ctrl[0x8]; |
| 171 | tilemap_t *m_tilemap_roz; |
| 172 | |
| 173 | }; |
| 174 | |
| 88 | 175 | /*----------- defined in video/namcos2.c -----------*/ |
| 89 | 176 | |
| 90 | 177 | #define NAMCOS21_NUM_COLORS 0x8000 |
| 91 | 178 | |
| 92 | 179 | VIDEO_START( namcos2 ); |
| 93 | | SCREEN_UPDATE_IND16( namcos2_default ); |
| 94 | 180 | |
| 95 | 181 | VIDEO_START( finallap ); |
| 96 | | SCREEN_UPDATE_IND16( finallap ); |
| 97 | 182 | |
| 98 | 183 | VIDEO_START( luckywld ); |
| 99 | | SCREEN_UPDATE_IND16( luckywld ); |
| 100 | 184 | |
| 101 | 185 | VIDEO_START( metlhawk ); |
| 102 | | SCREEN_UPDATE_IND16( metlhawk ); |
| 103 | 186 | |
| 104 | 187 | VIDEO_START( sgunner ); |
| 105 | | SCREEN_UPDATE_IND16( sgunner ); |
| 106 | 188 | |
| 107 | | extern UINT16 *namcos2_sprite_ram; |
| 108 | | WRITE16_HANDLER( namcos2_sprite_ram_w ); |
| 109 | | READ16_HANDLER( namcos2_sprite_ram_r ); |
| 110 | | |
| 111 | 189 | int namcos2_GetPosIrqScanline( running_machine &machine ); |
| 112 | 190 | |
| 113 | 191 | WRITE16_HANDLER( namcos2_gfx_ctrl_w ); |
| r17639 | r17640 | |
| 116 | 194 | /**************************************************************/ |
| 117 | 195 | /* Shared video palette function handlers */ |
| 118 | 196 | /**************************************************************/ |
| 119 | | READ16_HANDLER( namcos2_68k_video_palette_r ); |
| 120 | | WRITE16_HANDLER( namcos2_68k_video_palette_w ); |
| 121 | 197 | |
| 122 | 198 | #define VIRTUAL_PALETTE_BANKS 30 |
| 123 | | extern UINT16 *namcos2_68k_palette_ram; |
| 124 | | extern size_t namcos2_68k_palette_size; |
| 125 | 199 | |
| 126 | 200 | /**************************************************************/ |
| 127 | 201 | /* ROZ - Rotate & Zoom memory function handlers */ |
| 128 | 202 | /**************************************************************/ |
| 129 | 203 | |
| 130 | | WRITE16_HANDLER( namcos2_68k_roz_ctrl_w ); |
| 131 | | READ16_HANDLER( namcos2_68k_roz_ctrl_r ); |
| 132 | | |
| 133 | | WRITE16_HANDLER( namcos2_68k_roz_ram_w ); |
| 134 | | READ16_HANDLER( namcos2_68k_roz_ram_r ); |
| 135 | | extern UINT16 *namcos2_68k_roz_ram; |
| 136 | | |
| 137 | 204 | /*----------- defined in machine/namcos2.c -----------*/ |
| 138 | 205 | |
| 139 | 206 | extern void (*namcos2_kickstart)(running_machine &machine, int internal); |
trunk/src/mame/video/namcos2.c
| r17639 | r17640 | |
| 5 | 5 | #include "includes/namcos2.h" |
| 6 | 6 | #include "includes/namcoic.h" |
| 7 | 7 | |
| 8 | | UINT16 *namcos2_sprite_ram; |
| 9 | | UINT16 *namcos2_68k_palette_ram; |
| 10 | | size_t namcos2_68k_palette_size; |
| 11 | | //size_t namcos2_68k_roz_ram_size; |
| 12 | | UINT16 *namcos2_68k_roz_ram; |
| 13 | | |
| 14 | | static UINT16 namcos2_68k_roz_ctrl[0x8]; |
| 15 | | static tilemap_t *tilemap_roz; |
| 16 | | |
| 17 | 8 | static void |
| 18 | 9 | TilemapCB( running_machine &machine, UINT16 code, int *tile, int *mask ) |
| 19 | 10 | { |
| r17639 | r17640 | |
| 58 | 49 | |
| 59 | 50 | static TILE_GET_INFO( get_tile_info_roz ) |
| 60 | 51 | { |
| 61 | | int tile = namcos2_68k_roz_ram[tile_index]; |
| 52 | int tile = machine.driver_data<namcos2_state>()->m_rozram[tile_index]; |
| 62 | 53 | SET_TILE_INFO(3,tile,0/*color*/,0); |
| 63 | 54 | } /* get_tile_info_roz */ |
| 64 | 55 | |
| r17639 | r17640 | |
| 244 | 235 | } |
| 245 | 236 | } /* DrawRozHelper */ |
| 246 | 237 | |
| 247 | | static void |
| 248 | | DrawROZ(bitmap_ind16 &bitmap,const rectangle &cliprect) |
| 238 | void namcos2_state::draw_roz(bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 249 | 239 | { |
| 250 | 240 | const int xoffset = 38,yoffset = 0; |
| 251 | 241 | struct RozParam rozParam; |
| 252 | 242 | |
| 253 | 243 | rozParam.color = (namcos2_gfx_ctrl & 0x0f00); |
| 254 | | rozParam.incxx = (INT16)namcos2_68k_roz_ctrl[0]; |
| 255 | | rozParam.incxy = (INT16)namcos2_68k_roz_ctrl[1]; |
| 256 | | rozParam.incyx = (INT16)namcos2_68k_roz_ctrl[2]; |
| 257 | | rozParam.incyy = (INT16)namcos2_68k_roz_ctrl[3]; |
| 258 | | rozParam.startx = (INT16)namcos2_68k_roz_ctrl[4]; |
| 259 | | rozParam.starty = (INT16)namcos2_68k_roz_ctrl[5]; |
| 244 | rozParam.incxx = (INT16)m_roz_ctrl[0]; |
| 245 | rozParam.incxy = (INT16)m_roz_ctrl[1]; |
| 246 | rozParam.incyx = (INT16)m_roz_ctrl[2]; |
| 247 | rozParam.incyy = (INT16)m_roz_ctrl[3]; |
| 248 | rozParam.startx = (INT16)m_roz_ctrl[4]; |
| 249 | rozParam.starty = (INT16)m_roz_ctrl[5]; |
| 260 | 250 | rozParam.size = 2048; |
| 261 | 251 | rozParam.wrap = 1; |
| 262 | 252 | |
| 263 | 253 | |
| 264 | | switch( namcos2_68k_roz_ctrl[7] ) |
| 254 | switch( m_roz_ctrl[7] ) |
| 265 | 255 | { |
| 266 | 256 | case 0x4400: /* (2048x2048) */ |
| 267 | 257 | break; |
| r17639 | r17640 | |
| 292 | 282 | rozParam.incyx<<=8; |
| 293 | 283 | rozParam.incyy<<=8; |
| 294 | 284 | |
| 295 | | DrawRozHelper( bitmap, tilemap_roz, cliprect, &rozParam ); |
| 285 | DrawRozHelper( bitmap, m_tilemap_roz, cliprect, &rozParam ); |
| 296 | 286 | } |
| 297 | 287 | |
| 298 | | READ16_HANDLER(namcos2_68k_roz_ctrl_r) |
| 288 | READ16_MEMBER(namcos2_state::roz_ctrl_word_r) |
| 299 | 289 | { |
| 300 | | return namcos2_68k_roz_ctrl[offset]; |
| 290 | return m_roz_ctrl[offset]; |
| 301 | 291 | } |
| 302 | 292 | |
| 303 | | WRITE16_HANDLER( namcos2_68k_roz_ctrl_w ) |
| 293 | WRITE16_MEMBER( namcos2_state::roz_ctrl_word_w ) |
| 304 | 294 | { |
| 305 | | COMBINE_DATA(&namcos2_68k_roz_ctrl[offset]); |
| 295 | COMBINE_DATA(&m_roz_ctrl[offset]); |
| 306 | 296 | } |
| 307 | 297 | |
| 308 | | READ16_HANDLER( namcos2_68k_roz_ram_r ) |
| 298 | READ16_MEMBER( namcos2_state::rozram_word_r ) |
| 309 | 299 | { |
| 310 | | return namcos2_68k_roz_ram[offset]; |
| 300 | return m_rozram[offset]; |
| 311 | 301 | } |
| 312 | 302 | |
| 313 | | WRITE16_HANDLER( namcos2_68k_roz_ram_w ) |
| 303 | WRITE16_MEMBER( namcos2_state::rozram_word_w ) |
| 314 | 304 | { |
| 315 | | COMBINE_DATA(&namcos2_68k_roz_ram[offset]); |
| 316 | | tilemap_roz->mark_tile_dirty(offset); |
| 305 | COMBINE_DATA(&m_rozram[offset]); |
| 306 | m_tilemap_roz->mark_tile_dirty(offset); |
| 317 | 307 | // if( space->machine().input().code_pressed(KEYCODE_Q) ) |
| 318 | 308 | // { |
| 319 | 309 | // debugger_break(space->machine()); |
| r17639 | r17640 | |
| 322 | 312 | |
| 323 | 313 | /**************************************************************************/ |
| 324 | 314 | |
| 325 | | static UINT16 |
| 326 | | GetPaletteRegister( int which ) |
| 315 | inline UINT16 namcos2_state::get_palette_register( int which ) |
| 327 | 316 | { |
| 328 | | const UINT16 *source = &namcos2_68k_palette_ram[0x3000/2]; |
| 317 | const UINT16 *source = &m_paletteram[0x3000/2]; |
| 329 | 318 | return ((source[which*2]&0xff)<<8) | (source[which*2+1]&0xff); |
| 330 | 319 | } |
| 331 | 320 | |
| 332 | | READ16_HANDLER( namcos2_68k_video_palette_r ) |
| 321 | READ16_MEMBER( namcos2_state::paletteram_word_r ) |
| 333 | 322 | { |
| 334 | 323 | if( (offset&0x1800) == 0x1800 ) |
| 335 | 324 | { |
| r17639 | r17640 | |
| 339 | 328 | /* registers 6,7: unmapped? */ |
| 340 | 329 | if (offset > 0x180b) return 0xff; |
| 341 | 330 | } |
| 342 | | return namcos2_68k_palette_ram[offset]; |
| 331 | return m_paletteram[offset]; |
| 343 | 332 | } /* namcos2_68k_video_palette_r */ |
| 344 | 333 | |
| 345 | | WRITE16_HANDLER( namcos2_68k_video_palette_w ) |
| 334 | WRITE16_MEMBER( namcos2_state::paletteram_word_w ) |
| 346 | 335 | { |
| 347 | 336 | if( (offset&0x1800) == 0x1800 ) |
| 348 | 337 | { |
| r17639 | r17640 | |
| 366 | 355 | luckywld: $00E8 at titlescreen, $00A0 in game and $0118 if in tunnel |
| 367 | 356 | suzuka8h1/2: $00E8 and $00A0 */ |
| 368 | 357 | case 0x1808: case 0x1809: |
| 369 | | // if (data^namcos2_68k_palette_ram[offset]) printf("%04X\n",data<<((~offset&1)<<3)|namcos2_68k_palette_ram[offset^1]<<((offset&1)<<3)); |
| 358 | // if (data^m_paletteram[offset]) printf("%04X\n",data<<((~offset&1)<<3)|m_paletteram[offset^1]<<((offset&1)<<3)); |
| 370 | 359 | break; |
| 371 | 360 | |
| 372 | 361 | /* register 5: POSIRQ scanline (only 8 bits used) */ |
| 373 | 362 | /*case 0x180a:*/ case 0x180b: |
| 374 | | if (data^namcos2_68k_palette_ram[offset]) { |
| 375 | | namcos2_68k_palette_ram[offset] = data; |
| 376 | | namcos2_adjust_posirq_timer(space->machine(),namcos2_GetPosIrqScanline(space->machine())); |
| 363 | if (data^m_paletteram[offset]) { |
| 364 | m_paletteram[offset] = data; |
| 365 | namcos2_adjust_posirq_timer(machine(),namcos2_GetPosIrqScanline(machine())); |
| 377 | 366 | } |
| 378 | 367 | break; |
| 379 | 368 | |
| r17639 | r17640 | |
| 381 | 370 | default: break; |
| 382 | 371 | } |
| 383 | 372 | |
| 384 | | namcos2_68k_palette_ram[offset] = data; |
| 373 | m_paletteram[offset] = data; |
| 385 | 374 | } |
| 386 | 375 | else |
| 387 | 376 | { |
| 388 | | COMBINE_DATA(&namcos2_68k_palette_ram[offset]); |
| 377 | COMBINE_DATA(&m_paletteram[offset]); |
| 389 | 378 | } |
| 390 | 379 | } /* namcos2_68k_video_palette_w */ |
| 391 | 380 | |
| r17639 | r17640 | |
| 393 | 382 | int |
| 394 | 383 | namcos2_GetPosIrqScanline( running_machine &machine ) |
| 395 | 384 | { |
| 396 | | return (GetPaletteRegister(5) - 32) & 0xff; |
| 385 | return (machine.driver_data<namcos2_state>()->get_palette_register(5) - 32) & 0xff; |
| 397 | 386 | } /* namcos2_GetPosIrqScanline */ |
| 398 | 387 | |
| 399 | | static void |
| 400 | | UpdatePalette( running_machine &machine ) |
| 388 | inline void |
| 389 | namcos2_state::update_palette() |
| 401 | 390 | { |
| 402 | 391 | int bank; |
| 403 | 392 | for( bank=0; bank<0x20; bank++ ) |
| r17639 | r17640 | |
| 407 | 396 | int i; |
| 408 | 397 | for( i=0; i<256; i++ ) |
| 409 | 398 | { |
| 410 | | int r = namcos2_68k_palette_ram[offset | 0x0000] & 0x00ff; |
| 411 | | int g = namcos2_68k_palette_ram[offset | 0x0800] & 0x00ff; |
| 412 | | int b = namcos2_68k_palette_ram[offset | 0x1000] & 0x00ff; |
| 413 | | palette_set_color(machine,pen++,MAKE_RGB(r,g,b)); |
| 399 | int r = m_paletteram[offset | 0x0000] & 0x00ff; |
| 400 | int g = m_paletteram[offset | 0x0800] & 0x00ff; |
| 401 | int b = m_paletteram[offset | 0x1000] & 0x00ff; |
| 402 | palette_set_color(machine(),pen++,MAKE_RGB(r,g,b)); |
| 414 | 403 | offset++; |
| 415 | 404 | } |
| 416 | 405 | } |
| 417 | | } /* UpdatePalette */ |
| 406 | } /* update_palette */ |
| 418 | 407 | |
| 419 | 408 | /**************************************************************************/ |
| 420 | 409 | |
| r17639 | r17640 | |
| 429 | 418 | } |
| 430 | 419 | } |
| 431 | 420 | |
| 432 | | WRITE16_HANDLER( namcos2_sprite_ram_w ) |
| 421 | WRITE16_MEMBER( namcos2_state::spriteram_word_w ) |
| 433 | 422 | { |
| 434 | | COMBINE_DATA(&namcos2_sprite_ram[offset]); |
| 423 | COMBINE_DATA(&m_spriteram[offset]); |
| 435 | 424 | } |
| 436 | 425 | |
| 437 | | READ16_HANDLER( namcos2_sprite_ram_r ) |
| 426 | READ16_MEMBER( namcos2_state::spriteram_word_r ) |
| 438 | 427 | { |
| 439 | | return namcos2_sprite_ram[offset]; |
| 428 | return m_spriteram[offset]; |
| 440 | 429 | } |
| 441 | 430 | |
| 442 | 431 | /**************************************************************************/ |
| 443 | 432 | |
| 444 | | VIDEO_START( namcos2 ) |
| 433 | void namcos2_state::video_start() |
| 445 | 434 | { |
| 446 | | namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB); |
| 447 | | tilemap_roz = tilemap_create(machine, get_tile_info_roz,tilemap_scan_rows,8,8,256,256); |
| 448 | | tilemap_roz->set_transparent_pen(0xff); |
| 449 | | DrawSpriteInit(machine); |
| 435 | namco_tilemap_init(machine(), 2, memregion("gfx4")->base(), TilemapCB); |
| 436 | m_tilemap_roz = tilemap_create(machine(), get_tile_info_roz,tilemap_scan_rows,8,8,256,256); |
| 437 | m_tilemap_roz->set_transparent_pen(0xff); |
| 438 | DrawSpriteInit(machine()); |
| 450 | 439 | } |
| 451 | 440 | |
| 452 | | static void |
| 453 | | ApplyClip( rectangle &clip, const rectangle &cliprect ) |
| 441 | void namcos2_state::apply_clip( rectangle &clip, const rectangle &cliprect ) |
| 454 | 442 | { |
| 455 | | clip.min_x = GetPaletteRegister(0) - 0x4a; |
| 456 | | clip.max_x = GetPaletteRegister(1) - 0x4a - 1; |
| 457 | | clip.min_y = GetPaletteRegister(2) - 0x21; |
| 458 | | clip.max_y = GetPaletteRegister(3) - 0x21 - 1; |
| 443 | clip.min_x = get_palette_register(0) - 0x4a; |
| 444 | clip.max_x = get_palette_register(1) - 0x4a - 1; |
| 445 | clip.min_y = get_palette_register(2) - 0x21; |
| 446 | clip.max_y = get_palette_register(3) - 0x21 - 1; |
| 459 | 447 | /* intersect with master clip rectangle */ |
| 460 | 448 | clip &= cliprect; |
| 461 | | } /* ApplyClip */ |
| 449 | } /* apply_clip */ |
| 462 | 450 | |
| 463 | | SCREEN_UPDATE_IND16( namcos2_default ) |
| 451 | UINT32 namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 464 | 452 | { |
| 465 | 453 | rectangle clip; |
| 466 | 454 | int pri; |
| 467 | 455 | |
| 468 | | UpdatePalette(screen.machine()); |
| 469 | | bitmap.fill(get_black_pen(screen.machine()), cliprect ); |
| 470 | | ApplyClip( clip, cliprect ); |
| 456 | update_palette(); |
| 457 | bitmap.fill(get_black_pen(machine()), cliprect ); |
| 458 | apply_clip( clip, cliprect ); |
| 471 | 459 | |
| 472 | 460 | /* HACK: enable ROZ layer only if it has priority > 0 */ |
| 473 | | tilemap_roz->enable((namcos2_gfx_ctrl & 0x7000) ? 1 : 0); |
| 461 | m_tilemap_roz->enable((namcos2_gfx_ctrl & 0x7000) ? 1 : 0); |
| 474 | 462 | |
| 475 | 463 | for( pri=0; pri<16; pri++ ) |
| 476 | 464 | { |
| r17639 | r17640 | |
| 480 | 468 | |
| 481 | 469 | if( ((namcos2_gfx_ctrl & 0x7000) >> 12)==pri/2 ) |
| 482 | 470 | { |
| 483 | | DrawROZ(bitmap,clip); |
| 471 | draw_roz(bitmap,clip); |
| 484 | 472 | } |
| 485 | | namcos2_draw_sprites(screen.machine(), bitmap, clip, pri/2, namcos2_gfx_ctrl ); |
| 473 | draw_sprites(bitmap, clip, pri/2, namcos2_gfx_ctrl ); |
| 486 | 474 | } |
| 487 | 475 | } |
| 488 | 476 | return 0; |
| r17639 | r17640 | |
| 490 | 478 | |
| 491 | 479 | /**************************************************************************/ |
| 492 | 480 | |
| 493 | | VIDEO_START( finallap ) |
| 481 | void namcos2_state::video_start_finallap() |
| 494 | 482 | { |
| 495 | | namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB); |
| 496 | | DrawSpriteInit(machine); |
| 497 | | namco_road_init(machine, 3); |
| 483 | namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB); |
| 484 | DrawSpriteInit(machine()); |
| 485 | namco_road_init(machine(), 3); |
| 498 | 486 | } |
| 499 | 487 | |
| 500 | | SCREEN_UPDATE_IND16( finallap ) |
| 488 | UINT32 namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 501 | 489 | { |
| 502 | 490 | rectangle clip; |
| 503 | 491 | int pri; |
| 504 | 492 | |
| 505 | | UpdatePalette(screen.machine()); |
| 506 | | bitmap.fill(get_black_pen(screen.machine()), cliprect ); |
| 507 | | ApplyClip( clip, cliprect ); |
| 493 | update_palette(); |
| 494 | bitmap.fill(get_black_pen(machine()), cliprect ); |
| 495 | apply_clip( clip, cliprect ); |
| 508 | 496 | |
| 509 | 497 | for( pri=0; pri<16; pri++ ) |
| 510 | 498 | { |
| r17639 | r17640 | |
| 512 | 500 | { |
| 513 | 501 | namco_tilemap_draw( bitmap, clip, pri/2 ); |
| 514 | 502 | } |
| 515 | | namco_road_draw(screen.machine(), bitmap,clip,pri ); |
| 516 | | namcos2_draw_sprites(screen.machine(), bitmap,clip,pri,namcos2_gfx_ctrl ); |
| 503 | namco_road_draw(machine(), bitmap,clip,pri ); |
| 504 | draw_sprites(bitmap,clip,pri,namcos2_gfx_ctrl ); |
| 517 | 505 | } |
| 518 | 506 | return 0; |
| 519 | 507 | } |
| 520 | 508 | |
| 521 | 509 | /**************************************************************************/ |
| 522 | 510 | |
| 523 | | VIDEO_START( luckywld ) |
| 511 | void namcos2_state::video_start_luckywld() |
| 524 | 512 | { |
| 525 | | namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB); |
| 526 | | namco_obj_init( machine, 0, 0x0, NULL ); |
| 513 | namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB); |
| 514 | namco_obj_init( machine(), 0, 0x0, NULL ); |
| 527 | 515 | if( namcos2_gametype==NAMCOS2_LUCKY_AND_WILD ) |
| 528 | 516 | { |
| 529 | | namco_roz_init( machine, 1, "gfx5" ); |
| 517 | namco_roz_init( machine(), 1, "gfx5" ); |
| 530 | 518 | } |
| 531 | 519 | if( namcos2_gametype!=NAMCOS2_STEEL_GUNNER_2 ) |
| 532 | 520 | { |
| 533 | | namco_road_init(machine, 3); |
| 521 | namco_road_init(machine(), 3); |
| 534 | 522 | } |
| 535 | 523 | } /* luckywld */ |
| 536 | 524 | |
| 537 | | SCREEN_UPDATE_IND16( luckywld ) |
| 525 | UINT32 namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 538 | 526 | { |
| 539 | 527 | rectangle clip; |
| 540 | 528 | int pri; |
| 541 | 529 | |
| 542 | | UpdatePalette(screen.machine()); |
| 543 | | bitmap.fill(get_black_pen(screen.machine()), cliprect ); |
| 544 | | ApplyClip( clip, cliprect ); |
| 530 | update_palette(); |
| 531 | bitmap.fill(get_black_pen(machine()), cliprect ); |
| 532 | apply_clip( clip, cliprect ); |
| 545 | 533 | |
| 546 | 534 | for( pri=0; pri<16; pri++ ) |
| 547 | 535 | { |
| r17639 | r17640 | |
| 549 | 537 | { |
| 550 | 538 | namco_tilemap_draw( bitmap, clip, pri/2 ); |
| 551 | 539 | } |
| 552 | | namco_road_draw(screen.machine(), bitmap,clip,pri ); |
| 540 | namco_road_draw(machine(), bitmap,clip,pri ); |
| 553 | 541 | if( namcos2_gametype==NAMCOS2_LUCKY_AND_WILD ) |
| 554 | 542 | { |
| 555 | 543 | namco_roz_draw( bitmap, clip, pri ); |
| 556 | 544 | } |
| 557 | | namco_obj_draw(screen.machine(), bitmap, clip, pri ); |
| 545 | namco_obj_draw(machine(), bitmap, clip, pri ); |
| 558 | 546 | } |
| 559 | 547 | return 0; |
| 560 | 548 | } |
| 561 | 549 | |
| 562 | 550 | /**************************************************************************/ |
| 563 | 551 | |
| 564 | | VIDEO_START( sgunner ) |
| 552 | void namcos2_state::video_start_sgunner() |
| 565 | 553 | { |
| 566 | | namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB); |
| 567 | | namco_obj_init( machine, 0, 0x0, NULL ); |
| 554 | namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB); |
| 555 | namco_obj_init( machine(), 0, 0x0, NULL ); |
| 568 | 556 | } |
| 569 | 557 | |
| 570 | | SCREEN_UPDATE_IND16( sgunner ) |
| 558 | UINT32 namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 571 | 559 | { |
| 572 | 560 | rectangle clip; |
| 573 | 561 | int pri; |
| 574 | 562 | |
| 575 | | UpdatePalette(screen.machine()); |
| 576 | | bitmap.fill(get_black_pen(screen.machine()), cliprect ); |
| 577 | | ApplyClip( clip, cliprect ); |
| 563 | update_palette(); |
| 564 | bitmap.fill(get_black_pen(machine()), cliprect ); |
| 565 | apply_clip( clip, cliprect ); |
| 578 | 566 | |
| 579 | 567 | for( pri=0; pri<8; pri++ ) |
| 580 | 568 | { |
| 581 | 569 | namco_tilemap_draw( bitmap, clip, pri ); |
| 582 | | namco_obj_draw(screen.machine(), bitmap, clip, pri ); |
| 570 | namco_obj_draw(machine(), bitmap, clip, pri ); |
| 583 | 571 | } |
| 584 | 572 | return 0; |
| 585 | 573 | } |
| r17639 | r17640 | |
| 587 | 575 | |
| 588 | 576 | /**************************************************************************/ |
| 589 | 577 | |
| 590 | | VIDEO_START( metlhawk ) |
| 578 | void namcos2_state::video_start_metlhawk() |
| 591 | 579 | { |
| 592 | | namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB); |
| 593 | | namco_roz_init( machine, 1, "gfx5" ); |
| 580 | namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB); |
| 581 | namco_roz_init( machine(), 1, "gfx5" ); |
| 594 | 582 | } |
| 595 | 583 | |
| 596 | | SCREEN_UPDATE_IND16( metlhawk ) |
| 584 | UINT32 namcos2_state::screen_update_metlhawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 597 | 585 | { |
| 598 | 586 | rectangle clip; |
| 599 | 587 | int pri; |
| 600 | 588 | |
| 601 | | UpdatePalette(screen.machine()); |
| 602 | | bitmap.fill(get_black_pen(screen.machine()), cliprect ); |
| 603 | | ApplyClip( clip, cliprect ); |
| 589 | update_palette(); |
| 590 | bitmap.fill(get_black_pen(machine()), cliprect ); |
| 591 | apply_clip( clip, cliprect ); |
| 604 | 592 | |
| 605 | 593 | for( pri=0; pri<16; pri++ ) |
| 606 | 594 | { |
| r17639 | r17640 | |
| 609 | 597 | namco_tilemap_draw( bitmap, clip, pri/2 ); |
| 610 | 598 | } |
| 611 | 599 | namco_roz_draw( bitmap, clip, pri ); |
| 612 | | namcos2_draw_sprites_metalhawk(screen.machine(), bitmap,clip,pri ); |
| 600 | draw_sprites_metalhawk(bitmap,clip,pri ); |
| 613 | 601 | } |
| 614 | 602 | return 0; |
| 615 | 603 | } |
trunk/src/mame/drivers/namcos2.c
| r17639 | r17640 | |
| 467 | 467 | /*************************************************************/ |
| 468 | 468 | /* 68000/6809/63705 Shared memory area - DUAL PORT Memory */ |
| 469 | 469 | /*************************************************************/ |
| 470 | | class namcos2_state : public driver_device |
| 471 | | { |
| 472 | | public: |
| 473 | | namcos2_state(const machine_config &mconfig, device_type type, const char *tag) |
| 474 | | : driver_device(mconfig, type, tag) |
| 475 | | { } |
| 476 | | DECLARE_READ16_MEMBER(namcos2_68k_dpram_word_r); |
| 477 | | DECLARE_WRITE16_MEMBER(namcos2_68k_dpram_word_w); |
| 478 | | DECLARE_READ8_MEMBER(namcos2_dpram_byte_r); |
| 479 | | DECLARE_WRITE8_MEMBER(namcos2_dpram_byte_w); |
| 480 | | DECLARE_DRIVER_INIT(cosmogng); |
| 481 | | DECLARE_DRIVER_INIT(sgunner2); |
| 482 | | DECLARE_DRIVER_INIT(kyukaidk); |
| 483 | | DECLARE_DRIVER_INIT(bubbletr); |
| 484 | | DECLARE_DRIVER_INIT(suzuk8h2); |
| 485 | | DECLARE_DRIVER_INIT(burnforc); |
| 486 | | DECLARE_DRIVER_INIT(gollygho); |
| 487 | | DECLARE_DRIVER_INIT(rthun2j); |
| 488 | | DECLARE_DRIVER_INIT(sws); |
| 489 | | DECLARE_DRIVER_INIT(finehour); |
| 490 | | DECLARE_DRIVER_INIT(finallap); |
| 491 | | DECLARE_DRIVER_INIT(dirtfoxj); |
| 492 | | DECLARE_DRIVER_INIT(marvlanj); |
| 493 | | DECLARE_DRIVER_INIT(sws92); |
| 494 | | DECLARE_DRIVER_INIT(dsaber); |
| 495 | | DECLARE_DRIVER_INIT(assault); |
| 496 | | DECLARE_DRIVER_INIT(mirninja); |
| 497 | | DECLARE_DRIVER_INIT(finalap2); |
| 498 | | DECLARE_DRIVER_INIT(valkyrie); |
| 499 | | DECLARE_DRIVER_INIT(fourtrax); |
| 500 | | DECLARE_DRIVER_INIT(finalap3); |
| 501 | | DECLARE_DRIVER_INIT(luckywld); |
| 502 | | DECLARE_DRIVER_INIT(assaultj); |
| 503 | | DECLARE_DRIVER_INIT(dsaberj); |
| 504 | | DECLARE_DRIVER_INIT(suzuka8h); |
| 505 | | DECLARE_DRIVER_INIT(phelios); |
| 506 | | DECLARE_DRIVER_INIT(sws93); |
| 507 | | DECLARE_DRIVER_INIT(metlhawk); |
| 508 | | DECLARE_DRIVER_INIT(sws92g); |
| 509 | | DECLARE_DRIVER_INIT(assaultp_hack); |
| 510 | | DECLARE_DRIVER_INIT(assaultp); |
| 511 | | DECLARE_DRIVER_INIT(ordyne); |
| 512 | | DECLARE_DRIVER_INIT(marvland); |
| 513 | | DECLARE_DRIVER_INIT(rthun2); |
| 514 | | }; |
| 515 | 470 | |
| 516 | | static UINT8 *namcos2_dpram; /* 2Kx8 */ |
| 517 | | |
| 518 | 471 | static void |
| 519 | 472 | GollyGhostUpdateLED_c4( int data ) |
| 520 | 473 | { |
| r17639 | r17640 | |
| 574 | 527 | } |
| 575 | 528 | } |
| 576 | 529 | |
| 577 | | READ16_MEMBER(namcos2_state::namcos2_68k_dpram_word_r) |
| 530 | READ16_MEMBER(namcos2_state::dpram_word_r) |
| 578 | 531 | { |
| 579 | | return namcos2_dpram[offset]; |
| 532 | return m_dpram[offset]; |
| 580 | 533 | } |
| 581 | 534 | |
| 582 | | WRITE16_MEMBER(namcos2_state::namcos2_68k_dpram_word_w) |
| 535 | WRITE16_MEMBER(namcos2_state::dpram_word_w) |
| 583 | 536 | { |
| 584 | 537 | if( ACCESSING_BITS_0_7 ) |
| 585 | 538 | { |
| 586 | | namcos2_dpram[offset] = data&0xff; |
| 539 | m_dpram[offset] = data&0xff; |
| 587 | 540 | |
| 588 | 541 | if( namcos2_gametype==NAMCOS2_GOLLY_GHOST ) |
| 589 | 542 | { |
| r17639 | r17640 | |
| 608 | 561 | } |
| 609 | 562 | |
| 610 | 563 | |
| 611 | | READ8_MEMBER(namcos2_state::namcos2_dpram_byte_r) |
| 564 | READ8_MEMBER(namcos2_state::dpram_byte_r) |
| 612 | 565 | { |
| 613 | | return namcos2_dpram[offset]; |
| 566 | return m_dpram[offset]; |
| 614 | 567 | } |
| 615 | 568 | |
| 616 | | WRITE8_MEMBER(namcos2_state::namcos2_dpram_byte_w) |
| 569 | WRITE8_MEMBER(namcos2_state::dpram_byte_w) |
| 617 | 570 | { |
| 618 | | namcos2_dpram[offset] = data; |
| 571 | m_dpram[offset] = data; |
| 619 | 572 | } |
| 620 | 573 | |
| 621 | 574 | /*************************************************************/ |
| r17639 | r17640 | |
| 638 | 591 | AM_RANGE(0x200000, 0x3fffff) AM_READ_LEGACY(namcos2_68k_data_rom_r) |
| 639 | 592 | AM_RANGE(0x400000, 0x41ffff) AM_READWRITE_LEGACY(namco_tilemapvideoram16_r,namco_tilemapvideoram16_w) |
| 640 | 593 | AM_RANGE(0x420000, 0x42003f) AM_READWRITE_LEGACY(namco_tilemapcontrol16_r,namco_tilemapcontrol16_w) |
| 641 | | AM_RANGE(0x440000, 0x44ffff) AM_READWRITE_LEGACY(namcos2_68k_video_palette_r,namcos2_68k_video_palette_w) AM_BASE_LEGACY(&namcos2_68k_palette_ram) AM_SIZE_LEGACY(&namcos2_68k_palette_size) |
| 642 | | AM_RANGE(0x460000, 0x460fff) AM_READWRITE(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) |
| 643 | | AM_RANGE(0x468000, 0x468fff) AM_READWRITE(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) /* mirror */ |
| 594 | AM_RANGE(0x440000, 0x44ffff) AM_READWRITE(paletteram_word_r,paletteram_word_w) AM_SHARE("paletteram") |
| 595 | AM_RANGE(0x460000, 0x460fff) AM_READWRITE(dpram_word_r,dpram_word_w) |
| 596 | AM_RANGE(0x468000, 0x468fff) AM_READWRITE(dpram_word_r,dpram_word_w) /* mirror */ |
| 644 | 597 | AM_RANGE(0x480000, 0x483fff) AM_READWRITE_LEGACY(namcos2_68k_serial_comms_ram_r,namcos2_68k_serial_comms_ram_w) AM_BASE_LEGACY(&namcos2_68k_serial_comms_ram) |
| 645 | 598 | AM_RANGE(0x4a0000, 0x4a000f) AM_READWRITE_LEGACY(namcos2_68k_serial_comms_ctrl_r,namcos2_68k_serial_comms_ctrl_w) |
| 646 | 599 | ADDRESS_MAP_END |
| r17639 | r17640 | |
| 648 | 601 | /*************************************************************/ |
| 649 | 602 | |
| 650 | 603 | static ADDRESS_MAP_START( common_default_am, AS_PROGRAM, 16, namcos2_state ) |
| 651 | | AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE_LEGACY(namcos2_sprite_ram_r,namcos2_sprite_ram_w) AM_BASE_LEGACY(&namcos2_sprite_ram) |
| 604 | AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(spriteram_word_r, spriteram_word_w) AM_SHARE("spriteram") |
| 652 | 605 | AM_RANGE(0xc40000, 0xc40001) AM_READWRITE_LEGACY(namcos2_gfx_ctrl_r,namcos2_gfx_ctrl_w) |
| 653 | | AM_RANGE(0xc80000, 0xc9ffff) AM_READWRITE_LEGACY(namcos2_68k_roz_ram_r,namcos2_68k_roz_ram_w) AM_BASE_LEGACY(&namcos2_68k_roz_ram) |
| 654 | | AM_RANGE(0xcc0000, 0xcc000f) AM_READWRITE_LEGACY(namcos2_68k_roz_ctrl_r,namcos2_68k_roz_ctrl_w) |
| 606 | AM_RANGE(0xc80000, 0xc9ffff) AM_READWRITE(rozram_word_r,rozram_word_w) AM_SHARE("rozram") |
| 607 | AM_RANGE(0xcc0000, 0xcc000f) AM_READWRITE(roz_ctrl_word_r, roz_ctrl_word_w) |
| 655 | 608 | AM_RANGE(0xd00000, 0xd0000f) AM_READWRITE_LEGACY(namcos2_68k_key_r,namcos2_68k_key_w) |
| 656 | 609 | AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am ) |
| 657 | 610 | ADDRESS_MAP_END |
| r17639 | r17640 | |
| 676 | 629 | |
| 677 | 630 | static ADDRESS_MAP_START( common_finallap_am, AS_PROGRAM, 16, namcos2_state ) |
| 678 | 631 | AM_RANGE(0x300000, 0x33ffff) AM_READ_LEGACY(namcos2_flap_prot_r) |
| 679 | | AM_RANGE(0x800000, 0x80ffff) AM_READ_LEGACY(namcos2_sprite_ram_r) AM_WRITE_LEGACY(namcos2_sprite_ram_w) AM_BASE_LEGACY(&namcos2_sprite_ram) |
| 632 | AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(spriteram_word_r, spriteram_word_w) AM_SHARE("spriteram") |
| 680 | 633 | AM_RANGE(0x840000, 0x840001) AM_READ_LEGACY(namcos2_gfx_ctrl_r) AM_WRITE_LEGACY(namcos2_gfx_ctrl_w) |
| 681 | 634 | AM_RANGE(0x880000, 0x89ffff) AM_READ_LEGACY(namco_road16_r) AM_WRITE_LEGACY(namco_road16_w) |
| 682 | 635 | AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP |
| r17639 | r17640 | |
| 725 | 678 | /*************************************************************/ |
| 726 | 679 | |
| 727 | 680 | static ADDRESS_MAP_START( common_metlhawk_am, AS_PROGRAM, 16, namcos2_state ) |
| 728 | | AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE_LEGACY(namcos2_sprite_ram_r,namcos2_sprite_ram_w) AM_BASE_LEGACY(&namcos2_sprite_ram) \ |
| 681 | AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(spriteram_word_r, spriteram_word_w) AM_SHARE("spriteram") \ |
| 729 | 682 | AM_RANGE(0xc40000, 0xc4ffff) AM_READWRITE_LEGACY(namco_rozvideoram16_r,namco_rozvideoram16_w) \ |
| 730 | 683 | AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE_LEGACY(namco_rozcontrol16_r,namco_rozcontrol16_w) \ |
| 731 | 684 | AM_RANGE(0xe00000, 0xe00001) AM_READWRITE_LEGACY(namcos2_gfx_ctrl_r,namcos2_gfx_ctrl_w) /* ??? */ \ |
| r17639 | r17640 | |
| 785 | 738 | AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */ |
| 786 | 739 | AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w) |
| 787 | 740 | AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE_LEGACY("c140", c140_r,c140_w) |
| 788 | | AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE_LEGACY(&namcos2_dpram) |
| 789 | | AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) /* mirror */ |
| 741 | AM_RANGE(0x7000, 0x77ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram") |
| 742 | AM_RANGE(0x7800, 0x7fff) AM_READWRITE(dpram_byte_r,dpram_byte_w) /* mirror */ |
| 790 | 743 | AM_RANGE(0x8000, 0x9fff) AM_RAM |
| 791 | 744 | AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* Amplifier enable on 1st write */ |
| 792 | 745 | AM_RANGE(0xc000, 0xc001) AM_WRITE_LEGACY(namcos2_sound_bankselect_w) |
| r17639 | r17640 | |
| 817 | 770 | AM_RANGE(0x3001, 0x3001) AM_READ_PORT("MCUDI1") |
| 818 | 771 | AM_RANGE(0x3002, 0x3002) AM_READ_PORT("MCUDI2") |
| 819 | 772 | AM_RANGE(0x3003, 0x3003) AM_READ_PORT("MCUDI3") |
| 820 | | AM_RANGE(0x5000, 0x57ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE_LEGACY(&namcos2_dpram) |
| 773 | AM_RANGE(0x5000, 0x57ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram") |
| 821 | 774 | AM_RANGE(0x6000, 0x6fff) AM_READNOP /* watchdog */ |
| 822 | 775 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 823 | 776 | ADDRESS_MAP_END |
| r17639 | r17640 | |
| 1680 | 1633 | MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) ) |
| 1681 | 1634 | MCFG_SCREEN_SIZE(384, 264) |
| 1682 | 1635 | MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) |
| 1683 | | MCFG_SCREEN_UPDATE_STATIC(namcos2_default) |
| 1636 | MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update) |
| 1684 | 1637 | |
| 1685 | 1638 | MCFG_GFXDECODE(namcos2) |
| 1686 | 1639 | MCFG_PALETTE_LENGTH(0x2000) |
| 1687 | 1640 | |
| 1688 | | MCFG_VIDEO_START(namcos2) |
| 1689 | | |
| 1690 | 1641 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1691 | 1642 | |
| 1692 | 1643 | MCFG_SOUND_ADD("c140", C140, C140_SOUND_CLOCK) /* 21.333kHz */ |
| r17639 | r17640 | |
| 1756 | 1707 | MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) ) |
| 1757 | 1708 | MCFG_SCREEN_SIZE(384, 264) |
| 1758 | 1709 | MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) |
| 1759 | | MCFG_SCREEN_UPDATE_STATIC(namcos2_default) |
| 1710 | MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update) |
| 1760 | 1711 | |
| 1761 | 1712 | MCFG_GFXDECODE(namcos2) |
| 1762 | 1713 | MCFG_PALETTE_LENGTH(0x2000) |
| 1763 | 1714 | |
| 1764 | | MCFG_VIDEO_START(namcos2) |
| 1765 | | |
| 1766 | 1715 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1767 | 1716 | |
| 1768 | 1717 | MCFG_SOUND_ADD("c140", C140, C140_SOUND_CLOCK) /* 21.333kHz */ |
| r17639 | r17640 | |
| 1805 | 1754 | MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) ) |
| 1806 | 1755 | MCFG_SCREEN_SIZE(384, 264) |
| 1807 | 1756 | MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) |
| 1808 | | MCFG_SCREEN_UPDATE_STATIC(finallap) |
| 1757 | MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_finallap) |
| 1809 | 1758 | |
| 1810 | 1759 | MCFG_GFXDECODE(finallap) |
| 1811 | 1760 | MCFG_PALETTE_LENGTH(0x2000) |
| 1812 | 1761 | |
| 1813 | | MCFG_VIDEO_START(finallap) |
| 1762 | MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_finallap) |
| 1814 | 1763 | |
| 1815 | 1764 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1816 | 1765 | |
| r17639 | r17640 | |
| 1854 | 1803 | MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) ) |
| 1855 | 1804 | MCFG_SCREEN_SIZE(384, 264) |
| 1856 | 1805 | MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) |
| 1857 | | MCFG_SCREEN_UPDATE_STATIC(sgunner) |
| 1806 | MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_sgunner) |
| 1858 | 1807 | |
| 1859 | 1808 | MCFG_GFXDECODE(sgunner) |
| 1860 | 1809 | MCFG_PALETTE_LENGTH(0x2000) |
| 1861 | 1810 | |
| 1862 | | MCFG_VIDEO_START(sgunner) |
| 1811 | MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_sgunner) |
| 1863 | 1812 | |
| 1864 | 1813 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1865 | 1814 | |
| r17639 | r17640 | |
| 1903 | 1852 | MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) ) |
| 1904 | 1853 | MCFG_SCREEN_SIZE(384, 264) |
| 1905 | 1854 | MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) |
| 1906 | | MCFG_SCREEN_UPDATE_STATIC(luckywld) |
| 1855 | MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_luckywld) |
| 1907 | 1856 | |
| 1908 | 1857 | MCFG_GFXDECODE(luckywld) |
| 1909 | 1858 | MCFG_PALETTE_LENGTH(0x2000) |
| 1910 | 1859 | |
| 1911 | | MCFG_VIDEO_START(luckywld) |
| 1860 | MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_luckywld) |
| 1912 | 1861 | |
| 1913 | 1862 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1914 | 1863 | |
| r17639 | r17640 | |
| 1952 | 1901 | MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) ) |
| 1953 | 1902 | MCFG_SCREEN_SIZE(384, 264) |
| 1954 | 1903 | MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) |
| 1955 | | MCFG_SCREEN_UPDATE_STATIC(metlhawk) |
| 1904 | MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_metlhawk) |
| 1956 | 1905 | |
| 1957 | 1906 | MCFG_GFXDECODE(metlhawk) |
| 1958 | 1907 | MCFG_PALETTE_LENGTH(0x2000) |
| 1959 | 1908 | |
| 1960 | | MCFG_VIDEO_START(metlhawk) |
| 1909 | MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_metlhawk) |
| 1961 | 1910 | |
| 1962 | 1911 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 1963 | 1912 | |