~ubuntu-branches/ubuntu/lucid/sdlmame/lucid

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Cesare Falco
  • Date: 2009-11-03 17:10:15 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20091103171015-6hop4ory5lxnumpn
Tags: 0.135-0ubuntu1
* New upstream release - Closes (LP: #403212)
* debian/watch: unstable releases are no longer detected
* mame.ini: added the cheat subdirectories to cheatpath so zipped
  cheatfiles will be searched too
* renamed crsshair subdirectory to crosshair to reflect upstream change
* mame.ini: renamed references to crosshair subdirectory (see above)

Show diffs side-by-side

added added

removed removed

Lines of Context:
59
59
#include "deprecat.h"
60
60
#include "machine/eeprom.h"
61
61
#include "sound/okim6295.h"
 
62
#include "sound/st0016.h"
 
63
#include "st0016.h"
 
64
#include "cpu/z80/z80.h"
62
65
 
63
66
#define DARKHORS_DEBUG  0
64
67
 
130
133
                sy      =       -sy;
131
134
                sy      +=      0xf8;
132
135
 
133
 
                drawgfx(        bitmap, machine->gfx[0],
 
136
                drawgfx_transpen(       bitmap, cliprect, machine->gfx[0],
134
137
                                        code/2, color,
135
 
                                        flipx,  flipy,  sx,     sy,
136
 
                                        cliprect, TRANSPARENCY_PEN, 0);
 
138
                                        flipx,  flipy,  sx,     sy, 0);
137
139
        }
138
140
}
139
141
 
156
158
        int layers_ctrl = -1;
157
159
 
158
160
#if DARKHORS_DEBUG
159
 
        if (input_code_pressed(KEYCODE_Z))
 
161
        if (input_code_pressed(screen->machine, KEYCODE_Z))
160
162
        {
161
163
                int mask = 0;
162
 
                if (input_code_pressed(KEYCODE_Q))      mask |= 1;
163
 
                if (input_code_pressed(KEYCODE_W))      mask |= 2;
164
 
                if (input_code_pressed(KEYCODE_A))      mask |= 4;
 
164
                if (input_code_pressed(screen->machine, KEYCODE_Q))     mask |= 1;
 
165
                if (input_code_pressed(screen->machine, KEYCODE_W))     mask |= 2;
 
166
                if (input_code_pressed(screen->machine, KEYCODE_A))     mask |= 4;
165
167
                if (mask != 0) layers_ctrl &= mask;
166
168
        }
167
169
#endif
324
326
        AM_RANGE(0x8c0130, 0x8c013f) AM_WRITE(SMH_RAM) AM_BASE(&darkhors_tmapscroll2)
325
327
ADDRESS_MAP_END
326
328
 
 
329
static UINT32* jclub2_tileram;
 
330
static int jclub2_gfx_index;
 
331
 
 
332
static WRITE32_HANDLER( jclub2_tileram_w )
 
333
{
 
334
        COMBINE_DATA(&jclub2_tileram[offset]);
 
335
        gfx_element_mark_dirty(space->machine->gfx[jclub2_gfx_index], offset/(256/4));
 
336
 
 
337
}
 
338
 
 
339
static ADDRESS_MAP_START( jclub2_map, ADDRESS_SPACE_PROGRAM, 32 )
 
340
        AM_RANGE(0x000000, 0x1fffff) AM_ROM
 
341
        AM_RANGE(0x400000, 0x41ffff) AM_RAM
 
342
 
 
343
        AM_RANGE(0x490040, 0x490043) AM_WRITE(darkhors_eeprom_w)
 
344
        AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("4e0080") AM_WRITE(darkhors_unk1_w)
 
345
 
 
346
        AM_RANGE(0x580000, 0x580003) AM_READ_PORT("580000")
 
347
        AM_RANGE(0x580004, 0x580007) AM_READ_PORT("580004")
 
348
        AM_RANGE(0x580008, 0x58000b) AM_READ(darkhors_input_sel_r)
 
349
        AM_RANGE(0x58000c, 0x58000f) AM_WRITE(darkhors_input_sel_w)
 
350
        AM_RANGE(0x580200, 0x580203) AM_READ(SMH_NOP)
 
351
        AM_RANGE(0x580400, 0x580403) AM_READ_PORT("580400")
 
352
        AM_RANGE(0x580420, 0x580423) AM_READ_PORT("580420")
 
353
 
 
354
        AM_RANGE(0x800000, 0x87ffff) AM_RAM AM_BASE(&spriteram32)
 
355
 
 
356
        AM_RANGE(0x880000, 0x89ffff) AM_WRITE(paletteram32_xBBBBBGGGGGRRRRR_dword_w) AM_BASE(&paletteram32)
 
357
        AM_RANGE(0x8a0000, 0x8bffff) AM_WRITE(SMH_RAM)  // this should still be palette ram!
 
358
 
 
359
        AM_RANGE(0x8C0000, 0x8C01ff) AM_RAM
 
360
        AM_RANGE(0x8E0000, 0x8E01ff) AM_RAM
 
361
 
 
362
        AM_RANGE(0x900000, 0x90ffff) AM_RAM_WRITE(jclub2_tileram_w) AM_BASE(&jclub2_tileram) // tile data gets decompressed here by main cpu?
 
363
ADDRESS_MAP_END
 
364
 
 
365
 
 
366
static ADDRESS_MAP_START( jclub2o_map, ADDRESS_SPACE_PROGRAM, 32 )
 
367
        AM_RANGE(0x000000, 0x1fffff) AM_ROM
 
368
        AM_RANGE(0x400000, 0x41ffff) AM_RAM
 
369
 
 
370
ADDRESS_MAP_END
 
371
 
327
372
 
328
373
/***************************************************************************
329
374
 
559
604
        GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0, 0x10000/64 )     // color codes should be doubled
560
605
GFXDECODE_END
561
606
 
 
607
// wrong
 
608
static const gfx_layout layout_16x16x8_jclub2 =
 
609
{
 
610
        16,16,
 
611
        0x10000/256,
 
612
        8,
 
613
        { 0,1,2,3,4,5,6,7 },
 
614
        { 24,16,8,0,  56,48,40,32,  88,80,72,64,  120, 112, 104, 96},
 
615
        { 0*128,1*128,2*128,3*128,4*128,5*128,6*128,7*128,8*128,9*128,10*128,11*128,12*128,13*128,14*128,15*128 },
 
616
        256*8
 
617
};
 
618
 
 
619
static GFXDECODE_START( jclub2 )
 
620
        //GFXDECODE_ENTRY( "maincpu", 0, layout_16x16x8_jclub2, 0, 0x10000/64 ) // color codes should be doubled
 
621
GFXDECODE_END
 
622
 
 
623
 
562
624
/***************************************************************************
563
625
 
564
626
 
606
668
        MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
607
669
MACHINE_DRIVER_END
608
670
 
 
671
 
 
672
 
 
673
static VIDEO_START(jclub2)
 
674
{
 
675
        /* find first empty slot to decode gfx */
 
676
        for (jclub2_gfx_index = 0; jclub2_gfx_index < MAX_GFX_ELEMENTS; jclub2_gfx_index++)
 
677
                if (machine->gfx[jclub2_gfx_index] == 0)
 
678
                        break;
 
679
 
 
680
        assert(jclub2_gfx_index != MAX_GFX_ELEMENTS);
 
681
 
 
682
        /* create the char set (gfx will then be updated dynamically from RAM) */
 
683
        machine->gfx[jclub2_gfx_index] = gfx_element_alloc(machine, &layout_16x16x8_jclub2, (UINT8 *)jclub2_tileram, machine->config->total_colors / 16, 0);
 
684
 
 
685
 
 
686
}
 
687
 
 
688
static VIDEO_UPDATE(jclub2)
 
689
{
 
690
        return 0;
 
691
}
 
692
 
 
693
static MACHINE_DRIVER_START( jclub2 )
 
694
        MDRV_CPU_ADD("maincpu", M68EC020, 12000000)
 
695
        MDRV_CPU_PROGRAM_MAP(jclub2_map)
 
696
        MDRV_CPU_VBLANK_INT_HACK(darkhors,3)
 
697
 
 
698
        MDRV_NVRAM_HANDLER(darkhors)
 
699
 
 
700
        /* video hardware */
 
701
        MDRV_SCREEN_ADD("screen", RASTER)
 
702
        MDRV_SCREEN_REFRESH_RATE(60)
 
703
        MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
 
704
        MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
 
705
        MDRV_SCREEN_SIZE(0x190, 0x100)
 
706
        MDRV_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
 
707
 
 
708
        MDRV_GFXDECODE(jclub2)
 
709
        MDRV_PALETTE_LENGTH(0x10000)
 
710
 
 
711
        MDRV_VIDEO_START(jclub2)
 
712
        MDRV_VIDEO_UPDATE(jclub2)
 
713
MACHINE_DRIVER_END
 
714
 
 
715
static ADDRESS_MAP_START( st0016_mem, ADDRESS_SPACE_PROGRAM, 8 )
 
716
        AM_RANGE(0x0000, 0x7fff) AM_ROM
 
717
        AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
 
718
        AM_RANGE(0xe900, 0xe9ff) AM_DEVREADWRITE("st", st0016_snd_r, st0016_snd_w)
 
719
        AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w)
 
720
        AM_RANGE(0xf000, 0xffff) AM_RAM
 
721
ADDRESS_MAP_END
 
722
 
 
723
static ADDRESS_MAP_START( st0016_io, ADDRESS_SPACE_IO, 8 )
 
724
        ADDRESS_MAP_GLOBAL_MASK(0xff)
 
725
        AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w)
 
726
        //AM_RANGE(0xc0, 0xc0) AM_READ(cmd1_r)
 
727
        //AM_RANGE(0xc1, 0xc1) AM_READ(cmd2_r)
 
728
        //AM_RANGE(0xc2, 0xc2) AM_READ(cmd_stat8_r)
 
729
        AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w)
 
730
        AM_RANGE(0xe7, 0xe7) AM_WRITE(st0016_rom_bank_w)
 
731
        //AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r)
 
732
ADDRESS_MAP_END
 
733
 
 
734
static const st0016_interface st0016_config =
 
735
{
 
736
        &st0016_charram
 
737
};
 
738
 
 
739
static VIDEO_START(jclub2o)
 
740
{
 
741
 
 
742
}
 
743
 
 
744
static VIDEO_UPDATE(jclub2o)
 
745
{
 
746
        return 0;
 
747
}
 
748
 
 
749
static MACHINE_DRIVER_START( jclub2o )
 
750
        MDRV_CPU_ADD("st0016",Z80,8000000)
 
751
        MDRV_CPU_PROGRAM_MAP(st0016_mem)
 
752
        MDRV_CPU_IO_MAP(st0016_io)
 
753
        MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
 
754
 
 
755
        MDRV_CPU_ADD("maincpu", M68EC020, 12000000)
 
756
        MDRV_CPU_PROGRAM_MAP(jclub2o_map)
 
757
        //MDRV_CPU_VBLANK_INT_HACK(darkhors,3)
 
758
 
 
759
        MDRV_NVRAM_HANDLER(darkhors)
 
760
 
 
761
        /* video hardware */
 
762
        MDRV_SCREEN_ADD("screen", RASTER)
 
763
        MDRV_SCREEN_REFRESH_RATE(60)
 
764
        MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
 
765
        MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
 
766
        MDRV_SCREEN_SIZE(0x190, 0x100)
 
767
        MDRV_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
 
768
 
 
769
        MDRV_GFXDECODE(jclub2)
 
770
        MDRV_PALETTE_LENGTH(0x10000)
 
771
 
 
772
        MDRV_VIDEO_START(jclub2o)
 
773
        MDRV_VIDEO_UPDATE(jclub2o)
 
774
 
 
775
        MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
 
776
 
 
777
        MDRV_SOUND_ADD("st", ST0016, 0)
 
778
        MDRV_SOUND_CONFIG(st0016_config)
 
779
        MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
 
780
        MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
 
781
MACHINE_DRIVER_END
 
782
 
 
783
 
609
784
/***************************************************************************
610
785
 
611
786
 
619
794
        ROM_LOAD32_WORD_SWAP( "prg2", 0x00000, 0x80000, CRC(f2ec5818) SHA1(326937a331496880f517f41b0b8ab54e55fd7af7) )
620
795
        ROM_LOAD32_WORD_SWAP( "prg1", 0x00002, 0x80000, CRC(b80f8f59) SHA1(abc26dd8b36da0d510978364febe385f69fb317f) )
621
796
 
622
 
        ROM_REGION( 0x400000, "gfx1", ROMREGION_DISPOSE )
 
797
        ROM_REGION( 0x400000, "gfx1", 0 )
623
798
        ROM_LOAD( "gfx1", 0x000000, 0x80000, CRC(e9fe9967) SHA1(a79d75c09f0eac6372de8d6e98c5eecf38ef750c) )
624
799
        ROM_LOAD( "gfx2", 0x080000, 0x80000, CRC(0853c5c5) SHA1(2b49ffe607278817f1f8219a79f5906be53ee6f4) )
625
800
        ROM_LOAD( "gfx3", 0x100000, 0x80000, CRC(6e89278f) SHA1(044c15e00ea95fd3f108fa916000a1000789c8e8) )
637
812
        ROM_LOAD( "eeprom", 0x00000, 0x80000, CRC(45314fdb) SHA1(c4bd5508e5b51a6e0356c049f1ccf2b5d94caee9) )
638
813
ROM_END
639
814
 
 
815
/*
 
816
 
 
817
Jockey Club II Original sets
 
818
 
 
819
 -- unlike the bootleg these appear to have the graphics compressed in the main program roms.  (CPS3 / SRMP6 -like)  (I think CPS3 is a SETA design)
 
820
 -- the older hardware uses an st-0016 for sound (see st0016.c)
 
821
 -- the program can be upgraded by placing a ROM in the socket next to the main program ROM.
 
822
 
 
823
 */
 
824
 
 
825
 
 
826
 
 
827
 /*
 
828
Jockey Club II by SETA 1996
 
829
 
 
830
PCB E79-001 rev 01a (Newer)
 
831
 
 
832
Main CPU : SETA ST-0032 70C600JF505
 
833
 
 
834
Others : MC68EC020FG16
 
835
     SETA ST-0013
 
836
     SETA ST-0017
 
837
 
 
838
Xtal : 42.9545 MHz, 60.0000 MHz, 33.3333 MHz
 
839
 
 
840
 
 
841
Rams :  Toshiba : TC5118160CJ-60 (x3)
 
842
    NKK N341256SJ-15 (x2)
 
843
    NEC D43001GU-70LL (x4)
 
844
 
 
845
Gals : gal16V8B(x2) ref : M88-03 M88-04
 
846
 
 
847
Eeprom : 93c46
 
848
 
 
849
Eproms : M88-01.u38,M88-023.u6 (read as 578200) (1st set)
 
850
     M88-01A.u38,M88-02.u6 (2nd set)
 
851
     M88-01B.u38,M88-02.u6 (3rd set)
 
852
     M88-01.u38,M88-02.u6,Z201x.u39 (4th set)
 
853
     M88-01A.u38,M88-02.u6 M88-03D.u39 (5th set)
 
854
     M88-01B.u38,M88-02.u6,M88-03D.u39 (6th set)
 
855
 
 
856
Provided to you by Belgium Dump Team Gerald (COY) on 18/01/2007.
 
857
*/
 
858
 
 
859
 
 
860
// ToDo: check for other similarities with CPS3 hardware, there are more than a few things which look the same.
 
861
 
 
862
// this contains mutliple sets, although splitting them as listed above makes no sense.. especially not the 'subcpu' roms
 
863
ROM_START( jclub2 )
 
864
        ROM_REGION( 0x200000, "maincpu", 0 )    // 68EC020 code  + compressed GFX
 
865
        // main program (similar to main program of bootleg
 
866
        ROM_LOAD16_WORD_SWAP( "m88-01b.u38",0x00000, 0x200000, CRC(f1054c69) SHA1(be6d92653f0d3cc0a36a2ff0798043f4a95439bc) )
 
867
        ROM_LOAD16_WORD_SWAP( "m88-01a.u38",0x00000, 0x200000, CRC(c1243e1c) SHA1(2a5857738b8950daf77ddaa8304b765f809f8241) ) // alt revision?
 
868
        ROM_LOAD16_WORD_SWAP( "m88-01.u38", 0x00000, 0x200000, CRC(84476b68) SHA1(1014d23d3cebbfa9aa3bfb90505529989a8eedfa) ) // alt revision?
 
869
 
 
870
        ROM_REGION( 0x200000, "patch", 0 )      // 68EC020 code
 
871
        // it appears that the operator could place a ROM in the socket next to the main CPU rom to update the main program rom by
 
872
        // overriding the initial 0x80000 bytes of the program rom.
 
873
        ROM_LOAD16_WORD_SWAP( "m88-03d.u39",0x00000, 0x080000, CRC(723dd22b) SHA1(0ca622e0dd315f29e72dd9b82fb419d306ec5df8) )
 
874
        ROM_LOAD16_WORD_SWAP( "z201x.u39",0x00000, 0x080000, CRC(1fb79c16) SHA1(c8914f7dfc17c412f6ca756f8eb6d6a35e3b6214) )
 
875
 
 
876
        ROM_REGION( 0x100000, "oki", 0 )        // Samples? (not oki probably one of the ST-xx customs, no idea if the dump is good)
 
877
        // data distribution would indicate this is a sound rom
 
878
        ROM_LOAD( "m88-02.u6", 0x00000, 0x100000, CRC(0dd3436a) SHA1(809d3b7a26d36f71da04036fd8ab5d0c5089392a) )
 
879
 
 
880
        ROM_REGION( 0x80000, "user1", ROMREGION_ERASEFF | ROMREGION_BE )        // EEPROM
 
881
 
 
882
        ROM_REGION( 0x80000, "misc", ROMREGION_ERASEFF )
 
883
        ROM_LOAD( "gal16v8b-m88-03.bin", 0x000, 0x117, CRC(6d9c882e) SHA1(84cb95ab540290c2f8b740668360e9c643a67dcf) )
 
884
        ROM_LOAD( "gal16v8b-m88-04.bin", 0x000, 0x117, CRC(5e79f292) SHA1(5e44c234e2b15d486a1af71fee986892aa245b4d) )
 
885
ROM_END
 
886
 
 
887
/*
 
888
Jockey Club II by SETA 1994-1995
 
889
 
 
890
Other hardware version (older):
 
891
 
 
892
Main PCB: E06-00409
 
893
Sub PCb : E06-00407 (I/O nothing else)
 
894
 
 
895
Main CPU : SETA ST-0020
 
896
 
 
897
Many XTAL : 48.0000 MHz,33.3333 MHz,4.91520 MHz,42.9545 MHz(x2),105.0000 MHz (this 105.0000 Xtal is sometimes replaced by a tiny pcb silscreened 108.0000 MHz(!), with ICS ICS1494N, MB3771 and 14.3181 MHz Xtal)
 
898
 
 
899
Others : MC68EC020FG16
 
900
     SETA ST-0013
 
901
     SETA ST-0016  <-- z80 core + simple gfx + sound, see st0016.c
 
902
     SETA ST-0017
 
903
 
 
904
Rams :  Toshiba TC514800AJ-70
 
905
    Toshiba TC514000ASJ-70 (x8)
 
906
    Sharp LH5168D
 
907
 
 
908
Eproms : SX006A-01.u26 read as 5716200,JC2-110x.u27,SX006-04.u87 (sound)
 
909
     SX006B-01.u26,JC2-110x.u27,SX006-04.u87 (sound)
 
910
     SX006A-01.u26,JC2-112x.u27,SX006-04.u87 (sound)
 
911
     SX006B-01.u26,JC2-112x.u27,SX006-04.u87 (sound)
 
912
 
 
913
Provided to you by Belgium Dump Team Gerald (COY) on 18/01/2007.
 
914
 
 
915
*/
 
916
 
 
917
// this contains mutliple sets
 
918
ROM_START( jclub2o )
 
919
        ROM_REGION( 0x200000, "maincpu", 0 )    // 68EC020 code + compressed gfx
 
920
        ROM_LOAD16_WORD_SWAP( "sx006a-01.106",0x00000, 0x200000, CRC(55e249bc) SHA1(ed0f066ed17f047760b712cbbfba1a62d4b452ba) )
 
921
        ROM_LOAD16_WORD_SWAP( "sx006b-01.u26",0x00000, 0x200000, CRC(f730dded) SHA1(efb966dcb98440a072d4825ef2788c85acdfd103) )  // alt revision?
 
922
 
 
923
        ROM_REGION( 0x200000, "patch", 0 )      // 68EC020 code
 
924
        // it appears that the operator could place a ROM in the socket next to the main CPU rom to update the main program rom by
 
925
        // overriding the initial 0x80000 bytes of the program rom.
 
926
        ROM_LOAD16_WORD_SWAP( "jc2-110x.u27",0x00000, 0x080000, CRC(03aa6882) SHA1(e0343bc77a19994ddafa614891663b40e1476332) )
 
927
        ROM_LOAD16_WORD_SWAP( "jc2-112x.u27",0x00000, 0x080000, CRC(e1ab93bd) SHA1(78b618b3f7819bd5351ebf949f328fec7795cec9) ) // alt revision?
 
928
 
 
929
        ROM_REGION( 0x90000, "st0016", 0 ) // z80 core (used for sound?)
 
930
        ROM_LOAD( "sx006-04.u87", 0x10000, 0x80000, CRC(a87adedd) SHA1(1cd5af2d03738fff2230b46241659179467c828c) )
 
931
        ROM_COPY( "st0016",  0x10000, 0x00000, 0x08000 )
 
932
 
 
933
        ROM_REGION( 0x80000, "user1", ROMREGION_ERASEFF | ROMREGION_BE )        // EEPROM
 
934
ROM_END
 
935
 
640
936
/***************************************************************************
641
937
 
642
938
 
664
960
                eeprom[i] = eeprom[i*2];
665
961
}
666
962
 
667
 
GAME( 2001, darkhors, 0, darkhors, darkhors, darkhors, ROT0, "bootleg", "Dark Horse", GAME_IMPERFECT_GRAPHICS )
 
963
GAME( 199?, jclub2,   0,      jclub2,  darkhors, 0,        ROT0, "Seta", "Jockey Club II (newer hardware)", GAME_NOT_WORKING | GAME_NO_SOUND )
 
964
GAME( 199?, jclub2o,  jclub2, jclub2o, darkhors, 0,        ROT0, "Seta", "Jockey Club II (older hardware)", GAME_NOT_WORKING | GAME_NO_SOUND )
 
965
GAME( 2001, darkhors, jclub2, darkhors, darkhors, darkhors, ROT0, "bootleg", "Dark Horse (bootleg of Jockey Club II)", GAME_IMPERFECT_GRAPHICS )