Previous 199869 Revisions Next

r22943 Sunday 19th May, 2013 at 18:09:24 UTC by Fabio Priuli
(MESS) ngp.c: added save state support to the driver [Fabio Priuli]
[src/mess/drivers]ngp.c
[src/mess/video]k1ge.c k1ge.h

trunk/src/mess/video/k1ge.c
r22942r22943
4141}
4242
4343
44READ8_MEMBER( k1ge_device::read )
44READ8_MEMBER( k1ge_device::reg_read )
4545{
4646   UINT8   data = m_vram[offset & 0x7ff];
4747
r22942r22943
5858}
5959
6060
61WRITE8_MEMBER( k1ge_device::write )
61WRITE8_MEMBER( k1ge_device::reg_write )
6262{
6363   switch( offset )
6464   {
r22942r22943
9292   m_vram[offset & 0x7ff] = data;
9393}
9494
95// TODO: these i/o handlers can probably be merged with the above...
96READ8_MEMBER( k1ge_device::vram_read )
97{
98   assert(offset < 0x3800);
99   return m_vram[0x800 + offset];
100}
95101
102
103WRITE8_MEMBER( k1ge_device::vram_write )
104{
105   assert(offset < 0x3800);
106   m_vram[0x800 + offset] = data;
107}
108
109
96110void k1ge_device::draw_scroll_plane( UINT16 *p, UINT16 base, int line, int scroll_x, int scroll_y, int pal_base )
97111{
98112   int i;
r22942r22943
797811   m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(k1ge_device::timer_callback), this));
798812   m_hblank_on_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(k1ge_device::hblank_on_timer_callback), this));
799813   m_screen = machine().device<screen_device>(m_screen_tag);
800   m_vram = machine().root_device().memregion( m_vram_tag )->base();
814   m_vram = auto_alloc_array_clear(machine(), UINT8, 0x4000);
801815   m_bitmap = auto_bitmap_ind16_alloc( machine(), m_screen->width(), m_screen->height() );
816
817   save_pointer(NAME(m_vram), 0x4000);
818   save_item(NAME(m_wba_h));
819   save_item(NAME(m_wba_v));
820   save_item(NAME(m_wsi_h));
821   save_item(NAME(m_wsi_v));
802822}
803823
804824
trunk/src/mess/video/k1ge.h
r22942r22943
55#include "devcb.h"
66
77
8#define MCFG_K1GE_ADD(_tag, _clock, _screen, _vram, _vblank, _hblank ) \
8#define MCFG_K1GE_ADD(_tag, _clock, _screen, _vblank, _hblank ) \
99   MCFG_DEVICE_ADD( _tag, K1GE, _clock ) \
1010   k1ge_device::static_set_screen( *device, _screen ); \
11   k1ge_device::static_set_vram( *device, _vram ); \
1211   devcb = &k1ge_device::static_set_vblank_callback( *device, DEVCB2_##_vblank ); \
1312   devcb = &k1ge_device::static_set_hblank_callback( *device, DEVCB2_##_hblank );
1413
15#define MCFG_K2GE_ADD(_tag, _clock, _screen, _vram, _vblank, _hblank ) \
14#define MCFG_K2GE_ADD(_tag, _clock, _screen, _vblank, _hblank ) \
1615   MCFG_DEVICE_ADD( _tag, K2GE, _clock ) \
1716   k1ge_device::static_set_screen( *device, _screen ); \
18   k1ge_device::static_set_vram( *device, _vram ); \
1917   devcb = &k1ge_device::static_set_vblank_callback( *device, DEVCB2_##_vblank ); \
2018   devcb = &k1ge_device::static_set_hblank_callback( *device, DEVCB2_##_hblank );
2119
r22942r22943
2624   k1ge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
2725   k1ge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
2826
29   DECLARE_READ8_MEMBER( read );
30   DECLARE_WRITE8_MEMBER( write );
27   DECLARE_READ8_MEMBER( reg_read );
28   DECLARE_WRITE8_MEMBER( reg_write );
29   DECLARE_READ8_MEMBER( vram_read );
30   DECLARE_WRITE8_MEMBER( vram_write );
3131
3232   void update( bitmap_ind16 &bitmap, const rectangle &cliprect );
3333
3434   // Static methods
3535   static void static_set_screen(device_t &device, const char *screen_name) { downcast<k1ge_device &>(device).m_screen_tag = screen_name; }
36   static void static_set_vram(device_t &device, const char *vram_name) { downcast<k1ge_device &>(device).m_vram_tag = vram_name; }
3736   template<class _Object> static devcb2_base &static_set_vblank_callback(device_t &device, _Object object) { return downcast<k1ge_device &>(device).m_vblank_pin_w.set_callback(object); }
3837   template<class _Object> static devcb2_base &static_set_hblank_callback(device_t &device, _Object object) { return downcast<k1ge_device &>(device).m_hblank_pin_w.set_callback(object); }
3938
r22942r22943
4443   virtual void device_reset();
4544
4645   const char *m_screen_tag;
47   const char *m_vram_tag;
4846   screen_device *m_screen;
4947   devcb2_write_line m_vblank_pin_w;
5048   devcb2_write_line m_hblank_pin_w;
trunk/src/mess/drivers/ngp.c
r22942r22943
541541   AM_RANGE( 0x000080, 0x0000bf )  AM_READWRITE(ngp_io_r, ngp_io_w)                            /* ngp/c specific i/o */
542542   AM_RANGE( 0x004000, 0x006fff )  AM_RAM AM_SHARE("mainram")                                  /* work ram */
543543   AM_RANGE( 0x007000, 0x007fff )  AM_RAM AM_SHARE("share1")                                   /* shared with sound cpu */
544   AM_RANGE( 0x008000, 0x0087ff )  AM_DEVREADWRITE("k1ge", k1ge_device, read, write)           /* video registers */
545   AM_RANGE( 0x008800, 0x00bfff )  AM_RAM AM_REGION("vram", 0x800 )                            /* Video RAM area */
544   AM_RANGE( 0x008000, 0x0087ff )  AM_DEVREADWRITE("k1ge", k1ge_device, reg_read, reg_write)   /* video registers */
545   AM_RANGE( 0x008800, 0x00bfff )  AM_DEVREADWRITE("k1ge", k1ge_device, vram_read, vram_write) /* Video RAM area */
546546   AM_RANGE( 0x200000, 0x3fffff )  AM_ROM AM_WRITE(flash0_w) AM_REGION("cart", 0)              /* cart area #1 */
547547   AM_RANGE( 0x800000, 0x9fffff )  AM_ROM AM_WRITE(flash1_w) AM_REGION("cart", 0x200000)       /* cart area #2 */
548548   AM_RANGE( 0xff0000, 0xffffff )  AM_ROM AM_REGION("maincpu", 0)                              /* system rom */
r22942r22943
677677
678678   m_seconds_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ngp_state::ngp_seconds_callback),this));
679679   m_seconds_timer->adjust( attotime::from_seconds(1), 0, attotime::from_seconds(1) );
680   
681   save_item(NAME(m_io_reg));
682   save_item(NAME(m_old_to3));
683   // TODO: check if these are handled correctly...
684   save_item(NAME(m_flash_chip[0].present));
685   save_item(NAME(m_flash_chip[0].manufacturer_id));
686   save_item(NAME(m_flash_chip[0].device_id));
687   save_item(NAME(m_flash_chip[0].org_data));
688   save_item(NAME(m_flash_chip[0].state));
689   save_item(NAME(m_flash_chip[0].command));
690   save_item(NAME(m_flash_chip[1].present));
691   save_item(NAME(m_flash_chip[1].manufacturer_id));
692   save_item(NAME(m_flash_chip[1].device_id));
693   save_item(NAME(m_flash_chip[1].org_data));
694   save_item(NAME(m_flash_chip[1].state));
695   save_item(NAME(m_flash_chip[1].command));
680696}
681697
682698
r22942r22943
684700{
685701   m_old_to3 = 0;
686702
687   m_z80->suspend(SUSPEND_REASON_HALT, 1 );
688   m_z80->set_input_line(0, CLEAR_LINE );
703   m_z80->suspend(SUSPEND_REASON_HALT, 1);
704   m_z80->set_input_line(0, CLEAR_LINE);
689705
690706   if ( m_nvram_loaded )
691707   {
r22942r22943
829845   MCFG_PALETTE_LENGTH( 8 )
830846   MCFG_PALETTE_INIT( k1ge )
831847
832   MCFG_K1GE_ADD( "k1ge", XTAL_6_144MHz, "screen", "vram", WRITELINE( ngp_state, ngp_vblank_pin_w ), WRITELINE( ngp_state, ngp_hblank_pin_w ) )
848   MCFG_K1GE_ADD( "k1ge", XTAL_6_144MHz, "screen", WRITELINE( ngp_state, ngp_vblank_pin_w ), WRITELINE( ngp_state, ngp_hblank_pin_w ) )
833849
834850   MCFG_CARTSLOT_ADD("cart")
835851   MCFG_CARTSLOT_EXTENSION_LIST("bin,ngp,npc,ngc")
r22942r22943
849865   MCFG_PALETTE_LENGTH( 4096 )
850866   MCFG_PALETTE_INIT( k2ge )
851867
852   MCFG_K2GE_ADD( "k1ge", XTAL_6_144MHz, "screen", "vram", WRITELINE( ngp_state, ngp_vblank_pin_w ), WRITELINE( ngp_state, ngp_hblank_pin_w ) )
868   MCFG_K2GE_ADD( "k1ge", XTAL_6_144MHz, "screen", WRITELINE( ngp_state, ngp_vblank_pin_w ), WRITELINE( ngp_state, ngp_hblank_pin_w ) )
853869
854870   MCFG_CARTSLOT_ADD("cart")
855871   MCFG_CARTSLOT_EXTENSION_LIST("bin,ngp,npc,ngc")
r22942r22943
868884   ROM_REGION( 0x10000, "maincpu" , 0 )
869885   ROM_LOAD( "ngp_bios.ngp", 0x0000, 0x10000, CRC(6232df8d) SHA1(2f6429b68446536d8b03f35d02f1e98beb6460a0) )
870886
871   ROM_REGION( 0x4000, "vram", ROMREGION_ERASE00 )
872
873887   ROM_REGION( 0x400000, "cart", ROMREGION_ERASEFF )
874888ROM_END
875889
r22942r22943
878892   ROM_REGION( 0x10000, "maincpu", 0 )
879893   ROM_LOAD( "ngpcbios.rom", 0x0000, 0x10000, CRC(6eeb6f40) SHA1(edc13192054a59be49c6d55f83b70e2510968e86) )
880894
881   ROM_REGION( 0x4000, "vram", ROMREGION_ERASE00 )
882
883895   ROM_REGION( 0x400000, "cart", ROMREGION_ERASEFF )
884896ROM_END
885897

Previous 199869 Revisions Next


© 1997-2024 The MAME Team