Previous 199869 Revisions Next

r36333 Monday 9th March, 2015 at 01:38:50 UTC by Vasantha Crabb
Untangle some of the goldstar state
[src/mame/drivers]goldstar.c
[src/mame/includes]goldstar.h
[src/mame/video]goldstar.c

trunk/src/mame/drivers/goldstar.c
r244844r244845
248248ADDRESS_MAP_END
249249
250250
251static ADDRESS_MAP_START( star100_map, AS_PROGRAM, 8, goldstar_state )
251static ADDRESS_MAP_START( star100_map, AS_PROGRAM, 8, sangho_state )
252252   AM_RANGE(0x0000, 0xbfff) AM_ROM
253253
254   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(sangho_fg_vidram_w ) AM_SHARE("fg_vidram")    // videoram 1
255   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sangho_fg_atrram_w ) AM_SHARE("fg_atrram")    // atrram 1
254   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(fg_vidram_w) AM_SHARE("fg_vidram")    // videoram 1
255   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_atrram_w) AM_SHARE("fg_atrram")    // atrram 1
256256
257257   AM_RANGE(0xd800, 0xd83f) AM_RAM AM_SHARE("reel1_scroll")
258258   AM_RANGE(0xd840, 0xd9ff) AM_RAM
r244844r244845
261261   AM_RANGE(0xdc00, 0xdc3f) AM_RAM AM_SHARE("reel3_scroll")
262262   AM_RANGE(0xdc40, 0xdfff) AM_RAM
263263
264   AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
265   AM_RANGE(0xe200, 0xe3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
266   AM_RANGE(0xe400, 0xe5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
264   AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
265   AM_RANGE(0xe200, 0xe3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
266   AM_RANGE(0xe400, 0xe5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
267267
268   AM_RANGE(0xe600, 0xe7ff) AM_RAM_WRITE(sangho_bg_vidram_w ) AM_SHARE("bg_vidram")    // videoram 2
268   AM_RANGE(0xe600, 0xe7ff) AM_RAM_WRITE(bg_vidram_w) AM_SHARE("bg_vidram")    // videoram 2
269269
270   AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(sangho_reel1_attrram_w ) AM_SHARE("reel1_attrram")
271   AM_RANGE(0xea00, 0xebff) AM_RAM_WRITE(sangho_reel2_attrram_w ) AM_SHARE("reel2_attrram")
272   AM_RANGE(0xec00, 0xedff) AM_RAM_WRITE(sangho_reel3_attrram_w ) AM_SHARE("reel3_attrram")
270   AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram")
271   AM_RANGE(0xea00, 0xebff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram")
272   AM_RANGE(0xec00, 0xedff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram")
273273
274   AM_RANGE(0xee00, 0xefff) AM_RAM_WRITE(sangho_bg_atrram_w ) AM_SHARE("bg_atrram")    // atrram 2
274   AM_RANGE(0xee00, 0xefff) AM_RAM_WRITE(bg_atrram_w) AM_SHARE("bg_atrram")    // atrram 2
275275
276276   AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
277277   AM_RANGE(0xf800, 0xffff) AM_RAM
r244844r244845
281281ADDRESS_MAP_END
282282
283283
284WRITE8_MEMBER(goldstar_state::sangho_coincount_w)
284WRITE8_MEMBER(sangho_state::coincount_w)
285285{
286286/*
287287  7654 3210
r244844r244845
300300   coin_counter_w(machine(), 4, data & 0x01);  /* counter5 payout */
301301}
302302
303WRITE8_MEMBER(goldstar_state::sangho_enable_w)
303WRITE8_MEMBER(sangho_state::enable_w)
304304{
305   m_sangho_enable_reg = data;
305   m_enable_reg = data;
306306}
307307
308static ADDRESS_MAP_START( star100_readport, AS_IO, 8, goldstar_state )
308static ADDRESS_MAP_START( star100_readport, AS_IO, 8, sangho_state )
309309   ADDRESS_MAP_GLOBAL_MASK(0xff)
310310
311311   AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
r244844r244845
324324   AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW4-0")     // the first 4 bits map to DSW4 1 to 4.
325325   AM_RANGE(0x21, 0x21) AM_READ_PORT("DSW4-1")     // the first 4 bits map to DSW4 5 to 8.
326326
327   AM_RANGE(0x24, 0x24) AM_WRITE(sangho_coincount_w)   // coin counters.
327   AM_RANGE(0x24, 0x24) AM_WRITE(coincount_w)      // coin counters.
328328
329329   AM_RANGE(0x25, 0x25) AM_READ_PORT("DSW2")
330330   AM_RANGE(0x26, 0x26) AM_READ_PORT("DSW3")
331331
332332   AM_RANGE(0xe0, 0xe0) AM_WRITENOP                // writting 0's and 1's constantly. seems watchdog feeder.
333   AM_RANGE(0xe1, 0xe1) AM_WRITE(sangho_enable_w)  // enable/disable reels register.
333   AM_RANGE(0xe1, 0xe1) AM_WRITE(enable_w)         // enable/disable reels register.
334334
335335ADDRESS_MAP_END
336336
r244844r244845
916916
917917
918918/*
919READ8_MEMBER(goldstar_state::unkch_unk_r)
919READ8_MEMBER(unkch_state::unk_r)
920920{
921921    return 0xff;
922922}
r244844r244845
924924
925925
926926/* newer / more capable hw */
927static ADDRESS_MAP_START( unkch_map, AS_PROGRAM, 8, goldstar_state )
927static ADDRESS_MAP_START( unkch_map, AS_PROGRAM, 8, unkch_state )
928928   AM_RANGE(0x0000, 0x9fff) AM_ROM
929929   AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
930930   AM_RANGE(0xc800, 0xc9ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
r244844r244845
939939   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
940940   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
941941
942   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
943   AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
944   AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
942   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
943   AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
944   AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
945945   AM_RANGE(0xf600, 0xf7ff) AM_RAM
946   AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(unkch_reel1_attrram_w ) AM_SHARE("reel1_attrram")
947   AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(unkch_reel2_attrram_w ) AM_SHARE("reel2_attrram")
948   AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(unkch_reel3_attrram_w ) AM_SHARE("reel3_attrram")
946   AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram")
947   AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram")
948   AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram")
949949   AM_RANGE(0xfe00, 0xffff) AM_RAM
950950ADDRESS_MAP_END
951951
952WRITE8_MEMBER(goldstar_state::unkcm_0x02_w)
952WRITE8_MEMBER(unkch_state::unkcm_0x02_w)
953953{
954954   //popmessage("unkcm_0x02_w %02x", data);
955955}
956956
957WRITE8_MEMBER(goldstar_state::unkcm_0x03_w)
957WRITE8_MEMBER(unkch_state::unkcm_0x03_w)
958958{
959959   //popmessage("unkcm_0x03_w %02x", data);
960960
r244844r244845
964964}
965965
966966
967WRITE8_MEMBER(goldstar_state::unkcm_0x11_w)
967WRITE8_MEMBER(unkch_state::unkcm_0x11_w)
968968{
969969   //popmessage("unkcm_0x11_w %02x", data);
970970}
971971
972WRITE8_MEMBER(goldstar_state::unkcm_0x12_w)
972WRITE8_MEMBER(unkch_state::unkcm_0x12_w)
973973{
974974//  popmessage("unkcm_0x12_w %02x", data);
975975}
976976
977977
978static ADDRESS_MAP_START( unkch_portmap, AS_IO, 8, goldstar_state )
978static ADDRESS_MAP_START( unkch_portmap, AS_IO, 8, unkch_state )
979979   ADDRESS_MAP_GLOBAL_MASK(0xff)
980980
981981   AM_RANGE(0x02, 0x02) AM_WRITE(unkcm_0x02_w)
r244844r244845
992992ADDRESS_MAP_END
993993
994994
995static ADDRESS_MAP_START( megaline_map, AS_PROGRAM, 8, goldstar_state )
995static ADDRESS_MAP_START( megaline_map, AS_PROGRAM, 8, unkch_state )
996996/* Reels stuff are there just as placeholder, and obviously in wrong offset */
997997   AM_RANGE(0x0000, 0x9fff) AM_ROM
998998
r244844r244845
10061006   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
10071007   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
10081008
1009   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
1010   AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
1011   AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
1009   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
1010   AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
1011   AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
10121012   AM_RANGE(0xf600, 0xf7ff) AM_RAM
1013   AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(unkch_reel1_attrram_w ) AM_SHARE("reel1_attrram")
1014   AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(unkch_reel2_attrram_w ) AM_SHARE("reel2_attrram")
1015   AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(unkch_reel3_attrram_w ) AM_SHARE("reel3_attrram")
1013   AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram")
1014   AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram")
1015   AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram")
10161016   AM_RANGE(0xfe00, 0xffff) AM_RAM
10171017ADDRESS_MAP_END
10181018
r244844r244845
10341034ADDRESS_MAP_END
10351035
10361036
1037static ADDRESS_MAP_START( bonusch_map, AS_PROGRAM, 8, goldstar_state )
1037static ADDRESS_MAP_START( bonusch_map, AS_PROGRAM, 8, unkch_state )
10381038/* Reels stuff and RAM are there just as placeholder, and obviously in wrong offset */
10391039
10401040   AM_RANGE(0x0000, 0xbfff) AM_ROM     // ok
r244844r244845
10541054   AM_RANGE(0xf680, 0xf6bf) AM_RAM AM_SHARE("reel2_scroll")
10551055   AM_RANGE(0xf700, 0xf73f) AM_RAM AM_SHARE("reel3_scroll")
10561056
1057   AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(unkch_reel1_attrram_w ) AM_SHARE("reel1_attrram")
1058   AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(unkch_reel2_attrram_w ) AM_SHARE("reel2_attrram")
1059   AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(unkch_reel3_attrram_w ) AM_SHARE("reel3_attrram")
1060
1057   AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram")
1058   AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram")
1059   AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram")
10611060ADDRESS_MAP_END
10621061
10631062/* Bonus Chance W-8
r244844r244845
75807579MACHINE_CONFIG_END
75817580
75827581
7583static MACHINE_CONFIG_START( star100, goldstar_state )
7582static MACHINE_CONFIG_START( star100, sangho_state )
75847583
75857584   /* basic machine hardware */
75867585   MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
75877586   MCFG_CPU_PROGRAM_MAP(star100_map)
75887587   MCFG_CPU_IO_MAP(star100_readport)
7589   MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state,  irq0_line_hold)
7588   MCFG_CPU_VBLANK_INT_DRIVER("screen", sangho_state,  irq0_line_hold)
75907589
75917590   /* video hardware */
75927591   MCFG_SCREEN_ADD("screen", RASTER)
r244844r244845
75947593   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
75957594   MCFG_SCREEN_SIZE(64*8, 32*8)
75967595   MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
7597   MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_sangho)
7596   MCFG_SCREEN_UPDATE_DRIVER(sangho_state, screen_update_sangho)
75987597   MCFG_SCREEN_PALETTE("palette")
75997598
76007599   MCFG_PALETTE_ADD("palette", 0x100)
r244844r244845
76047603
76057604   MCFG_NVRAM_ADD_1FILL("nvram")
76067605
7607   MCFG_VIDEO_START_OVERRIDE(goldstar_state, sangho)
7606   MCFG_VIDEO_START_OVERRIDE(sangho_state, sangho)
76087607
76097608   /* sound hardware */
76107609   MCFG_SPEAKER_STANDARD_MONO("mono")
r244844r244845
87358734   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00) /* analyzed for clips */
87368735MACHINE_CONFIG_END
87378736
8738static MACHINE_CONFIG_START( unkch, goldstar_state )
8737static MACHINE_CONFIG_START( unkch, unkch_state )
87398738
87408739   /* basic machine hardware */
87418740   MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
r244844r244845
87508749//  MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
87518750   MCFG_SCREEN_SIZE(64*8, 32*8)
87528751   MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1)
8753   MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_unkch)
8752   MCFG_SCREEN_UPDATE_DRIVER(unkch_state, screen_update_unkch)
87548753   MCFG_SCREEN_PALETTE("palette")
87558754
87568755   MCFG_GFXDECODE_ADD("gfxdecode", "palette", unkch)
r244844r244845
87598758
87608759   //MCFG_NVRAM_HANDLER(goldstar)
87618760
8762   MCFG_VIDEO_START_OVERRIDE(goldstar_state,unkch)
8761   MCFG_VIDEO_START_OVERRIDE(unkch_state, unkch)
87638762
87648763   /* sound hardware */
87658764   MCFG_SPEAKER_STANDARD_MONO("mono")
r244844r244845
88188817MACHINE_CONFIG_END
88198818
88208819
8821static MACHINE_CONFIG_START( megaline, goldstar_state )
8820static MACHINE_CONFIG_START( megaline, unkch_state )
88228821
88238822   /* basic machine hardware */
88248823   MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
r244844r244845
88688867MACHINE_CONFIG_END
88698868
88708869
8871static MACHINE_CONFIG_START( bonusch, goldstar_state )
8870static MACHINE_CONFIG_START( bonusch, unkch_state )
88728871
88738872   /* basic machine hardware */
88748873   MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
r244844r244845
1402214021}
1402314022
1402414023/* todo: remove these patches! */
14025DRIVER_INIT_MEMBER(goldstar_state,unkch1)
14024DRIVER_INIT_MEMBER(unkch_state, unkch1)
1402614025{
1402714026   UINT8 *ROM = memregion("maincpu")->base();
1402814027   ROM[0x9d52] = 0x00;
1402914028   ROM[0x9d53] = 0x00;
1403014029}
1403114030
14032DRIVER_INIT_MEMBER(goldstar_state,unkch3)
14031DRIVER_INIT_MEMBER(unkch_state, unkch3)
1403314032{
1403414033   UINT8 *ROM = memregion("maincpu")->base();
1403514034   ROM[0x9b86] = 0x00;
1403614035   ROM[0x9b87] = 0x00;
1403714036}
1403814037
14039DRIVER_INIT_MEMBER(goldstar_state,unkch4)
14038DRIVER_INIT_MEMBER(unkch_state, unkch4)
1404014039{
1404114040   UINT8 *ROM = memregion("maincpu")->base();
1404214041   ROM[0x9a6e] = 0x00;
r244844r244845
1426114260GAME( 2003, nfm,       0,        nfm,      nfb96bl,   driver_device,  0,         ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", GAME_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06"
1426214261
1426314262// these have 'cherry 1994' in the program roms, but also "Super Cherry / New Cherry Gold '99" probably hacks of a 1994 version of Cherry Bonus / Cherry Master (Super Cherry Master?)
14264GAME( 1999, unkch1,   0,         unkch,    unkch,     goldstar_state, unkch1,    ROT0, "bootleg", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 1)", GAME_NOT_WORKING|GAME_NO_SOUND )
14265GAME( 1999, unkch2,   unkch1,    unkch,    unkch,     goldstar_state, unkch1,    ROT0, "bootleg", "Super Cherry Gold (bootleg of Super Cherry Master)",           GAME_NOT_WORKING|GAME_NO_SOUND )
14266GAME( 1999, unkch3,   unkch1,    unkch,    unkch3,    goldstar_state, unkch3,    ROT0, "bootleg", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 2)", GAME_NOT_WORKING|GAME_NO_SOUND ) // cards have been hacked to look like barrels, girl removed?
14267GAME( 1999, unkch4,   unkch1,    unkch,    unkch4,    goldstar_state, unkch4,    ROT0, "bootleg", "Grand Cherry Master (bootleg of Super Cherry Master)",         GAME_NOT_WORKING|GAME_NO_SOUND ) // by 'Toy System' Hungary
14263GAME( 1999, unkch1,   0,         unkch,    unkch,     unkch_state,    unkch1,    ROT0, "bootleg", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 1)", GAME_NOT_WORKING|GAME_NO_SOUND )
14264GAME( 1999, unkch2,   unkch1,    unkch,    unkch,     unkch_state,    unkch1,    ROT0, "bootleg", "Super Cherry Gold (bootleg of Super Cherry Master)",           GAME_NOT_WORKING|GAME_NO_SOUND )
14265GAME( 1999, unkch3,   unkch1,    unkch,    unkch3,    unkch_state,    unkch3,    ROT0, "bootleg", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 2)", GAME_NOT_WORKING|GAME_NO_SOUND ) // cards have been hacked to look like barrels, girl removed?
14266GAME( 1999, unkch4,   unkch1,    unkch,    unkch4,    unkch_state,    unkch4,    ROT0, "bootleg", "Grand Cherry Master (bootleg of Super Cherry Master)",         GAME_NOT_WORKING|GAME_NO_SOUND ) // by 'Toy System' Hungary
1426814267
1426914268
1427014269/* Stealth sets.
trunk/src/mame/includes/goldstar.h
r244844r244845
1313      m_reel1_scroll(*this, "reel1_scroll"),
1414      m_reel2_scroll(*this, "reel2_scroll"),
1515      m_reel3_scroll(*this, "reel3_scroll"),
16      m_reel1_attrram(*this, "reel1_attrram"),
17      m_reel2_attrram(*this, "reel2_attrram"),
18      m_reel3_attrram(*this, "reel3_attrram"),
1916      m_maincpu(*this, "maincpu"),
2017      m_gfxdecode(*this, "gfxdecode"),
2118      m_palette(*this, "palette") { }
r244844r244845
3835   optional_shared_ptr<UINT8> m_reel3_scroll;
3936
4037
41   /* reelx_attrram for unkch sets */
42   optional_shared_ptr<UINT8> m_reel1_attrram;
43   optional_shared_ptr<UINT8> m_reel2_attrram;
44   optional_shared_ptr<UINT8> m_reel3_attrram;
4538   UINT8 m_unkch_vidreg;
4639
4740   tilemap_t *m_reel1_tilemap;
r244844r244845
5447   UINT8 m_cmaster_girl_num;
5548   UINT8 m_cmaster_girl_pal;
5649   UINT8 m_cm_enable_reg;
57   UINT8 m_sangho_enable_reg;
5850   UINT8 m_cm_girl_scroll;
5951   UINT8 m_lucky8_nmi_enable;
6052   int m_tile_bank;
r244844r244845
7062   DECLARE_WRITE8_MEMBER(magodds_outb850_w);
7163   DECLARE_WRITE8_MEMBER(magodds_outb860_w);
7264   DECLARE_WRITE8_MEMBER(ladylinr_outport_w);
73   DECLARE_READ8_MEMBER(unkch_unk_r);
74   DECLARE_WRITE8_MEMBER(unkcm_0x02_w);
75   DECLARE_WRITE8_MEMBER(unkcm_0x03_w);
76   DECLARE_WRITE8_MEMBER(unkcm_0x11_w);
77   DECLARE_WRITE8_MEMBER(unkcm_0x12_w);
7865   DECLARE_READ8_MEMBER(fixedvalb4_r);
7966   DECLARE_READ8_MEMBER(fixedvala8_r);
8067   DECLARE_READ8_MEMBER(fixedval38_r);
r244844r244845
9683   DECLARE_READ8_MEMBER(fixedval7d_r);
9784   DECLARE_WRITE8_MEMBER(cm_girl_scroll_w);
9885   DECLARE_WRITE8_MEMBER(cm_outport0_w);
99   DECLARE_WRITE8_MEMBER(sangho_enable_w);
100   DECLARE_WRITE8_MEMBER(sangho_coincount_w);
10186   DECLARE_WRITE8_MEMBER(goldstar_fg_vidram_w);
10287   DECLARE_WRITE8_MEMBER(goldstar_fg_atrram_w);
103   DECLARE_WRITE8_MEMBER(sangho_fg_vidram_w);
104   DECLARE_WRITE8_MEMBER(sangho_fg_atrram_w);
105   DECLARE_WRITE8_MEMBER(sangho_bg_vidram_w);
106   DECLARE_WRITE8_MEMBER(sangho_bg_atrram_w);
10788   DECLARE_WRITE8_MEMBER(goldstar_reel1_ram_w);
10889   DECLARE_WRITE8_MEMBER(goldstar_reel2_ram_w);
10990   DECLARE_WRITE8_MEMBER(goldstar_reel3_ram_w);
110   DECLARE_WRITE8_MEMBER(unkch_reel1_attrram_w);
111   DECLARE_WRITE8_MEMBER(unkch_reel2_attrram_w);
112   DECLARE_WRITE8_MEMBER(unkch_reel3_attrram_w);
113   DECLARE_WRITE8_MEMBER(sangho_reel1_attrram_w);
114   DECLARE_WRITE8_MEMBER(sangho_reel2_attrram_w);
115   DECLARE_WRITE8_MEMBER(sangho_reel3_attrram_w);
11691   DECLARE_WRITE8_MEMBER(goldstar_fa00_w);
11792   DECLARE_WRITE8_MEMBER(cm_background_col_w);
11893   DECLARE_WRITE8_MEMBER(system_outputa_w);
r244844r244845
12095   DECLARE_WRITE8_MEMBER(system_outputc_w);
12196   DECLARE_WRITE8_MEMBER(ay8910_outputa_w);
12297   DECLARE_WRITE8_MEMBER(ay8910_outputb_w);
123   DECLARE_DRIVER_INIT(unkch3);
12498   DECLARE_DRIVER_INIT(goldstar);
12599   DECLARE_DRIVER_INIT(cmast91);
126100   DECLARE_DRIVER_INIT(nfb96_dk);
127101   DECLARE_DRIVER_INIT(cm);
128102   DECLARE_DRIVER_INIT(chry10);
129   DECLARE_DRIVER_INIT(unkch4);
130103   DECLARE_DRIVER_INIT(lucky8a);
131104   DECLARE_DRIVER_INIT(nfb96sea);
132105   DECLARE_DRIVER_INIT(schery97a);
r244844r244845
141114   DECLARE_DRIVER_INIT(cherrys);
142115   DECLARE_DRIVER_INIT(schery97);
143116   DECLARE_DRIVER_INIT(nfb96_d);
144   DECLARE_DRIVER_INIT(unkch1);
145117   DECLARE_DRIVER_INIT(tonypok);
146118   DECLARE_DRIVER_INIT(skill98);
147119   DECLARE_DRIVER_INIT(po33);
r244844r244845
152124   DECLARE_DRIVER_INIT(fb2010);
153125   DECLARE_DRIVER_INIT(super9);
154126   TILE_GET_INFO_MEMBER(get_goldstar_fg_tile_info);
155   TILE_GET_INFO_MEMBER(get_sangho_fg_tile_info);
156   TILE_GET_INFO_MEMBER(get_sangho_bg_tile_info);
157127   TILE_GET_INFO_MEMBER(get_magical_fg_tile_info);
158128   TILE_GET_INFO_MEMBER(get_cherrym_fg_tile_info);
159129   TILE_GET_INFO_MEMBER(get_goldstar_reel1_tile_info);
160130   TILE_GET_INFO_MEMBER(get_goldstar_reel2_tile_info);
161131   TILE_GET_INFO_MEMBER(get_goldstar_reel3_tile_info);
162   TILE_GET_INFO_MEMBER(get_unkch_reel1_tile_info);
163   TILE_GET_INFO_MEMBER(get_unkch_reel2_tile_info);
164   TILE_GET_INFO_MEMBER(get_unkch_reel3_tile_info);
165   TILE_GET_INFO_MEMBER(get_sangho_reel1_tile_info);
166   TILE_GET_INFO_MEMBER(get_sangho_reel2_tile_info);
167   TILE_GET_INFO_MEMBER(get_sangho_reel3_tile_info);
168132   DECLARE_VIDEO_START(goldstar);
169   DECLARE_VIDEO_START(sangho);
170133   DECLARE_PALETTE_INIT(cm);
171134   DECLARE_VIDEO_START(cherrym);
172135   DECLARE_PALETTE_INIT(cmast91);
r244844r244845
174137   DECLARE_VIDEO_START(bingowng);
175138   DECLARE_VIDEO_START(magical);
176139   DECLARE_PALETTE_INIT(magodds);
177   DECLARE_VIDEO_START(unkch);
178140   UINT32 screen_update_goldstar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
179141   UINT32 screen_update_cmast91(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
180142   UINT32 screen_update_bingowng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
181143   UINT32 screen_update_magical(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
182144   UINT32 screen_update_amcoe1a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
183   UINT32 screen_update_unkch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
184   UINT32 screen_update_sangho(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
185145   INTERRUPT_GEN_MEMBER(lucky8_irq);
186146   void do_blockswaps(UINT8* ROM);
187147   void dump_to_file( UINT8* ROM);
r244844r244845
191151   required_device<gfxdecode_device> m_gfxdecode;
192152   required_device<palette_device> m_palette;
193153};
154
155
156class sangho_state : public goldstar_state
157{
158public:
159   sangho_state(const machine_config &mconfig, device_type type, const char *tag)
160      : goldstar_state(mconfig, type, tag),
161      m_reel1_attrram(*this, "reel1_attrram"),
162      m_reel2_attrram(*this, "reel2_attrram"),
163      m_reel3_attrram(*this, "reel3_attrram")
164   {
165   }
166
167   DECLARE_WRITE8_MEMBER(enable_w);
168   DECLARE_WRITE8_MEMBER(coincount_w);
169
170   DECLARE_WRITE8_MEMBER(fg_vidram_w);
171   DECLARE_WRITE8_MEMBER(fg_atrram_w);
172   DECLARE_WRITE8_MEMBER(bg_vidram_w);
173   DECLARE_WRITE8_MEMBER(bg_atrram_w);
174   DECLARE_WRITE8_MEMBER(reel1_attrram_w);
175   DECLARE_WRITE8_MEMBER(reel2_attrram_w);
176   DECLARE_WRITE8_MEMBER(reel3_attrram_w);
177
178   DECLARE_VIDEO_START(sangho);
179   UINT32 screen_update_sangho(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
180
181protected:
182   TILE_GET_INFO_MEMBER(get_fg_tile_info);
183   TILE_GET_INFO_MEMBER(get_bg_tile_info);
184   TILE_GET_INFO_MEMBER(get_reel1_tile_info);
185   TILE_GET_INFO_MEMBER(get_reel2_tile_info);
186   TILE_GET_INFO_MEMBER(get_reel3_tile_info);
187
188private:
189   required_shared_ptr<UINT8> m_reel1_attrram;
190   required_shared_ptr<UINT8> m_reel2_attrram;
191   required_shared_ptr<UINT8> m_reel3_attrram;
192
193   UINT8 m_enable_reg;
194};
195
196
197class unkch_state : public goldstar_state
198{
199public:
200   unkch_state(const machine_config &mconfig, device_type type, const char *tag)
201      : goldstar_state(mconfig, type, tag),
202      m_reel1_attrram(*this, "reel1_attrram"),
203      m_reel2_attrram(*this, "reel2_attrram"),
204      m_reel3_attrram(*this, "reel3_attrram")
205   {
206   }
207
208   DECLARE_READ8_MEMBER(unk_r);
209
210   DECLARE_WRITE8_MEMBER(unkcm_0x02_w);
211   DECLARE_WRITE8_MEMBER(unkcm_0x03_w);
212   DECLARE_WRITE8_MEMBER(unkcm_0x11_w);
213   DECLARE_WRITE8_MEMBER(unkcm_0x12_w);
214
215   DECLARE_WRITE8_MEMBER(reel1_attrram_w);
216   DECLARE_WRITE8_MEMBER(reel2_attrram_w);
217   DECLARE_WRITE8_MEMBER(reel3_attrram_w);
218
219   DECLARE_DRIVER_INIT(unkch1);
220   DECLARE_DRIVER_INIT(unkch3);
221   DECLARE_DRIVER_INIT(unkch4);
222
223   DECLARE_VIDEO_START(unkch);
224   UINT32 screen_update_unkch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
225
226protected:
227   TILE_GET_INFO_MEMBER(get_reel1_tile_info);
228   TILE_GET_INFO_MEMBER(get_reel2_tile_info);
229   TILE_GET_INFO_MEMBER(get_reel3_tile_info);
230
231private:
232   required_shared_ptr<UINT8> m_reel1_attrram;
233   required_shared_ptr<UINT8> m_reel2_attrram;
234   required_shared_ptr<UINT8> m_reel3_attrram;
235};
trunk/src/mame/video/goldstar.c
r244844r244845
5858   m_fg_tilemap->mark_tile_dirty(offset);
5959}
6060
61WRITE8_MEMBER(goldstar_state::sangho_fg_vidram_w)
62{
63   m_fg_vidram[offset] = data;
64   m_fg_tilemap->mark_tile_dirty(offset);
65}
6661
67WRITE8_MEMBER(goldstar_state::sangho_fg_atrram_w)
68{
69   m_fg_atrram[offset] = data;
70   m_fg_tilemap->mark_tile_dirty(offset);
71}
72
73WRITE8_MEMBER(goldstar_state::sangho_bg_vidram_w)
74{
75   m_bg_vidram[offset] = data;
76   m_bg_tilemap->mark_tile_dirty(offset);
77}
78
79WRITE8_MEMBER(goldstar_state::sangho_bg_atrram_w)
80{
81   m_bg_atrram[offset] = data;
82   m_bg_tilemap->mark_tile_dirty(offset);
83}
84
85
8662TILE_GET_INFO_MEMBER(goldstar_state::get_goldstar_fg_tile_info)
8763{
8864   int code = m_fg_vidram[tile_index];
r244844r244845
9470         0);
9571}
9672
97TILE_GET_INFO_MEMBER(goldstar_state::get_sangho_fg_tile_info)
98{
99   int code = m_fg_vidram[tile_index];
100   int attr = m_fg_atrram[tile_index];
101
102   SET_TILE_INFO_MEMBER(0,
103         code | (attr & 0x0f)<<8,
104         (attr&0x70)>>4,
105         0);
106}
107
108TILE_GET_INFO_MEMBER(goldstar_state::get_sangho_bg_tile_info)
109{
110   int code = m_bg_vidram[tile_index];
111   int attr = m_bg_atrram[tile_index];
112
113   SET_TILE_INFO_MEMBER(1,
114         code | (attr & 0x0f)<<8,
115         (attr&0x70)>>4,
116         0);
117}
118
11973TILE_GET_INFO_MEMBER(goldstar_state::get_magical_fg_tile_info)
12074{
12175   int code = m_fg_vidram[tile_index];
r244844r244845
191145         0);
192146}
193147
194WRITE8_MEMBER(goldstar_state::unkch_reel1_attrram_w)
195{
196   m_reel1_attrram[offset] = data;
197   m_reel1_tilemap->mark_tile_dirty(offset);
198}
199
200WRITE8_MEMBER(goldstar_state::unkch_reel2_attrram_w)
201{
202   m_reel2_attrram[offset] = data;
203   m_reel2_tilemap->mark_tile_dirty(offset);
204}
205
206
207WRITE8_MEMBER(goldstar_state::unkch_reel3_attrram_w)
208{
209   m_reel3_attrram[offset] = data;
210   m_reel3_tilemap->mark_tile_dirty(offset);
211}
212
213
214TILE_GET_INFO_MEMBER(goldstar_state::get_unkch_reel1_tile_info)
215{
216   int code = m_reel1_ram[tile_index];
217   int attr = m_reel1_attrram[tile_index];
218
219   SET_TILE_INFO_MEMBER(1,
220         code | (attr & 0x0f)<<8,
221         (attr&0xf0)>>4,
222         0);
223}
224
225TILE_GET_INFO_MEMBER(goldstar_state::get_unkch_reel2_tile_info)
226{
227   int code = m_reel2_ram[tile_index];
228   int attr = m_reel2_attrram[tile_index];
229
230   SET_TILE_INFO_MEMBER(1,
231         code | (attr & 0x0f)<<8,
232         (attr&0xf0)>>4,
233         0);
234}
235
236TILE_GET_INFO_MEMBER(goldstar_state::get_unkch_reel3_tile_info)
237{
238   int code = m_reel3_ram[tile_index];
239   int attr = m_reel3_attrram[tile_index];
240
241   SET_TILE_INFO_MEMBER(1,
242         code | (attr & 0x0f)<<8,
243         (attr&0xf0)>>4,
244         0);
245}
246
247
248WRITE8_MEMBER(goldstar_state::sangho_reel1_attrram_w)
249{
250   m_reel1_attrram[offset] = data;
251   m_reel1_tilemap->mark_tile_dirty(offset);
252}
253
254WRITE8_MEMBER(goldstar_state::sangho_reel2_attrram_w)
255{
256   m_reel2_attrram[offset] = data;
257   m_reel2_tilemap->mark_tile_dirty(offset);
258}
259
260WRITE8_MEMBER(goldstar_state::sangho_reel3_attrram_w)
261{
262   m_reel3_attrram[offset] = data;
263   m_reel3_tilemap->mark_tile_dirty(offset);
264}
265
266
267TILE_GET_INFO_MEMBER(goldstar_state::get_sangho_reel1_tile_info)
268{
269   int code = m_reel1_ram[tile_index];
270   int attr = m_reel1_attrram[tile_index];
271
272   SET_TILE_INFO_MEMBER(1,
273         code | (attr & 0x0f)<<8,
274         (attr&0x70)>>4,
275         0);
276}
277
278TILE_GET_INFO_MEMBER(goldstar_state::get_sangho_reel2_tile_info)
279{
280   int code = m_reel2_ram[tile_index];
281   int attr = m_reel2_attrram[tile_index];
282
283   SET_TILE_INFO_MEMBER(1,
284         code | (attr & 0x0f)<<8,
285         (attr&0x70)>>4,
286         0);
287}
288
289TILE_GET_INFO_MEMBER(goldstar_state::get_sangho_reel3_tile_info)
290{
291   int code = m_reel3_ram[tile_index];
292   int attr = m_reel3_attrram[tile_index];
293
294   SET_TILE_INFO_MEMBER(1,
295         code | (attr & 0x0f)<<8,
296         (attr&0x70)>>4,
297         0);
298}
299
300
301148VIDEO_START_MEMBER(goldstar_state, goldstar)
302149{
303150   m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
r244844r244845
345192   m_cm_enable_reg = 0x0b;
346193}
347194
348VIDEO_START_MEMBER(goldstar_state, unkch)
349{
350   m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_unkch_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
351   m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_unkch_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
352   m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_unkch_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
353
354   m_reel1_tilemap->set_scroll_cols(32);
355   m_reel2_tilemap->set_scroll_cols(32);
356   m_reel3_tilemap->set_scroll_cols(32);
357
358   m_cmaster_girl_num = 0;
359   m_cmaster_girl_pal = 0;
360   m_unkch_vidreg = 0x00;
361
362   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_cherrym_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32);
363   m_fg_tilemap->set_transparent_pen(0);
364
365   m_cm_enable_reg = 0x0b;
366}
367
368195VIDEO_START_MEMBER(goldstar_state, cherrym)
369196{
370197   m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
r244844r244845
384211   m_cm_enable_reg = 0x0b;
385212}
386213
387VIDEO_START_MEMBER(goldstar_state, sangho)
388{
389   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_sangho_bg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
390214
391   m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_sangho_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
392   m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_sangho_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
393   m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_sangho_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
394
395   m_reel1_tilemap->set_scroll_cols(64);
396   m_reel2_tilemap->set_scroll_cols(64);
397   m_reel3_tilemap->set_scroll_cols(64);
398
399   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_sangho_fg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
400   m_fg_tilemap->set_transparent_pen(0);
401}
402
403
404
405215WRITE8_MEMBER(goldstar_state::goldstar_fa00_w)
406216{
407217   /* bit 1 toggles continuously - might be irq enable or watchdog reset */
r244844r244845
600410   return 0;
601411}
602412
603
604UINT32 goldstar_state::screen_update_unkch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
605{
606   int i;
607
608   bitmap.fill(m_palette->black_pen(), cliprect);
609
610   if (!(m_cm_enable_reg &0x01))
611      return 0;
612
613   if (m_cm_enable_reg &0x08)
614   {
615      // guess, this could be something else completely!!
616      // only draw the first 'reels' tilemap, but fullscreen, using alt registers? (or no scrolling at all? - doubtful, see girl)
617      if (m_unkch_vidreg & 0x40)
618      {
619         for (i= 0;i < 32;i++)
620         {
621            m_reel1_tilemap->set_scrolly(i, -0x08/*m_reel1_scroll[(i*2)+1]*/);
622         //  m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[(i*2)+1]);
623         //  m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[(i*2)+1]);
624         }
625
626         m_reel1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
627
628      }
629      // or draw the reels normally?
630      else
631      {
632         for (i= 0;i < 32;i++)
633         {
634            m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i*2]);
635            m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i*2]);
636            m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i*2]);
637         }
638
639         const rectangle visible1(0*8, (14+48)*8-1,  3*8,  (3+7)*8-1);
640         const rectangle visible2(0*8, (14+48)*8-1, 10*8, (10+7)*8-1);
641         const rectangle visible3(0*8, (14+48)*8-1, 17*8, (17+7)*8-1);
642
643         m_reel1_tilemap->draw(screen, bitmap, visible1, 0, 0);
644         m_reel2_tilemap->draw(screen, bitmap, visible2, 0, 0);
645         m_reel3_tilemap->draw(screen, bitmap, visible3, 0, 0);
646      }
647   }
648
649   if (m_cm_enable_reg &0x02)
650   {
651      m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
652   }
653
654   return 0;
655}
656
657413UINT32 goldstar_state::screen_update_cmast91(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
658414{
659415   int i;
r244844r244845
730486}
731487
732488
733UINT32 goldstar_state::screen_update_sangho(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
489
490WRITE8_MEMBER(sangho_state::fg_vidram_w)
734491{
492   m_fg_vidram[offset] = data;
493   m_fg_tilemap->mark_tile_dirty(offset);
494}
495
496WRITE8_MEMBER(sangho_state::fg_atrram_w)
497{
498   m_fg_atrram[offset] = data;
499   m_fg_tilemap->mark_tile_dirty(offset);
500}
501
502WRITE8_MEMBER(sangho_state::bg_vidram_w)
503{
504   m_bg_vidram[offset] = data;
505   m_bg_tilemap->mark_tile_dirty(offset);
506}
507
508WRITE8_MEMBER(sangho_state::bg_atrram_w)
509{
510   m_bg_atrram[offset] = data;
511   m_bg_tilemap->mark_tile_dirty(offset);
512}
513
514WRITE8_MEMBER(sangho_state::reel1_attrram_w)
515{
516   m_reel1_attrram[offset] = data;
517   m_reel1_tilemap->mark_tile_dirty(offset);
518}
519
520WRITE8_MEMBER(sangho_state::reel2_attrram_w)
521{
522   m_reel2_attrram[offset] = data;
523   m_reel2_tilemap->mark_tile_dirty(offset);
524}
525
526WRITE8_MEMBER(sangho_state::reel3_attrram_w)
527{
528   m_reel3_attrram[offset] = data;
529   m_reel3_tilemap->mark_tile_dirty(offset);
530}
531
532
533TILE_GET_INFO_MEMBER(sangho_state::get_fg_tile_info)
534{
535   int code = m_fg_vidram[tile_index];
536   int attr = m_fg_atrram[tile_index];
537
538   SET_TILE_INFO_MEMBER(0,
539         code | (attr & 0x0f)<<8,
540         (attr&0x70)>>4,
541         0);
542}
543
544TILE_GET_INFO_MEMBER(sangho_state::get_bg_tile_info)
545{
546   int code = m_bg_vidram[tile_index];
547   int attr = m_bg_atrram[tile_index];
548
549   SET_TILE_INFO_MEMBER(1,
550         code | (attr & 0x0f)<<8,
551         (attr&0x70)>>4,
552         0);
553}
554
555TILE_GET_INFO_MEMBER(sangho_state::get_reel1_tile_info)
556{
557   int code = m_reel1_ram[tile_index];
558   int attr = m_reel1_attrram[tile_index];
559
560   SET_TILE_INFO_MEMBER(1,
561         code | (attr & 0x0f)<<8,
562         (attr&0x70)>>4,
563         0);
564}
565
566TILE_GET_INFO_MEMBER(sangho_state::get_reel2_tile_info)
567{
568   int code = m_reel2_ram[tile_index];
569   int attr = m_reel2_attrram[tile_index];
570
571   SET_TILE_INFO_MEMBER(1,
572         code | (attr & 0x0f)<<8,
573         (attr&0x70)>>4,
574         0);
575}
576
577TILE_GET_INFO_MEMBER(sangho_state::get_reel3_tile_info)
578{
579   int code = m_reel3_ram[tile_index];
580   int attr = m_reel3_attrram[tile_index];
581
582   SET_TILE_INFO_MEMBER(1,
583         code | (attr & 0x0f)<<8,
584         (attr&0x70)>>4,
585         0);
586}
587
588
589VIDEO_START_MEMBER(sangho_state, sangho)
590{
591   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sangho_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
592
593   m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sangho_state::get_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
594   m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sangho_state::get_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
595   m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sangho_state::get_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
596
597   m_reel1_tilemap->set_scroll_cols(64);
598   m_reel2_tilemap->set_scroll_cols(64);
599   m_reel3_tilemap->set_scroll_cols(64);
600
601   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sangho_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
602   m_fg_tilemap->set_transparent_pen(0);
603}
604
605
606UINT32 sangho_state::screen_update_sangho(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
607{
735608   int i;
736609
737610   bitmap.fill(m_palette->black_pen(), cliprect);
738611
739   if (m_sangho_enable_reg &0x01)
612   if (m_enable_reg & 0x01)
740613   {
741614      /* disable reels (only render bg and fg layers) */
742615      m_bg_tilemap->set_scrolly(0, -16);
r244844r244845
772645
773646   return 0;
774647}
648
649
650
651WRITE8_MEMBER(unkch_state::reel1_attrram_w)
652{
653   m_reel1_attrram[offset] = data;
654   m_reel1_tilemap->mark_tile_dirty(offset);
655}
656
657WRITE8_MEMBER(unkch_state::reel2_attrram_w)
658{
659   m_reel2_attrram[offset] = data;
660   m_reel2_tilemap->mark_tile_dirty(offset);
661}
662
663
664WRITE8_MEMBER(unkch_state::reel3_attrram_w)
665{
666   m_reel3_attrram[offset] = data;
667   m_reel3_tilemap->mark_tile_dirty(offset);
668}
669
670
671TILE_GET_INFO_MEMBER(unkch_state::get_reel1_tile_info)
672{
673   int code = m_reel1_ram[tile_index];
674   int attr = m_reel1_attrram[tile_index];
675
676   SET_TILE_INFO_MEMBER(1,
677         code | (attr & 0x0f)<<8,
678         (attr&0xf0)>>4,
679         0);
680}
681
682TILE_GET_INFO_MEMBER(unkch_state::get_reel2_tile_info)
683{
684   int code = m_reel2_ram[tile_index];
685   int attr = m_reel2_attrram[tile_index];
686
687   SET_TILE_INFO_MEMBER(1,
688         code | (attr & 0x0f)<<8,
689         (attr&0xf0)>>4,
690         0);
691}
692
693TILE_GET_INFO_MEMBER(unkch_state::get_reel3_tile_info)
694{
695   int code = m_reel3_ram[tile_index];
696   int attr = m_reel3_attrram[tile_index];
697
698   SET_TILE_INFO_MEMBER(1,
699         code | (attr & 0x0f)<<8,
700         (attr&0xf0)>>4,
701         0);
702}
703
704
705VIDEO_START_MEMBER(unkch_state, unkch)
706{
707   m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(unkch_state::get_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
708   m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(unkch_state::get_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
709   m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(unkch_state::get_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
710
711   m_reel1_tilemap->set_scroll_cols(32);
712   m_reel2_tilemap->set_scroll_cols(32);
713   m_reel3_tilemap->set_scroll_cols(32);
714
715   m_cmaster_girl_num = 0;
716   m_cmaster_girl_pal = 0;
717   m_unkch_vidreg = 0x00;
718
719   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_cherrym_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32);
720   m_fg_tilemap->set_transparent_pen(0);
721
722   m_cm_enable_reg = 0x0b;
723}
724
725UINT32 unkch_state::screen_update_unkch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
726{
727   int i;
728
729   bitmap.fill(m_palette->black_pen(), cliprect);
730
731   if (!(m_cm_enable_reg &0x01))
732      return 0;
733
734   if (m_cm_enable_reg &0x08)
735   {
736      // guess, this could be something else completely!!
737      // only draw the first 'reels' tilemap, but fullscreen, using alt registers? (or no scrolling at all? - doubtful, see girl)
738      if (m_unkch_vidreg & 0x40)
739      {
740         for (i= 0;i < 32;i++)
741         {
742            m_reel1_tilemap->set_scrolly(i, -0x08/*m_reel1_scroll[(i*2)+1]*/);
743         //  m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[(i*2)+1]);
744         //  m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[(i*2)+1]);
745         }
746
747         m_reel1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
748
749      }
750      // or draw the reels normally?
751      else
752      {
753         for (i= 0;i < 32;i++)
754         {
755            m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i*2]);
756            m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i*2]);
757            m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i*2]);
758         }
759
760         const rectangle visible1(0*8, (14+48)*8-1,  3*8,  (3+7)*8-1);
761         const rectangle visible2(0*8, (14+48)*8-1, 10*8, (10+7)*8-1);
762         const rectangle visible3(0*8, (14+48)*8-1, 17*8, (17+7)*8-1);
763
764         m_reel1_tilemap->draw(screen, bitmap, visible1, 0, 0);
765         m_reel2_tilemap->draw(screen, bitmap, visible2, 0, 0);
766         m_reel3_tilemap->draw(screen, bitmap, visible3, 0, 0);
767      }
768   }
769
770   if (m_cm_enable_reg &0x02)
771   {
772      m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
773   }
774
775   return 0;
776}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team