Previous 199869 Revisions Next

r36466 Wednesday 18th March, 2015 at 18:07:10 UTC by Osso
supdrapo.c, suprgolf.c, suprloco.c, suprridr.c: added save state support (nw)
[src/mame/drivers]supdrapo.c suprgolf.c suprloco.c suprridr.c
[src/mame/includes]suprloco.h suprridr.h
[src/mame/video]suprloco.c suprridr.c

trunk/src/mame/drivers/supdrapo.c
r244977r244978
2727
2828  - Reworked inputs to match the standard poker inputs names/layout.
2929  - Hooked the payout switch.
30  - Hooked a watchdog circuitery, that seems intended to reset
30  - Hooked a watchdog circuitry, that seems intended to reset
3131     the game and/or an external device.
3232  - Added machine start & reset.
3333  - All clocks pre defined.
34  - Added ay8910 interfase as a preliminary attempt to analyze the unknown
34  - Added ay8910 interface as a preliminary attempt to analyze the unknown
3535     port writes when these ports are set as input.
3636  - Figured out the following DIP switches:
3737     Auto Bet (No, Yes).
r244977r244978
7272public:
7373   supdrapo_state(const machine_config &mconfig, device_type type, const char *tag)
7474      : driver_device(mconfig, type, tag),
75      m_maincpu(*this, "maincpu"),
76      m_gfxdecode(*this, "gfxdecode"),
77      m_palette(*this, "palette"),
7578      m_col_line(*this, "col_line"),
7679      m_videoram(*this, "videoram"),
77      m_char_bank(*this, "char_bank"),
78      m_maincpu(*this, "maincpu"),
79      m_gfxdecode(*this, "gfxdecode"),
80      m_palette(*this, "palette") { }
80      m_char_bank(*this, "char_bank") { }
8181
82   required_device<cpu_device> m_maincpu;
83   required_device<gfxdecode_device> m_gfxdecode;
84   required_device<palette_device> m_palette;
85   
8286   required_shared_ptr<UINT8> m_col_line;
8387   required_shared_ptr<UINT8> m_videoram;
8488   required_shared_ptr<UINT8> m_char_bank;
89   
8590   UINT8 m_wdog;
86   DECLARE_READ8_MEMBER(sdpoker_rng_r);
91   
92   DECLARE_READ8_MEMBER(rng_r);
8793   DECLARE_WRITE8_MEMBER(wdog8000_w);
8894   DECLARE_WRITE8_MEMBER(debug8004_w);
8995   DECLARE_WRITE8_MEMBER(debug7c00_w);
r244977r244978
9197   DECLARE_WRITE8_MEMBER(payout_w);
9298   DECLARE_WRITE8_MEMBER(ay8910_outputa_w);
9399   DECLARE_WRITE8_MEMBER(ay8910_outputb_w);
100   
94101   virtual void machine_start();
95102   virtual void machine_reset();
96103   virtual void video_start();
97104   DECLARE_PALETTE_INIT(supdrapo);
98   UINT32 screen_update_supdrapo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
99   required_device<cpu_device> m_maincpu;
100   required_device<gfxdecode_device> m_gfxdecode;
101   required_device<palette_device> m_palette;
105   
106   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
102107};
103108
104109
r244977r244978
111116}
112117
113118
114UINT32 supdrapo_state::screen_update_supdrapo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
119UINT32 supdrapo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
115120{
116121   int x, y;
117122   int count;
r244977r244978
171176                            R/W Handlers
172177**********************************************************************/
173178
174READ8_MEMBER(supdrapo_state::sdpoker_rng_r)
179READ8_MEMBER(supdrapo_state::rng_r)
175180{
176181   return machine().rand();
177182}
r244977r244978
251256
252257void supdrapo_state::machine_start()
253258{
259   save_item(NAME(m_wdog));
254260}
255261
256262
r244977r244978
282288   AM_RANGE(0x8005, 0x8005) AM_READ_PORT("SW1")
283289   AM_RANGE(0x8006, 0x8006) AM_READ_PORT("SW2")
284290   AM_RANGE(0x9000, 0x90ff) AM_RAM AM_SHARE("nvram")
285   AM_RANGE(0x9400, 0x9400) AM_READ(sdpoker_rng_r)
291   AM_RANGE(0x9400, 0x9400) AM_READ(rng_r)
286292   AM_RANGE(0x9800, 0x9801) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
287293ADDRESS_MAP_END
288294
r244977r244978
453459   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
454460   MCFG_SCREEN_SIZE(256, 256)
455461   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
456   MCFG_SCREEN_UPDATE_DRIVER(supdrapo_state, screen_update_supdrapo)
462   MCFG_SCREEN_UPDATE_DRIVER(supdrapo_state, screen_update)
457463   MCFG_SCREEN_PALETTE("palette")
458464
459465   MCFG_GFXDECODE_ADD("gfxdecode", "palette", supdrapo)
r244977r244978
600606**********************************************************************/
601607
602608/*    YEAR  NAME       PARENT    MACHINE   INPUT     INIT  ROT     COMPANY                               FULLNAME                   FLAGS... */
603GAME( 1983, supdrapo,  0,        supdrapo, supdrapo, driver_device, 0,    ROT90, "Valadon Automation (Stern Electronics license)", "Super Draw Poker (set 1)", 0 )
604GAME( 1983, supdrapoa, supdrapo, supdrapo, supdrapo, driver_device, 0,    ROT90, "Valadon Automation / Jeutel", "Super Draw Poker (set 2)", 0 )
605GAME( 1983, supdrapob, supdrapo, supdrapo, supdrapo, driver_device, 0,    ROT90, "bootleg", "Super Draw Poker (bootleg)", 0 )
609GAME( 1983, supdrapo,  0,        supdrapo, supdrapo, driver_device, 0,    ROT90, "Valadon Automation (Stern Electronics license)", "Super Draw Poker (set 1)", GAME_SUPPORTS_SAVE )
610GAME( 1983, supdrapoa, supdrapo, supdrapo, supdrapo, driver_device, 0,    ROT90, "Valadon Automation / Jeutel", "Super Draw Poker (set 2)", GAME_SUPPORTS_SAVE )
611GAME( 1983, supdrapob, supdrapo, supdrapo, supdrapo, driver_device, 0,    ROT90, "bootleg", "Super Draw Poker (bootleg)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/suprgolf.c
r244977r244978
3333public:
3434   suprgolf_state(const machine_config &mconfig, device_type type, const char *tag)
3535      : driver_device(mconfig, type, tag),
36      m_videoram(*this, "videoram"),
3736      m_maincpu(*this, "maincpu"),
3837      m_msm(*this, "msm"),
3938      m_gfxdecode(*this, "gfxdecode"),
40      m_palette(*this, "palette") { }
39      m_palette(*this, "palette"),
40      m_videoram(*this, "videoram") { }
4141
42   required_device<cpu_device> m_maincpu;
43   required_device<msm5205_device> m_msm;
44   required_device<gfxdecode_device> m_gfxdecode;
45   required_device<palette_device> m_palette;
46
47   required_shared_ptr<UINT8> m_videoram;
48
4249   tilemap_t *m_tilemap;
43   required_shared_ptr<UINT8> m_videoram;
4450   UINT8 *m_paletteram;
4551   UINT8 *m_bg_vram;
4652   UINT16 *m_bg_fb;
r244977r244978
5460   UINT8 m_palette_switch;
5561   UINT8 m_bg_vreg_test;
5662   UINT8 m_toggle;
57   DECLARE_READ8_MEMBER(suprgolf_videoram_r);
58   DECLARE_WRITE8_MEMBER(suprgolf_videoram_w);
59   DECLARE_READ8_MEMBER(suprgolf_bg_vram_r);
60   DECLARE_WRITE8_MEMBER(suprgolf_bg_vram_w);
61   DECLARE_WRITE8_MEMBER(suprgolf_pen_w);
63   
64   DECLARE_READ8_MEMBER(videoram_r);
65   DECLARE_WRITE8_MEMBER(videoram_w);
66   DECLARE_READ8_MEMBER(bg_vram_r);
67   DECLARE_WRITE8_MEMBER(bg_vram_w);
68   DECLARE_WRITE8_MEMBER(pen_w);
6269   DECLARE_WRITE8_MEMBER(adpcm_data_w);
6370   DECLARE_WRITE8_MEMBER(rom2_bank_select_w);
64   DECLARE_READ8_MEMBER(suprgolf_vregs_r);
65   DECLARE_WRITE8_MEMBER(suprgolf_vregs_w);
71   DECLARE_READ8_MEMBER(vregs_r);
72   DECLARE_WRITE8_MEMBER(vregs_w);
6673   DECLARE_READ8_MEMBER(rom_bank_select_r);
6774   DECLARE_WRITE8_MEMBER(rom_bank_select_w);
6875   DECLARE_READ8_MEMBER(pedal_extra_bits_r);
6976   DECLARE_READ8_MEMBER(p1_r);
7077   DECLARE_READ8_MEMBER(p2_r);
71   DECLARE_WRITE8_MEMBER(suprgolf_writeA);
72   DECLARE_WRITE8_MEMBER(suprgolf_writeB);
78   DECLARE_WRITE8_MEMBER(writeA);
79   DECLARE_WRITE8_MEMBER(writeB);
80   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
81   
82   TILE_GET_INFO_MEMBER(get_tile_info);
83
7384   DECLARE_DRIVER_INIT(suprgolf);
74   TILE_GET_INFO_MEMBER(get_tile_info);
7585    virtual void machine_start();
7686   virtual void machine_reset();
7787   virtual void video_start();
78   UINT32 screen_update_suprgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
79   DECLARE_WRITE_LINE_MEMBER(irqhandler);
80   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
81   required_device<cpu_device> m_maincpu;
82   required_device<msm5205_device> m_msm;
83   required_device<gfxdecode_device> m_gfxdecode;
84   required_device<palette_device> m_palette;
88   
89   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
8590};
8691
8792TILE_GET_INFO_MEMBER(suprgolf_state::get_tile_info)
r244977r244978
104109   m_fg_fb = auto_alloc_array(machine(), UINT16, 0x2000*0x20);
105110
106111   m_tilemap->set_transparent_pen(15);
112   
113   save_item(NAME(m_bg_bank));
114   save_item(NAME(m_vreg_bank));
115   save_item(NAME(m_vreg_pen));
116   save_item(NAME(m_palette_switch));
117   save_item(NAME(m_bg_vreg_test));
118   save_pointer(NAME(m_paletteram), 0x1000);
119   save_pointer(NAME(m_bg_vram), 0x2000*0x20);
120   save_pointer(NAME(m_bg_fb), 0x2000*0x20);
121   save_pointer(NAME(m_fg_fb), 0x2000*0x20);
107122}
108123
109UINT32 suprgolf_state::screen_update_suprgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
124UINT32 suprgolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
110125{
111126   int x,y,count,color;
112127   bitmap.fill(m_palette->black_pen(), cliprect);
r244977r244978
150165   return 0;
151166}
152167
153READ8_MEMBER(suprgolf_state::suprgolf_videoram_r)
168READ8_MEMBER(suprgolf_state::videoram_r)
154169{
155170   if (m_palette_switch)
156171      return m_paletteram[offset];
r244977r244978
158173      return m_videoram[offset];
159174}
160175
161WRITE8_MEMBER(suprgolf_state::suprgolf_videoram_w)
176WRITE8_MEMBER(suprgolf_state::videoram_w)
162177{
163178   if(m_palette_switch)
164179   {
r244977r244978
180195   }
181196}
182197
183READ8_MEMBER(suprgolf_state::suprgolf_vregs_r)
198READ8_MEMBER(suprgolf_state::vregs_r)
184199{
185200   return m_vreg_bank;
186201}
187202
188WRITE8_MEMBER(suprgolf_state::suprgolf_vregs_w)
203WRITE8_MEMBER(suprgolf_state::vregs_w)
189204{
190205   //printf("%02x\n",data);
191206
r244977r244978
200215   //  printf("Video regs with data %02x activated\n",data);
201216}
202217
203READ8_MEMBER(suprgolf_state::suprgolf_bg_vram_r)
218READ8_MEMBER(suprgolf_state::bg_vram_r)
204219{
205220   return m_bg_vram[offset+m_bg_bank*0x2000];
206221}
207222
208WRITE8_MEMBER(suprgolf_state::suprgolf_bg_vram_w)
223WRITE8_MEMBER(suprgolf_state::bg_vram_w)
209224{
210225   UINT8 hi_nibble,lo_nibble;
211226   UINT8 hi_dirty_dot,lo_dirty_dot; // helpers
r244977r244978
254269{
255270    membank("bank1")->configure_entries(0, 16, memregion("user2")->base(), 0x4000);
256271    membank("bank2")->configure_entries(0, 64, memregion("user1")->base(), 0x4000);
272   
273   save_item(NAME(m_rom_bank));
274   save_item(NAME(m_msm5205next));
275   save_item(NAME(m_msm_nmi_mask));
276   save_item(NAME(m_toggle));
257277}
258278
259WRITE8_MEMBER(suprgolf_state::suprgolf_pen_w)
279WRITE8_MEMBER(suprgolf_state::pen_w)
260280{
261281   m_vreg_pen = data;
262282}
r244977r244978
317337   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
318338   AM_RANGE(0x4000, 0x4000) AM_WRITE(rom2_bank_select_w )
319339   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
320   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(suprgolf_bg_vram_r, suprgolf_bg_vram_w ) // banked background vram
321   AM_RANGE(0xe000, 0xefff) AM_READWRITE(suprgolf_videoram_r, suprgolf_videoram_w ) AM_SHARE("videoram") //foreground vram + paletteram
322   AM_RANGE(0xf000, 0xf000) AM_WRITE(suprgolf_pen_w )
340   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(bg_vram_r, bg_vram_w ) // banked background vram
341   AM_RANGE(0xe000, 0xefff) AM_READWRITE(videoram_r, videoram_w ) AM_SHARE("videoram") //foreground vram + paletteram
342   AM_RANGE(0xf000, 0xf000) AM_WRITE(pen_w )
323343   AM_RANGE(0xf800, 0xffff) AM_RAM
324344ADDRESS_MAP_END
325345
r244977r244978
416436   PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW2:8" )
417437INPUT_PORTS_END
418438
419WRITE8_MEMBER(suprgolf_state::suprgolf_writeA)
439WRITE8_MEMBER(suprgolf_state::writeA)
420440{
421441   osd_printf_debug("ymwA\n");
422442}
423443
424WRITE8_MEMBER(suprgolf_state::suprgolf_writeB)
444WRITE8_MEMBER(suprgolf_state::writeB)
425445{
426446   osd_printf_debug("ymwA\n");
427447}
428448
429WRITE_LINE_MEMBER(suprgolf_state::irqhandler)
430{
431   //m_maincpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
432}
433
434449WRITE_LINE_MEMBER(suprgolf_state::adpcm_int)
435450{
436451   m_msm->reset_w(0);
r244977r244978
485500   MCFG_I8255_IN_PORTA_CB(IOPORT("SYSTEM"))
486501   MCFG_I8255_IN_PORTB_CB(READ8(suprgolf_state, rom_bank_select_r))
487502   MCFG_I8255_OUT_PORTB_CB(WRITE8(suprgolf_state, rom_bank_select_w))
488   MCFG_I8255_IN_PORTC_CB(READ8(suprgolf_state, suprgolf_vregs_r))
489   MCFG_I8255_OUT_PORTC_CB(WRITE8(suprgolf_state, suprgolf_vregs_w))
503   MCFG_I8255_IN_PORTC_CB(READ8(suprgolf_state, vregs_r))
504   MCFG_I8255_OUT_PORTC_CB(WRITE8(suprgolf_state, vregs_w))
490505
491506   /* video hardware */
492507   MCFG_SCREEN_ADD("screen", RASTER)
r244977r244978
494509   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
495510   MCFG_SCREEN_SIZE(256, 256)
496511   MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
497   MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update_suprgolf)
512   MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update)
498513   MCFG_SCREEN_PALETTE("palette")
499514
500515   MCFG_GFXDECODE_ADD("gfxdecode", "palette", suprgolf)
r244977r244978
504519   MCFG_SPEAKER_STANDARD_MONO("mono")
505520
506521   MCFG_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK/4) /* guess */
507   MCFG_YM2203_IRQ_HANDLER(WRITELINE(suprgolf_state, irqhandler))
522   //MCFG_YM2203_IRQ_HANDLER(INPUTLINE("maincpu", INPUT_LINE_NMI))
508523   MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW0"))
509524   MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW1"))
510   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(suprgolf_state, suprgolf_writeA))
511   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(suprgolf_state, suprgolf_writeB))
525   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(suprgolf_state, writeA))
526   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(suprgolf_state, writeB))
512527   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
513528
514529   MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* guess */
r244977r244978
621636   ROM[0x6d72+(0x4000*3)-0x4000] = 0x20; //patch ROM check
622637}
623638
624GAME( 1989, suprgolf,  0,         suprgolf,  suprgolf, suprgolf_state,  suprgolf, ROT0, "Nasco", "Super Crowns Golf (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
625GAME( 1989, albatross, suprgolf,  suprgolf,  suprgolf, driver_device,  0,        ROT0, "Nasco", "Albatross (US Prototype?)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
639GAME( 1989, suprgolf,  0,         suprgolf,  suprgolf, suprgolf_state,  suprgolf, ROT0, "Nasco", "Super Crowns Golf (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
640GAME( 1989, albatross, suprgolf,  suprgolf,  suprgolf, driver_device,  0,        ROT0, "Nasco", "Albatross (US Prototype?)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL| GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/suprloco.c
r244977r244978
55driver by Zsolt Vasvari
66
77TODO:
8- Bit 5 in suprloco_control_w is pulsed when loco turns "super". This is supposed
8- Bit 5 in control_w is pulsed when loco turns "super". This is supposed
99  to make red parts of sprites blink to purple, it's not clear how this is
1010  implemented in hardware, there's a hack to support it.
1111
r244977r244978
2525#include "sound/sn76496.h"
2626#include "includes/suprloco.h"
2727
28WRITE8_MEMBER(suprloco_state::suprloco_soundport_w)
28WRITE8_MEMBER(suprloco_state::soundport_w)
2929{
3030   soundlatch_byte_w(space, 0, data);
3131   m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
r244977r244978
4242   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("P2")
4343   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1")
4444   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2")
45   AM_RANGE(0xe800, 0xe800) AM_WRITE(suprloco_soundport_w)
46   AM_RANGE(0xe801, 0xe801) AM_READWRITE(suprloco_control_r, suprloco_control_w)
47   AM_RANGE(0xf000, 0xf6ff) AM_RAM_WRITE(suprloco_videoram_w) AM_SHARE("videoram")
45   AM_RANGE(0xe800, 0xe800) AM_WRITE(soundport_w)
46   AM_RANGE(0xe801, 0xe801) AM_READWRITE(control_r, control_w)
47   AM_RANGE(0xf000, 0xf6ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
4848   AM_RANGE(0xf700, 0xf7df) AM_RAM /* unused */
49   AM_RANGE(0xf7e0, 0xf7ff) AM_RAM_WRITE(suprloco_scrollram_w) AM_SHARE("scrollram")
49   AM_RANGE(0xf7e0, 0xf7ff) AM_RAM_WRITE(scrollram_w) AM_SHARE("scrollram")
5050   AM_RANGE(0xf800, 0xffff) AM_RAM
5151ADDRESS_MAP_END
5252
r244977r244978
175175   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000))
176176   MCFG_SCREEN_SIZE(32*8, 32*8)
177177   MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 28*8-1)
178   MCFG_SCREEN_UPDATE_DRIVER(suprloco_state, screen_update_suprloco)
178   MCFG_SCREEN_UPDATE_DRIVER(suprloco_state, screen_update)
179179   MCFG_SCREEN_PALETTE("palette")
180180
181181   MCFG_GFXDECODE_ADD("gfxdecode", "palette", suprloco)
r244977r244978
297297
298298
299299
300GAME( 1982, suprloco,         0, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive (Rev.A)", 0 )
301GAME( 1982, suprlocoo, suprloco, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive", 0 )
300GAME( 1982, suprloco,         0, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive (Rev.A)", GAME_SUPPORTS_SAVE )
301GAME( 1982, suprlocoo, suprloco, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/suprridr.c
r244977r244978
8989#include "sound/ay8910.h"
9090
9191
92void suprridr_state::machine_start()
93{
94   save_item(NAME(m_nmi_enable));
95   save_item(NAME(m_sound_data));
96}
97
9298/*************************************
9399 *
94100 *  Interrupt generation
r244977r244978
164170static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, suprridr_state )
165171   AM_RANGE(0x0000, 0x7fff) AM_ROM
166172   AM_RANGE(0x8000, 0x87ff) AM_RAM
167   AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(suprridr_bgram_w) AM_SHARE("bgram")
168   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(suprridr_fgram_w) AM_SHARE("fgram")
173   AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram")
174   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
169175   AM_RANGE(0x9800, 0x983f) AM_RAM
170176   AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram")
171177   AM_RANGE(0x9880, 0x9bff) AM_RAM
r244977r244978
173179   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
174180   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_WRITE(nmi_enable_w)
175181   AM_RANGE(0xb002, 0xb003) AM_WRITE(coin_lock_w)
176   AM_RANGE(0xb006, 0xb006) AM_WRITE(suprridr_flipx_w)
177   AM_RANGE(0xb007, 0xb007) AM_WRITE(suprridr_flipy_w)
182   AM_RANGE(0xb006, 0xb006) AM_WRITE(flipx_w)
183   AM_RANGE(0xb007, 0xb007) AM_WRITE(flipy_w)
178184   AM_RANGE(0xb800, 0xb800) AM_WRITE(sound_data_w)
179   AM_RANGE(0xc801, 0xc801) AM_WRITE(suprridr_fgdisable_w)
180   AM_RANGE(0xc802, 0xc802) AM_WRITE(suprridr_fgscrolly_w)
181   AM_RANGE(0xc804, 0xc804) AM_WRITE(suprridr_bgscrolly_w)
185   AM_RANGE(0xc801, 0xc801) AM_WRITE(fgdisable_w)
186   AM_RANGE(0xc802, 0xc802) AM_WRITE(fgscrolly_w)
187   AM_RANGE(0xc804, 0xc804) AM_WRITE(bgscrolly_w)
182188   AM_RANGE(0xc000, 0xefff) AM_ROM
183189ADDRESS_MAP_END
184190
r244977r244978
223229#define SUPRRIDR_P1_CONTROL_PORT_TAG    ("CONTP1")
224230#define SUPRRIDR_P2_CONTROL_PORT_TAG    ("CONTP2")
225231
226CUSTOM_INPUT_MEMBER(suprridr_state::suprridr_control_r)
232CUSTOM_INPUT_MEMBER(suprridr_state::control_r)
227233{
228234   UINT32 ret;
229235
230236   /* screen flip multiplexes controls */
231   if (suprridr_is_screen_flipped())
237   if (is_screen_flipped())
232238      ret = ioport(SUPRRIDR_P2_CONTROL_PORT_TAG)->read();
233239   else
234240      ret = ioport(SUPRRIDR_P1_CONTROL_PORT_TAG)->read();
r244977r244978
239245
240246static INPUT_PORTS_START( suprridr )
241247   PORT_START("INPUTS")
242   PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, suprridr_state,suprridr_control_r, NULL)
248   PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, suprridr_state, control_r, NULL)
243249
244250   PORT_START("SYSTEM")
245251   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
r244977r244978
353359   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
354360   MCFG_SCREEN_SIZE(32*8, 32*8)
355361   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
356   MCFG_SCREEN_UPDATE_DRIVER(suprridr_state, screen_update_suprridr)
362   MCFG_SCREEN_UPDATE_DRIVER(suprridr_state, screen_update)
357363   MCFG_SCREEN_PALETTE("palette")
358364
359365   MCFG_GFXDECODE_ADD("gfxdecode", "palette", suprridr)
r244977r244978
423429 *
424430 *************************************/
425431
426GAME( 1983, suprridr, 0, suprridr, suprridr, driver_device, 0, ROT90, "Taito Corporation (Venture Line license)", "Super Rider", GAME_IMPERFECT_SOUND )
432GAME( 1983, suprridr, 0, suprridr, suprridr, driver_device, 0, ROT90, "Taito Corporation (Venture Line license)", "Super Rider", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/suprloco.h
r244977r244978
33public:
44   suprloco_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_maincpu(*this, "maincpu"),
7      m_audiocpu(*this, "audiocpu"),
8      m_gfxdecode(*this, "gfxdecode"),
69      m_spriteram(*this, "spriteram"),
710      m_videoram(*this, "videoram"),
8      m_scrollram(*this, "scrollram"),
9      m_maincpu(*this, "maincpu"),
10      m_audiocpu(*this, "audiocpu"),
11      m_gfxdecode(*this, "gfxdecode") { }
11      m_scrollram(*this, "scrollram") { }
12     
13   required_device<cpu_device> m_maincpu;
14   required_device<cpu_device> m_audiocpu;
15   required_device<gfxdecode_device> m_gfxdecode;
1216
1317   required_shared_ptr<UINT8> m_spriteram;
1418   required_shared_ptr<UINT8> m_videoram;
1519   required_shared_ptr<UINT8> m_scrollram;
20   
1621   tilemap_t *m_bg_tilemap;
1722   int m_control;
1823
19   DECLARE_WRITE8_MEMBER(suprloco_soundport_w);
20   DECLARE_WRITE8_MEMBER(suprloco_videoram_w);
21   DECLARE_WRITE8_MEMBER(suprloco_scrollram_w);
22   DECLARE_WRITE8_MEMBER(suprloco_control_w);
23   DECLARE_READ8_MEMBER(suprloco_control_r);
24   DECLARE_DRIVER_INIT(suprloco);
24   DECLARE_WRITE8_MEMBER(soundport_w);
25   DECLARE_WRITE8_MEMBER(videoram_w);
26   DECLARE_WRITE8_MEMBER(scrollram_w);
27   DECLARE_WRITE8_MEMBER(control_w);
28   DECLARE_READ8_MEMBER(control_r);
29   
2530   TILE_GET_INFO_MEMBER(get_tile_info);
31   
2632   virtual void video_start();
2733   DECLARE_PALETTE_INIT(suprloco);
28   UINT32 screen_update_suprloco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
34   DECLARE_DRIVER_INIT(suprloco);
35   
36   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
2937   inline void draw_pixel(bitmap_ind16 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip);
3038   void draw_sprite(bitmap_ind16 &bitmap,const rectangle &cliprect,int spr_number);
3139   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
32   required_device<cpu_device> m_maincpu;
33   required_device<cpu_device> m_audiocpu;
34   required_device<gfxdecode_device> m_gfxdecode;
3540};
trunk/src/mame/includes/suprridr.h
r244977r244978
1111public:
1212   suprridr_state(const machine_config &mconfig, device_type type, const char *tag)
1313      : driver_device(mconfig, type, tag),
14      m_fgram(*this, "fgram"),
15      m_bgram(*this, "bgram"),
16      m_spriteram(*this, "spriteram"),
1714      m_maincpu(*this, "maincpu"),
1815      m_audiocpu(*this, "audiocpu"),
1916      m_gfxdecode(*this, "gfxdecode"),
20      m_palette(*this, "palette")  { }
17      m_palette(*this, "palette"),
18      m_fgram(*this, "fgram"),
19      m_bgram(*this, "bgram"),
20      m_spriteram(*this, "spriteram") { }
2121
22   required_device<cpu_device> m_maincpu;
23   required_device<cpu_device> m_audiocpu;
24   required_device<gfxdecode_device> m_gfxdecode;
25   required_device<palette_device> m_palette;
26
27   required_shared_ptr<UINT8> m_fgram;
28   required_shared_ptr<UINT8> m_bgram;
29   required_shared_ptr<UINT8> m_spriteram;
30
2231   UINT8 m_nmi_enable;
2332   UINT8 m_sound_data;
24   required_shared_ptr<UINT8> m_fgram;
25   required_shared_ptr<UINT8> m_bgram;
2633   tilemap_t *m_fg_tilemap;
2734   tilemap_t *m_bg_tilemap;
2835   tilemap_t *m_bg_tilemap_noscroll;
2936   UINT8 m_flipx;
3037   UINT8 m_flipy;
31   required_shared_ptr<UINT8> m_spriteram;
38   
3239   DECLARE_WRITE8_MEMBER(nmi_enable_w);
3340   DECLARE_WRITE8_MEMBER(sound_data_w);
3441   DECLARE_WRITE8_MEMBER(sound_irq_ack_w);
3542   DECLARE_WRITE8_MEMBER(coin_lock_w);
36   DECLARE_WRITE8_MEMBER(suprridr_flipx_w);
37   DECLARE_WRITE8_MEMBER(suprridr_flipy_w);
38   DECLARE_WRITE8_MEMBER(suprridr_fgdisable_w);
39   DECLARE_WRITE8_MEMBER(suprridr_fgscrolly_w);
40   DECLARE_WRITE8_MEMBER(suprridr_bgscrolly_w);
41   DECLARE_WRITE8_MEMBER(suprridr_bgram_w);
42   DECLARE_WRITE8_MEMBER(suprridr_fgram_w);
43   DECLARE_CUSTOM_INPUT_MEMBER(suprridr_control_r);
43   DECLARE_WRITE8_MEMBER(flipx_w);
44   DECLARE_WRITE8_MEMBER(flipy_w);
45   DECLARE_WRITE8_MEMBER(fgdisable_w);
46   DECLARE_WRITE8_MEMBER(fgscrolly_w);
47   DECLARE_WRITE8_MEMBER(bgscrolly_w);
48   DECLARE_WRITE8_MEMBER(bgram_w);
49   DECLARE_WRITE8_MEMBER(fgram_w);
4450   DECLARE_READ8_MEMBER(sound_data_r);
51   
52   DECLARE_CUSTOM_INPUT_MEMBER(control_r);
53   
4554   TILE_GET_INFO_MEMBER(get_tile_info);
4655   TILE_GET_INFO_MEMBER(get_tile_info2);
56   
57   INTERRUPT_GEN_MEMBER(main_nmi_gen);
58   TIMER_CALLBACK_MEMBER(delayed_sound_w);
59   
60   virtual void machine_start();
4761   virtual void video_start();
4862   DECLARE_PALETTE_INIT(suprridr);
49   UINT32 screen_update_suprridr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
50   INTERRUPT_GEN_MEMBER(main_nmi_gen);
51   TIMER_CALLBACK_MEMBER(delayed_sound_w);
52   int suprridr_is_screen_flipped();
53   required_device<cpu_device> m_maincpu;
54   required_device<cpu_device> m_audiocpu;
55   required_device<gfxdecode_device> m_gfxdecode;
56   required_device<palette_device> m_palette;
63   
64   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
65   int is_screen_flipped();
5766};
trunk/src/mame/video/suprloco.c
r244977r244978
11/***************************************************************************
22
3  video.c
3  suprloco.c
44
55  Functions to emulate the video hardware of the machine.
66
r244977r244978
9898   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(suprloco_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
9999
100100   m_bg_tilemap->set_scroll_rows(32);
101   
102   save_item(NAME(m_control));
101103}
102104
103105
r244977r244978
108110
109111***************************************************************************/
110112
111WRITE8_MEMBER(suprloco_state::suprloco_videoram_w)
113WRITE8_MEMBER(suprloco_state::videoram_w)
112114{
113115   m_videoram[offset] = data;
114116   m_bg_tilemap->mark_tile_dirty(offset/2);
115117}
116118
117WRITE8_MEMBER(suprloco_state::suprloco_scrollram_w)
119WRITE8_MEMBER(suprloco_state::scrollram_w)
118120{
119121   int adj = flip_screen() ? -8 : 8;
120122
r244977r244978
122124   m_bg_tilemap->set_scrollx(offset, data - adj);
123125}
124126
125WRITE8_MEMBER(suprloco_state::suprloco_control_w)
127WRITE8_MEMBER(suprloco_state::control_w)
126128{
127129   /* There is probably a palette select in here */
128130
r244977r244978
148150}
149151
150152
151READ8_MEMBER(suprloco_state::suprloco_control_r)
153READ8_MEMBER(suprloco_state::control_r)
152154{
153155   return m_control;
154156}
r244977r244978
256258   }
257259}
258260
259UINT32 suprloco_state::screen_update_suprloco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
261UINT32 suprloco_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
260262{
261263   m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
262264   draw_sprites(bitmap,cliprect);
trunk/src/mame/video/suprridr.c
r244977r244978
4444   m_bg_tilemap_noscroll = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(suprridr_state::get_tile_info),this),  TILEMAP_SCAN_ROWS,       8,8, 32,32);
4545
4646   m_fg_tilemap->set_transparent_pen(0);
47   
48   save_item(NAME(m_flipx));
49   save_item(NAME(m_flipy));
4750}
4851
4952
r244977r244978
9194 *
9295 *************************************/
9396
94WRITE8_MEMBER(suprridr_state::suprridr_flipx_w)
97WRITE8_MEMBER(suprridr_state::flipx_w)
9598{
9699   m_flipx = data & 1;
97100   machine().tilemap().set_flip_all((m_flipx ? TILEMAP_FLIPX : 0) | (m_flipy ? TILEMAP_FLIPY : 0));
98101}
99102
100103
101WRITE8_MEMBER(suprridr_state::suprridr_flipy_w)
104WRITE8_MEMBER(suprridr_state::flipy_w)
102105{
103106   m_flipy = data & 1;
104107   machine().tilemap().set_flip_all((m_flipx ? TILEMAP_FLIPX : 0) | (m_flipy ? TILEMAP_FLIPY : 0));
105108}
106109
107110
108WRITE8_MEMBER(suprridr_state::suprridr_fgdisable_w)
111WRITE8_MEMBER(suprridr_state::fgdisable_w)
109112{
110113   m_fg_tilemap->enable(~data & 1);
111114}
112115
113116
114WRITE8_MEMBER(suprridr_state::suprridr_fgscrolly_w)
117WRITE8_MEMBER(suprridr_state::fgscrolly_w)
115118{
116119   m_fg_tilemap->set_scrolly(0, data);
117120}
118121
119122
120WRITE8_MEMBER(suprridr_state::suprridr_bgscrolly_w)
123WRITE8_MEMBER(suprridr_state::bgscrolly_w)
121124{
122125   m_bg_tilemap->set_scrolly(0, data);
123126}
124127
125128
126int suprridr_state::suprridr_is_screen_flipped()
129int suprridr_state::is_screen_flipped()
127130{
128131   return m_flipx;  /* or is it flipy? */
129132}
r244977r244978
136139 *
137140 *************************************/
138141
139WRITE8_MEMBER(suprridr_state::suprridr_bgram_w)
142WRITE8_MEMBER(suprridr_state::bgram_w)
140143{
141144   m_bgram[offset] = data;
142145   m_bg_tilemap->mark_tile_dirty(offset);
r244977r244978
144147}
145148
146149
147WRITE8_MEMBER(suprridr_state::suprridr_fgram_w)
150WRITE8_MEMBER(suprridr_state::fgram_w)
148151{
149152   m_fgram[offset] = data;
150153   m_fg_tilemap->mark_tile_dirty(offset);
r244977r244978
158161 *
159162 *************************************/
160163
161UINT32 suprridr_state::screen_update_suprridr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
164UINT32 suprridr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
162165{
163   UINT8 *spriteram = m_spriteram;
164166   rectangle subclip;
165   int i;
166167   const rectangle &visarea = screen.visible_area();
167168
168169   /* render left 4 columns with no scroll */
r244977r244978
188189   m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
189190
190191   /* draw the sprites */
191   for (i = 0; i < 48; i++)
192   for (int i = 0; i < 48; i++)
192193   {
193      int code = (spriteram[i*4+1] & 0x3f) | ((spriteram[i*4+2] >> 1) & 0x40);
194      int color = spriteram[i*4+2] & 0x7f;
195      int fx = spriteram[i*4+1] & 0x40;
196      int fy = spriteram[i*4+1] & 0x80;
197      int x = spriteram[i*4+3];
198      int y = 240 - spriteram[i*4+0];
194      int code = (m_spriteram[i*4+1] & 0x3f) | ((m_spriteram[i*4+2] >> 1) & 0x40);
195      int color = m_spriteram[i*4+2] & 0x7f;
196      int fx = m_spriteram[i*4+1] & 0x40;
197      int fy = m_spriteram[i*4+1] & 0x80;
198      int x = m_spriteram[i*4+3];
199      int y = 240 - m_spriteram[i*4+0];
199200
200201      if (m_flipx)
201202      {


Previous 199869 Revisions Next


© 1997-2024 The MAME Team