diff options
author | angelosa <salese_corp_ltd@email.it> | 2016-06-15 20:17:55 +0200 |
---|---|---|
committer | angelosa <salese_corp_ltd@email.it> | 2016-06-15 20:17:55 +0200 |
commit | 85f40091118091c07efc51d13e1df7376865ccae (patch) | |
tree | da0c003c3a8817d4117226bd2e7558986b3d25a9 /src/mame/drivers/esh.cpp | |
parent | fb358febe10d9045810dc0282a969b53a4c40839 (diff) |
Added the other blinking mode, nw
Diffstat (limited to 'src/mame/drivers/esh.cpp')
-rw-r--r-- | src/mame/drivers/esh.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/mame/drivers/esh.cpp b/src/mame/drivers/esh.cpp index b8e99db0e16..85159e99d16 100644 --- a/src/mame/drivers/esh.cpp +++ b/src/mame/drivers/esh.cpp @@ -15,6 +15,8 @@ Notes: Todo: - LD TROUBLE appears at POST. Sync/timing issue? + - Performance spike after some time of gameplay, CPU comms gets corrupt? + - How to init NVRAM? Current defaults definitely aren't. - Wrong overlay colors; - Convert to tilemaps (see next ToDo for feasibility). - Rumor has it there's an analog beep hanging off 0xf5? Implement it and finish off 0xf5 bits. @@ -32,11 +34,6 @@ Todo: class esh_state : public driver_device { public: - enum - { - TIMER_IRQ_STOP - }; - esh_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_laserdisc(*this, "laserdisc"), @@ -99,14 +96,28 @@ UINT32 esh_state::screen_update_esh(screen_device &screen, bitmap_rgb32 &bitmap, int palIndex = (m_tile_control_ram[current_screen_character] & 0x0f); int tileOffs = (m_tile_control_ram[current_screen_character] & 0x10) >> 4; bool blinkLine = bool((m_tile_control_ram[current_screen_character] & 0x40) >> 6); - //int blinkChar = (m_tile_control_ram[current_screen_character] & 0x80) >> 7; + bool blinkChar = bool((m_tile_control_ram[current_screen_character] & 0x80) >> 7); + // TODO: blink timing + if(blinkChar == true && m_screen->frame_number() & 8) + { + if(trans_mask == 0) + continue; + + for(int yi=0;yi<8;yi++) + for(int xi=0;xi<8;xi++) + bitmap.pix32(yi+chary*8, xi+charx*8) = m_palette->pen(palIndex * 8 + pal_bank * 0x100); + + continue; + } + if(blinkLine == true && m_screen->frame_number() & 8) gfx = m_gfxdecode->gfx(1); else gfx = m_gfxdecode->gfx(0); + gfx->transpen(bitmap,cliprect, m_tile_ram[current_screen_character] + (0x100 * tileOffs), palIndex + pal_bank, @@ -263,7 +274,7 @@ PALETTE_INIT_MEMBER(esh_state, esh) const UINT8 *color_prom = memregion("proms")->base(); int i; - /* Oddly enough, the top 4 bits of each byte is 0 */ + /* Oddly enough, the top 4 bits of each byte is 0 <- ??? */ for (i = 0; i < palette.entries(); i++) { int r,g,b; |