summaryrefslogblamecommitdiffstatshomepage
path: root/src/mame/video/ashnojoe.cpp
blob: 043f1acb5bb2c2d50240aff4fca98b80f1d60733 (plain) (tree)
1
2
3
4
5
6
7
8
9
                       
                                  






                                                                      
                
                              
 
 
                                                       
 
                                         
 
                               




                                              
                                                         
 

                                                   
 
                               




                                                    
                                                         
 
                                           
 
                               




                                                     
                                                         
 
                                           
 
                               




                                                     
                                                         
 

                                                   
 
                               




                                                    
                                                         
 

                                                   
 
                               





                                                    
                                                         
 

                                                   
 
                               




                                                    
                                                  
 

                                              


 
                                                   
 

                                                   

 
                                                   
 

                                               

 
                                                   
 

                                               

 
                                                   
 

                                                   

 
                                                   
 

                                                   

 
                                                   
 

                                                   

 
                                                      



                        
                                                    

                      
                                                    

                      
                                                    

                      
                                                    

                      

                                                    



                      
                                                      



                        
                                                    

                      
                                                    

                      
                                                    

                      
                                                    

                      

                                                    



                      

                                  






                                                                                                                                                                                





                                               

 
                                                                                                                       
 
                                                         
 
                                              
 
                                   
                                                                    
            
                                                                    
 




                                                            


                 
// license:BSD-3-Clause
// copyright-holders:David Haywood
/********************************************************************

    Ashita no Joe (Success Joe) [Wave]
    video hardware emulation

*********************************************************************/

#include "emu.h"
#include "includes/ashnojoe.h"


TILE_GET_INFO_MEMBER(ashnojoe_state::get_joe_tile_info)
{
	int code = m_tileram[tile_index];

	SET_TILE_INFO_MEMBER(2,
			code & 0xfff,
			((code >> 12) & 0x0f),
			0);
}

TILE_GET_INFO_MEMBER(ashnojoe_state::get_joe_tile_info_2)
{
	int code = m_tileram_2[tile_index * 2];
	int attr = m_tileram_2[tile_index * 2 + 1];

	SET_TILE_INFO_MEMBER(4,
			(code & 0x7fff),
			((attr >> 8) & 0x1f) + 0x40,
			0);
}

TILE_GET_INFO_MEMBER(ashnojoe_state::get_joe_tile_info_3)
{
	int code = m_tileram_3[tile_index];

	SET_TILE_INFO_MEMBER(0,
			code & 0xfff,
			((code >> 12) & 0x0f) + 0x10,
			0);
}

TILE_GET_INFO_MEMBER(ashnojoe_state::get_joe_tile_info_4)
{
	int code = m_tileram_4[tile_index];

	SET_TILE_INFO_MEMBER(1,
			code & 0xfff,
			((code >> 12) & 0x0f) + 0x60,
			0);
}

TILE_GET_INFO_MEMBER(ashnojoe_state::get_joe_tile_info_5)
{
	int code = m_tileram_5[tile_index * 2];
	int attr = m_tileram_5[tile_index * 2 + 1];

	SET_TILE_INFO_MEMBER(4,
			(code & 0x7fff),
			((attr >> 8) & 0x1f) + 0x20,
			0);
}

TILE_GET_INFO_MEMBER(ashnojoe_state::get_joe_tile_info_6)
{
	int code = m_tileram_6[tile_index * 2];
	int attr = m_tileram_6[tile_index * 2 + 1];

	SET_TILE_INFO_MEMBER(3,
			(code & 0x1fff),
			((attr >> 8) & 0x1f) + 0x70,
			0);
}


TILE_GET_INFO_MEMBER(ashnojoe_state::get_joe_tile_info_7)
{
	int code = m_tileram_7[tile_index * 2];
	int attr = m_tileram_7[tile_index * 2 + 1];

	SET_TILE_INFO_MEMBER(3,
			(code & 0x1fff),
			((attr >> 8) & 0x1f) + 0x70,
			0);
}

WRITE16_MEMBER(ashnojoe_state::ashnojoe_tileram_w)
{
	m_tileram[offset] = data;
	m_joetilemap->mark_tile_dirty(offset);
}


WRITE16_MEMBER(ashnojoe_state::ashnojoe_tileram2_w)
{
	m_tileram_2[offset] = data;
	m_joetilemap2->mark_tile_dirty(offset / 2);
}

WRITE16_MEMBER(ashnojoe_state::ashnojoe_tileram3_w)
{
	m_tileram_3[offset] = data;
	m_joetilemap3->mark_tile_dirty(offset);
}

WRITE16_MEMBER(ashnojoe_state::ashnojoe_tileram4_w)
{
	m_tileram_4[offset] = data;
	m_joetilemap4->mark_tile_dirty(offset);
}

WRITE16_MEMBER(ashnojoe_state::ashnojoe_tileram5_w)
{
	m_tileram_5[offset] = data;
	m_joetilemap5->mark_tile_dirty(offset / 2);
}

WRITE16_MEMBER(ashnojoe_state::ashnojoe_tileram6_w)
{
	m_tileram_6[offset] = data;
	m_joetilemap6->mark_tile_dirty(offset / 2);
}

WRITE16_MEMBER(ashnojoe_state::ashnojoe_tileram7_w)
{
	m_tileram_7[offset] = data;
	m_joetilemap7->mark_tile_dirty(offset / 2);
}

WRITE16_MEMBER(ashnojoe_state::joe_tilemaps_xscroll_w)
{
	switch( offset )
	{
	case 0:
		m_joetilemap3->set_scrollx(0, data);
		break;
	case 1:
		m_joetilemap5->set_scrollx(0, data);
		break;
	case 2:
		m_joetilemap2->set_scrollx(0, data);
		break;
	case 3:
		m_joetilemap4->set_scrollx(0, data);
		break;
	case 4:
		m_joetilemap6->set_scrollx(0, data);
		m_joetilemap7->set_scrollx(0, data);
		break;
	}
}

WRITE16_MEMBER(ashnojoe_state::joe_tilemaps_yscroll_w)
{
	switch( offset )
	{
	case 0:
		m_joetilemap3->set_scrolly(0, data);
		break;
	case 1:
		m_joetilemap5->set_scrolly(0, data);
		break;
	case 2:
		m_joetilemap2->set_scrolly(0, data);
		break;
	case 3:
		m_joetilemap4->set_scrolly(0, data);
		break;
	case 4:
		m_joetilemap6->set_scrolly(0, data);
		m_joetilemap7->set_scrolly(0, data);
		break;
	}
}

void ashnojoe_state::video_start()
{
	m_joetilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_joe_tile_info),this),  TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
	m_joetilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_joe_tile_info_2),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
	m_joetilemap3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_joe_tile_info_3),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
	m_joetilemap4 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_joe_tile_info_4),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
	m_joetilemap5 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_joe_tile_info_5),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
	m_joetilemap6 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_joe_tile_info_6),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
	m_joetilemap7 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_joe_tile_info_7),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);

	m_joetilemap->set_transparent_pen(15);
	m_joetilemap2->set_transparent_pen(15);
	m_joetilemap3->set_transparent_pen(15);
	m_joetilemap4->set_transparent_pen(15);
	m_joetilemap5->set_transparent_pen(15);
}

uint32_t ashnojoe_state::screen_update_ashnojoe(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
	//m_tilemap_reg[0] & 0x10 // ?? on coin insertion

	flip_screen_set(m_tilemap_reg[0] & 1);

	if(m_tilemap_reg[0] & 0x02)
		m_joetilemap7->draw(screen, bitmap, cliprect, 0, 0);
	else
		m_joetilemap6->draw(screen, bitmap, cliprect, 0, 0);

	m_joetilemap4->draw(screen, bitmap, cliprect, 0, 0);
	m_joetilemap2->draw(screen, bitmap, cliprect, 0, 0);
	m_joetilemap5->draw(screen, bitmap, cliprect, 0, 0);
	m_joetilemap3->draw(screen, bitmap, cliprect, 0, 0);
	m_joetilemap->draw(screen, bitmap, cliprect, 0, 0);

	return 0;
}