Previous 199869 Revisions Next

r20708 Sunday 3rd February, 2013 at 21:04:21 UTC by David Haywood
start converting spbactn to tilemaps, it's now clear that the prototype uploads the backgrounds once and uses the scroll regs (not hooked up) whereas the release version just uploads them as it needs them before each level.

I wonder if the extra z80 rom + gfx on the proto are for a 2nd screen, some kind of fake dmd?
[src/mame/drivers]spbactn.c
[src/mame/includes]spbactn.h
[src/mame/video]spbactn.c

trunk/src/mame/drivers/spbactn.c
r20707r20708
151151   AM_RANGE(0x00000, 0x3ffff) AM_ROM
152152   AM_RANGE(0x40000, 0x43fff) AM_RAM   // main ram
153153   AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
154   AM_RANGE(0x60000, 0x67fff) AM_RAM AM_SHARE("fgvideoram")
155   AM_RANGE(0x70000, 0x77fff) AM_RAM AM_SHARE("bgvideoram")
154   AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram")
155   AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram")
156156   AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
157157   AM_RANGE(0x90000, 0x90001) AM_READ_PORT("IN0")
158158   AM_RANGE(0x90010, 0x90011) AM_READ_PORT("IN1")
r20707r20708
199199   AM_RANGE(0x00000, 0x3ffff) AM_ROM
200200   AM_RANGE(0x40000, 0x43fff) AM_RAM   // main ram
201201   AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
202   AM_RANGE(0x60000, 0x67fff) AM_RAM AM_SHARE("fgvideoram")
203   AM_RANGE(0x70000, 0x77fff) AM_RAM AM_SHARE("bgvideoram")
204   AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_word_w) AM_SHARE("paletteram") // yes R and G are swapped vs. the released version
202   AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram")
203   AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram")
204   AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_word_w) AM_SHARE("paletteram")   // yes R and G are swapped vs. the released version
205205
206206   AM_RANGE(0x90000, 0x900ff) AM_READ(temp_read_handler_r) // temp
207207
r20707r20708
434434   MCFG_CPU_ADD("audiocpu", Z80, XTAL_4MHz)
435435   MCFG_CPU_PROGRAM_MAP(spbactn_sound_map) // wrong
436436
437   // there is a rom for another Z80??
437   // there is a rom for another Z80 and a socket for one..
438438
439439   /* video hardware */
440440   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/includes/spbactn.h
r20707r20708
1111   required_shared_ptr<UINT16> m_fgvideoram;
1212   required_shared_ptr<UINT16> m_spvideoram;
1313
14   tilemap_t    *m_bg_tilemap;
15   tilemap_t    *m_fg_tilemap;
16   DECLARE_WRITE16_MEMBER(bg_videoram_w);
17   DECLARE_WRITE16_MEMBER(fg_videoram_w);
18   TILE_GET_INFO_MEMBER(get_bg_tile_info);
19   TILE_GET_INFO_MEMBER(get_fg_tile_info);
20
21
1422   bitmap_ind16 m_tile_bitmap_bg;
1523   bitmap_ind16 m_tile_bitmap_fg;
1624   DECLARE_WRITE16_MEMBER(soundcommand_w);
trunk/src/mame/video/spbactn.c
r20707r20708
117117}
118118
119119
120WRITE16_MEMBER(spbactn_state::bg_videoram_w)
121{
122   COMBINE_DATA(&m_bgvideoram[offset]);
123   m_bg_tilemap->mark_tile_dirty(offset&0x1fff);
124}
125
126TILE_GET_INFO_MEMBER(spbactn_state::get_bg_tile_info)
127{
128   int attr = m_bgvideoram[tile_index];
129   int tileno = m_bgvideoram[tile_index+0x2000];
130   SET_TILE_INFO_MEMBER(1, tileno, ((attr & 0x00f0)>>4), 0);
131}
132
133
134WRITE16_MEMBER(spbactn_state::fg_videoram_w)
135{
136   COMBINE_DATA(&m_fgvideoram[offset]);
137   m_fg_tilemap->mark_tile_dirty(offset&0x1fff);
138}
139
140TILE_GET_INFO_MEMBER(spbactn_state::get_fg_tile_info)
141{
142   int attr = m_fgvideoram[tile_index];
143   int tileno = m_fgvideoram[tile_index+0x2000];
144
145   SET_TILE_INFO_MEMBER(0, tileno, ((attr & 0x00f0)>>4), 0);
146}
147
148
149
120150void spbactn_state::video_start()
121151{
122152   /* allocate bitmaps */
123153   machine().primary_screen->register_screen_bitmap(m_tile_bitmap_bg);
124154   machine().primary_screen->register_screen_bitmap(m_tile_bitmap_fg);
155
156
157   m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(spbactn_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 64, 128);
158   m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(spbactn_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 64, 128);
159
125160}
126161
127162int spbactn_state::draw_video(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, bool alt_sprites)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team