Previous 199869 Revisions Next

r33633 Tuesday 2nd December, 2014 at 20:34:54 UTC by Osso
yunsun16.c: use device address map for the oki (nw)
[src/mame/drivers]yunsun16.c
[src/mame/includes]yunsun16.h
[src/mame/video]yunsun16.c

trunk/src/mame/drivers/yunsun16.c
r242144r242145
101101
102102***************************************************************************/
103103
104WRITE16_MEMBER(yunsun16_state::yunsun16_sound_bank_w)
104WRITE8_MEMBER(yunsun16_state::sound_bank_w)
105105{
106   if (ACCESSING_BITS_0_7)
107   {
108      int bank = data & 3;
109      UINT8 *dst  = memregion("oki")->base();
110      UINT8 *src  = dst + 0x80000 + 0x20000 * bank;
111      memcpy(dst + 0x20000, src, 0x20000);
112   }
106   membank("okibank")->set_entry(data & 3);
113107}
114108
115109static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, yunsun16_state )
r242144r242145
126120   AM_RANGE(0x80010c, 0x80010f) AM_RAM AM_SHARE("scrollram_1") // Scrolling
127121   AM_RANGE(0x800114, 0x800117) AM_RAM AM_SHARE("scrollram_0") // Scrolling
128122   AM_RANGE(0x800154, 0x800155) AM_RAM AM_SHARE("priorityram") // Priority
129   AM_RANGE(0x800180, 0x800181) AM_WRITE(yunsun16_sound_bank_w)    // Sound
123   AM_RANGE(0x800180, 0x800181) AM_WRITE8(sound_bank_w, 0x00ff)    // Sound
130124   AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)  // Sound
131125   AM_RANGE(0x8001fe, 0x8001ff) AM_WRITENOP    // ? 0 (during int)
132126   AM_RANGE(0x900000, 0x903fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")    // Palette
133   AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(yunsun16_vram_1_w) AM_SHARE("vram_1") // Layer 1
134   AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(yunsun16_vram_0_w) AM_SHARE("vram_0") // Layer 0
127   AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Layer 1
128   AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Layer 0
135129   AM_RANGE(0x910000, 0x910fff) AM_RAM AM_SHARE("spriteram")   // Sprites
136130   AM_RANGE(0xff0000, 0xffffff) AM_RAM
137131ADDRESS_MAP_END
r242144r242145
155149
156150DRIVER_INIT_MEMBER(yunsun16_state,magicbub)
157151{
158//  remove_mem_write16_handler (0, 0x800180, 0x800181 );
159   m_maincpu->space(AS_PROGRAM).install_write_handler(0x800188, 0x800189, write16_delegate(FUNC(yunsun16_state::magicbub_sound_command_w),this));
152   m_maincpu->space(AS_PROGRAM).unmap_write(0x800180, 0x800181);
153   m_maincpu->space(AS_PROGRAM).install_write_handler(0x800188, 0x800189, write16_delegate(FUNC(yunsun16_state::magicbub_sound_command_w), this));
160154}
161155
162156/***************************************************************************
r242144r242145
179173   AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write)       // M6295
180174ADDRESS_MAP_END
181175
176static ADDRESS_MAP_START( oki_map, AS_0, 8, yunsun16_state )
177   AM_RANGE(0x00000, 0x1ffff) AM_ROM
178   AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
179   ADDRESS_MAP_END
182180
181
183182/***************************************************************************
184183
185184
r242144r242145
566565   m_sprites_scrolldy = -0x0f;
567566}
568567
568MACHINE_START_MEMBER(yunsun16_state, shocking)
569{
570   machine_start();
571   membank("okibank")->configure_entries(0, 0x80000 / 0x20000, memregion("oki")->base(), 0x20000);
572   membank("okibank")->set_entry(0);
573}
574
575MACHINE_RESET_MEMBER(yunsun16_state, shocking)
576{
577   machine_reset();
578   membank("okibank")->set_entry(0);
579}
580
569581/***************************************************************************
570582                                Magic Bubble
571583***************************************************************************/
r242144r242145
622634   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
623635   MCFG_CPU_PROGRAM_MAP(main_map)
624636   MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state,  irq2_line_hold)
637   
638   MCFG_MACHINE_START_OVERRIDE(yunsun16_state, shocking)
639   MCFG_MACHINE_RESET_OVERRIDE(yunsun16_state, shocking)
625640
626
627641   /* video hardware */
628642   MCFG_SCREEN_ADD("screen", RASTER)
629643   MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz/2, 512, 0, 0x180-4, 260, 0, 0xe0) /* TODO: completely inaccurate */
r242144r242145
640654   MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
641655   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
642656   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
657   MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)
643658MACHINE_CONFIG_END
644659
645660
r242144r242145
786801   ROM_LOAD( "u22.bin", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
787802   ROM_LOAD( "u23.bin", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
788803
789   ROM_REGION( 0x080000 * 2, "oki", 0 )    /* Samples */
804   ROM_REGION( 0x080000, "oki", 0 )    /* Samples */
790805   ROM_LOAD( "u131", 0x000000, 0x040000, CRC(9bdb08e4) SHA1(4d8bdeb9b503b0959a6ae3f3fb3574350b01b1a1) )
791   ROM_RELOAD(       0x040000, 0x040000 )
792   ROM_RELOAD(       0x080000, 0x040000 )
793   ROM_RELOAD(       0x0c0000, 0x040000 )
794806
795807ROM_END
796808
r242144r242145
862874   ROM_LOAD( "u22.bin", 0x080000, 0x040000, CRC(436499c7) SHA1(ec1390b6d5656c99d91cf6425d319f4796bcb28a) )
863875   ROM_LOAD( "u23.bin", 0x0c0000, 0x040000, CRC(358280fe) SHA1(eac3cb65fe75bc2da14896734f4a339480b54a2c) )
864876
865   ROM_REGION( 0x080000 * 2, "oki", 0 )    /* Samples */
877   ROM_REGION( 0x080000, "oki", 0 )    /* Samples */
866878   ROM_LOAD( "u131.bin", 0x000000, 0x080000, CRC(bcf7aa12) SHA1(f7bf5258396ed0eb7e85eccf250c6d0a333a4d61) )
867   ROM_RELOAD(           0x080000, 0x080000 )
868
879   
869880ROM_END
870881
871882/***************************************************************************
r242144r242145
892903   ROM_LOAD( "yunsun16.u22", 0x080000, 0x040000, CRC(d6db0388) SHA1(f5d8f7740b602c402a8dd6c4ebd357cf15a0dfac) )
893904   ROM_LOAD( "yunsun16.u23", 0x0c0000, 0x040000, CRC(1fa33b2e) SHA1(4aa0dee8d34aac19cf6b7ba3f79ca022ad8d7760) )
894905
895   ROM_REGION( 0x080000 * 2, "oki", 0 )    /* Samples */
906   ROM_REGION( 0x080000, "oki", 0 )    /* Samples */
896907   ROM_LOAD( "yunsun16.131", 0x000000, 0x080000, CRC(d0a1bb8c) SHA1(10f33521bd6031ed73ee5c7be1382165925aa8f8) )
897   ROM_RELOAD(               0x080000, 0x080000 )
898
908   
899909ROM_END
900910
901911ROM_START( shockingk )
r242144r242145
916926   ROM_LOAD( "u22.bin", 0x080000, 0x040000, CRC(59260de1) SHA1(2dd2d7ab93fa751cb9142400a3ff91391477d555) )
917927   ROM_LOAD( "u23.bin", 0x0c0000, 0x040000, CRC(00e4af23) SHA1(a4d23f16748385dd8c87cae3e16593e5a0195c24) )
918928
919   ROM_REGION( 0x080000 * 2, "oki", 0 )    /* Samples */
929   ROM_REGION( 0x080000, "oki", 0 )    /* Samples */
920930   ROM_LOAD( "yunsun16.131", 0x000000, 0x080000, CRC(d0a1bb8c) SHA1(10f33521bd6031ed73ee5c7be1382165925aa8f8) )
921   ROM_RELOAD(               0x080000, 0x080000 )
922
931   
923932ROM_END
924933
925934
r242144r242145
949958   ROM_LOAD( "bk_u22", 0x080000, 0x040000, CRC(9538c46c) SHA1(d7d0e167d5abc2ee81eae6fde152b2f5cc716c0e) )
950959   ROM_LOAD( "bk_u23", 0x0c0000, 0x040000, CRC(e3831f3d) SHA1(096658ee5a7b83d774b671c0a38113533c8751d1) )
951960
952   ROM_REGION( 0x080000 * 2, "oki", 0 )    /* Samples */
961   ROM_REGION( 0x080000, "oki", 0 )    /* Samples */
953962   ROM_LOAD( "bk_u131", 0x000000, 0x080000, CRC(22cc5732) SHA1(38aefa4e543ea54e004eee428ee087121eb20905) )
954   ROM_RELOAD(          0x080000, 0x080000 )
955
963   
956964ROM_END
957965
958966ROM_START( bombkicka ) // marked 'Bomb Kick 98'
r242144r242145
973981   ROM_LOAD( "bk_u22", 0x080000, 0x040000, CRC(9538c46c) SHA1(d7d0e167d5abc2ee81eae6fde152b2f5cc716c0e) )
974982   ROM_LOAD( "bk_u23", 0x0c0000, 0x040000, CRC(e3831f3d) SHA1(096658ee5a7b83d774b671c0a38113533c8751d1) )
975983
976   ROM_REGION( 0x080000 * 2, "oki", 0 )    /* Samples */
984   ROM_REGION( 0x080000, "oki", 0 )    /* Samples */
977985   ROM_LOAD( "bk_u131", 0x000000, 0x080000, CRC(22cc5732) SHA1(38aefa4e543ea54e004eee428ee087121eb20905) )
978   ROM_RELOAD(          0x080000, 0x080000 )
979
986   
980987ROM_END
981988
982989/***************************************************************************
trunk/src/mame/includes/yunsun16.h
r242144r242145
99public:
1010   yunsun16_state(const machine_config &mconfig, device_type type, const char *tag)
1111      : driver_device(mconfig, type, tag),
12      m_maincpu(*this, "maincpu"),
13      m_audiocpu(*this, "audiocpu"),
14      m_gfxdecode(*this, "gfxdecode"),
15      m_screen(*this, "screen"),
16      m_palette(*this, "palette"),
1217      m_vram_0(*this, "vram_0"),
1318      m_vram_1(*this, "vram_1"),
1419      m_scrollram_0(*this, "scrollram_0"),
1520      m_scrollram_1(*this, "scrollram_1"),
1621      m_priorityram(*this, "priorityram"),
17      m_spriteram(*this, "spriteram"),
18      m_audiocpu(*this, "audiocpu"),
19      m_maincpu(*this, "maincpu"),
20      m_gfxdecode(*this, "gfxdecode"),
21      m_screen(*this, "screen"),
22      m_palette(*this, "palette") { }
22      m_spriteram(*this, "spriteram") { }
2323
24   /* devices */
25   required_device<cpu_device> m_maincpu;
26   optional_device<cpu_device> m_audiocpu;
27   required_device<gfxdecode_device> m_gfxdecode;
28   required_device<screen_device> m_screen;
29   required_device<palette_device> m_palette;
30   
2431   /* memory pointers */
2532   required_shared_ptr<UINT16> m_vram_0;
2633   required_shared_ptr<UINT16> m_vram_1;
r242144r242145
3643   int         m_sprites_scrolldx;
3744   int         m_sprites_scrolldy;
3845
39   /* devices */
40   optional_device<cpu_device> m_audiocpu;
41   DECLARE_WRITE16_MEMBER(yunsun16_sound_bank_w);
46   DECLARE_WRITE8_MEMBER(sound_bank_w);
4247   DECLARE_WRITE16_MEMBER(magicbub_sound_command_w);
43   DECLARE_WRITE16_MEMBER(yunsun16_vram_0_w);
44   DECLARE_WRITE16_MEMBER(yunsun16_vram_1_w);
48   DECLARE_WRITE16_MEMBER(vram_0_w);
49   DECLARE_WRITE16_MEMBER(vram_1_w);
4550   DECLARE_DRIVER_INIT(magicbub);
46   TILEMAP_MAPPER_MEMBER(yunsun16_tilemap_scan_pages);
51   DECLARE_MACHINE_START(shocking);
52   DECLARE_MACHINE_RESET(shocking);
53   TILEMAP_MAPPER_MEMBER(tilemap_scan_pages);
4754   TILE_GET_INFO_MEMBER(get_tile_info_0);
4855   TILE_GET_INFO_MEMBER(get_tile_info_1);
4956   virtual void machine_start();
r242144r242145
5259   UINT32 screen_update_yunsun16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5360   void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
5461   DECLARE_WRITE_LINE_MEMBER(soundirq);
55   required_device<cpu_device> m_maincpu;
56   required_device<gfxdecode_device> m_gfxdecode;
57   required_device<screen_device> m_screen;
58   required_device<palette_device> m_palette;
5962};
trunk/src/mame/video/yunsun16.c
r242144r242145
3838#define PAGES_PER_TMAP_X    (0x4)
3939#define PAGES_PER_TMAP_Y    (0x4)
4040
41TILEMAP_MAPPER_MEMBER(yunsun16_state::yunsun16_tilemap_scan_pages)
41TILEMAP_MAPPER_MEMBER(yunsun16_state::tilemap_scan_pages)
4242{
4343   return  (row / TILES_PER_PAGE_Y) * TILES_PER_PAGE_X * TILES_PER_PAGE_Y * PAGES_PER_TMAP_X +
4444         (row % TILES_PER_PAGE_Y) +
r242144r242145
6767         (attr & 0x20) ? TILE_FLIPX : 0);
6868}
6969
70WRITE16_MEMBER(yunsun16_state::yunsun16_vram_0_w)
70WRITE16_MEMBER(yunsun16_state::vram_0_w)
7171{
7272   COMBINE_DATA(&m_vram_0[offset]);
7373   m_tilemap_0->mark_tile_dirty(offset / 2);
7474}
7575
76WRITE16_MEMBER(yunsun16_state::yunsun16_vram_1_w)
76WRITE16_MEMBER(yunsun16_state::vram_1_w)
7777{
7878   COMBINE_DATA(&m_vram_1[offset]);
7979   m_tilemap_1->mark_tile_dirty(offset / 2);
r242144r242145
9090
9191void yunsun16_state::video_start()
9292{
93   m_tilemap_0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(yunsun16_state::get_tile_info_0),this),tilemap_mapper_delegate(FUNC(yunsun16_state::yunsun16_tilemap_scan_pages),this),
93   m_tilemap_0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(yunsun16_state::get_tile_info_0),this),tilemap_mapper_delegate(FUNC(yunsun16_state::tilemap_scan_pages),this),
9494                        16,16, TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
95   m_tilemap_1 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(yunsun16_state::get_tile_info_1),this),tilemap_mapper_delegate(FUNC(yunsun16_state::yunsun16_tilemap_scan_pages),this),
95   m_tilemap_1 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(yunsun16_state::get_tile_info_1),this),tilemap_mapper_delegate(FUNC(yunsun16_state::tilemap_scan_pages),this),
9696                        16,16, TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
9797
9898   m_tilemap_0->set_scrolldx(-0x34, 0);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team