trunk/src/mame/drivers/goldstar.c
| r244844 | r244845 | |
| 248 | 248 | ADDRESS_MAP_END |
| 249 | 249 | |
| 250 | 250 | |
| 251 | | static ADDRESS_MAP_START( star100_map, AS_PROGRAM, 8, goldstar_state ) |
| 251 | static ADDRESS_MAP_START( star100_map, AS_PROGRAM, 8, sangho_state ) |
| 252 | 252 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 253 | 253 | |
| 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 |
| 256 | 256 | |
| 257 | 257 | AM_RANGE(0xd800, 0xd83f) AM_RAM AM_SHARE("reel1_scroll") |
| 258 | 258 | AM_RANGE(0xd840, 0xd9ff) AM_RAM |
| r244844 | r244845 | |
| 261 | 261 | AM_RANGE(0xdc00, 0xdc3f) AM_RAM AM_SHARE("reel3_scroll") |
| 262 | 262 | AM_RANGE(0xdc40, 0xdfff) AM_RAM |
| 263 | 263 | |
| 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") |
| 267 | 267 | |
| 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 |
| 269 | 269 | |
| 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") |
| 273 | 273 | |
| 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 |
| 275 | 275 | |
| 276 | 276 | AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") |
| 277 | 277 | AM_RANGE(0xf800, 0xffff) AM_RAM |
| r244844 | r244845 | |
| 281 | 281 | ADDRESS_MAP_END |
| 282 | 282 | |
| 283 | 283 | |
| 284 | | WRITE8_MEMBER(goldstar_state::sangho_coincount_w) |
| 284 | WRITE8_MEMBER(sangho_state::coincount_w) |
| 285 | 285 | { |
| 286 | 286 | /* |
| 287 | 287 | 7654 3210 |
| r244844 | r244845 | |
| 300 | 300 | coin_counter_w(machine(), 4, data & 0x01); /* counter5 payout */ |
| 301 | 301 | } |
| 302 | 302 | |
| 303 | | WRITE8_MEMBER(goldstar_state::sangho_enable_w) |
| 303 | WRITE8_MEMBER(sangho_state::enable_w) |
| 304 | 304 | { |
| 305 | | m_sangho_enable_reg = data; |
| 305 | m_enable_reg = data; |
| 306 | 306 | } |
| 307 | 307 | |
| 308 | | static ADDRESS_MAP_START( star100_readport, AS_IO, 8, goldstar_state ) |
| 308 | static ADDRESS_MAP_START( star100_readport, AS_IO, 8, sangho_state ) |
| 309 | 309 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 310 | 310 | |
| 311 | 311 | AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) |
| r244844 | r244845 | |
| 324 | 324 | AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW4-0") // the first 4 bits map to DSW4 1 to 4. |
| 325 | 325 | AM_RANGE(0x21, 0x21) AM_READ_PORT("DSW4-1") // the first 4 bits map to DSW4 5 to 8. |
| 326 | 326 | |
| 327 | | AM_RANGE(0x24, 0x24) AM_WRITE(sangho_coincount_w) // coin counters. |
| 327 | AM_RANGE(0x24, 0x24) AM_WRITE(coincount_w) // coin counters. |
| 328 | 328 | |
| 329 | 329 | AM_RANGE(0x25, 0x25) AM_READ_PORT("DSW2") |
| 330 | 330 | AM_RANGE(0x26, 0x26) AM_READ_PORT("DSW3") |
| 331 | 331 | |
| 332 | 332 | 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. |
| 334 | 334 | |
| 335 | 335 | ADDRESS_MAP_END |
| 336 | 336 | |
| r244844 | r244845 | |
| 916 | 916 | |
| 917 | 917 | |
| 918 | 918 | /* |
| 919 | | READ8_MEMBER(goldstar_state::unkch_unk_r) |
| 919 | READ8_MEMBER(unkch_state::unk_r) |
| 920 | 920 | { |
| 921 | 921 | return 0xff; |
| 922 | 922 | } |
| r244844 | r244845 | |
| 924 | 924 | |
| 925 | 925 | |
| 926 | 926 | /* newer / more capable hw */ |
| 927 | | static ADDRESS_MAP_START( unkch_map, AS_PROGRAM, 8, goldstar_state ) |
| 927 | static ADDRESS_MAP_START( unkch_map, AS_PROGRAM, 8, unkch_state ) |
| 928 | 928 | AM_RANGE(0x0000, 0x9fff) AM_ROM |
| 929 | 929 | AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 930 | 930 | AM_RANGE(0xc800, 0xc9ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext") |
| r244844 | r244845 | |
| 939 | 939 | AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") |
| 940 | 940 | AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") |
| 941 | 941 | |
| 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") |
| 945 | 945 | 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") |
| 949 | 949 | AM_RANGE(0xfe00, 0xffff) AM_RAM |
| 950 | 950 | ADDRESS_MAP_END |
| 951 | 951 | |
| 952 | | WRITE8_MEMBER(goldstar_state::unkcm_0x02_w) |
| 952 | WRITE8_MEMBER(unkch_state::unkcm_0x02_w) |
| 953 | 953 | { |
| 954 | 954 | //popmessage("unkcm_0x02_w %02x", data); |
| 955 | 955 | } |
| 956 | 956 | |
| 957 | | WRITE8_MEMBER(goldstar_state::unkcm_0x03_w) |
| 957 | WRITE8_MEMBER(unkch_state::unkcm_0x03_w) |
| 958 | 958 | { |
| 959 | 959 | //popmessage("unkcm_0x03_w %02x", data); |
| 960 | 960 | |
| r244844 | r244845 | |
| 964 | 964 | } |
| 965 | 965 | |
| 966 | 966 | |
| 967 | | WRITE8_MEMBER(goldstar_state::unkcm_0x11_w) |
| 967 | WRITE8_MEMBER(unkch_state::unkcm_0x11_w) |
| 968 | 968 | { |
| 969 | 969 | //popmessage("unkcm_0x11_w %02x", data); |
| 970 | 970 | } |
| 971 | 971 | |
| 972 | | WRITE8_MEMBER(goldstar_state::unkcm_0x12_w) |
| 972 | WRITE8_MEMBER(unkch_state::unkcm_0x12_w) |
| 973 | 973 | { |
| 974 | 974 | // popmessage("unkcm_0x12_w %02x", data); |
| 975 | 975 | } |
| 976 | 976 | |
| 977 | 977 | |
| 978 | | static ADDRESS_MAP_START( unkch_portmap, AS_IO, 8, goldstar_state ) |
| 978 | static ADDRESS_MAP_START( unkch_portmap, AS_IO, 8, unkch_state ) |
| 979 | 979 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 980 | 980 | |
| 981 | 981 | AM_RANGE(0x02, 0x02) AM_WRITE(unkcm_0x02_w) |
| r244844 | r244845 | |
| 992 | 992 | ADDRESS_MAP_END |
| 993 | 993 | |
| 994 | 994 | |
| 995 | | static ADDRESS_MAP_START( megaline_map, AS_PROGRAM, 8, goldstar_state ) |
| 995 | static ADDRESS_MAP_START( megaline_map, AS_PROGRAM, 8, unkch_state ) |
| 996 | 996 | /* Reels stuff are there just as placeholder, and obviously in wrong offset */ |
| 997 | 997 | AM_RANGE(0x0000, 0x9fff) AM_ROM |
| 998 | 998 | |
| r244844 | r244845 | |
| 1006 | 1006 | AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") |
| 1007 | 1007 | AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") |
| 1008 | 1008 | |
| 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") |
| 1012 | 1012 | 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") |
| 1016 | 1016 | AM_RANGE(0xfe00, 0xffff) AM_RAM |
| 1017 | 1017 | ADDRESS_MAP_END |
| 1018 | 1018 | |
| r244844 | r244845 | |
| 1034 | 1034 | ADDRESS_MAP_END |
| 1035 | 1035 | |
| 1036 | 1036 | |
| 1037 | | static ADDRESS_MAP_START( bonusch_map, AS_PROGRAM, 8, goldstar_state ) |
| 1037 | static ADDRESS_MAP_START( bonusch_map, AS_PROGRAM, 8, unkch_state ) |
| 1038 | 1038 | /* Reels stuff and RAM are there just as placeholder, and obviously in wrong offset */ |
| 1039 | 1039 | |
| 1040 | 1040 | AM_RANGE(0x0000, 0xbfff) AM_ROM // ok |
| r244844 | r244845 | |
| 1054 | 1054 | AM_RANGE(0xf680, 0xf6bf) AM_RAM AM_SHARE("reel2_scroll") |
| 1055 | 1055 | AM_RANGE(0xf700, 0xf73f) AM_RAM AM_SHARE("reel3_scroll") |
| 1056 | 1056 | |
| 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") |
| 1061 | 1060 | ADDRESS_MAP_END |
| 1062 | 1061 | |
| 1063 | 1062 | /* Bonus Chance W-8 |
| r244844 | r244845 | |
| 7580 | 7579 | MACHINE_CONFIG_END |
| 7581 | 7580 | |
| 7582 | 7581 | |
| 7583 | | static MACHINE_CONFIG_START( star100, goldstar_state ) |
| 7582 | static MACHINE_CONFIG_START( star100, sangho_state ) |
| 7584 | 7583 | |
| 7585 | 7584 | /* basic machine hardware */ |
| 7586 | 7585 | MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) |
| 7587 | 7586 | MCFG_CPU_PROGRAM_MAP(star100_map) |
| 7588 | 7587 | 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) |
| 7590 | 7589 | |
| 7591 | 7590 | /* video hardware */ |
| 7592 | 7591 | MCFG_SCREEN_ADD("screen", RASTER) |
| r244844 | r244845 | |
| 7594 | 7593 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 7595 | 7594 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 7596 | 7595 | 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) |
| 7598 | 7597 | MCFG_SCREEN_PALETTE("palette") |
| 7599 | 7598 | |
| 7600 | 7599 | MCFG_PALETTE_ADD("palette", 0x100) |
| r244844 | r244845 | |
| 7604 | 7603 | |
| 7605 | 7604 | MCFG_NVRAM_ADD_1FILL("nvram") |
| 7606 | 7605 | |
| 7607 | | MCFG_VIDEO_START_OVERRIDE(goldstar_state, sangho) |
| 7606 | MCFG_VIDEO_START_OVERRIDE(sangho_state, sangho) |
| 7608 | 7607 | |
| 7609 | 7608 | /* sound hardware */ |
| 7610 | 7609 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| r244844 | r244845 | |
| 8735 | 8734 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00) /* analyzed for clips */ |
| 8736 | 8735 | MACHINE_CONFIG_END |
| 8737 | 8736 | |
| 8738 | | static MACHINE_CONFIG_START( unkch, goldstar_state ) |
| 8737 | static MACHINE_CONFIG_START( unkch, unkch_state ) |
| 8739 | 8738 | |
| 8740 | 8739 | /* basic machine hardware */ |
| 8741 | 8740 | MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) |
| r244844 | r244845 | |
| 8750 | 8749 | // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 8751 | 8750 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 8752 | 8751 | 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) |
| 8754 | 8753 | MCFG_SCREEN_PALETTE("palette") |
| 8755 | 8754 | |
| 8756 | 8755 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", unkch) |
| r244844 | r244845 | |
| 8759 | 8758 | |
| 8760 | 8759 | //MCFG_NVRAM_HANDLER(goldstar) |
| 8761 | 8760 | |
| 8762 | | MCFG_VIDEO_START_OVERRIDE(goldstar_state,unkch) |
| 8761 | MCFG_VIDEO_START_OVERRIDE(unkch_state, unkch) |
| 8763 | 8762 | |
| 8764 | 8763 | /* sound hardware */ |
| 8765 | 8764 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| r244844 | r244845 | |
| 8818 | 8817 | MACHINE_CONFIG_END |
| 8819 | 8818 | |
| 8820 | 8819 | |
| 8821 | | static MACHINE_CONFIG_START( megaline, goldstar_state ) |
| 8820 | static MACHINE_CONFIG_START( megaline, unkch_state ) |
| 8822 | 8821 | |
| 8823 | 8822 | /* basic machine hardware */ |
| 8824 | 8823 | MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) |
| r244844 | r244845 | |
| 8868 | 8867 | MACHINE_CONFIG_END |
| 8869 | 8868 | |
| 8870 | 8869 | |
| 8871 | | static MACHINE_CONFIG_START( bonusch, goldstar_state ) |
| 8870 | static MACHINE_CONFIG_START( bonusch, unkch_state ) |
| 8872 | 8871 | |
| 8873 | 8872 | /* basic machine hardware */ |
| 8874 | 8873 | MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) |
| r244844 | r244845 | |
| 14022 | 14021 | } |
| 14023 | 14022 | |
| 14024 | 14023 | /* todo: remove these patches! */ |
| 14025 | | DRIVER_INIT_MEMBER(goldstar_state,unkch1) |
| 14024 | DRIVER_INIT_MEMBER(unkch_state, unkch1) |
| 14026 | 14025 | { |
| 14027 | 14026 | UINT8 *ROM = memregion("maincpu")->base(); |
| 14028 | 14027 | ROM[0x9d52] = 0x00; |
| 14029 | 14028 | ROM[0x9d53] = 0x00; |
| 14030 | 14029 | } |
| 14031 | 14030 | |
| 14032 | | DRIVER_INIT_MEMBER(goldstar_state,unkch3) |
| 14031 | DRIVER_INIT_MEMBER(unkch_state, unkch3) |
| 14033 | 14032 | { |
| 14034 | 14033 | UINT8 *ROM = memregion("maincpu")->base(); |
| 14035 | 14034 | ROM[0x9b86] = 0x00; |
| 14036 | 14035 | ROM[0x9b87] = 0x00; |
| 14037 | 14036 | } |
| 14038 | 14037 | |
| 14039 | | DRIVER_INIT_MEMBER(goldstar_state,unkch4) |
| 14038 | DRIVER_INIT_MEMBER(unkch_state, unkch4) |
| 14040 | 14039 | { |
| 14041 | 14040 | UINT8 *ROM = memregion("maincpu")->base(); |
| 14042 | 14041 | ROM[0x9a6e] = 0x00; |
| r244844 | r244845 | |
| 14261 | 14260 | GAME( 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" |
| 14262 | 14261 | |
| 14263 | 14262 | // 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?) |
| 14264 | | GAME( 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 ) |
| 14265 | | GAME( 1999, unkch2, unkch1, unkch, unkch, goldstar_state, unkch1, ROT0, "bootleg", "Super Cherry Gold (bootleg of Super Cherry Master)", GAME_NOT_WORKING|GAME_NO_SOUND ) |
| 14266 | | GAME( 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? |
| 14267 | | GAME( 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 |
| 14263 | GAME( 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 ) |
| 14264 | GAME( 1999, unkch2, unkch1, unkch, unkch, unkch_state, unkch1, ROT0, "bootleg", "Super Cherry Gold (bootleg of Super Cherry Master)", GAME_NOT_WORKING|GAME_NO_SOUND ) |
| 14265 | GAME( 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? |
| 14266 | GAME( 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 |
| 14268 | 14267 | |
| 14269 | 14268 | |
| 14270 | 14269 | /* Stealth sets. |
trunk/src/mame/includes/goldstar.h
| r244844 | r244845 | |
| 13 | 13 | m_reel1_scroll(*this, "reel1_scroll"), |
| 14 | 14 | m_reel2_scroll(*this, "reel2_scroll"), |
| 15 | 15 | 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"), |
| 19 | 16 | m_maincpu(*this, "maincpu"), |
| 20 | 17 | m_gfxdecode(*this, "gfxdecode"), |
| 21 | 18 | m_palette(*this, "palette") { } |
| r244844 | r244845 | |
| 38 | 35 | optional_shared_ptr<UINT8> m_reel3_scroll; |
| 39 | 36 | |
| 40 | 37 | |
| 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; |
| 45 | 38 | UINT8 m_unkch_vidreg; |
| 46 | 39 | |
| 47 | 40 | tilemap_t *m_reel1_tilemap; |
| r244844 | r244845 | |
| 54 | 47 | UINT8 m_cmaster_girl_num; |
| 55 | 48 | UINT8 m_cmaster_girl_pal; |
| 56 | 49 | UINT8 m_cm_enable_reg; |
| 57 | | UINT8 m_sangho_enable_reg; |
| 58 | 50 | UINT8 m_cm_girl_scroll; |
| 59 | 51 | UINT8 m_lucky8_nmi_enable; |
| 60 | 52 | int m_tile_bank; |
| r244844 | r244845 | |
| 70 | 62 | DECLARE_WRITE8_MEMBER(magodds_outb850_w); |
| 71 | 63 | DECLARE_WRITE8_MEMBER(magodds_outb860_w); |
| 72 | 64 | 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); |
| 78 | 65 | DECLARE_READ8_MEMBER(fixedvalb4_r); |
| 79 | 66 | DECLARE_READ8_MEMBER(fixedvala8_r); |
| 80 | 67 | DECLARE_READ8_MEMBER(fixedval38_r); |
| r244844 | r244845 | |
| 96 | 83 | DECLARE_READ8_MEMBER(fixedval7d_r); |
| 97 | 84 | DECLARE_WRITE8_MEMBER(cm_girl_scroll_w); |
| 98 | 85 | DECLARE_WRITE8_MEMBER(cm_outport0_w); |
| 99 | | DECLARE_WRITE8_MEMBER(sangho_enable_w); |
| 100 | | DECLARE_WRITE8_MEMBER(sangho_coincount_w); |
| 101 | 86 | DECLARE_WRITE8_MEMBER(goldstar_fg_vidram_w); |
| 102 | 87 | 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); |
| 107 | 88 | DECLARE_WRITE8_MEMBER(goldstar_reel1_ram_w); |
| 108 | 89 | DECLARE_WRITE8_MEMBER(goldstar_reel2_ram_w); |
| 109 | 90 | 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); |
| 116 | 91 | DECLARE_WRITE8_MEMBER(goldstar_fa00_w); |
| 117 | 92 | DECLARE_WRITE8_MEMBER(cm_background_col_w); |
| 118 | 93 | DECLARE_WRITE8_MEMBER(system_outputa_w); |
| r244844 | r244845 | |
| 120 | 95 | DECLARE_WRITE8_MEMBER(system_outputc_w); |
| 121 | 96 | DECLARE_WRITE8_MEMBER(ay8910_outputa_w); |
| 122 | 97 | DECLARE_WRITE8_MEMBER(ay8910_outputb_w); |
| 123 | | DECLARE_DRIVER_INIT(unkch3); |
| 124 | 98 | DECLARE_DRIVER_INIT(goldstar); |
| 125 | 99 | DECLARE_DRIVER_INIT(cmast91); |
| 126 | 100 | DECLARE_DRIVER_INIT(nfb96_dk); |
| 127 | 101 | DECLARE_DRIVER_INIT(cm); |
| 128 | 102 | DECLARE_DRIVER_INIT(chry10); |
| 129 | | DECLARE_DRIVER_INIT(unkch4); |
| 130 | 103 | DECLARE_DRIVER_INIT(lucky8a); |
| 131 | 104 | DECLARE_DRIVER_INIT(nfb96sea); |
| 132 | 105 | DECLARE_DRIVER_INIT(schery97a); |
| r244844 | r244845 | |
| 141 | 114 | DECLARE_DRIVER_INIT(cherrys); |
| 142 | 115 | DECLARE_DRIVER_INIT(schery97); |
| 143 | 116 | DECLARE_DRIVER_INIT(nfb96_d); |
| 144 | | DECLARE_DRIVER_INIT(unkch1); |
| 145 | 117 | DECLARE_DRIVER_INIT(tonypok); |
| 146 | 118 | DECLARE_DRIVER_INIT(skill98); |
| 147 | 119 | DECLARE_DRIVER_INIT(po33); |
| r244844 | r244845 | |
| 152 | 124 | DECLARE_DRIVER_INIT(fb2010); |
| 153 | 125 | DECLARE_DRIVER_INIT(super9); |
| 154 | 126 | 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); |
| 157 | 127 | TILE_GET_INFO_MEMBER(get_magical_fg_tile_info); |
| 158 | 128 | TILE_GET_INFO_MEMBER(get_cherrym_fg_tile_info); |
| 159 | 129 | TILE_GET_INFO_MEMBER(get_goldstar_reel1_tile_info); |
| 160 | 130 | TILE_GET_INFO_MEMBER(get_goldstar_reel2_tile_info); |
| 161 | 131 | 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); |
| 168 | 132 | DECLARE_VIDEO_START(goldstar); |
| 169 | | DECLARE_VIDEO_START(sangho); |
| 170 | 133 | DECLARE_PALETTE_INIT(cm); |
| 171 | 134 | DECLARE_VIDEO_START(cherrym); |
| 172 | 135 | DECLARE_PALETTE_INIT(cmast91); |
| r244844 | r244845 | |
| 174 | 137 | DECLARE_VIDEO_START(bingowng); |
| 175 | 138 | DECLARE_VIDEO_START(magical); |
| 176 | 139 | DECLARE_PALETTE_INIT(magodds); |
| 177 | | DECLARE_VIDEO_START(unkch); |
| 178 | 140 | UINT32 screen_update_goldstar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 179 | 141 | UINT32 screen_update_cmast91(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 180 | 142 | UINT32 screen_update_bingowng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 181 | 143 | UINT32 screen_update_magical(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 182 | 144 | 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); |
| 185 | 145 | INTERRUPT_GEN_MEMBER(lucky8_irq); |
| 186 | 146 | void do_blockswaps(UINT8* ROM); |
| 187 | 147 | void dump_to_file( UINT8* ROM); |
| r244844 | r244845 | |
| 191 | 151 | required_device<gfxdecode_device> m_gfxdecode; |
| 192 | 152 | required_device<palette_device> m_palette; |
| 193 | 153 | }; |
| 154 | |
| 155 | |
| 156 | class sangho_state : public goldstar_state |
| 157 | { |
| 158 | public: |
| 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 | |
| 181 | protected: |
| 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 | |
| 188 | private: |
| 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 | |
| 197 | class unkch_state : public goldstar_state |
| 198 | { |
| 199 | public: |
| 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 | |
| 226 | protected: |
| 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 | |
| 231 | private: |
| 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
| r244844 | r244845 | |
| 58 | 58 | m_fg_tilemap->mark_tile_dirty(offset); |
| 59 | 59 | } |
| 60 | 60 | |
| 61 | | WRITE8_MEMBER(goldstar_state::sangho_fg_vidram_w) |
| 62 | | { |
| 63 | | m_fg_vidram[offset] = data; |
| 64 | | m_fg_tilemap->mark_tile_dirty(offset); |
| 65 | | } |
| 66 | 61 | |
| 67 | | WRITE8_MEMBER(goldstar_state::sangho_fg_atrram_w) |
| 68 | | { |
| 69 | | m_fg_atrram[offset] = data; |
| 70 | | m_fg_tilemap->mark_tile_dirty(offset); |
| 71 | | } |
| 72 | | |
| 73 | | WRITE8_MEMBER(goldstar_state::sangho_bg_vidram_w) |
| 74 | | { |
| 75 | | m_bg_vidram[offset] = data; |
| 76 | | m_bg_tilemap->mark_tile_dirty(offset); |
| 77 | | } |
| 78 | | |
| 79 | | WRITE8_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 | | |
| 86 | 62 | TILE_GET_INFO_MEMBER(goldstar_state::get_goldstar_fg_tile_info) |
| 87 | 63 | { |
| 88 | 64 | int code = m_fg_vidram[tile_index]; |
| r244844 | r244845 | |
| 94 | 70 | 0); |
| 95 | 71 | } |
| 96 | 72 | |
| 97 | | TILE_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 | | |
| 108 | | TILE_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 | | |
| 119 | 73 | TILE_GET_INFO_MEMBER(goldstar_state::get_magical_fg_tile_info) |
| 120 | 74 | { |
| 121 | 75 | int code = m_fg_vidram[tile_index]; |
| r244844 | r244845 | |
| 191 | 145 | 0); |
| 192 | 146 | } |
| 193 | 147 | |
| 194 | | WRITE8_MEMBER(goldstar_state::unkch_reel1_attrram_w) |
| 195 | | { |
| 196 | | m_reel1_attrram[offset] = data; |
| 197 | | m_reel1_tilemap->mark_tile_dirty(offset); |
| 198 | | } |
| 199 | | |
| 200 | | WRITE8_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 | | |
| 207 | | WRITE8_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 | | |
| 214 | | TILE_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 | | |
| 225 | | TILE_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 | | |
| 236 | | TILE_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 | | |
| 248 | | WRITE8_MEMBER(goldstar_state::sangho_reel1_attrram_w) |
| 249 | | { |
| 250 | | m_reel1_attrram[offset] = data; |
| 251 | | m_reel1_tilemap->mark_tile_dirty(offset); |
| 252 | | } |
| 253 | | |
| 254 | | WRITE8_MEMBER(goldstar_state::sangho_reel2_attrram_w) |
| 255 | | { |
| 256 | | m_reel2_attrram[offset] = data; |
| 257 | | m_reel2_tilemap->mark_tile_dirty(offset); |
| 258 | | } |
| 259 | | |
| 260 | | WRITE8_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 | | |
| 267 | | TILE_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 | | |
| 278 | | TILE_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 | | |
| 289 | | TILE_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 | | |
| 301 | 148 | VIDEO_START_MEMBER(goldstar_state, goldstar) |
| 302 | 149 | { |
| 303 | 150 | 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); |
| r244844 | r244845 | |
| 345 | 192 | m_cm_enable_reg = 0x0b; |
| 346 | 193 | } |
| 347 | 194 | |
| 348 | | VIDEO_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 | | |
| 368 | 195 | VIDEO_START_MEMBER(goldstar_state, cherrym) |
| 369 | 196 | { |
| 370 | 197 | 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); |
| r244844 | r244845 | |
| 384 | 211 | m_cm_enable_reg = 0x0b; |
| 385 | 212 | } |
| 386 | 213 | |
| 387 | | VIDEO_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); |
| 390 | 214 | |
| 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 | | |
| 405 | 215 | WRITE8_MEMBER(goldstar_state::goldstar_fa00_w) |
| 406 | 216 | { |
| 407 | 217 | /* bit 1 toggles continuously - might be irq enable or watchdog reset */ |
| r244844 | r244845 | |
| 600 | 410 | return 0; |
| 601 | 411 | } |
| 602 | 412 | |
| 603 | | |
| 604 | | UINT32 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 | | |
| 657 | 413 | UINT32 goldstar_state::screen_update_cmast91(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 658 | 414 | { |
| 659 | 415 | int i; |
| r244844 | r244845 | |
| 730 | 486 | } |
| 731 | 487 | |
| 732 | 488 | |
| 733 | | UINT32 goldstar_state::screen_update_sangho(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 489 | |
| 490 | WRITE8_MEMBER(sangho_state::fg_vidram_w) |
| 734 | 491 | { |
| 492 | m_fg_vidram[offset] = data; |
| 493 | m_fg_tilemap->mark_tile_dirty(offset); |
| 494 | } |
| 495 | |
| 496 | WRITE8_MEMBER(sangho_state::fg_atrram_w) |
| 497 | { |
| 498 | m_fg_atrram[offset] = data; |
| 499 | m_fg_tilemap->mark_tile_dirty(offset); |
| 500 | } |
| 501 | |
| 502 | WRITE8_MEMBER(sangho_state::bg_vidram_w) |
| 503 | { |
| 504 | m_bg_vidram[offset] = data; |
| 505 | m_bg_tilemap->mark_tile_dirty(offset); |
| 506 | } |
| 507 | |
| 508 | WRITE8_MEMBER(sangho_state::bg_atrram_w) |
| 509 | { |
| 510 | m_bg_atrram[offset] = data; |
| 511 | m_bg_tilemap->mark_tile_dirty(offset); |
| 512 | } |
| 513 | |
| 514 | WRITE8_MEMBER(sangho_state::reel1_attrram_w) |
| 515 | { |
| 516 | m_reel1_attrram[offset] = data; |
| 517 | m_reel1_tilemap->mark_tile_dirty(offset); |
| 518 | } |
| 519 | |
| 520 | WRITE8_MEMBER(sangho_state::reel2_attrram_w) |
| 521 | { |
| 522 | m_reel2_attrram[offset] = data; |
| 523 | m_reel2_tilemap->mark_tile_dirty(offset); |
| 524 | } |
| 525 | |
| 526 | WRITE8_MEMBER(sangho_state::reel3_attrram_w) |
| 527 | { |
| 528 | m_reel3_attrram[offset] = data; |
| 529 | m_reel3_tilemap->mark_tile_dirty(offset); |
| 530 | } |
| 531 | |
| 532 | |
| 533 | TILE_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 | |
| 544 | TILE_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 | |
| 555 | TILE_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 | |
| 566 | TILE_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 | |
| 577 | TILE_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 | |
| 589 | VIDEO_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 | |
| 606 | UINT32 sangho_state::screen_update_sangho(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 607 | { |
| 735 | 608 | int i; |
| 736 | 609 | |
| 737 | 610 | bitmap.fill(m_palette->black_pen(), cliprect); |
| 738 | 611 | |
| 739 | | if (m_sangho_enable_reg &0x01) |
| 612 | if (m_enable_reg & 0x01) |
| 740 | 613 | { |
| 741 | 614 | /* disable reels (only render bg and fg layers) */ |
| 742 | 615 | m_bg_tilemap->set_scrolly(0, -16); |
| r244844 | r244845 | |
| 772 | 645 | |
| 773 | 646 | return 0; |
| 774 | 647 | } |
| 648 | |
| 649 | |
| 650 | |
| 651 | WRITE8_MEMBER(unkch_state::reel1_attrram_w) |
| 652 | { |
| 653 | m_reel1_attrram[offset] = data; |
| 654 | m_reel1_tilemap->mark_tile_dirty(offset); |
| 655 | } |
| 656 | |
| 657 | WRITE8_MEMBER(unkch_state::reel2_attrram_w) |
| 658 | { |
| 659 | m_reel2_attrram[offset] = data; |
| 660 | m_reel2_tilemap->mark_tile_dirty(offset); |
| 661 | } |
| 662 | |
| 663 | |
| 664 | WRITE8_MEMBER(unkch_state::reel3_attrram_w) |
| 665 | { |
| 666 | m_reel3_attrram[offset] = data; |
| 667 | m_reel3_tilemap->mark_tile_dirty(offset); |
| 668 | } |
| 669 | |
| 670 | |
| 671 | TILE_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 | |
| 682 | TILE_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 | |
| 693 | TILE_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 | |
| 705 | VIDEO_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 | |
| 725 | UINT32 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 | } |