Previous 199869 Revisions Next

r36590 Monday 23rd March, 2015 at 18:52:09 UTC by Osso
realbrk: added save state support (nw)
[src/mame/drivers]realbrk.c
[src/mame/includes]realbrk.h
[src/mame/video]realbrk.c

trunk/src/mame/drivers/realbrk.c
r245101r245102
3636
3737- Priorities (e.g during the intro, there are two black bands in the backround
3838  that should obscure sprites).
39- Sometimes sprites are shrinked to end up overlapping the background image
39- Sometimes sprites are shrunk to end up overlapping the background image
4040  in the tilemaps, but they are a few pixels off
4141
4242***************************************************************************/
r245101r245102
155155   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                         // ROM
156156   AM_RANGE(0x200000, 0x203fff) AM_RAM                   AM_SHARE("spriteram") // Sprites
157157   AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")   // Palette
158   AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(realbrk_vram_0_w) AM_SHARE("vram_0")  // Background   (0)
159   AM_RANGE(0x602000, 0x603fff) AM_RAM_WRITE(realbrk_vram_1_w) AM_SHARE("vram_1")  // Background   (1)
160   AM_RANGE(0x604000, 0x604fff) AM_RAM_WRITE(realbrk_vram_2_w) AM_SHARE("vram_2")  // Text         (2)
161   AM_RANGE(0x606000, 0x60600f) AM_RAM_WRITE(realbrk_vregs_w) AM_SHARE("vregs")    // Scroll + Video Regs
158   AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0")  // Background   (0)
159   AM_RANGE(0x602000, 0x603fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1")  // Background   (1)
160   AM_RANGE(0x604000, 0x604fff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram_2")  // Text         (2)
161   AM_RANGE(0x606000, 0x60600f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs")    // Scroll + Video Regs
162162   AM_RANGE(0x605000, 0x61ffff) AM_RAM                                         //
163163   AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00)   // YMZ280
164164   AM_RANGE(0xfe0000, 0xfeffff) AM_RAM                                         // RAM
r245101r245102
744744                        Billiard Academy Real Break
745745***************************************************************************/
746746
747INTERRUPT_GEN_MEMBER(realbrk_state::realbrk_interrupt)
747INTERRUPT_GEN_MEMBER(realbrk_state::interrupt)
748748{
749749   /* VBlank is connected to INT1 (external interrupts pin 1) */
750750   m_tmp68301->external_interrupt_1();
r245101r245102
755755   /* basic machine hardware */
756756   MCFG_CPU_ADD("maincpu",M68000, XTAL_32MHz / 2)          /* !! TMP68301 !! */
757757   MCFG_CPU_PROGRAM_MAP(realbrk_mem)
758   MCFG_CPU_VBLANK_INT_DRIVER("screen", realbrk_state,  realbrk_interrupt)
758   MCFG_CPU_VBLANK_INT_DRIVER("screen", realbrk_state,  interrupt)
759759   MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback)
760760
761761   MCFG_DEVICE_ADD("tmp68301", TMP68301, 0)
r245101r245102
767767   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
768768   MCFG_SCREEN_SIZE(0x140, 0xe0)
769769   MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1)
770   MCFG_SCREEN_UPDATE_DRIVER(realbrk_state, screen_update_realbrk)
770   MCFG_SCREEN_UPDATE_DRIVER(realbrk_state, screen_update)
771771   MCFG_SCREEN_PALETTE("palette")
772772
773773   MCFG_GFXDECODE_ADD("gfxdecode", "palette", realbrk)
r245101r245102
12731273ROM_END
12741274#endif
12751275
1276GAME( 1998, pkgnsh,   0,       pkgnsh,   pkgnsh, driver_device,   0, ROT0, "Nakanihon / Dynax", "Pachinko Gindama Shoubu (Japan)",      GAME_IMPERFECT_GRAPHICS )
1276GAME( 1998, pkgnsh,   0,       pkgnsh,   pkgnsh, driver_device,   0, ROT0, "Nakanihon / Dynax", "Pachinko Gindama Shoubu (Japan)",      GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
12771277
1278GAME( 1998, pkgnshdx, 0,       pkgnshdx, pkgnshdx, driver_device, 0, ROT0, "Nakanihon / Dynax", "Pachinko Gindama Shoubu DX (Japan)",   GAME_IMPERFECT_GRAPHICS )
1278GAME( 1998, pkgnshdx, 0,       pkgnshdx, pkgnshdx, driver_device, 0, ROT0, "Nakanihon / Dynax", "Pachinko Gindama Shoubu DX (Japan)",   GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
12791279
1280GAME( 1998, realbrk,  0,       realbrk,  realbrk, driver_device,  0, ROT0, "Nakanihon",         "Billiard Academy Real Break (Europe)", GAME_IMPERFECT_GRAPHICS )
1281GAME( 1998, realbrko, realbrk, realbrk,  realbrk, driver_device,  0, ROT0, "Nakanihon",         "Billiard Academy Real Break (Europe, older)", GAME_IMPERFECT_GRAPHICS )
1282GAME( 1998, realbrkj, realbrk, realbrk,  realbrk, driver_device,  0, ROT0, "Nakanihon",         "Billiard Academy Real Break (Japan)",  GAME_IMPERFECT_GRAPHICS )
1283GAME( 1998, realbrkk, realbrk, realbrk,  realbrk, driver_device,  0, ROT0, "Nakanihon",         "Billiard Academy Real Break (Korea)",  GAME_IMPERFECT_GRAPHICS )
1280GAME( 1998, realbrk,  0,       realbrk,  realbrk, driver_device,  0, ROT0, "Nakanihon",         "Billiard Academy Real Break (Europe)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
1281GAME( 1998, realbrko, realbrk, realbrk,  realbrk, driver_device,  0, ROT0, "Nakanihon",         "Billiard Academy Real Break (Europe, older)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
1282GAME( 1998, realbrkj, realbrk, realbrk,  realbrk, driver_device,  0, ROT0, "Nakanihon",         "Billiard Academy Real Break (Japan)",  GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
1283GAME( 1998, realbrkk, realbrk, realbrk,  realbrk, driver_device,  0, ROT0, "Nakanihon",         "Billiard Academy Real Break (Korea)",  GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
12841284
1285GAME( 2004, dai2kaku, 0,       dai2kaku, dai2kaku, driver_device, 0, ROT0, "SystemBit",         "Dai-Dai-Kakumei (Japan)",              GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1285GAME( 2004, dai2kaku, 0,       dai2kaku, dai2kaku, driver_device, 0, ROT0, "SystemBit",         "Dai-Dai-Kakumei (Japan)",              GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/realbrk.h
r245101r245102
55public:
66   realbrk_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_maincpu(*this, "maincpu"),
9      m_tmp68301(*this, "tmp68301"),
10      m_gfxdecode(*this, "gfxdecode"),
11      m_screen(*this, "screen"),
12      m_palette(*this, "palette"),
813      m_spriteram(*this, "spriteram"),
914      m_vram_0(*this, "vram_0"),
1015      m_vram_1(*this, "vram_1"),
r245101r245102
1318      m_dsw_select(*this, "dsw_select"),
1419      m_backup_ram(*this, "backup_ram"),
1520      m_vram_0ras(*this, "vram_0ras"),
16      m_vram_1ras(*this, "vram_1ras"),
17      m_maincpu(*this, "maincpu"),
18      m_tmp68301(*this, "tmp68301"),
19      m_gfxdecode(*this, "gfxdecode"),
20      m_screen(*this, "screen"),
21      m_palette(*this, "palette") { }
21      m_vram_1ras(*this, "vram_1ras") { }
2222
23   required_device<cpu_device> m_maincpu;
24   required_device<tmp68301_device> m_tmp68301;
25   required_device<gfxdecode_device> m_gfxdecode;
26   required_device<screen_device> m_screen;
27   required_device<palette_device> m_palette;
28
2329   required_shared_ptr<UINT16> m_spriteram;
2430   required_shared_ptr<UINT16> m_vram_0;
2531   required_shared_ptr<UINT16> m_vram_1;
r245101r245102
2935   optional_shared_ptr<UINT16> m_backup_ram;
3036   optional_shared_ptr<UINT16> m_vram_0ras;
3137   optional_shared_ptr<UINT16> m_vram_1ras;
38
3239   bitmap_ind16 *m_tmpbitmap0;
3340   bitmap_ind16 *m_tmpbitmap1;
3441   int m_disable_video;
3542   tilemap_t *m_tilemap_0;
3643   tilemap_t *m_tilemap_1;
3744   tilemap_t *m_tilemap_2;
45
46   // common
47   DECLARE_WRITE16_MEMBER(vram_0_w);
48   DECLARE_WRITE16_MEMBER(vram_1_w);
49   DECLARE_WRITE16_MEMBER(vram_2_w);
50   DECLARE_WRITE16_MEMBER(vregs_w);
51
52   // realbrk and/or dai2kaku
3853   DECLARE_READ16_MEMBER(realbrk_dsw_r);
54   DECLARE_WRITE16_MEMBER(realbrk_flipscreen_w);
55   DECLARE_WRITE16_MEMBER(dai2kaku_flipscreen_w);
56
57   // pkgnsh and/or pkgnshdx
3958   DECLARE_READ16_MEMBER(pkgnsh_input_r);
4059   DECLARE_READ16_MEMBER(pkgnshdx_input_r);
4160   DECLARE_READ16_MEMBER(backup_ram_r);
4261   DECLARE_READ16_MEMBER(backup_ram_dx_r);
4362   DECLARE_WRITE16_MEMBER(backup_ram_w);
44   DECLARE_WRITE16_MEMBER(realbrk_flipscreen_w);
45   DECLARE_WRITE16_MEMBER(dai2kaku_flipscreen_w);
46   DECLARE_WRITE16_MEMBER(realbrk_vram_0_w);
47   DECLARE_WRITE16_MEMBER(realbrk_vram_1_w);
48   DECLARE_WRITE16_MEMBER(realbrk_vram_2_w);
49   DECLARE_WRITE16_MEMBER(realbrk_vregs_w);
63
5064   TILE_GET_INFO_MEMBER(get_tile_info_0);
5165   TILE_GET_INFO_MEMBER(get_tile_info_1);
5266   TILE_GET_INFO_MEMBER(get_tile_info_2);
67
5368   virtual void video_start();
54   UINT32 screen_update_realbrk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
69
70   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5571   UINT32 screen_update_dai2kaku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
56   INTERRUPT_GEN_MEMBER(realbrk_interrupt);
5772   void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
5873   void dai2kaku_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect, int layer);
59   required_device<cpu_device> m_maincpu;
60   required_device<tmp68301_device> m_tmp68301;
61   required_device<gfxdecode_device> m_gfxdecode;
62   required_device<screen_device> m_screen;
63   required_device<palette_device> m_palette;
74   
75   INTERRUPT_GEN_MEMBER(interrupt);
6476};
trunk/src/mame/video/realbrk.c
r245101r245102
8888         TILE_FLIPYX( attr >> 14 ));
8989}
9090
91WRITE16_MEMBER(realbrk_state::realbrk_vram_0_w)
91WRITE16_MEMBER(realbrk_state::vram_0_w)
9292{
9393   COMBINE_DATA(&m_vram_0[offset]);
9494   m_tilemap_0->mark_tile_dirty(offset/2);
9595}
9696
97WRITE16_MEMBER(realbrk_state::realbrk_vram_1_w)
97WRITE16_MEMBER(realbrk_state::vram_1_w)
9898{
9999   COMBINE_DATA(&m_vram_1[offset]);
100100   m_tilemap_1->mark_tile_dirty(offset/2);
r245101r245102
123123         0);
124124}
125125
126WRITE16_MEMBER(realbrk_state::realbrk_vram_2_w)
126WRITE16_MEMBER(realbrk_state::vram_2_w)
127127{
128128   COMBINE_DATA(&m_vram_2[offset]);
129129   m_tilemap_2->mark_tile_dirty(offset);
r245101r245102
154154
155155   m_tmpbitmap0 = auto_bitmap_ind16_alloc(machine(),32,32);
156156   m_tmpbitmap1 = auto_bitmap_ind16_alloc(machine(),32,32);
157   
158   save_item(NAME(m_disable_video));
157159}
158160
159161/***************************************************************************
r245101r245102
167169    of a sprite to be drawn. 0x300 items of the list seem to be used.
168170
169171    Each sprite is made of several 16x16 tiles (from 1 to 32x32) and
170    can be zoomed / shrinked in size.
172    can be zoomed / shrunk in size.
171173
172174    There are two set of tiles: with 256 or 16 colors.
173175
r245101r245102
203205
204206void realbrk_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
205207{
206   UINT16 *spriteram16 = m_spriteram;
207208   int offs;
208209
209210   int max_x = m_screen->width();
r245101r245102
220221
221222      UINT16 *s;
222223
223      if (spriteram16[offs] & 0x8000) continue;
224      if (m_spriteram[offs] & 0x8000) continue;
224225
225      s       =       &spriteram16[(spriteram16[offs] & 0x3ff) * 16/2];
226      s       =       &m_spriteram[(m_spriteram[offs] & 0x3ff) * 16/2];
226227
227228      sy      =       s[ 0 ];
228229      sx      =       s[ 1 ];
r245101r245102
365366/* layer : 0== bghigh<spr    1== bglow<spr<bghigh     2==spr<bglow    3==boarder */
366367void realbrk_state::dai2kaku_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect, int layer)
367368{
368   UINT16 *spriteram16 = m_spriteram;
369369   int offs;
370370
371371   int max_x = m_screen->width();
r245101r245102
380380
381381      UINT16 *s;
382382
383      if (spriteram16[offs] & 0x8000) continue;
383      if (m_spriteram[offs] & 0x8000) continue;
384384
385      s       =       &spriteram16[(spriteram16[offs] & 0x3ff) * 16/2];
385      s       =       &m_spriteram[(m_spriteram[offs] & 0x3ff) * 16/2];
386386
387387      sy      =       s[ 0 ];
388388      sx      =       s[ 1 ];
r245101r245102
467467
468468***************************************************************************/
469469
470WRITE16_MEMBER(realbrk_state::realbrk_vregs_w)
470WRITE16_MEMBER(realbrk_state::vregs_w)
471471{
472472   UINT16 old_data = m_vregs[offset];
473473   UINT16 new_data = COMBINE_DATA(&m_vregs[offset]);
r245101r245102
478478   }
479479}
480480
481UINT32 realbrk_state::screen_update_realbrk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
481UINT32 realbrk_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
482482{
483483   int layers_ctrl = -1;
484484


Previous 199869 Revisions Next


© 1997-2024 The MAME Team