trunk/src/mame/drivers/fresh.c
| r0 | r20764 | |
| 1 | |
| 2 | /* |
| 3 | |
| 4 | fruit fresh by chain leisure electronic co., ltd. |
| 5 | |
| 6 | cpu 68000 xtal 24Mhz |
| 7 | |
| 8 | 4* 8 dipswitchs |
| 9 | |
| 10 | 2 jumpers HOP or SSR positions |
| 11 | |
| 12 | SW1 for reset? |
| 13 | |
| 14 | 2x Altera epm7064lc84 |
| 15 | |
| 16 | rom 5 and 6 are prg roms |
| 17 | |
| 18 | */ |
| 19 | |
| 20 | #include "emu.h" |
| 21 | #include "cpu/m68000/m68000.h" |
| 22 | |
| 23 | |
| 24 | |
| 25 | |
| 26 | |
| 27 | class fresh_state : public driver_device |
| 28 | { |
| 29 | public: |
| 30 | fresh_state(const machine_config &mconfig, device_type type, const char *tag) |
| 31 | : driver_device(mconfig, type, tag) , |
| 32 | m_bg_videoram(*this, "bg_videoram"), |
| 33 | m_bg_videoram_2(*this, "bg_videoram_2"), |
| 34 | m_paletteram_1(*this, "paletteram_1"), |
| 35 | m_paletteram_2(*this, "paletteram_2") |
| 36 | |
| 37 | { } |
| 38 | |
| 39 | tilemap_t *m_bg_tilemap; |
| 40 | tilemap_t *m_fg_tilemap; |
| 41 | |
| 42 | required_shared_ptr<UINT16> m_bg_videoram; |
| 43 | required_shared_ptr<UINT16> m_bg_videoram_2; |
| 44 | |
| 45 | required_shared_ptr<UINT16> m_paletteram_1; |
| 46 | required_shared_ptr<UINT16> m_paletteram_2; |
| 47 | |
| 48 | DECLARE_WRITE16_MEMBER(fresh_bg_videoram_w); |
| 49 | TILE_GET_INFO_MEMBER(get_fresh_bg_tile_info); |
| 50 | |
| 51 | DECLARE_READ16_MEMBER( unk_r ) |
| 52 | { |
| 53 | return machine().rand(); |
| 54 | } |
| 55 | DECLARE_READ16_MEMBER( unk2_r ) |
| 56 | { |
| 57 | return 0x10; |
| 58 | } |
| 59 | |
| 60 | |
| 61 | virtual void video_start(); |
| 62 | UINT32 screen_update_fresh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 63 | }; |
| 64 | |
| 65 | |
| 66 | TILE_GET_INFO_MEMBER(fresh_state::get_fresh_bg_tile_info) |
| 67 | { |
| 68 | int tileno; |
| 69 | tileno = m_bg_videoram[tile_index]; |
| 70 | SET_TILE_INFO_MEMBER(2, tileno, 0, 0); |
| 71 | } |
| 72 | |
| 73 | |
| 74 | WRITE16_MEMBER(fresh_state::fresh_bg_videoram_w) |
| 75 | { |
| 76 | COMBINE_DATA(&m_bg_videoram[offset]); |
| 77 | m_bg_tilemap->mark_tile_dirty(offset); |
| 78 | } |
| 79 | |
| 80 | void fresh_state::video_start() |
| 81 | { |
| 82 | m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(fresh_state::get_fresh_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 512); |
| 83 | // m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(fresh_state::get_fresh_fg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 4, 128, 64); |
| 84 | |
| 85 | // m_fg_tilemap->set_transparent_pen(255); |
| 86 | } |
| 87 | |
| 88 | UINT32 fresh_state::screen_update_fresh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 89 | { |
| 90 | m_bg_tilemap->draw(bitmap, cliprect, 0, 0); |
| 91 | // m_fg_tilemap->draw(bitmap, cliprect, 0, 0); |
| 92 | |
| 93 | return 0; |
| 94 | } |
| 95 | |
| 96 | |
| 97 | static ADDRESS_MAP_START( fresh_map, AS_PROGRAM, 16, fresh_state ) |
| 98 | AM_RANGE(0x000000, 0x03ffff) AM_ROM |
| 99 | |
| 100 | AM_RANGE(0xC00000, 0xC0ffff) AM_RAM |
| 101 | AM_RANGE(0xC10000, 0xC1ffff) AM_RAM |
| 102 | AM_RANGE(0xC20000, 0xC2ffff) AM_RAM_WRITE( fresh_bg_videoram_w ) AM_SHARE( "bg_videoram" ) |
| 103 | AM_RANGE(0xC30000, 0xC3ffff) AM_RAM AM_SHARE("bg_videoram_2") |
| 104 | |
| 105 | |
| 106 | // written together |
| 107 | AM_RANGE(0xC40000, 0xC417ff) AM_RAM AM_SHARE( "paletteram_1" ) // 16-bit |
| 108 | AM_RANGE(0xC50000, 0xC517ff) AM_RAM AM_SHARE( "paletteram_2" ) // 8-bit |
| 109 | |
| 110 | AM_RANGE(0xD40000, 0xD40001) AM_READ(unk_r) |
| 111 | AM_RANGE(0xD70000, 0xD70001) AM_READ(unk2_r) |
| 112 | AM_RANGE(0xF00000, 0xF0FFFF) AM_RAM |
| 113 | |
| 114 | |
| 115 | // AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(fresh_bg_videoram_w) AM_SHARE("bg_videoram") // Background |
| 116 | // AM_RANGE(0x210000, 0x213fff) AM_RAM_WRITE(fresh_fg_videoram_w) AM_SHARE("fg_videoram") // Foreground |
| 117 | // AM_RANGE(0x220000, 0x2203ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") |
| 118 | // AM_RANGE(0x230000, 0x230001) AM_WRITE(soundlatch_word_w) |
| 119 | // AM_RANGE(0x230100, 0x230101) AM_READ_PORT("DSW") |
| 120 | // AM_RANGE(0x230200, 0x230201) AM_READ_PORT("INPUTS") |
| 121 | ADDRESS_MAP_END |
| 122 | |
| 123 | static INPUT_PORTS_START( fresh ) |
| 124 | INPUT_PORTS_END |
| 125 | |
| 126 | static const gfx_layout tiles8x8_layout = |
| 127 | { |
| 128 | 8,8, |
| 129 | RGN_FRAC(1,1), |
| 130 | 8, |
| 131 | { 0,1, 2,3, 4,5,6,7 }, |
| 132 | { 0, 8, 16, 24, 32, 40, 48, 56 }, |
| 133 | { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 }, |
| 134 | 64*8 |
| 135 | }; |
| 136 | |
| 137 | |
| 138 | static GFXDECODE_START( fresh ) |
| 139 | GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 2 ) |
| 140 | GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout, 0, 2 ) |
| 141 | GFXDECODE_ENTRY( "gfx3", 0, tiles8x8_layout, 0, 2 ) |
| 142 | GFXDECODE_ENTRY( "gfx4", 0, tiles8x8_layout, 0, 2 ) |
| 143 | GFXDECODE_END |
| 144 | |
| 145 | static MACHINE_CONFIG_START( fresh, fresh_state ) |
| 146 | |
| 147 | /* basic machine hardware */ |
| 148 | MCFG_CPU_ADD("maincpu", M68000, 24000000/2 ) |
| 149 | MCFG_CPU_PROGRAM_MAP(fresh_map) |
| 150 | MCFG_CPU_VBLANK_INT_DRIVER("screen", fresh_state, irq6_line_hold) // 4,5,6 valid |
| 151 | |
| 152 | /* video hardware */ |
| 153 | MCFG_SCREEN_ADD("screen", RASTER) |
| 154 | MCFG_SCREEN_REFRESH_RATE(60) |
| 155 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 156 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 157 | MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) |
| 158 | MCFG_SCREEN_UPDATE_DRIVER(fresh_state, screen_update_fresh) |
| 159 | |
| 160 | MCFG_PALETTE_LENGTH(0x200) |
| 161 | MCFG_GFXDECODE(fresh) |
| 162 | |
| 163 | /* sound hw? */ |
| 164 | MACHINE_CONFIG_END |
| 165 | |
| 166 | |
| 167 | ROM_START( fresh ) |
| 168 | ROM_REGION( 0x40000, "maincpu", 0 ) /* 68k */ |
| 169 | ROM_LOAD16_BYTE( "fruit-fresh5.u44", 0x00001, 0x20000, CRC(cb37d3c5) SHA1(3b7797d475769d37ed1e9774df8d4b5899fb92a3) ) |
| 170 | ROM_LOAD16_BYTE( "fruit-fresh6.u59", 0x00000, 0x20000, CRC(fc0290be) SHA1(02e3b3563b15ae585684a8f510f48a8c90b248fa) ) |
| 171 | |
| 172 | ROM_REGION( 0x80000, "gfx1", 0 ) |
| 173 | ROM_LOAD( "fruit-fresh1.u18", 0x00000, 0x80000, CRC(ee77cdcd) SHA1(8e162640d23bd1b5a2ed9305cc4b9df1cb0f3e80) ) |
| 174 | ROM_REGION( 0x80000, "gfx2", 0 ) |
| 175 | ROM_LOAD( "fruit-fresh3.u19", 0x00000, 0x80000, CRC(80cc71b3) SHA1(89a2272266ccdbd01abbc85c1f8200fa9d8aa441) ) |
| 176 | ROM_REGION( 0x80000, "gfx3", 0 ) |
| 177 | ROM_LOAD( "fruit-fresh2.u45", 0x00000, 0x80000, CRC(8a06a1ab) SHA1(4bc020e4a031df995e6ebaf49d62989004092b60) ) |
| 178 | ROM_REGION( 0x80000, "gfx4", 0 ) |
| 179 | ROM_LOAD( "fruit-fresh4.u46", 0x00000, 0x80000, CRC(9b6c7571) SHA1(649cf3c50e2cd8c02f0f730e5ded59cf0ea37c37) ) |
| 180 | |
| 181 | ROM_END |
| 182 | |
| 183 | |
| 184 | |
| 185 | |
| 186 | GAME( 199?, fresh, 0, fresh, fresh, driver_device, 0, ROT0, "Chain Leisure", "Fruit Fresh", GAME_NOT_WORKING|GAME_NO_SOUND ) |
trunk/src/mame/drivers/goldstar.c
| r20763 | r20764 | |
| 9928 | 9928 | |
| 9929 | 9929 | |
| 9930 | 9930 | |
| 9931 | ROM_START( fb2010 ) |
| 9932 | ROM_REGION( 0x20000, "maincpu", 0 ) |
| 9933 | ROM_LOAD( "fb2013r.bin", 0x00000, 0x1000, CRC(9cc75315) SHA1(f77fbce1037dbf38ddaa4ce79266d62e5cc7989e) ) |
| 9934 | ROM_CONTINUE(0x4000, 0x1000) |
| 9935 | ROM_CONTINUE(0x3000, 0x1000) |
| 9936 | ROM_CONTINUE(0x7000, 0x1000) |
| 9937 | ROM_CONTINUE(0x1000, 0x1000) |
| 9938 | ROM_CONTINUE(0x6000, 0x1000) |
| 9939 | ROM_CONTINUE(0x2000, 0x1000) |
| 9940 | ROM_CONTINUE(0x5000, 0x1000) |
| 9941 | ROM_CONTINUE(0x8000, 0x1000) |
| 9942 | ROM_CONTINUE(0x9000, 0x1000) |
| 9943 | ROM_CONTINUE(0xa000, 0x1000) |
| 9944 | ROM_CONTINUE(0xb000, 0x1000) |
| 9945 | ROM_CONTINUE(0xc000, 0x1000) |
| 9946 | ROM_CONTINUE(0xd000, 0x1000) |
| 9947 | ROM_CONTINUE(0xe000, 0x1000) |
| 9948 | ROM_CONTINUE(0xf000, 0x1000) |
| 9949 | ROM_REGION( 0x20000, "graphics", 0 ) |
| 9950 | ROM_LOAD( "gfx", 0x00000, 0x20000, NO_DUMP ) |
| 9931 | 9951 | |
| 9952 | ROM_REGION( 0x18000, "gfx1", 0 ) |
| 9953 | ROM_COPY( "graphics", 0x18000, 0x00000, 0x4000 ) // 1 |
| 9954 | ROM_COPY( "graphics", 0x08000, 0x08000, 0x4000 ) // 1 |
| 9955 | ROM_COPY( "graphics", 0x04000, 0x10000, 0x4000 ) // 1 |
| 9956 | ROM_COPY( "graphics", 0x1c000, 0x04000, 0x4000 ) // 2 |
| 9957 | ROM_COPY( "graphics", 0x0c000, 0x0c000, 0x4000 ) // 2 |
| 9958 | ROM_COPY( "graphics", 0x14000, 0x14000, 0x4000 ) // 2 |
| 9959 | |
| 9960 | ROM_REGION( 0x8000, "gfx2", 0 ) |
| 9961 | ROM_COPY( "graphics", 0x02000, 0x00000, 0x2000 ) |
| 9962 | ROM_COPY( "graphics", 0x12000, 0x02000, 0x2000 ) |
| 9963 | ROM_COPY( "graphics", 0x00000, 0x04000, 0x2000 ) |
| 9964 | ROM_COPY( "graphics", 0x10000, 0x06000, 0x2000 ) |
| 9965 | |
| 9966 | ROM_REGION( 0x200, "proms", 0 ) // palette |
| 9967 | ROM_LOAD( "proms", 0x0000, 0x0200, NO_DUMP ) |
| 9968 | |
| 9969 | ROM_REGION( 0x80000, "oki", 0 ) // samples |
| 9970 | ROM_LOAD( "samples", 0x00000, 0x20000, NO_DUMP ) |
| 9971 | ROM_END |
| 9972 | |
| 9973 | |
| 9974 | READ8_MEMBER(goldstar_state::fixedval7d_r ) |
| 9975 | { |
| 9976 | return ~0x7d; |
| 9977 | } |
| 9978 | |
| 9979 | |
| 9980 | DRIVER_INIT_MEMBER(goldstar_state,fb2010) |
| 9981 | { |
| 9982 | int i; |
| 9983 | UINT8 *ROM = machine().root_device().memregion("maincpu")->base(); |
| 9984 | for (i = 0;i < 0x10000;i++) |
| 9985 | { |
| 9986 | UINT8 x = ROM[i]; |
| 9987 | |
| 9988 | switch(i & 0x22) |
| 9989 | { |
| 9990 | case 0x00: x = BITSWAP8(x^0x4c^0xff, 0,4,7,6,5,1,3,2); break; |
| 9991 | case 0x02: x = BITSWAP8(x^0xc0^0xff, 7,6,0,5,3,2,1,4); break; // 67053214 |
| 9992 | case 0x20: x = BITSWAP8(x^0x6b^0xff, 4,3,2,7,5,6,0,1); break; |
| 9993 | case 0x22: x = BITSWAP8(x^0x23^0xff, 0,6,1,3,4,5,2,7); break; |
| 9994 | } |
| 9995 | |
| 9996 | ROM[i] = x; |
| 9997 | } |
| 9998 | |
| 9999 | machine().device("maincpu")->memory().space(AS_IO).install_read_handler(0x1e, 0x1e, read8_delegate(FUNC(goldstar_state::fixedval7d_r),this)); |
| 10000 | |
| 10001 | } |
| 10002 | |
| 10003 | |
| 10004 | |
| 10005 | |
| 9932 | 10006 | /* descrambled by looking at CALLs |
| 9933 | 10007 | |
| 9934 | 10008 | 0000 -> 0000 |
| r20763 | r20764 | |
| 11543 | 11617 | GAME( 1997, pokonl97, 0, amcoe1, pokonl97, goldstar_state, po33, ROT0, "Amcoe", "Poker Only '97 (ver. 3.3)", 0 ) /* ver. 3.3 */ |
| 11544 | 11618 | GAME( 1998, match98, 0, amcoe1a, match98, goldstar_state, match133, ROT0, "Amcoe", "Match '98 (ver. 1.33)", 0 ) |
| 11545 | 11619 | |
| 11620 | |
| 11546 | 11621 | /* The Sub-PCB has a printed sticker denoting C1, C2, D or DK for the type of FPGA decryption chip used */ |
| 11547 | 11622 | /* There is known to be a special IOWA version running on the Texas C2 hardware with roms FB96P IA, FB96L IA & FB96H IA with a (c) 2000 Amcoe */ |
| 11548 | 11623 | GAME( 1996, nfb96, 0, amcoe2, nfb96, goldstar_state, nfb96_c1, ROT0, "Amcoe", "New Fruit Bonus '96 Special Edition (v3.63, C1 PCB)", 0 ) /* ver. 02-3.63 C1 Sub-PCB */ |
| r20763 | r20764 | |
| 11557 | 11632 | GAME( 1996, nc96c, nc96, amcoe2, nfb96, goldstar_state, nfb96_dk, ROT0, "Amcoe", "New Cherry '96 Special Edition (v3.62, DK PCB)", 0 ) /* DK Sub-PCB */ |
| 11558 | 11633 | GAME( 2000, nc96txt, nc96, amcoe2, nfb96tx, goldstar_state, nfb96_c2, ROT0, "Amcoe", "New Cherry '96 Special Edition (v1.32 Texas XT, C2 PCB)", 0 ) /* ver. tc1.32axt C2 Sub-PCB */ |
| 11559 | 11634 | |
| 11635 | GAME( 2009, fb2010, skill98, amcoe2, nfb96tx, goldstar_state, fb2010, ROT0, "Amcoe", "Fruit Bonus 2010", GAME_NOT_WORKING ) // no gfx dumped |
| 11636 | |
| 11560 | 11637 | GAME( 1996, roypok96, 0, amcoe2, roypok96, goldstar_state, rp35, ROT0, "Amcoe", "Royal Poker '96 (set 1)", 0 ) /* ver. 97-3.5 */ |
| 11561 | 11638 | GAME( 1996, roypok96a, roypok96, amcoe2, roypok96a, goldstar_state, rp36, ROT0, "Amcoe", "Royal Poker '96 (set 2)", 0 ) /* ver. 98-3.6 */ |
| 11562 | 11639 | GAME( 1996, roypok96b, roypok96, amcoe2, roypok96a, goldstar_state, rp36c3, ROT0, "Amcoe", "Royal Poker '96 (set 3)", 0 ) /* ver. 98-3.6 ??? */ |