~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to src/mame/drivers/toki.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Emmanuel Kasper, Jordi Mallach
  • Date: 2012-06-05 20:02:23 UTC
  • mfrom: (0.3.1) (0.1.4)
  • Revision ID: package-import@ubuntu.com-20120605200223-gnlpogjrg6oqe9md
Tags: 0.146-1
[ Emmanuel Kasper ]
* New upstream release
* Drop patch to fix man pages section and patches to link with flac 
  and jpeg system lib: all this has been pushed upstream by Cesare Falco
* Add DM-Upload-Allowed: yes field.

[ Jordi Mallach ]
* Create a "gnu" TARGETOS stanza that defines NO_AFFINITY_NP.
* Stop setting TARGETOS to "unix" in d/rules. It should be autodetected,
  and set to the appropriate value.
* mame_manpage_section.patch: Change mame's manpage section to 6 (games),
  in the TH declaration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
#include "sound/3812intf.h"
44
44
#include "includes/toki.h"
45
45
 
46
 
static WRITE16_HANDLER( tokib_soundcommand16_w )
 
46
WRITE16_MEMBER(toki_state::tokib_soundcommand16_w)
47
47
{
48
 
        soundlatch_w(space, 0, data & 0xff);
49
 
        cputag_set_input_line(space->machine(), "audiocpu", 0, HOLD_LINE);
 
48
        soundlatch_byte_w(space, 0, data & 0xff);
 
49
        cputag_set_input_line(machine(), "audiocpu", 0, HOLD_LINE);
50
50
}
51
51
 
52
 
static READ16_HANDLER( pip16_r )
 
52
READ16_MEMBER(toki_state::pip16_r)
53
53
{
54
54
        return ~0;
55
55
}
71
71
static WRITE8_DEVICE_HANDLER( toki_adpcm_control_w )
72
72
{
73
73
        int bankaddress;
74
 
        UINT8 *RAM = device->machine().region("audiocpu")->base();
 
74
        UINT8 *RAM = device->machine().root_device().memregion("audiocpu")->base();
75
75
 
76
76
 
77
77
        /* the code writes either 2 or 3 in the bottom two bits */
78
78
        bankaddress = 0x10000 + (data & 0x01) * 0x4000;
79
 
        memory_set_bankptr(device->machine(), "bank1",&RAM[bankaddress]);
 
79
        device->machine().root_device().membank("bank1")->set_base(&RAM[bankaddress]);
80
80
 
81
81
        msm5205_reset_w(device,data & 0x08);
82
82
}
83
83
 
84
 
static WRITE8_HANDLER( toki_adpcm_data_w )
 
84
WRITE8_MEMBER(toki_state::toki_adpcm_data_w)
85
85
{
86
 
        toki_state *state = space->machine().driver_data<toki_state>();
87
 
        state->m_msm5205next = data;
 
86
        m_msm5205next = data;
88
87
}
89
88
 
90
89
 
91
90
/*****************************************************************************/
92
91
 
93
 
static ADDRESS_MAP_START( toki_map, AS_PROGRAM, 16 )
 
92
static ADDRESS_MAP_START( toki_map, AS_PROGRAM, 16, toki_state )
94
93
        AM_RANGE(0x000000, 0x05ffff) AM_ROM
95
94
        AM_RANGE(0x060000, 0x06d7ff) AM_RAM
96
 
        AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
97
 
        AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram)
98
 
        AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_BASE_MEMBER(toki_state, m_background1_videoram16)
99
 
        AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_BASE_MEMBER(toki_state, m_background2_videoram16)
100
 
        AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_BASE_MEMBER(toki_state, m_videoram)
101
 
        AM_RANGE(0x080000, 0x08000d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w)
102
 
        AM_RANGE(0x0a0000, 0x0a005f) AM_WRITE(toki_control_w) AM_BASE_MEMBER(toki_state, m_scrollram16)
 
95
        AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_SHARE("spriteram")
 
96
        AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
 
97
        AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_SHARE("bg1_vram16")
 
98
        AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_SHARE("bg2_vram16")
 
99
        AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_SHARE("videoram")
 
100
        AM_RANGE(0x080000, 0x08000d) AM_READWRITE_LEGACY(seibu_main_word_r, seibu_main_word_w)
 
101
        AM_RANGE(0x0a0000, 0x0a005f) AM_WRITE(toki_control_w) AM_SHARE("scrollram16")
103
102
        AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW")
104
103
        AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("INPUTS")
105
104
        AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("SYSTEM")
106
105
ADDRESS_MAP_END
107
106
 
108
107
/* In the bootleg, sound and sprites are remapped to 0x70000 */
109
 
static ADDRESS_MAP_START( tokib_map, AS_PROGRAM, 16 )
 
108
static ADDRESS_MAP_START( tokib_map, AS_PROGRAM, 16, toki_state )
110
109
        AM_RANGE(0x000000, 0x05ffff) AM_ROM
111
110
        AM_RANGE(0x060000, 0x06dfff) AM_RAM
112
 
        AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram)
113
 
        AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_BASE_MEMBER(toki_state, m_background1_videoram16)
114
 
        AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_BASE_MEMBER(toki_state, m_background2_videoram16)
115
 
        AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_BASE_MEMBER(toki_state, m_videoram)
 
111
        AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
 
112
        AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_SHARE("bg1_vram16")
 
113
        AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_SHARE("bg2_vram16")
 
114
        AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_SHARE("videoram")
116
115
        AM_RANGE(0x071000, 0x071001) AM_WRITENOP        /* sprite related? seems another scroll register */
117
116
                                /* gets written the same value as 75000a (bg2 scrollx) */
118
117
        AM_RANGE(0x071804, 0x071807) AM_WRITENOP        /* sprite related, always 01be0100 */
119
 
        AM_RANGE(0x07180e, 0x071e45) AM_WRITEONLY AM_BASE_SIZE_GENERIC(spriteram)
 
118
        AM_RANGE(0x07180e, 0x071e45) AM_WRITEONLY AM_SHARE("spriteram")
120
119
        AM_RANGE(0x072000, 0x072001) AM_READ(watchdog_reset16_r)   /* probably */
121
120
        AM_RANGE(0x075000, 0x075001) AM_WRITE(tokib_soundcommand16_w)
122
 
        AM_RANGE(0x075004, 0x07500b) AM_WRITEONLY AM_BASE_MEMBER(toki_state, m_scrollram16)
 
121
        AM_RANGE(0x075004, 0x07500b) AM_WRITEONLY AM_SHARE("scrollram16")
123
122
        AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW")
124
123
        AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("INPUTS")
125
124
        AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("SYSTEM")
130
129
 
131
130
/*****************************************************************************/
132
131
 
133
 
static ADDRESS_MAP_START( tokib_audio_map, AS_PROGRAM, 8 )
 
132
static ADDRESS_MAP_START( tokib_audio_map, AS_PROGRAM, 8, toki_state )
134
133
        AM_RANGE(0x0000, 0x7fff) AM_ROM
135
134
        AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
136
 
        AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", toki_adpcm_control_w)       /* MSM5205 + ROM bank */
 
135
        AM_RANGE(0xe000, 0xe000) AM_DEVWRITE_LEGACY("msm", toki_adpcm_control_w)        /* MSM5205 + ROM bank */
137
136
        AM_RANGE(0xe400, 0xe400) AM_WRITE(toki_adpcm_data_w)
138
 
        AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
 
137
        AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE_LEGACY("ymsnd", ym3812_r, ym3812_w)
139
138
        AM_RANGE(0xf000, 0xf7ff) AM_RAM
140
 
        AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
 
139
        AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
141
140
ADDRESS_MAP_END
142
141
 
143
142
/*****************************************************************************/
425
424
        MCFG_MACHINE_RESET(seibu_sound)
426
425
 
427
426
        /* video hardware */
428
 
        MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
 
427
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
429
428
 
430
429
        MCFG_SCREEN_ADD("screen", RASTER)
431
430
        MCFG_SCREEN_REFRESH_RATE(59.61)    /* verified on pcb */
432
431
        MCFG_SCREEN_SIZE(32*8, 32*8)
433
432
        MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)      /* verified */
434
433
        MCFG_SCREEN_UPDATE_STATIC(toki)
435
 
        MCFG_SCREEN_VBLANK_STATIC(toki)
 
434
        MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
436
435
 
437
436
        MCFG_GFXDECODE(toki)
438
437
        MCFG_PALETTE_LENGTH(1024)
455
454
        MCFG_CPU_PROGRAM_MAP(tokib_audio_map)
456
455
 
457
456
        /* video hardware */
458
 
        MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
 
457
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
459
458
 
460
459
        MCFG_SCREEN_ADD("screen", RASTER)
461
460
        MCFG_SCREEN_REFRESH_RATE(60)
462
461
        MCFG_SCREEN_SIZE(32*8, 32*8)
463
462
        MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)      /* verified */
464
463
        MCFG_SCREEN_UPDATE_STATIC(tokib)
465
 
        MCFG_SCREEN_VBLANK_STATIC(tokib)
 
464
        MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
466
465
 
467
466
        MCFG_GFXDECODE(tokib)
468
467
        MCFG_PALETTE_LENGTH(1024)
739
738
 
740
739
static DRIVER_INIT( toki )
741
740
{
742
 
        UINT8 *ROM = machine.region("oki")->base();
 
741
        UINT8 *ROM = machine.root_device().memregion("oki")->base();
743
742
        UINT8 *buffer = auto_alloc_array(machine, UINT8, 0x20000);
744
743
        int i;
745
744
 
762
761
        UINT8 *rom;
763
762
 
764
763
        /* invert the sprite data in the ROMs */
765
 
        len = machine.region("gfx2")->bytes();
766
 
        rom = machine.region("gfx2")->base();
 
764
        len = machine.root_device().memregion("gfx2")->bytes();
 
765
        rom = machine.root_device().memregion("gfx2")->base();
767
766
        for (i = 0; i < len; i++)
768
767
                rom[i] ^= 0xff;
769
768
 
770
769
        /* merge background tile graphics together */
771
 
        len = machine.region("gfx3")->bytes();
772
 
        rom = machine.region("gfx3")->base();
 
770
        len = machine.root_device().memregion("gfx3")->bytes();
 
771
        rom = machine.root_device().memregion("gfx3")->base();
773
772
        for (offs = 0; offs < len; offs += 0x20000)
774
773
        {
775
774
                UINT8 *base = &rom[offs];
782
781
                        memcpy (&base[0x18000 + i * 0x800], &temp[0x1800 + i * 0x2000], 0x800);
783
782
                }
784
783
        }
785
 
        len = machine.region("gfx4")->bytes();
786
 
        rom = machine.region("gfx4")->base();
 
784
        len = machine.root_device().memregion("gfx4")->bytes();
 
785
        rom = machine.root_device().memregion("gfx4")->base();
787
786
        for (offs = 0; offs < len; offs += 0x20000)
788
787
        {
789
788
                UINT8 *base = &rom[offs];
805
804
        /* Program ROMs are bitswapped */
806
805
        {
807
806
                int i;
808
 
                UINT16 *prgrom = (UINT16*)machine.region("maincpu")->base();
 
807
                UINT16 *prgrom = (UINT16*)machine.root_device().memregion("maincpu")->base();
809
808
 
810
809
                for (i = 0; i < 0x60000/2; i++)
811
810
                {
820
819
        {
821
820
                address_space *space = machine.device("audiocpu")->memory().space(AS_PROGRAM);
822
821
                UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x20000);
823
 
                UINT8 *rom = machine.region("audiocpu")->base();
 
822
                UINT8 *rom = machine.root_device().memregion("audiocpu")->base();
824
823
                int i;
825
824
 
826
825
                memcpy(decrypt,rom,0x20000);
835
834
        }
836
835
 
837
836
        {
838
 
                UINT8 *ROM = machine.region("oki")->base();
 
837
                UINT8 *ROM = machine.root_device().memregion("oki")->base();
839
838
                UINT8 *buffer = auto_alloc_array(machine, UINT8, 0x20000);
840
839
                int i;
841
840