Previous 199869 Revisions Next

r37197 Wednesday 15th April, 2015 at 15:52:46 UTC by Osso
headonb.c, shangha3.c, shanghai.c, truco.c: added / enabled save state support (nw)
[src/mame/drivers]headonb.c shangha3.c shanghai.c truco.c
[src/mame/includes]shangha3.h truco.h
[src/mame/video]shangha3.c truco.c

trunk/src/mame/drivers/headonb.c
r245708r245709
3737public:
3838   headonb_state(const machine_config &mconfig, device_type type, const char *tag)
3939      : driver_device(mconfig, type, tag),
40      m_video_ram(*this, "video_ram"),
4140      m_maincpu(*this, "maincpu"),
42      m_gfxdecode(*this, "gfxdecode") { }
41      m_gfxdecode(*this, "gfxdecode"),
42      m_video_ram(*this, "video_ram") { }
4343
44   required_device<cpu_device> m_maincpu;
45   required_device<gfxdecode_device> m_gfxdecode;
46
4447   required_shared_ptr<UINT8> m_video_ram;
4548
4649   tilemap_t *m_tilemap;
4750
48   DECLARE_WRITE8_MEMBER(headonb_video_ram_w);
51   DECLARE_WRITE8_MEMBER(video_ram_w);
4952
5053   virtual void video_start();
51   UINT32 screen_update_headonb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
52   TILE_GET_INFO_MEMBER(get_headonb_tile_info);
53   required_device<cpu_device> m_maincpu;
54   required_device<gfxdecode_device> m_gfxdecode;
54   
55   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
56   
57   TILE_GET_INFO_MEMBER(get_tile_info);
5558};
5659
5760
r245708r245709
6164
6265***************************************************************************/
6366
64TILE_GET_INFO_MEMBER(headonb_state::get_headonb_tile_info)
67TILE_GET_INFO_MEMBER(headonb_state::get_tile_info)
6568{
6669   UINT8 code = m_video_ram[tile_index];
6770   SET_TILE_INFO_MEMBER(0, code, 0, 0);
r245708r245709
6972
7073void headonb_state::video_start()
7174{
72   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(headonb_state::get_headonb_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
75   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(headonb_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
7376}
7477
75UINT32 headonb_state::screen_update_headonb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
78UINT32 headonb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
7679{
7780   m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
7881   return 0;
r245708r245709
8588
8689***************************************************************************/
8790
88WRITE8_MEMBER(headonb_state::headonb_video_ram_w)
91WRITE8_MEMBER(headonb_state::video_ram_w)
8992{
9093   m_video_ram[offset] = data;
9194   m_tilemap->mark_tile_dirty(offset);
r245708r245709
9396
9497static ADDRESS_MAP_START( headonb_map, AS_PROGRAM, 8, headonb_state )
9598   AM_RANGE(0x0000, 0x3fff) AM_ROM AM_MIRROR(0x4000)
96   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(headonb_video_ram_w) AM_SHARE("video_ram")
99   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram")
97100   AM_RANGE(0xff00, 0xffff) AM_RAM
98101ADDRESS_MAP_END
99102
r245708r245709
138141
139142***************************************************************************/
140143
141static const gfx_layout headonb_charlayout =
144static const gfx_layout charlayout =
142145{
143146   8,8,
144147   RGN_FRAC(1,1),
r245708r245709
150153};
151154
152155static GFXDECODE_START( headonb )
153   GFXDECODE_ENTRY( "gfx1", 0, headonb_charlayout, 0, 1 )
156   GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
154157GFXDECODE_END
155158
156159static MACHINE_CONFIG_START( headonb, headonb_state )
r245708r245709
167170   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
168171   MCFG_SCREEN_SIZE(32*8, 32*8)
169172   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
170   MCFG_SCREEN_UPDATE_DRIVER(headonb_state, screen_update_headonb)
173   MCFG_SCREEN_UPDATE_DRIVER(headonb_state, screen_update)
171174   MCFG_SCREEN_PALETTE("palette")
172175
173176   MCFG_GFXDECODE_ADD("gfxdecode", "palette", headonb)
r245708r245709
201204ROM_END
202205
203206
204GAME( 1979, headonb, headon, headonb, headonb, driver_device, 0, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", GAME_NO_SOUND )
207GAME( 1979, headonb, headon, headonb, headonb, driver_device, 0, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/shangha3.c
r245708r245709
6767   logerror("PC %04x: write %02x to 20004e\n",space.device().safe_pc(),data);
6868}
6969
70
71
7270WRITE16_MEMBER(shangha3_state::shangha3_coinctrl_w)
7371{
7472   if (ACCESSING_BITS_8_15)
r245708r245709
118116   }
119117}
120118
121WRITE16_MEMBER(shangha3_state::shangha3_irq_ack_w)
119WRITE16_MEMBER(shangha3_state::irq_ack_w)
122120{
123121   m_maincpu->set_input_line(4, CLEAR_LINE);
124122}
r245708r245709
128126   AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
129127   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
130128   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
131   AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w)
132   AM_RANGE(0x20000a, 0x20000b) AM_WRITE(shangha3_irq_ack_w)
129   AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w)
130   AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w)
133131   AM_RANGE(0x20000c, 0x20000d) AM_WRITE(shangha3_coinctrl_w)
134132   AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff)
135133   AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("aysnd", ay8910_device, data_w, 0x00ff)
r245708r245709
137135   AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w)
138136   AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
139137   AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
140   AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
141   AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
138   AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
139   AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
142140ADDRESS_MAP_END
143141
144142static ADDRESS_MAP_START( heberpop_map, AS_PROGRAM, 16, shangha3_state )
r245708r245709
147145   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
148146   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
149147   AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSW")
150   AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w)
151   AM_RANGE(0x20000a, 0x20000b) AM_WRITE(shangha3_irq_ack_w)
148   AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w)
149   AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w)
152150   AM_RANGE(0x20000c, 0x20000d) AM_WRITE(heberpop_coinctrl_w)
153151   AM_RANGE(0x20000e, 0x20000f) AM_WRITE(heberpop_sound_command_w)
154152   AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
155   AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
156   AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
153   AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
154   AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
157155   AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0)
158156ADDRESS_MAP_END
159157
r245708r245709
162160   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("INPUTS")
163161   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM") AM_WRITENOP // w -> unknown purpose
164162   AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
165   AM_RANGE(0x100008, 0x100009) AM_WRITE(shangha3_blitter_go_w)
166   AM_RANGE(0x10000a, 0x10000b) AM_READNOP AM_WRITE(shangha3_irq_ack_w) // r -> unknown purpose (value doesn't matter, left-over?)
163   AM_RANGE(0x100008, 0x100009) AM_WRITE(blitter_go_w)
164   AM_RANGE(0x10000a, 0x10000b) AM_READNOP AM_WRITE(irq_ack_w) // r -> unknown purpose (value doesn't matter, left-over?)
167165   AM_RANGE(0x10000c, 0x10000d) AM_WRITE(blocken_coinctrl_w)
168166   AM_RANGE(0x10000e, 0x10000f) AM_WRITE(heberpop_sound_command_w)
169167   AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
170168   AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
171   AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
172   AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
169   AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
170   AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
173171   AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0)
174172ADDRESS_MAP_END
175173
r245708r245709
451449GFXDECODE_END
452450
453451
454WRITE_LINE_MEMBER(shangha3_state::irqhandler)
455{
456   m_audiocpu->set_input_line(INPUT_LINE_NMI, state);
457}
458
459
460452static MACHINE_CONFIG_START( shangha3, shangha3_state )
461453
462454   /* basic machine hardware */
r245708r245709
472464//  MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
473465   MCFG_SCREEN_RAW_PARAMS(XTAL_48MHz/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */
474466
475   MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
467   MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update)
476468   MCFG_SCREEN_PALETTE("palette")
477469
478470   MCFG_GFXDECODE_ADD("gfxdecode", "palette", shangha3)
r245708r245709
513505//  MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
514506   MCFG_SCREEN_RAW_PARAMS(XTAL_48MHz/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */
515507
516   MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
508   MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update)
517509   MCFG_SCREEN_PALETTE("palette")
518510
519511   MCFG_GFXDECODE_ADD("gfxdecode", "palette", shangha3)
r245708r245709
526518   MCFG_SPEAKER_STANDARD_MONO("mono")
527519
528520   MCFG_SOUND_ADD("ymsnd", YM3438, XTAL_48MHz/6) /* 8 MHz? */
529   MCFG_YM2612_IRQ_HANDLER(WRITELINE(shangha3_state,irqhandler))
521   MCFG_YM2612_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
530522   MCFG_SOUND_ROUTE(0, "mono", 0.40)
531523   MCFG_SOUND_ROUTE(1, "mono", 0.40)
532524
r245708r245709
554546//  MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
555547   MCFG_SCREEN_RAW_PARAMS(XTAL_48MHz/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */
556548
557   MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
549   MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update)
558550   MCFG_SCREEN_PALETTE("palette")
559551
560552   MCFG_GFXDECODE_ADD("gfxdecode", "palette", shangha3)
r245708r245709
567559   MCFG_SPEAKER_STANDARD_MONO("mono")
568560
569561   MCFG_SOUND_ADD("ymsnd", YM3438, XTAL_48MHz/6) /* 8 MHz? */
570   MCFG_YM2612_IRQ_HANDLER(WRITELINE(shangha3_state,irqhandler))
562   MCFG_YM2612_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
571563   MCFG_SOUND_ROUTE(0, "mono", 0.40)
572564   MCFG_SOUND_ROUTE(1, "mono", 0.40)
573565
r245708r245709
723715DRIVER_INIT_MEMBER(shangha3_state,shangha3)
724716{
725717   m_do_shadows = 1;
718   
719   save_item(NAME(m_prot_count));
726720}
727721
728722DRIVER_INIT_MEMBER(shangha3_state,heberpop)
r245708r245709
730724   m_do_shadows = 0;
731725}
732726
733GAME( 1993, shangha3,  0,        shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (World)", 0 )
734GAME( 1993, shangha3u, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (US)", 0 )
735GAME( 1993, shangha3j, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (Japan)", 0 )
736GAME( 1994, heberpop,  0,        heberpop, heberpop, shangha3_state, heberpop, ROT0, "Sunsoft / Atlus", "Hebereke no Popoon (Japan)", 0 )
737GAME( 1994, blocken,   0,        blocken,  blocken,  shangha3_state, heberpop, ROT0, "Visco / KID", "Blocken (Japan)", GAME_IMPERFECT_GRAPHICS )
727GAME( 1993, shangha3,  0,        shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (World)", GAME_SUPPORTS_SAVE )
728GAME( 1993, shangha3u, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (US)", GAME_SUPPORTS_SAVE )
729GAME( 1993, shangha3j, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (Japan)", GAME_SUPPORTS_SAVE )
730GAME( 1994, heberpop,  0,        heberpop, heberpop, shangha3_state, heberpop, ROT0, "Sunsoft / Atlus", "Hebereke no Popoon (Japan)", GAME_SUPPORTS_SAVE )
731GAME( 1994, blocken,   0,        blocken,  blocken,  shangha3_state, heberpop, ROT0, "Visco / KID", "Blocken (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/shanghai.c
r245708r245709
1414* kothello
1515
1616Notes: If you use the key labeled as 'Service Coin' you can start the game
17with a single 'coin' no matter the Coingae Setting, but the credit is not
17with a single 'coin' no matter the Coinage Setting, but the credit is not
1818displayed.
1919
2020***************************************************************************/
r245708r245709
3333      m_maincpu(*this, "maincpu"),
3434      m_hd63484(*this, "hd63484") { }
3535
36   required_device<cpu_device> m_maincpu;
37   required_device<hd63484_device> m_hd63484;
38
3639   DECLARE_WRITE16_MEMBER(shanghai_coin_w);
3740   DECLARE_READ16_MEMBER(kothello_hd63484_status_r);
41
3842   virtual void video_start();
3943   DECLARE_PALETTE_INIT(shanghai);
40   UINT32 screen_update_shanghai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
41   INTERRUPT_GEN_MEMBER(shanghai_interrupt);
42   required_device<cpu_device> m_maincpu;
43   required_device<hd63484_device> m_hd63484;
44
45   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
46   
47   INTERRUPT_GEN_MEMBER(interrupt);
4448};
4549
4650
r245708r245709
7882{
7983}
8084
81UINT32 shanghai_state::screen_update_shanghai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
85UINT32 shanghai_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
8286{
8387   int x, y, b, src;
8488
r245708r245709
125129   return 0;
126130}
127131
128INTERRUPT_GEN_MEMBER(shanghai_state::shanghai_interrupt)
132INTERRUPT_GEN_MEMBER(shanghai_state::interrupt)
129133{
130134   device.execute().set_input_line_and_vector(0,HOLD_LINE,0x80);
131135}
r245708r245709
419423   MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz/2) /* NEC D70116C-8 */
420424   MCFG_CPU_PROGRAM_MAP(shanghai_map)
421425   MCFG_CPU_IO_MAP(shanghai_portmap)
422   MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state,  shanghai_interrupt)
426   MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state,  interrupt)
423427
424428   /* video hardware */
425429   MCFG_SCREEN_ADD("screen", RASTER)
426430   MCFG_SCREEN_REFRESH_RATE(30)
427431   MCFG_SCREEN_SIZE(384, 280)
428432   MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel
429   MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
433   MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update)
430434   MCFG_SCREEN_PALETTE("palette")
431435
432436   MCFG_PALETTE_ADD("palette", 256)
r245708r245709
455459   MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz/2) /* ? */
456460   MCFG_CPU_PROGRAM_MAP(shangha2_map)
457461   MCFG_CPU_IO_MAP(shangha2_portmap)
458   MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state,  shanghai_interrupt)
462   MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state,  interrupt)
459463
460464   /* video hardware */
461465   MCFG_SCREEN_ADD("screen", RASTER)
462466   MCFG_SCREEN_REFRESH_RATE(30)
463467   MCFG_SCREEN_SIZE(384, 280)
464468   MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel
465   MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
469   MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update)
466470   MCFG_SCREEN_PALETTE("palette")
467471
468472   MCFG_PALETTE_ADD("palette", 256)
r245708r245709
489493   /* basic machine hardware */
490494   MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz)
491495   MCFG_CPU_PROGRAM_MAP(kothello_map)
492   MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state,  shanghai_interrupt)
496   MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state,  interrupt)
493497
494498   SEIBU3A_SOUND_SYSTEM_CPU(XTAL_16MHz/4)
495499
r245708r245709
500504   MCFG_SCREEN_REFRESH_RATE(30) /* Should be 57Hz, but plays too fast */
501505   MCFG_SCREEN_SIZE(384, 280)
502506   MCFG_SCREEN_VISIBLE_AREA(8, 384-1, 0, 250-1) // Base Screen is 376 pixel
503   MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
507   MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update)
504508   MCFG_SCREEN_PALETTE("palette")
505509
506510   MCFG_PALETTE_ADD("palette", 256)
r245708r245709
684688
685689
686690
687GAME( 1988, shanghai,  0,        shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (World)", GAME_IMPERFECT_GRAPHICS )
688GAME( 1988, shanghaij, shanghai, shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (Japan)", GAME_IMPERFECT_GRAPHICS )
689GAME( 1989, shangha2,  0,        shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 1)", 0 )
690GAME( 1989, shangha2a, shangha2, shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 2)", 0 )
691GAME( 1990, kothello,  0,        kothello, kothello, driver_device, 0, ROT0, "Success", "Kyuukyoku no Othello", GAME_IMPERFECT_GRAPHICS )
691GAME( 1988, shanghai,  0,        shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (World)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
692GAME( 1988, shanghaij, shanghai, shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
693GAME( 1989, shangha2,  0,        shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 1)", GAME_SUPPORTS_SAVE )
694GAME( 1989, shangha2a, shangha2, shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 2)", GAME_SUPPORTS_SAVE )
695GAME( 1990, kothello,  0,        kothello, kothello, driver_device, 0, ROT0, "Success", "Kyuukyoku no Othello", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/truco.c
r245708r245709
208208#include "cpu/m6809/m6809.h"
209209#include "video/mc6845.h"
210210#include "machine/6821pia.h"
211#include "sound/dac.h"
212211#include "includes/truco.h"
213212
214213
r245708r245709
355354INPUT_PORTS_END
356355
357356
357void truco_state::machine_start()
358{
359   save_item(NAME(m_trigger));
360}
361
358362/*******************************************
359363*       Machine Reset & Interrupts         *
360364*******************************************/
r245708r245709
389393   m_battery_ram[0x020] = m_battery_ram[0x011];
390394}
391395
392INTERRUPT_GEN_MEMBER(truco_state::truco_interrupt)
396INTERRUPT_GEN_MEMBER(truco_state::interrupt)
393397{
394398   /* coinup */
395399
r245708r245709
414418   /* basic machine hardware */
415419   MCFG_CPU_ADD("maincpu", M6809, CPU_CLOCK)
416420   MCFG_CPU_PROGRAM_MAP(main_map)
417   MCFG_CPU_VBLANK_INT_DRIVER("screen", truco_state,  truco_interrupt)
421   MCFG_CPU_VBLANK_INT_DRIVER("screen", truco_state,  interrupt)
418422   MCFG_WATCHDOG_TIME_INIT(attotime::from_seconds(1.6))    /* 1.6 seconds */
419423
420424   MCFG_DEVICE_ADD("pia0", PIA6821, 0)
r245708r245709
432436   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
433437   MCFG_SCREEN_SIZE(256, 192)
434438   MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 192-1)
435   MCFG_SCREEN_UPDATE_DRIVER(truco_state, screen_update_truco)
439   MCFG_SCREEN_UPDATE_DRIVER(truco_state, screen_update)
436440   MCFG_SCREEN_PALETTE("palette")
437441
438442   MCFG_PALETTE_ADD("palette", 16)
r245708r245709
463467ROM_END
464468
465469/*    YEAR  NAME     PARENT  MACHINE  INPUT    STATE            INIT  ROT    COMPANY           FULLNAME     FLAGS  */
466GAME( 198?, truco,   0,      truco,   truco,   driver_device,   0,    ROT0, "Playtronic SRL", "Truco-Tron", 0 )
470GAME( 198?, truco,   0,      truco,   truco,   driver_device,   0,    ROT0, "Playtronic SRL", "Truco-Tron", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/shangha3.h
r245708r245709
55public:
66   shangha3_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_ram(*this, "ram"),
98      m_maincpu(*this, "maincpu"),
109      m_audiocpu(*this, "audiocpu"),
1110      m_oki(*this, "oki"),
1211      m_gfxdecode(*this, "gfxdecode"),
1312      m_screen(*this, "screen"),
14      m_palette(*this, "palette") { }
13      m_palette(*this, "palette"),
14      m_ram(*this, "ram") { }
1515
16   int m_prot_count;
16   required_device<cpu_device> m_maincpu;
17   optional_device<cpu_device> m_audiocpu;
18   required_device<okim6295_device> m_oki;
19   required_device<gfxdecode_device> m_gfxdecode;
20   required_device<screen_device> m_screen;
21   required_device<palette_device> m_palette;
22
1723   required_shared_ptr<UINT16> m_ram;
1824
25   // driver init configuration
1926   int m_do_shadows;
20
27   UINT8 m_drawmode_table[16];
28   
29   int m_prot_count;
2130   UINT16 m_gfxlist_addr;
2231   bitmap_ind16 m_rawbitmap;
2332
24   UINT8 m_drawmode_table[16];
33   // common
34   DECLARE_WRITE16_MEMBER(flipscreen_w);
35   DECLARE_WRITE16_MEMBER(gfxlist_addr_w);
36   DECLARE_WRITE16_MEMBER(blitter_go_w);
37   DECLARE_WRITE16_MEMBER(irq_ack_w);
38
39   // shangha3 specific
2540   DECLARE_READ16_MEMBER(shangha3_prot_r);
2641   DECLARE_WRITE16_MEMBER(shangha3_prot_w);
2742   DECLARE_WRITE16_MEMBER(shangha3_coinctrl_w);
43   
44   // heberpop specific
2845   DECLARE_WRITE16_MEMBER(heberpop_coinctrl_w);
46   DECLARE_WRITE16_MEMBER(heberpop_sound_command_w); // used by blocken too
47   
48   // blocken specific
2949   DECLARE_WRITE16_MEMBER(blocken_coinctrl_w);
30   DECLARE_WRITE16_MEMBER(heberpop_sound_command_w);
31   DECLARE_WRITE16_MEMBER(shangha3_flipscreen_w);
32   DECLARE_WRITE16_MEMBER(shangha3_gfxlist_addr_w);
33   DECLARE_WRITE16_MEMBER(shangha3_blitter_go_w);
34   DECLARE_WRITE16_MEMBER(shangha3_irq_ack_w);
50   
3551   DECLARE_DRIVER_INIT(shangha3);
3652   DECLARE_DRIVER_INIT(heberpop);
3753   virtual void video_start();
38   UINT32 screen_update_shangha3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
39   DECLARE_WRITE_LINE_MEMBER(irqhandler);
40   required_device<cpu_device> m_maincpu;
41   optional_device<cpu_device> m_audiocpu;
42   required_device<okim6295_device> m_oki;
43   required_device<gfxdecode_device> m_gfxdecode;
44   required_device<screen_device> m_screen;
45   required_device<palette_device> m_palette;
54
55   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4656};
trunk/src/mame/includes/truco.h
r245708r245709
55public:
66   truco_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_maincpu(*this, "maincpu"),
9      m_dac(*this, "dac"),
810      m_videoram(*this, "videoram"),
9      m_battery_ram(*this, "battery_ram"),
10      m_maincpu(*this, "maincpu"),
11      m_dac(*this, "dac") { }
11      m_battery_ram(*this, "battery_ram") { }
1212
13   required_device<cpu_device> m_maincpu;
14   required_device<dac_device> m_dac;
15
1316   required_shared_ptr<UINT8> m_videoram;
1417   required_shared_ptr<UINT8> m_battery_ram;
18
1519   int m_trigger;
20
1621   DECLARE_WRITE8_MEMBER(porta_w);
1722   DECLARE_WRITE_LINE_MEMBER(pia_ca2_w);
1823   DECLARE_WRITE8_MEMBER(portb_w);
1924   DECLARE_WRITE_LINE_MEMBER(pia_irqa_w);
2025   DECLARE_WRITE_LINE_MEMBER(pia_irqb_w);
26
27   virtual void machine_start();
2128   virtual void machine_reset();
2229   DECLARE_PALETTE_INIT(truco);
23   UINT32 screen_update_truco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
24   INTERRUPT_GEN_MEMBER(truco_interrupt);
25   required_device<cpu_device> m_maincpu;
26   required_device<dac_device> m_dac;
30
31   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
32
33   INTERRUPT_GEN_MEMBER(interrupt);
2734};
trunk/src/mame/video/shangha3.c
r245708r245709
2121tilemap, and spare RAM to be used by the CPU.
2222
2323The command list starts at a variable point in memory, set by
24shangha3_gfxlist_addr_w(), and always ends at 0x0fffff.
24gfxlist_addr_w(), and always ends at 0x0fffff.
2525
2626Large sprites refer to a single tilemap starting at 0x000000, the command list
2727contains the coordinates of the place in the tilemap to pick data from.
2828
29The commands list is processed when shangha3_blitter_go_w() is written to, so
29The commands list is processed when blitter_go_w() is written to, so
3030it is not processed automatically every frame.
3131
3232The commands have a fixed length of 16 words. The format is as follows:
r245708r245709
8080      for (i = 0;i < 128;i++)
8181         m_palette->shadow_table()[i] = i+128;
8282   }
83   
84   save_item(NAME(m_gfxlist_addr));
85   save_item(NAME(m_rawbitmap));
8386}
8487
8588
8689
87WRITE16_MEMBER(shangha3_state::shangha3_flipscreen_w)
90WRITE16_MEMBER(shangha3_state::flipscreen_w)
8891{
8992   if (ACCESSING_BITS_0_7)
9093   {
r245708r245709
9598   }
9699}
97100
98WRITE16_MEMBER(shangha3_state::shangha3_gfxlist_addr_w)
101WRITE16_MEMBER(shangha3_state::gfxlist_addr_w)
99102{
100103   COMBINE_DATA(&m_gfxlist_addr);
101104}
102105
103106
104WRITE16_MEMBER(shangha3_state::shangha3_blitter_go_w)
107WRITE16_MEMBER(shangha3_state::blitter_go_w)
105108{
106109   UINT16 *shangha3_ram = m_ram;
107110   bitmap_ind16 &rawbitmap = m_rawbitmap;
r245708r245709
254257}
255258
256259
257UINT32 shangha3_state::screen_update_shangha3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
260UINT32 shangha3_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
258261{
259262   copybitmap(bitmap, m_rawbitmap, 0, 0, 0, 0, cliprect);
260263   return 0;
trunk/src/mame/video/truco.c
r245708r245709
3131   }
3232}
3333
34UINT32 truco_state::screen_update_truco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
34UINT32 truco_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
3535{
3636   UINT8 *videoram = m_videoram;
3737   UINT8       *vid = videoram;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team