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

« back to all changes in this revision

Viewing changes to src/mame/drivers/cybertnk.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:
170
170
{
171
171
public:
172
172
        cybertnk_state(const machine_config &mconfig, device_type type, const char *tag)
173
 
                : driver_device(mconfig, type, tag) { }
 
173
                : driver_device(mconfig, type, tag) ,
 
174
                m_spr_ram(*this, "spr_ram"),
 
175
                m_tx_vram(*this, "tx_vram"),
 
176
                m_bg_vram(*this, "bg_vram"),
 
177
                m_fg_vram(*this, "fg_vram"),
 
178
                m_io_ram(*this, "io_ram"),
 
179
                m_roadram(*this, "roadram"){ }
174
180
 
175
181
        tilemap_t *m_tx_tilemap;
176
 
        UINT16 *m_tx_vram;
177
 
        UINT16 *m_bg_vram;
178
 
        UINT16 *m_fg_vram;
179
 
        UINT16 *m_spr_ram;
180
 
        UINT16 *m_io_ram;
181
 
        UINT16 *m_roadram;
 
182
        required_shared_ptr<UINT16> m_spr_ram;
 
183
        required_shared_ptr<UINT16> m_tx_vram;
 
184
        required_shared_ptr<UINT16> m_bg_vram;
 
185
        required_shared_ptr<UINT16> m_fg_vram;
 
186
        required_shared_ptr<UINT16> m_io_ram;
 
187
        required_shared_ptr<UINT16> m_roadram;
182
188
        int m_test_x;
183
189
        int m_test_y;
184
190
        int m_start_offs;
185
191
        int m_color_pen;
 
192
        DECLARE_WRITE16_MEMBER(tx_vram_w);
 
193
        DECLARE_READ16_MEMBER(io_r);
 
194
        DECLARE_WRITE16_MEMBER(io_w);
 
195
        DECLARE_READ8_MEMBER(soundport_r);
186
196
};
187
197
 
188
198
 
189
 
#define LOG_UNKNOWN_WRITE logerror("unknown io write CPU '%s':%08x  0x%08x 0x%04x & 0x%04x\n", space->device().tag(), cpu_get_pc(&space->device()), offset*2, data, mem_mask);
 
199
#define LOG_UNKNOWN_WRITE logerror("unknown io write CPU '%s':%08x  0x%08x 0x%04x & 0x%04x\n", space.device().tag(), cpu_get_pc(&space.device()), offset*2, data, mem_mask);
190
200
 
191
201
static TILE_GET_INFO( get_tx_tile_info )
192
202
{
284
294
        /* non-tile based spriteram (BARE-BONES, looks pretty complex) */
285
295
        if(1)
286
296
        {
287
 
                const UINT8 *blit_ram = screen.machine().region("spr_gfx")->base();
 
297
                const UINT8 *blit_ram = screen.machine().root_device().memregion("spr_gfx")->base();
288
298
                int offs,x,y,z,xsize,ysize,yi,xi,col_bank,fx,zoom;
289
299
                UINT32 spr_offs,spr_offs_helper;
290
300
                int xf,yf,xz,yz;
416
426
                if(0) //sprite gfx debug viewer
417
427
                {
418
428
                        int x,y,count;
419
 
                        const UINT8 *blit_ram = screen.machine().region("spr_gfx")->base();
 
429
                        const UINT8 *blit_ram = screen.machine().root_device().memregion("spr_gfx")->base();
420
430
 
421
431
                        if(screen.machine().input().code_pressed(KEYCODE_Z))
422
432
                        state->m_test_x++;
510
520
static SCREEN_UPDATE_IND16( cybertnk_right ) { return update_screen(screen, bitmap, cliprect, -256); }
511
521
 
512
522
 
513
 
static WRITE16_HANDLER( tx_vram_w )
 
523
WRITE16_MEMBER(cybertnk_state::tx_vram_w)
514
524
{
515
 
        cybertnk_state *state = space->machine().driver_data<cybertnk_state>();
516
 
        COMBINE_DATA(&state->m_tx_vram[offset]);
517
 
        state->m_tx_tilemap->mark_tile_dirty(offset);
 
525
        COMBINE_DATA(&m_tx_vram[offset]);
 
526
        m_tx_tilemap->mark_tile_dirty(offset);
518
527
}
519
528
 
520
 
static READ16_HANDLER( io_r )
 
529
READ16_MEMBER(cybertnk_state::io_r)
521
530
{
522
 
        cybertnk_state *state = space->machine().driver_data<cybertnk_state>();
523
531
        switch( offset )
524
532
        {
525
533
                case 2/2:
526
 
                        return input_port_read(space->machine(), "DSW1");
 
534
                        return ioport("DSW1")->read();
527
535
 
528
536
                // 0x00110007 is controller device select
529
537
                // 0x001100D5 is controller data
530
538
                // 0x00110004 low is controller data ready
531
539
                case 4/2:
532
 
                        switch( (state->m_io_ram[6/2]) & 0xff )
 
540
                        switch( (m_io_ram[6/2]) & 0xff )
533
541
                        {
534
542
                                case 0:
535
 
                                        state->m_io_ram[0xd4/2] = input_port_read(space->machine(), "TRAVERSE");
 
543
                                        m_io_ram[0xd4/2] = ioport("TRAVERSE")->read();
536
544
                                        break;
537
545
 
538
546
                                case 0x20:
539
 
                                        state->m_io_ram[0xd4/2] = input_port_read(space->machine(), "ELEVATE");
 
547
                                        m_io_ram[0xd4/2] = ioport("ELEVATE")->read();
540
548
                                        break;
541
549
 
542
550
                                case 0x40:
543
 
                                        state->m_io_ram[0xd4/2] = input_port_read(space->machine(), "ACCEL");
 
551
                                        m_io_ram[0xd4/2] = ioport("ACCEL")->read();
544
552
                                        break;
545
553
 
546
554
                                case 0x42:
548
556
                                        // controller return value is stored in $42(a6)
549
557
                                        // but I don't see it referenced again.
550
558
                                        //popmessage("unknown controller device 0x42");
551
 
                                        state->m_io_ram[0xd4/2] = 0;
 
559
                                        m_io_ram[0xd4/2] = 0;
552
560
                                        break;
553
561
 
554
562
                                case 0x60:
555
 
                                        state->m_io_ram[0xd4/2] = input_port_read(space->machine(), "HANDLE");
 
563
                                        m_io_ram[0xd4/2] = ioport("HANDLE")->read();
556
564
                                        break;
557
565
 
558
566
                                //default:
561
569
                        return 0;
562
570
 
563
571
                case 6/2:
564
 
                        return input_port_read(space->machine(), "IN0"); // high half
 
572
                        return ioport("IN0")->read(); // high half
565
573
 
566
574
                case 8/2:
567
 
                        return input_port_read(space->machine(), "IN0"); // low half
 
575
                        return ioport("IN0")->read(); // low half
568
576
 
569
577
                case 0xa/2:
570
 
                        return input_port_read(space->machine(), "DSW2");
 
578
                        return ioport("DSW2")->read();
571
579
 
572
580
                case 0xd4/2:
573
 
                        return state->m_io_ram[offset]; // controller data
 
581
                        return m_io_ram[offset]; // controller data
574
582
 
575
583
                default:
576
584
                {
577
585
                        //popmessage("unknown io read 0x%08x", offset);
578
 
                        return state->m_io_ram[offset];
 
586
                        return m_io_ram[offset];
579
587
                }
580
588
        }
581
589
}
582
590
 
583
 
static WRITE16_HANDLER( io_w )
 
591
WRITE16_MEMBER(cybertnk_state::io_w)
584
592
{
585
 
        cybertnk_state *state = space->machine().driver_data<cybertnk_state>();
586
 
        COMBINE_DATA(&state->m_io_ram[offset]);
 
593
        COMBINE_DATA(&m_io_ram[offset]);
587
594
 
588
595
        switch( offset )
589
596
        {
590
597
                case 0/2:
591
598
                        // sound data
592
599
                        if (ACCESSING_BITS_0_7)
593
 
                                cputag_set_input_line(space->machine(), "audiocpu", 0, HOLD_LINE);
 
600
                                cputag_set_input_line(machine(), "audiocpu", 0, HOLD_LINE);
594
601
                        else
595
602
                                LOG_UNKNOWN_WRITE
596
603
                        break;
644
651
                case 0x80/2:
645
652
                case 0x82/2:
646
653
                case 0x84/2:
647
 
                        popmessage("%02x %02x %02x %02x %02x %02x %02x",state->m_io_ram[0x40/2],state->m_io_ram[0x42/2],state->m_io_ram[0x44/2],state->m_io_ram[0x46/2],state->m_io_ram[0x48/2],state->m_io_ram[0x4a/2],state->m_io_ram[0x4c/2]);
 
654
                        popmessage("%02x %02x %02x %02x %02x %02x %02x",m_io_ram[0x40/2],m_io_ram[0x42/2],m_io_ram[0x44/2],m_io_ram[0x46/2],m_io_ram[0x48/2],m_io_ram[0x4a/2],m_io_ram[0x4c/2]);
648
655
                        break;
649
656
 
650
657
                default:
653
660
        }
654
661
}
655
662
 
656
 
static READ8_HANDLER( soundport_r )
 
663
READ8_MEMBER(cybertnk_state::soundport_r)
657
664
{
658
 
        cybertnk_state *state = space->machine().driver_data<cybertnk_state>();
659
 
        return state->m_io_ram[0] & 0xff;
 
665
        return m_io_ram[0] & 0xff;
660
666
}
661
667
 
662
 
static ADDRESS_MAP_START( master_mem, AS_PROGRAM, 16 )
 
668
static ADDRESS_MAP_START( master_mem, AS_PROGRAM, 16, cybertnk_state )
663
669
        AM_RANGE(0x000000, 0x03ffff) AM_ROM
664
670
        AM_RANGE(0x080000, 0x087fff) AM_RAM /*Work RAM*/
665
 
        AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_BASE_MEMBER(cybertnk_state, m_spr_ram) // non-tile based sprite ram
666
 
        AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(tx_vram_w) AM_BASE_MEMBER(cybertnk_state, m_tx_vram)
667
 
        AM_RANGE(0x0c4000, 0x0c5fff) AM_RAM AM_BASE_MEMBER(cybertnk_state, m_bg_vram)
668
 
        AM_RANGE(0x0c8000, 0x0c9fff) AM_RAM AM_BASE_MEMBER(cybertnk_state, m_fg_vram)
 
671
        AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spr_ram") // non-tile based sprite ram
 
672
        AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(tx_vram_w) AM_SHARE("tx_vram")
 
673
        AM_RANGE(0x0c4000, 0x0c5fff) AM_RAM AM_SHARE("bg_vram")
 
674
        AM_RANGE(0x0c8000, 0x0c9fff) AM_RAM AM_SHARE("fg_vram")
669
675
        AM_RANGE(0x0e0000, 0x0e0fff) AM_RAM AM_SHARE("sharedram")
670
 
        AM_RANGE(0x100000, 0x107fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
671
 
        AM_RANGE(0x110000, 0x1101ff) AM_READWRITE(io_r,io_w) AM_BASE_MEMBER(cybertnk_state, m_io_ram)
 
676
        AM_RANGE(0x100000, 0x107fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
 
677
        AM_RANGE(0x110000, 0x1101ff) AM_READWRITE(io_r,io_w) AM_SHARE("io_ram")
672
678
ADDRESS_MAP_END
673
679
 
674
 
static ADDRESS_MAP_START( slave_mem, AS_PROGRAM, 16 )
 
680
static ADDRESS_MAP_START( slave_mem, AS_PROGRAM, 16, cybertnk_state )
675
681
        AM_RANGE(0x000000, 0x01ffff) AM_ROM
676
682
        AM_RANGE(0x080000, 0x083fff) AM_RAM /*Work RAM*/
677
 
        AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM AM_BASE_MEMBER(cybertnk_state, m_roadram)
 
683
        AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM AM_SHARE("roadram")
678
684
        AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("sharedram")
679
685
        AM_RANGE(0x140000, 0x140003) AM_NOP /*Watchdog? Written during loops and interrupts*/
680
686
ADDRESS_MAP_END
681
687
 
682
 
static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 8 )
 
688
static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 8, cybertnk_state )
683
689
        AM_RANGE(0x0000, 0x7fff ) AM_ROM
684
690
        AM_RANGE(0x8000, 0x9fff ) AM_RAM
685
691
        AM_RANGE(0xa001, 0xa001 ) AM_READ(soundport_r)
686
692
        AM_RANGE(0xa005, 0xa006 ) AM_NOP
687
 
        AM_RANGE(0xa000, 0xa001 ) AM_DEVREADWRITE("ym1", y8950_r, y8950_w)
688
 
        AM_RANGE(0xc000, 0xc001 ) AM_DEVREADWRITE("ym2", y8950_r, y8950_w)
 
693
        AM_RANGE(0xa000, 0xa001 ) AM_DEVREADWRITE_LEGACY("ym1", y8950_r, y8950_w)
 
694
        AM_RANGE(0xc000, 0xc001 ) AM_DEVREADWRITE_LEGACY("ym2", y8950_r, y8950_w)
689
695
ADDRESS_MAP_END
690
696
 
691
697
static INPUT_PORTS_START( cybertnk )
1008
1014
    UINT8* road_data;
1009
1015
    int i;
1010
1016
 
1011
 
    road_data = machine.region("road_data")->base();
 
1017
    road_data = machine.root_device().memregion("road_data")->base();
1012
1018
    for (i=0;i < 0x40000;i++)
1013
1019
    {
1014
1020
        road_data[i] = BITSWAP8(road_data[i],3,2,1,0,7,6,5,4);