trunk/src/mame/drivers/supduck.c
| r242051 | r242052 | |
| 26 | 26 | m_text_videoram(*this, "textvideoram"), |
| 27 | 27 | m_fore_videoram(*this, "forevideoram"), |
| 28 | 28 | m_back_videoram(*this, "backvideoram"), |
| 29 | m_paletteram(*this, "paletteram"), |
| 29 | 30 | m_gfxdecode(*this, "gfxdecode"), |
| 30 | 31 | m_palette(*this, "palette") |
| 31 | 32 | { } |
| r242051 | r242052 | |
| 39 | 40 | required_shared_ptr<UINT16> m_text_videoram; |
| 40 | 41 | required_shared_ptr<UINT16> m_fore_videoram; |
| 41 | 42 | required_shared_ptr<UINT16> m_back_videoram; |
| 43 | required_shared_ptr<UINT16> m_paletteram; |
| 42 | 44 | |
| 43 | 45 | required_device<gfxdecode_device> m_gfxdecode; |
| 44 | 46 | required_device<palette_device> m_palette; |
| r242051 | r242052 | |
| 56 | 58 | |
| 57 | 59 | DECLARE_WRITE16_MEMBER(supduck_4000_w); |
| 58 | 60 | DECLARE_WRITE16_MEMBER(supduck_4002_w); |
| 61 | DECLARE_WRITE16_MEMBER(supduck_paletteram_w); |
| 59 | 62 | |
| 60 | 63 | TILEMAP_MAPPER_MEMBER(supduk_tilemap_scan); |
| 61 | 64 | |
| r242051 | r242052 | |
| 161 | 164 | if (data & 0x4000) code |= 0x100; |
| 162 | 165 | if (data & 0x8000) code |= 0x200; |
| 163 | 166 | |
| 164 | | int color = 0; |
| 167 | int color = (data & 0x0f00)>>8; |
| 165 | 168 | int flags = 0; |
| 166 | 169 | |
| 167 | 170 | SET_TILE_INFO_MEMBER(1, code, color, flags); |
| r242051 | r242052 | |
| 177 | 180 | if (data & 0x4000) code |= 0x100; |
| 178 | 181 | if (data & 0x8000) code |= 0x200; |
| 179 | 182 | |
| 180 | | int color = 0; |
| 183 | int color = (data & 0x0f00)>>8; |
| 181 | 184 | int flags = 0; |
| 182 | 185 | |
| 183 | 186 | SET_TILE_INFO_MEMBER(2, code, color, flags); |
| r242051 | r242052 | |
| 230 | 233 | |
| 231 | 234 | } |
| 232 | 235 | |
| 236 | WRITE16_MEMBER(supduck_state::supduck_paletteram_w) // wrong |
| 237 | { |
| 238 | int r, g, b; |
| 239 | data = COMBINE_DATA(&m_paletteram[offset]); |
| 240 | |
| 241 | r = ((data >> 8) & 0x0f); |
| 242 | g = ((data >> 4 ) & 0x0f); |
| 243 | b = ((data >> 0 ) & 0x0f); |
| 244 | |
| 245 | int bright = (data & 0x7000) >> 12; |
| 246 | |
| 247 | bright += 1; |
| 248 | |
| 249 | r = r * bright * 2; |
| 250 | g = g * bright * 2; |
| 251 | b = b * bright * 2; |
| 252 | |
| 253 | |
| 254 | m_palette->set_pen_color (offset, rgb_t(r, g, b)); |
| 255 | } |
| 256 | |
| 233 | 257 | WRITE16_MEMBER(supduck_state::supduck_4002_w) |
| 234 | 258 | { |
| 235 | 259 | data &= mem_mask; |
| r242051 | r242052 | |
| 282 | 306 | AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("textvideoram") |
| 283 | 307 | AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(back_videoram_w) AM_SHARE("backvideoram") |
| 284 | 308 | AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(fore_videoram_w) AM_SHARE("forevideoram") |
| 285 | | AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 309 | AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(supduck_paletteram_w) AM_SHARE("paletteram") |
| 286 | 310 | AM_RANGE(0xffc000, 0xffffff) AM_RAM /* working RAM */ |
| 287 | 311 | ADDRESS_MAP_END |
| 288 | 312 | |
| r242051 | r242052 | |
| 410 | 434 | 32, 32, |
| 411 | 435 | RGN_FRAC(1, 2), |
| 412 | 436 | 4, |
| 413 | | { RGN_FRAC(1, 2) + 4, RGN_FRAC(1, 2) + 0, 4, 0 }, |
| 437 | { RGN_FRAC(1,2)+4, RGN_FRAC(1,2)+0, 4, 0 }, |
| 414 | 438 | { |
| 415 | 439 | 0, 1, 2, 3, 8 + 0, 8 + 1, 8 + 2, 8 + 3, |
| 416 | 440 | 64 * 8 + 0, 64 * 8 + 1, 64 * 8 + 2, 64 * 8 + 3, 64 * 8 + 8 + 0, 64 * 8 + 8 + 1, 64 * 8 + 8 + 2, 64 * 8 + 8 + 3, |
| r242051 | r242052 | |
| 430 | 454 | |
| 431 | 455 | static GFXDECODE_START( supduck ) |
| 432 | 456 | GFXDECODE_ENTRY( "gfx1", 0, vramlayout_bionicc, 768, 64 ) /* colors 768-1023 */ |
| 433 | | GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0, 4 ) /* colors 0- 63 */ |
| 434 | | GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 256, 4 ) /* colors 256- 319 */ |
| 457 | GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0, 16 ) /* colors 0- 63 */ |
| 458 | GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 256, 16 ) /* colors 256- 319 */ |
| 435 | 459 | GFXDECODE_ENTRY( "gfx4", 0, spritelayout_bionicc, 512, 16 ) /* colors 512- 767 */ |
| 436 | 460 | GFXDECODE_END |
| 437 | 461 | |
| r242051 | r242052 | |
| 482 | 506 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", supduck) |
| 483 | 507 | |
| 484 | 508 | MCFG_PALETTE_ADD("palette", 0x800/2) |
| 485 | | MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) |
| 509 | // MCFG_PALETTE_FORMAT(IIIIRRRRGGGGBBBB) |
| 486 | 510 | |
| 487 | 511 | /* sound hardware */ |
| 488 | 512 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| r242051 | r242052 | |
| 523 | 547 | ROM_LOAD( "14.ul32", 0x60000, 0x20000, CRC(97a7310b) SHA1(76b82bfea64b59890c0ba2e1688b7321507a4da7) ) |
| 524 | 548 | |
| 525 | 549 | ROM_REGION( 0x80000, "gfx4", 0 ) |
| 526 | | ROM_LOAD( "15.u1d", 0x00000, 0x20000, CRC(81bf1f27) SHA1(7a66630a2da85387904917d3c136880dffcb9649) ) |
| 527 | | ROM_LOAD( "16.u2d", 0x20000, 0x20000, CRC(9573d6ec) SHA1(9923be782bae47c49913d01554bcf3e5efb5395b) ) |
| 528 | | ROM_LOAD( "17.u1c", 0x60000, 0x20000, CRC(21ef14d4) SHA1(66e389aaa1186921a07da9a9a9eda88a1083ad42) ) |
| 529 | | ROM_LOAD( "18.u2c", 0x40000, 0x20000, CRC(33dd0674) SHA1(b95dfcc16d939bac77f338b8a8cada19328a1993) ) |
| 550 | ROM_LOAD( "15.u1d", 0x60000, 0x20000, CRC(81bf1f27) SHA1(7a66630a2da85387904917d3c136880dffcb9649) ) |
| 551 | ROM_LOAD( "16.u2d", 0x40000, 0x20000, CRC(9573d6ec) SHA1(9923be782bae47c49913d01554bcf3e5efb5395b) ) |
| 552 | ROM_LOAD( "17.u1c", 0x20000, 0x20000, CRC(21ef14d4) SHA1(66e389aaa1186921a07da9a9a9eda88a1083ad42) ) |
| 553 | ROM_LOAD( "18.u2c", 0x00000, 0x20000, CRC(33dd0674) SHA1(b95dfcc16d939bac77f338b8a8cada19328a1993) ) |
| 530 | 554 | |
| 531 | 555 | ROM_REGION( 0x80000, "oki", 0 ) |
| 532 | 556 | ROM_LOAD( "2.su12", 0x00000, 0x20000, CRC(745d42fb) SHA1(f9aee3ddbad3cc2f3a7002ee0d762eb041967e1e) ) // static sample data |