Previous 199869 Revisions Next

r35044 Sunday 15th February, 2015 at 08:07:53 UTC by Osso
welltris.c: added save state support (nw)
[src/mame/drivers]welltris.c
[src/mame/includes]welltris.h
[src/mame/video]welltris.c

trunk/src/mame/drivers/welltris.c
r243555r243556
320320
321321
322322
323WRITE8_MEMBER(welltris_state::welltris_sh_bankswitch_w)
323WRITE8_MEMBER(welltris_state::sound_bankswitch_w)
324324{
325   UINT8 *rom = memregion("audiocpu")->base() + 0x10000;
326
327   membank("bank1")->set_base(rom + (data & 0x03) * 0x8000);
325   membank("soundbank")->set_entry(data & 0x03);
328326}
329327
330328
r243555r243556
355353   AM_RANGE(0x800000, 0x81ffff) AM_RAM AM_SHARE("pixelram")    /* Graph_1 & 2*/
356354   AM_RANGE(0xff8000, 0xffbfff) AM_RAM                             /* work */
357355   AM_RANGE(0xffc000, 0xffc3ff) AM_RAM AM_SHARE("spriteram")           /* Sprite */
358   AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(welltris_charvideoram_w) AM_SHARE("charvideoram")     /* Char */
356   AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(charvideoram_w) AM_SHARE("charvideoram")     /* Char */
359357   AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")    /* Palette */
360358   AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1")                 /* Bottom Controls */
361   AM_RANGE(0xfff000, 0xfff001) AM_WRITE(welltris_palette_bank_w)
359   AM_RANGE(0xfff000, 0xfff001) AM_WRITE(palette_bank_w)
362360   AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2")                 /* Top Controls */
363   AM_RANGE(0xfff002, 0xfff003) AM_WRITE(welltris_gfxbank_w)
361   AM_RANGE(0xfff002, 0xfff003) AM_WRITE(gfxbank_w)
364362   AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("P3")                 /* Left Side Ctrls */
365   AM_RANGE(0xfff004, 0xfff007) AM_WRITE(welltris_scrollreg_w)
363   AM_RANGE(0xfff004, 0xfff007) AM_WRITE(scrollreg_w)
366364   AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("P4")                 /* Right Side Ctrls */
367365   AM_RANGE(0xfff008, 0xfff009) AM_READ_PORT("SYSTEM")             /* Bit 5 Tested at start of irq 1 */
368366   AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w)
r243555r243556
376374static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, welltris_state )
377375   AM_RANGE(0x0000, 0x77ff) AM_ROM
378376   AM_RANGE(0x7800, 0x7fff) AM_RAM
379   AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
377   AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
380378ADDRESS_MAP_END
381379
382380static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, welltris_state )
383381   ADDRESS_MAP_GLOBAL_MASK(0xff)
384   AM_RANGE(0x00, 0x00) AM_WRITE(welltris_sh_bankswitch_w)
382   AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
385383   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
386384   AM_RANGE(0x10, 0x10) AM_READ(soundlatch_byte_r)
387385   AM_RANGE(0x18, 0x18) AM_WRITE(pending_command_clear_w)
r243555r243556
640638
641639
642640
643static const gfx_layout welltris_charlayout =
641static const gfx_layout charlayout =
644642{
645643   8,8,
646644   RGN_FRAC(1,1),
r243555r243556
651649   32*8
652650};
653651
654static const gfx_layout welltris_spritelayout =
652static const gfx_layout spritelayout =
655653{
656654   16,16,
657655   RGN_FRAC(1,2),
r243555r243556
665663};
666664
667665static GFXDECODE_START( welltris )
668   GFXDECODE_ENTRY( "gfx1", 0, welltris_charlayout,   16* 0, 4*16 )
669   GFXDECODE_ENTRY( "gfx2", 0, welltris_spritelayout, 16*96, 2*16 )
666   GFXDECODE_ENTRY( "gfx1", 0, charlayout,   16* 0, 4*16 )
667   GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 16*96, 2*16 )
670668GFXDECODE_END
671669
672670
r243555r243556
688686#endif
689687}
690688
691DRIVER_INIT_MEMBER(welltris_state,quiz18k)
689void welltris_state::machine_start()
692690{
691   membank("soundbank")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x8000);
692   
693   save_item(NAME(m_pending_command));
693694}
694695
695
696
697696static MACHINE_CONFIG_START( welltris, welltris_state )
698697
699698   /* basic machine hardware */
r243555r243556
711710   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
712711   MCFG_SCREEN_SIZE(512, 256)
713712   MCFG_SCREEN_VISIBLE_AREA(15, 367-1, 8, 248-1)
714   MCFG_SCREEN_UPDATE_DRIVER(welltris_state, screen_update_welltris)
713   MCFG_SCREEN_UPDATE_DRIVER(welltris_state, screen_update)
715714   MCFG_SCREEN_PALETTE("palette")
716715
717716   MCFG_GFXDECODE_ADD("gfxdecode", "palette", welltris)
r243555r243556
755754   ROM_LOAD16_BYTE( "lh532j10.10", 0x100000, 0x40000, CRC(1187c665) SHA1(c6c55016e46805694348b386e521a3ef1a443621) )
756755   ROM_LOAD16_BYTE( "lh532j11.9",  0x100001, 0x40000, CRC(18eda9e5) SHA1(c01d1dc6bfde29797918490947c89440b58d5372) )
757756
758   ROM_REGION( 0x30000, "audiocpu", 0 )    /* 64k for the audio CPU + banks */
757   ROM_REGION( 0x20000, "audiocpu", 0 )    /* 128k for the audio CPU + banks */
759758   ROM_LOAD( "3.144", 0x00000, 0x20000, CRC(ae8f763e) SHA1(255419e02189c2e156c1fbcb0cd4aedd14ed8ffa) )
760   ROM_RELOAD(        0x10000, 0x20000 )
761759
762760   ROM_REGION( 0x0a0000, "gfx1", 0 ) /* CHAR Tiles */
763761   ROM_LOAD( "lh534j12.77", 0x000000, 0x80000, CRC(b61a8b74) SHA1(e17f7355375bdc166ef8131f7de9dbda5453f570) )
r243555r243556
782780   ROM_LOAD16_BYTE( "lh532j10.10", 0x100000, 0x40000, CRC(1187c665) SHA1(c6c55016e46805694348b386e521a3ef1a443621) )
783781   ROM_LOAD16_BYTE( "lh532j11.9",  0x100001, 0x40000, CRC(18eda9e5) SHA1(c01d1dc6bfde29797918490947c89440b58d5372) )
784782
785   ROM_REGION( 0x30000, "audiocpu", 0 )    /* 64k for the audio CPU + banks */
783   ROM_REGION( 0x20000, "audiocpu", 0 )    /* 128k for the audio CPU + banks */
786784   ROM_LOAD( "3.144", 0x00000, 0x20000, CRC(ae8f763e) SHA1(255419e02189c2e156c1fbcb0cd4aedd14ed8ffa) )
787   ROM_RELOAD(        0x10000, 0x20000 )
788785
789786   ROM_REGION( 0x0a0000, "gfx1", 0 ) /* CHAR Tiles */
790787   ROM_LOAD( "lh534j12.77", 0x000000, 0x80000, CRC(b61a8b74) SHA1(e17f7355375bdc166ef8131f7de9dbda5453f570) )
r243555r243556
809806   ROM_LOAD16_BYTE( "ic10.bin", 0x100000, 0x40000, CRC(501453a3) SHA1(d127f417f1c52333e478ac397fbe8a2f223b1ce7) )
810807   ROM_LOAD16_BYTE( "ic9.bin",  0x100001, 0x40000, CRC(99b6840f) SHA1(8409a33c64729066bfed6e49dcd84f30906274cb) )
811808
812   ROM_REGION( 0x30000, "audiocpu", 0 )    /* 64k for the audio CPU + banks */
809   ROM_REGION( 0x20000, "audiocpu", 0 )    /* 128k for the audio CPU + banks */
813810   ROM_LOAD( "3-ic144.bin", 0x00000, 0x20000, CRC(72d372e3) SHA1(d077e34947de1050b68d76506cc8926b06a94a76) )
814   ROM_RELOAD(              0x10000, 0x20000 )
815811
816812   ROM_REGION( 0x180000, "gfx1", 0 ) /* CHAR Tiles */
817813   ROM_LOAD( "ic77.bin", 0x000000, 0x80000, CRC(af3b6fd1) SHA1(d22f7cf62a94ae3a2dcb0236630e9ac88d5e528b) )
r243555r243556
832828
833829
834830
835GAME( 1991, welltris, 0,        welltris, welltris, welltris_state, welltris, ROT0,   "Video System Co.", "Welltris (World?, 2 players)", GAME_NO_COCKTAIL )
836GAME( 1991, welltrisj,welltris, welltris, welltris, welltris_state, welltris, ROT0,   "Video System Co.", "Welltris (Japan, 2 players)", GAME_NO_COCKTAIL )
837GAME( 1992, quiz18k,  0,        quiz18k,  quiz18k, welltris_state,  quiz18k,  ROT0,   "EIM", "Miyasu Nonki no Quiz 18-Kin", GAME_NO_COCKTAIL )
831GAME( 1991, welltris, 0,        welltris, welltris, welltris_state, welltris, ROT0,   "Video System Co.", "Welltris (World?, 2 players)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
832GAME( 1991, welltrisj,welltris, welltris, welltris, welltris_state, welltris, ROT0,   "Video System Co.", "Welltris (Japan, 2 players)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
833GAME( 1992, quiz18k,  0,        quiz18k,  quiz18k,  driver_device,  0,        ROT0,   "EIM", "Miyasu Nonki no Quiz 18-Kin", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/welltris.h
r243555r243556
55public:
66   welltris_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_maincpu(*this, "maincpu"),
9      m_audiocpu(*this, "audiocpu"),
10      m_spr_old(*this, "vsystem_spr_old"),
11      m_gfxdecode(*this, "gfxdecode"),
812      m_spriteram(*this, "spriteram"),
913      m_pixelram(*this, "pixelram"),
10      m_charvideoram(*this, "charvideoram"),
11      m_spr_old(*this, "vsystem_spr_old"),
12      m_maincpu(*this, "maincpu"),
13      m_audiocpu(*this, "audiocpu"),
14      m_gfxdecode(*this, "gfxdecode") { }
14      m_charvideoram(*this, "charvideoram") { }
1515
16   int m_pending_command;
1716
17   required_device<cpu_device> m_maincpu;
18   required_device<cpu_device> m_audiocpu;
19   required_device<vsystem_spr2_device> m_spr_old;
20   required_device<gfxdecode_device> m_gfxdecode;
21
1822   required_shared_ptr<UINT16> m_spriteram;
1923   required_shared_ptr<UINT16> m_pixelram;
2024   required_shared_ptr<UINT16> m_charvideoram;
2125
22   /* devices referenced above */
23   required_device<vsystem_spr2_device> m_spr_old;
24
2526   tilemap_t *m_char_tilemap;
26   UINT8 m_gfxbank[8];
27   int m_pending_command;
28   UINT8 m_gfxbank[2];
2729   UINT16 m_charpalettebank;
2830   UINT16 m_spritepalettebank;
2931   UINT16 m_pixelpalettebank;
3032   int m_scrollx;
3133   int m_scrolly;
32   DECLARE_WRITE8_MEMBER(welltris_sh_bankswitch_w);
34   
35   DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
3336   DECLARE_WRITE16_MEMBER(sound_command_w);
3437   DECLARE_WRITE8_MEMBER(pending_command_clear_w);
35   DECLARE_WRITE16_MEMBER(welltris_palette_bank_w);
36   DECLARE_WRITE16_MEMBER(welltris_gfxbank_w);
37   DECLARE_WRITE16_MEMBER(welltris_scrollreg_w);
38   DECLARE_WRITE16_MEMBER(welltris_charvideoram_w);
39   void setbank(int num, int bank);
38   DECLARE_WRITE16_MEMBER(palette_bank_w);
39   DECLARE_WRITE16_MEMBER(gfxbank_w);
40   DECLARE_WRITE16_MEMBER(scrollreg_w);
41   DECLARE_WRITE16_MEMBER(charvideoram_w);
42   DECLARE_WRITE_LINE_MEMBER(irqhandler);
43   
4044   DECLARE_CUSTOM_INPUT_MEMBER(pending_sound_r);
45   
4146   DECLARE_DRIVER_INIT(quiz18k);
4247   DECLARE_DRIVER_INIT(welltris);
43   TILE_GET_INFO_MEMBER(get_welltris_tile_info);
48   virtual void machine_start();
4449   virtual void video_start();
45   UINT32 screen_update_welltris(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
50   
51   TILE_GET_INFO_MEMBER(get_tile_info);
52   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4653   void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect);
47   DECLARE_WRITE_LINE_MEMBER(irqhandler);
48   required_device<cpu_device> m_maincpu;
49   required_device<cpu_device> m_audiocpu;
50   required_device<gfxdecode_device> m_gfxdecode;
54   void setbank(int num, int bank);
5155};
trunk/src/mame/video/welltris.c
r243555r243556
33
44
55
6
7
8
96void welltris_state::setbank(int num, int bank)
107{
118   if (m_gfxbank[num] != bank)
r243555r243556
1815
1916/* Not really enough evidence here */
2017
21WRITE16_MEMBER(welltris_state::welltris_palette_bank_w)
18WRITE16_MEMBER(welltris_state::palette_bank_w)
2219{
2320   if (ACCESSING_BITS_0_7)
2421   {
r243555r243556
3532   }
3633}
3734
38WRITE16_MEMBER(welltris_state::welltris_gfxbank_w)
35WRITE16_MEMBER(welltris_state::gfxbank_w)
3936{
4037   if (ACCESSING_BITS_0_7)
4138   {
r243555r243556
4441   }
4542}
4643
47WRITE16_MEMBER(welltris_state::welltris_scrollreg_w)
44WRITE16_MEMBER(welltris_state::scrollreg_w)
4845{
4946   switch (offset) {
5047      case 0: m_scrollx = data - 14; break;
r243555r243556
5249   }
5350}
5451
55TILE_GET_INFO_MEMBER(welltris_state::get_welltris_tile_info)
52TILE_GET_INFO_MEMBER(welltris_state::get_tile_info)
5653{
5754   UINT16 code = m_charvideoram[tile_index];
5855   int bank = (code & 0x1000) >> 12;
r243555r243556
6360         0);
6461}
6562
66WRITE16_MEMBER(welltris_state::welltris_charvideoram_w)
63WRITE16_MEMBER(welltris_state::charvideoram_w)
6764{
6865   COMBINE_DATA(&m_charvideoram[offset]);
6966   m_char_tilemap->mark_tile_dirty(offset);
r243555r243556
7168
7269void welltris_state::video_start()
7370{
74   m_char_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(welltris_state::get_welltris_tile_info),this), TILEMAP_SCAN_ROWS,  8, 8, 64, 32);
71   m_char_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(welltris_state::get_tile_info),this), TILEMAP_SCAN_ROWS,  8, 8, 64, 32);
7572
7673   m_char_tilemap->set_transparent_pen(15);
74   
75   save_item(NAME(m_gfxbank));
76   save_item(NAME(m_charpalettebank));
77   save_item(NAME(m_spritepalettebank));
78   save_item(NAME(m_pixelpalettebank));
79   save_item(NAME(m_scrollx));
80   save_item(NAME(m_scrolly));
7781}
7882
7983void welltris_state::draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect)
r243555r243556
9195   }
9296}
9397
94UINT32 welltris_state::screen_update_welltris(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
98UINT32 welltris_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
9599{
96100   m_char_tilemap->set_scrollx(0, m_scrollx);
97101   m_char_tilemap->set_scrolly(0, m_scrolly);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team