Previous 199869 Revisions Next

r35169 Saturday 21st February, 2015 at 07:17:19 UTC by Vasantha Crabb
Make verinfo.py capable of producing Info.plist for OSX
[src/build]verinfo.py
[src/mame/drivers]tecmosys.c tehkanwc.c
[src/mame/includes]tecmosys.h tehkanwc.h
[src/mame/machine]tecmosys.c
[src/mame/video]tecmosys.c tehkanwc.c

trunk/src/build/verinfo.py
r243680r243681
22
33from __future__ import with_statement
44
5import os
6import re
57import sys
6import os
78
8def usage():
9    sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] <filename>\n')
10    return 0
11   
12build = "mame"
139
14if (len(sys.argv)==1):
15   usage()
16   sys.exit(1)
10def parse_args():
11    def usage():
12        sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] [-r|-p] <filename>\n')
13        sys.exit(1)
1714
18if (sys.argv[1]=='-b'):
19    if (sys.argv[2]=='mame'):
20        build = "mame"
21    elif (sys.argv[2]=='mess'):
22        build = "mess"
23    elif (sys.argv[2]=='ume'):
24        build = "ume"
25    else :
26      usage()
27      sys.exit(1)
15    flags = True
16    target = 'mame'
17    input = None
18    output = 'rc'
19    i = 1
20    while i < len(sys.argv):
21        if flags and (sys.argv[i] == '-r'):
22            output = 'rc'
23        elif flags and (sys.argv[i] == '-p'):
24            output = 'plist'
25        elif flags and (sys.argv[i] == '-b'):
26            i += 1;
27            if (i >= len(sys.argv)) or (sys.argv[i] not in ('mame', 'mess', 'ume')):
28                usage()
29            else:
30                target = sys.argv[i]
31        elif flags and (sys.argv[i] == '--'):
32            flags = False
33        elif flags and sys.argv[i].startswith('-'):
34            usage()
35        elif input is not None:
36            usage()
37        else:
38            input = sys.argv[i]
39        i += 1
40    if input is None:
41        usage()
42    return target, input, output
2843
29srcfile = sys.argv[len(sys.argv)-1]
44
45def extract_version(input):
46    pattern = re.compile('\s+BARE_BUILD_VERSION\s+"(([^."]+)\.([^."]+))"')
47    for line in input.readlines():
48        match = pattern.search(line)
49        if match:
50            return match.group(1), match.group(2), match.group(3)
51    return None, None, None
52
53
54build, srcfile, outfmt = parse_args()
55
3056try:
31   fp = open(srcfile, 'rb')
57    fp = open(srcfile, 'rb')
3258except IOError:
33   sys.stderr.write("Unable to open source file '%s'" % srcfile)
34   sys.exit(1)
59    sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
60    sys.exit(1)
3561
36for line in fp.readlines():
37    if line.find("BARE_BUILD_VERSION")!=-1 and line.find('"')!=-1 and line.find('.')!=-1:
38        version_string = line[line.find('"')+1:]
39        version_string = version_string[0:version_string.find('"')]
40        break
41
42version_major = version_string[0:version_string.find('.')]
43version_minor = version_string[version_string.find('.')+1:]
62version_string, version_major, version_minor = extract_version(fp)
4463version_build = "0"
4564version_subbuild = "0"
46if (build == "mess") :
65if not version_string:
66    sys.stderr.write("Unable to extract version from source file '%s'\n" % srcfile)
67    sys.exit(1)
68
69if build == "mess":
4770    # MESS
4871    author = "MESS Team";
4972    comments = "Multi Emulation Super System";
r243680r243681
5275    internal_name = "MESS";
5376    original_filename = "MESS";
5477    product_name = "MESS";
55elif (build == "ume") :
78    bundle_identifier = "org.mamedev.mess"
79elif build == "ume":
5680    # UME
5781    author = "MAME and MESS Team"
5882    comments = "Universal Machine Emulator"
r243680r243681
6185    internal_name = "UME"
6286    original_filename = "UME"
6387    product_name = "UME"
64else :
88    bundle_identifier = "org.mamedev.ume"
89else:
6590    # MAME
6691    author = "Nicola Salmoria and the MAME Team"
6792    comments = "Multiple Arcade Machine Emulator"
r243680r243681
7095    internal_name = "MAME"
7196    original_filename = "MAME"
7297    product_name = "MAME"
98    bundle_identifier = "org.mamedev.mame"
7399
74100legal_copyright = "Copyright Nicola Salmoria and the MAME team"
75101
76print("VS_VERSION_INFO VERSIONINFO")
77print("\tFILEVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
78print("\tPRODUCTVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
79print("\tFILEFLAGSMASK 0x3fL")
80if (version_build == 0) :
81    print("\tFILEFLAGS 0x0L")
82else :
83    print("\tFILEFLAGS VS_FF_PRERELEASE")
84print("\tFILEOS VOS_NT_WINDOWS32")
85print("\tFILETYPE VFT_APP")
86print("\tFILESUBTYPE VFT2_UNKNOWN")
87print("BEGIN")
88print("\tBLOCK \"StringFileInfo\"")
89print("\tBEGIN")
90print("#ifdef UNICODE")
91print("\t\tBLOCK \"040904b0\"")
92print("#else")
93print("\t\tBLOCK \"040904E4\"")
94print("#endif")
95print("\t\tBEGIN")
96print("\t\t\tVALUE \"Author\", \"%s\\0\"" % author)
97print("\t\t\tVALUE \"Comments\", \"%s\\0\"" % comments)
98print("\t\t\tVALUE \"CompanyName\", \"%s\\0\"" % company_name)
99print("\t\t\tVALUE \"FileDescription\", \"%s\\0\"" % file_description)
100print("\t\t\tVALUE \"FileVersion\", \"%s, %s, %s, %s\\0\"" % (version_major, version_minor, version_build, version_subbuild))
101print("\t\t\tVALUE \"InternalName\", \"%s\\0\"" % internal_name)
102print("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"" % legal_copyright)
103print("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"" % original_filename)
104print("\t\t\tVALUE \"ProductName\", \"%s\\0\"" % product_name)
105print("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"" % version_string)
106print("\t\tEND")
107print("\tEND")
108print("\tBLOCK \"VarFileInfo\"")
109print("\tBEGIN")
110print("#ifdef UNICODE")
111print("\t\tVALUE \"Translation\", 0x409, 1200")
112print("#else")
113print("\t\tVALUE \"Translation\", 0x409, 1252")
114print("#endif")
115print("\tEND")
116print("END")
No newline at end of file
102if outfmt == 'rc':
103    print("VS_VERSION_INFO VERSIONINFO")
104    print("\tFILEVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
105    print("\tPRODUCTVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild))
106    print("\tFILEFLAGSMASK 0x3fL")
107    if (version_build == 0) :
108        print("\tFILEFLAGS 0x0L")
109    else :
110        print("\tFILEFLAGS VS_FF_PRERELEASE")
111    print("\tFILEOS VOS_NT_WINDOWS32")
112    print("\tFILETYPE VFT_APP")
113    print("\tFILESUBTYPE VFT2_UNKNOWN")
114    print("BEGIN")
115    print("\tBLOCK \"StringFileInfo\"")
116    print("\tBEGIN")
117    print("#ifdef UNICODE")
118    print("\t\tBLOCK \"040904b0\"")
119    print("#else")
120    print("\t\tBLOCK \"040904E4\"")
121    print("#endif")
122    print("\t\tBEGIN")
123    print("\t\t\tVALUE \"Author\", \"%s\\0\"" % author)
124    print("\t\t\tVALUE \"Comments\", \"%s\\0\"" % comments)
125    print("\t\t\tVALUE \"CompanyName\", \"%s\\0\"" % company_name)
126    print("\t\t\tVALUE \"FileDescription\", \"%s\\0\"" % file_description)
127    print("\t\t\tVALUE \"FileVersion\", \"%s, %s, %s, %s\\0\"" % (version_major, version_minor, version_build, version_subbuild))
128    print("\t\t\tVALUE \"InternalName\", \"%s\\0\"" % internal_name)
129    print("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"" % legal_copyright)
130    print("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"" % original_filename)
131    print("\t\t\tVALUE \"ProductName\", \"%s\\0\"" % product_name)
132    print("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"" % version_string)
133    print("\t\tEND")
134    print("\tEND")
135    print("\tBLOCK \"VarFileInfo\"")
136    print("\tBEGIN")
137    print("#ifdef UNICODE")
138    print("\t\tVALUE \"Translation\", 0x409, 1200")
139    print("#else")
140    print("\t\tVALUE \"Translation\", 0x409, 1252")
141    print("#endif")
142    print("\tEND")
143    print("END")
144elif outfmt == 'plist':
145    print('<?xml version="1.0" encoding="UTF-8"?>')
146    print('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">')
147    print('<plist version="1.0">')
148    print('<dict>')
149    print('\t<key>CFBundleDisplayName</key>')
150    print('\t<string>%s</string>' % product_name)
151    print('\t<key>CFBundleIdentifier</key>')
152    print('\t<string>%s</string>' % bundle_identifier)
153    print('\t<key>CFBundleInfoDictionaryVersion</key>')
154    print('\t<string>6.0</string>')
155    print('\t<key>CFBundleName</key>')
156    print('\t<string>%s</string>' % product_name)
157    print('\t<key>CFBundleShortVersionString</key>')
158    print('\t<string>%s.%s.%s</string>' % (version_major, version_minor, version_build))
159    print('</dict>')
160    print('</plist>')
trunk/src/mame/drivers/tecmosys.c
r243680r243681
309309   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(eeprom_w  )
310310   AM_RANGE(0xa80000, 0xa80005) AM_WRITEONLY AM_SHARE("a80000regs")    // a80000-3 scroll? a80004 inverted ? 3 : 0
311311   AM_RANGE(0xb00000, 0xb00005) AM_WRITEONLY AM_SHARE("b00000regs")    // b00000-3 scrool?, b00004 inverted ? 3 : 0
312   AM_RANGE(0xb80000, 0xb80001) AM_READWRITE(prot_status_r, prot_status_w)
312   AM_RANGE(0xb80000, 0xb80001) AM_READWRITE(tecmosys_prot_status_r, tecmosys_prot_status_w)
313313   AM_RANGE(0xc00000, 0xc00005) AM_WRITEONLY AM_SHARE("c00000regs")    // c00000-3 scroll? c00004 inverted ? 13 : 10
314314   AM_RANGE(0xc80000, 0xc80005) AM_WRITEONLY AM_SHARE("c80000regs")    // c80000-3 scrool? c80004 inverted ? 3 : 0
315315   AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("P1")
316316   AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("P2")
317317   AM_RANGE(0xd80000, 0xd80001) AM_READ(eeprom_r)
318318   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(sound_w )
319   AM_RANGE(0xe80000, 0xe80001) AM_WRITE(prot_data_w)
319   AM_RANGE(0xe80000, 0xe80001) AM_WRITE(tecmosys_prot_data_w)
320320   AM_RANGE(0xf00000, 0xf00001) AM_READ(sound_r)
321   AM_RANGE(0xf80000, 0xf80001) AM_READ(prot_data_r)
321   AM_RANGE(0xf80000, 0xf80001) AM_READ(tecmosys_prot_data_r)
322322ADDRESS_MAP_END
323323
324324
325WRITE8_MEMBER(tecmosys_state::z80_bank_w)
325WRITE8_MEMBER(tecmosys_state::tecmosys_z80_bank_w)
326326{
327327   membank("bank1")->set_entry(data);
328328}
329329
330WRITE8_MEMBER(tecmosys_state::oki_bank_w)
330WRITE8_MEMBER(tecmosys_state::tecmosys_oki_bank_w)
331331{
332332   UINT8 upperbank = (data & 0x30) >> 4;
333333   UINT8 lowerbank = (data & 0x03) >> 0;
r243680r243681
347347   ADDRESS_MAP_GLOBAL_MASK(0xff)
348348   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymf", ymf262_device, read, write)
349349   AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("oki", okim6295_device, read, write)
350   AM_RANGE(0x20, 0x20) AM_WRITE(oki_bank_w)
351   AM_RANGE(0x30, 0x30) AM_WRITE(z80_bank_w)
350   AM_RANGE(0x20, 0x20) AM_WRITE(tecmosys_oki_bank_w)
351   AM_RANGE(0x30, 0x30) AM_WRITE(tecmosys_z80_bank_w)
352352   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_byte_r)
353353   AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch2_byte_w)
354354   AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
r243680r243681
441441void tecmosys_state::machine_start()
442442{
443443   membank("bank1")->configure_entries(0, 16, memregion("audiocpu")->base(), 0x4000);
444   
445   save_item(NAME(m_device_read_ptr));
446   save_item(NAME(m_device_status));
447   save_item(NAME(m_device_value));
448444}
449445
450446static MACHINE_CONFIG_START( deroon, tecmosys_state )
r243680r243681
469465   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3000))
470466   MCFG_SCREEN_SIZE(64*8, 64*8)
471467   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
472   MCFG_SCREEN_UPDATE_DRIVER(tecmosys_state, screen_update)
468   MCFG_SCREEN_UPDATE_DRIVER(tecmosys_state, screen_update_tecmosys)
473469
474470   MCFG_PALETTE_ADD("palette", 0x4000+0x800)
475471   MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
r243680r243681
624620   ROM_LOAD( "ae500w07.ad1", 0x080000, 0x080000, CRC(3734f92c) SHA1(048555b5aa89eaf983305c439ba08d32b4a1bb80) )
625621ROM_END
626622
627void tecmosys_state::descramble()
623void tecmosys_state::tecmosys_descramble()
628624{
629625   UINT8 *gfxsrc  = memregion( "gfx1" )->base();
630626   size_t srcsize = memregion( "gfx1" )->bytes();
r243680r243681
648644
649645DRIVER_INIT_MEMBER(tecmosys_state,deroon)
650646{
651   descramble();
652   prot_init(0); // machine/tecmosys.c
647   tecmosys_descramble();
648   tecmosys_prot_init(0); // machine/tecmosys.c
653649}
654650
655651DRIVER_INIT_MEMBER(tecmosys_state,tkdensho)
656652{
657   descramble();
658   prot_init(1);
653   tecmosys_descramble();
654   tecmosys_prot_init(1);
659655}
660656
661657DRIVER_INIT_MEMBER(tecmosys_state,tkdensha)
662658{
663   descramble();
664   prot_init(2);
659   tecmosys_descramble();
660   tecmosys_prot_init(2);
665661}
666662
667GAME( 1995, deroon,           0, deroon, deroon, tecmosys_state, deroon,     ROT0, "Tecmo", "Deroon DeroDero", GAME_SUPPORTS_SAVE )
668GAME( 1996, tkdensho,         0, deroon, deroon, tecmosys_state, tkdensho,   ROT0, "Tecmo", "Toukidenshou - Angel Eyes (VER. 960614)", GAME_SUPPORTS_SAVE )
669GAME( 1996, tkdenshoa, tkdensho, deroon, deroon, tecmosys_state, tkdensha,   ROT0, "Tecmo", "Toukidenshou - Angel Eyes (VER. 960427)", GAME_SUPPORTS_SAVE )
663GAME( 1995, deroon,           0, deroon, deroon, tecmosys_state, deroon,     ROT0, "Tecmo", "Deroon DeroDero", 0 )
664GAME( 1996, tkdensho,         0, deroon, deroon, tecmosys_state, tkdensho,   ROT0, "Tecmo", "Toukidenshou - Angel Eyes (VER. 960614)", 0 )
665GAME( 1996, tkdenshoa, tkdensho, deroon, deroon, tecmosys_state, tkdensha,   ROT0, "Tecmo", "Toukidenshou - Angel Eyes (VER. 960427)", 0 )
trunk/src/mame/drivers/tehkanwc.c
r243680r243681
9191#include "emu.h"
9292#include "cpu/z80/z80.h"
9393#include "sound/ay8910.h"
94#include "sound/msm5205.h"
9495#include "gridiron.lh"
9596#include "includes/tehkanwc.h"
9697
97
98void tehkanwc_state::machine_start()
99{
100   save_item(NAME(m_track0));
101   save_item(NAME(m_track1));
102   save_item(NAME(m_msm_data_offs));
103   save_item(NAME(m_toggle));
104}
105
10698WRITE8_MEMBER(tehkanwc_state::sub_cpu_halt_w)
10799{
108100   if (data)
r243680r243681
112104}
113105
114106
115READ8_MEMBER(tehkanwc_state::track_0_r)
107READ8_MEMBER(tehkanwc_state::tehkanwc_track_0_r)
116108{
117109   int joy;
118110
r243680r243681
122114   return ioport(offset ? "P1Y" : "P1X")->read() - m_track0[offset];
123115}
124116
125READ8_MEMBER(tehkanwc_state::track_1_r)
117READ8_MEMBER(tehkanwc_state::tehkanwc_track_1_r)
126118{
127119   int joy;
128120
r243680r243681
132124   return ioport(offset ? "P2Y" : "P2X")->read() - m_track1[offset];
133125}
134126
135WRITE8_MEMBER(tehkanwc_state::track_0_reset_w)
127WRITE8_MEMBER(tehkanwc_state::tehkanwc_track_0_reset_w)
136128{
137129   /* reset the trackball counters */
138130   m_track0[offset] = ioport(offset ? "P1Y" : "P1X")->read() + data;
139131}
140132
141WRITE8_MEMBER(tehkanwc_state::track_1_reset_w)
133WRITE8_MEMBER(tehkanwc_state::tehkanwc_track_1_reset_w)
142134{
143135   /* reset the trackball counters */
144136   m_track1[offset] = ioport(offset ? "P2Y" : "P2X")->read() + data;
r243680r243681
177169/* Emulate MSM sound samples with counters */
178170
179171
180READ8_MEMBER(tehkanwc_state::portA_r)
172READ8_MEMBER(tehkanwc_state::tehkanwc_portA_r)
181173{
182174   return m_msm_data_offs & 0xff;
183175}
184176
185READ8_MEMBER(tehkanwc_state::portB_r)
177READ8_MEMBER(tehkanwc_state::tehkanwc_portB_r)
186178{
187179   return (m_msm_data_offs >> 8) & 0xff;
188180}
189181
190WRITE8_MEMBER(tehkanwc_state::portA_w)
182WRITE8_MEMBER(tehkanwc_state::tehkanwc_portA_w)
191183{
192184   m_msm_data_offs = (m_msm_data_offs & 0xff00) | data;
193185}
194186
195WRITE8_MEMBER(tehkanwc_state::portB_w)
187WRITE8_MEMBER(tehkanwc_state::tehkanwc_portB_w)
196188{
197189   m_msm_data_offs = (m_msm_data_offs & 0x00ff) | (data << 8);
198190}
r243680r243681
202194   m_msm->reset_w(data ? 0 : 1);
203195}
204196
205WRITE_LINE_MEMBER(tehkanwc_state::adpcm_int)
197WRITE_LINE_MEMBER(tehkanwc_state::tehkanwc_adpcm_int)
206198{
207199   UINT8 *SAMPLES = memregion("adpcm")->base();
208200   int msm_data = SAMPLES[m_msm_data_offs & 0x7fff];
r243680r243681
226218   AM_RANGE(0x0000, 0xbfff) AM_ROM
227219   AM_RANGE(0xc000, 0xc7ff) AM_RAM
228220   AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
229   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
230   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
221   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(tehkanwc_videoram_w) AM_SHARE("videoram")
222   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(tehkanwc_colorram_w) AM_SHARE("colorram")
231223   AM_RANGE(0xd800, 0xddff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
232224   AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("share5") /* unused part of the palette RAM, I think? Gridiron uses it */
233   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
225   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(tehkanwc_videoram2_w) AM_SHARE("videoram2")
234226   AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") /* sprites */
235   AM_RANGE(0xec00, 0xec01) AM_RAM_WRITE(scroll_x_w)
236   AM_RANGE(0xec02, 0xec02) AM_RAM_WRITE(scroll_y_w)
237   AM_RANGE(0xf800, 0xf801) AM_READWRITE(track_0_r, track_0_reset_w) /* track 0 x/y */
227   AM_RANGE(0xec00, 0xec01) AM_RAM_WRITE(tehkanwc_scroll_x_w)
228   AM_RANGE(0xec02, 0xec02) AM_RAM_WRITE(tehkanwc_scroll_y_w)
229   AM_RANGE(0xf800, 0xf801) AM_READWRITE(tehkanwc_track_0_r, tehkanwc_track_0_reset_w) /* track 0 x/y */
238230   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(gridiron_led0_w)
239231   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("P1BUT")
240232   AM_RANGE(0xf806, 0xf806) AM_READ_PORT("SYSTEM")
241   AM_RANGE(0xf810, 0xf811) AM_READWRITE(track_1_r, track_1_reset_w) /* track 1 x/y */
233   AM_RANGE(0xf810, 0xf811) AM_READWRITE(tehkanwc_track_1_r, tehkanwc_track_1_reset_w) /* track 1 x/y */
242234   AM_RANGE(0xf812, 0xf812) AM_WRITE(gridiron_led1_w)
243235   AM_RANGE(0xf813, 0xf813) AM_READ_PORT("P2BUT")
244236   AM_RANGE(0xf820, 0xf820) AM_READ(soundlatch2_byte_r) AM_WRITE(sound_command_w)  /* answer from the sound CPU */
245237   AM_RANGE(0xf840, 0xf840) AM_READ_PORT("DSW1") AM_WRITE(sub_cpu_halt_w)
246238   AM_RANGE(0xf850, 0xf850) AM_READ_PORT("DSW2") AM_WRITENOP           /* ?? writes 0x00 or 0xff */
247   AM_RANGE(0xf860, 0xf860) AM_READ(watchdog_reset_r) AM_WRITE(flipscreen_x_w)
248   AM_RANGE(0xf870, 0xf870) AM_READ_PORT("DSW3") AM_WRITE(flipscreen_y_w)
239   AM_RANGE(0xf860, 0xf860) AM_READ(watchdog_reset_r) AM_WRITE(tehkanwc_flipscreen_x_w)
240   AM_RANGE(0xf870, 0xf870) AM_READ_PORT("DSW3") AM_WRITE(tehkanwc_flipscreen_y_w)
249241ADDRESS_MAP_END
250242
251243static ADDRESS_MAP_START( sub_mem, AS_PROGRAM, 8, tehkanwc_state )
252244   AM_RANGE(0x0000, 0x7fff) AM_ROM
253245   AM_RANGE(0x8000, 0xc7ff) AM_RAM
254246   AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
255   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
256   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
247   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(tehkanwc_videoram_w) AM_SHARE("videoram")
248   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(tehkanwc_colorram_w) AM_SHARE("colorram")
257249   AM_RANGE(0xd800, 0xddff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
258250   AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("share5") /* unused part of the palette RAM, I think? Gridiron uses it */
259   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
251   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(tehkanwc_videoram2_w) AM_SHARE("videoram2")
260252   AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") /* sprites */
261   AM_RANGE(0xec00, 0xec01) AM_RAM_WRITE(scroll_x_w)
262   AM_RANGE(0xec02, 0xec02) AM_RAM_WRITE(scroll_y_w)
253   AM_RANGE(0xec00, 0xec01) AM_RAM_WRITE(tehkanwc_scroll_x_w)
254   AM_RANGE(0xec02, 0xec02) AM_RAM_WRITE(tehkanwc_scroll_y_w)
263255   AM_RANGE(0xf860, 0xf860) AM_READ(watchdog_reset_r)
264256ADDRESS_MAP_END
265257
r243680r243681
646638   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
647639   MCFG_SCREEN_SIZE(32*8, 32*8)
648640   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
649   MCFG_SCREEN_UPDATE_DRIVER(tehkanwc_state, screen_update)
641   MCFG_SCREEN_UPDATE_DRIVER(tehkanwc_state, screen_update_tehkanwc)
650642   MCFG_SCREEN_PALETTE("palette")
651643
652644   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tehkanwc)
r243680r243681
658650   MCFG_SPEAKER_STANDARD_MONO("mono")
659651
660652   MCFG_SOUND_ADD("ay1", AY8910, 1536000)
661   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(tehkanwc_state, portA_w))
662   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(tehkanwc_state, portB_w))
653   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(tehkanwc_state, tehkanwc_portA_w))
654   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(tehkanwc_state, tehkanwc_portB_w))
663655   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
664656
665657   MCFG_SOUND_ADD("ay2", AY8910, 1536000)
666   MCFG_AY8910_PORT_A_READ_CB(READ8(tehkanwc_state, portA_r))
667   MCFG_AY8910_PORT_B_READ_CB(READ8(tehkanwc_state, portB_r))
658   MCFG_AY8910_PORT_A_READ_CB(READ8(tehkanwc_state, tehkanwc_portA_r))
659   MCFG_AY8910_PORT_B_READ_CB(READ8(tehkanwc_state, tehkanwc_portB_r))
668660   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
669661
670662   MCFG_SOUND_ADD("msm", MSM5205, 384000)
671   MCFG_MSM5205_VCLK_CB(WRITELINE(tehkanwc_state, adpcm_int)) /* interrupt function */
663   MCFG_MSM5205_VCLK_CB(WRITELINE(tehkanwc_state, tehkanwc_adpcm_int)) /* interrupt function */
672664   MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B)      /* 8KHz               */
673665   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
674666MACHINE_CONFIG_END
r243680r243681
890882
891883
892884
893GAME( 1985, tehkanwc,  0,        tehkanwc, tehkanwc, driver_device, 0,        ROT0,  "Tehkan", "Tehkan World Cup (set 1)", GAME_SUPPORTS_SAVE )
894GAME( 1985, tehkanwcb, tehkanwc, tehkanwc, tehkanwc, driver_device, 0,        ROT0,  "Tehkan", "Tehkan World Cup (set 2, bootleg?)", GAME_SUPPORTS_SAVE )
895GAME( 1985, tehkanwcc, tehkanwc, tehkanwc, tehkanwc, driver_device, 0,        ROT0,  "bootleg", "Tehkan World Cup (set 3, bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // aka 'World Cup 85', different inputs?
896GAMEL(1985, gridiron,  0,        tehkanwc, gridiron, driver_device, 0,        ROT0,  "Tehkan", "Gridiron Fight", GAME_SUPPORTS_SAVE, layout_gridiron )
897GAME( 1986, teedoff,   0,        tehkanwc, teedoff, tehkanwc_state,  teedoff,  ROT90, "Tecmo", "Tee'd Off (Japan)", GAME_SUPPORTS_SAVE )
885GAME( 1985, tehkanwc,  0,        tehkanwc, tehkanwc, driver_device, 0,        ROT0,  "Tehkan", "Tehkan World Cup (set 1)", 0 )
886GAME( 1985, tehkanwcb, tehkanwc, tehkanwc, tehkanwc, driver_device, 0,        ROT0,  "Tehkan", "Tehkan World Cup (set 2, bootleg?)", 0 )
887GAME( 1985, tehkanwcc, tehkanwc, tehkanwc, tehkanwc, driver_device, 0,        ROT0,  "bootleg", "Tehkan World Cup (set 3, bootleg)", GAME_NOT_WORKING ) // aka 'World Cup 85', different inputs?
888GAMEL(1985, gridiron,  0,        tehkanwc, gridiron, driver_device, 0,        ROT0,  "Tehkan", "Gridiron Fight", 0, layout_gridiron )
889GAME( 1986, teedoff,   0,        tehkanwc, teedoff, tehkanwc_state,  teedoff,  ROT90, "Tecmo", "Tee'd Off (Japan)", 0 )
trunk/src/mame/includes/tecmosys.h
r243680r243681
1010public:
1111   tecmosys_state(const machine_config &mconfig, device_type type, const char *tag)
1212      : driver_device(mconfig, type, tag),
13      m_maincpu(*this, "maincpu"),
14      m_audiocpu(*this, "audiocpu"),
15      m_eeprom(*this, "eeprom"),
16      m_gfxdecode(*this, "gfxdecode"),
17      m_screen(*this, "screen"),
18      m_palette(*this, "palette"),
1913      m_spriteram(*this, "spriteram"),
2014      m_tilemap_paletteram16(*this, "tmap_palette"),
2115      m_bg2tilemap_ram(*this, "bg2tilemap_ram"),
r243680r243681
2923      m_b00000regs(*this, "b00000regs"),
3024      m_c00000regs(*this, "c00000regs"),
3125      m_c80000regs(*this, "c80000regs"),
32      m_880000regs(*this, "880000regs") { }
26      m_880000regs(*this, "880000regs"),
27      m_maincpu(*this, "maincpu"),
28      m_audiocpu(*this, "audiocpu"),
29      m_eeprom(*this, "eeprom"),
30      m_gfxdecode(*this, "gfxdecode"),
31      m_screen(*this, "screen"),
32      m_palette(*this, "palette") { }
3333
34   required_device<cpu_device> m_maincpu;
35   required_device<cpu_device> m_audiocpu;
36   required_device<eeprom_serial_93cxx_device> m_eeprom;
37   required_device<gfxdecode_device> m_gfxdecode;
38   required_device<screen_device> m_screen;
39   required_device<palette_device> m_palette;
40
4134   required_shared_ptr<UINT16> m_spriteram;
4235   required_shared_ptr<UINT16> m_tilemap_paletteram16;
4336   required_shared_ptr<UINT16> m_bg2tilemap_ram;
r243680r243681
5245   required_shared_ptr<UINT16> m_c00000regs;
5346   required_shared_ptr<UINT16> m_c80000regs;
5447   required_shared_ptr<UINT16> m_880000regs;
55   
5648   int m_spritelist;
5749   bitmap_ind16 m_sprite_bitmap;
5850   bitmap_ind16 m_tmp_tilemap_composebitmap;
r243680r243681
6557   UINT8 m_device_status;
6658   const struct prot_data* m_device_data;
6759   UINT8 m_device_value;
68   
6960   DECLARE_READ16_MEMBER(sound_r);
7061   DECLARE_WRITE16_MEMBER(sound_w);
7162   DECLARE_WRITE16_MEMBER(unk880000_w);
7263   DECLARE_READ16_MEMBER(unk880000_r);
73   DECLARE_WRITE8_MEMBER(z80_bank_w);
74   DECLARE_WRITE8_MEMBER(oki_bank_w);
75   DECLARE_READ16_MEMBER(prot_status_r);
76   DECLARE_WRITE16_MEMBER(prot_status_w);
77   DECLARE_READ16_MEMBER(prot_data_r);
78   DECLARE_WRITE16_MEMBER(prot_data_w);
64   DECLARE_WRITE8_MEMBER(tecmosys_z80_bank_w);
65   DECLARE_WRITE8_MEMBER(tecmosys_oki_bank_w);
66   DECLARE_READ16_MEMBER(tecmosys_prot_status_r);
67   DECLARE_WRITE16_MEMBER(tecmosys_prot_status_w);
68   DECLARE_READ16_MEMBER(tecmosys_prot_data_r);
69   DECLARE_WRITE16_MEMBER(tecmosys_prot_data_w);
7970   DECLARE_WRITE16_MEMBER(bg0_tilemap_w);
8071   DECLARE_WRITE16_MEMBER(bg1_tilemap_w);
8172   DECLARE_WRITE16_MEMBER(bg2_tilemap_w);
r243680r243681
8677   DECLARE_WRITE16_MEMBER(bg2_tilemap_lineram_w);
8778   DECLARE_READ16_MEMBER(eeprom_r);
8879   DECLARE_WRITE16_MEMBER(eeprom_w);
89   DECLARE_WRITE_LINE_MEMBER(sound_irq);
90   
9180   DECLARE_DRIVER_INIT(tkdensha);
9281   DECLARE_DRIVER_INIT(deroon);
9382   DECLARE_DRIVER_INIT(tkdensho);
94   virtual void machine_start();
95   virtual void video_start();
96   
9783   TILE_GET_INFO_MEMBER(get_bg0tile_info);
9884   TILE_GET_INFO_MEMBER(get_bg1tile_info);
9985   TILE_GET_INFO_MEMBER(get_bg2tile_info);
10086   TILE_GET_INFO_MEMBER(get_fg_tile_info);
101
102   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
103   void prot_init(int which);
104   void prot_reset();
105   inline void set_color_555(pen_t color, int rshift, int gshift, int bshift, UINT16 data);
106   void render_sprites_to_bitmap(bitmap_rgb32 &bitmap, UINT16 extrax, UINT16 extray );
107   void tilemap_copy_to_compose(UINT16 pri);
108   void do_final_mix(bitmap_rgb32 &bitmap);
109   void descramble();
87   virtual void machine_start();
88   virtual void video_start();
89   UINT32 screen_update_tecmosys(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
90   void tecmosys_prot_init(int which);
91   void tecmosys_prot_reset();
92   inline void set_color_555_tecmo(pen_t color, int rshift, int gshift, int bshift, UINT16 data);
93   void tecmosys_render_sprites_to_bitmap(bitmap_rgb32 &bitmap, UINT16 extrax, UINT16 extray );
94   void tecmosys_tilemap_copy_to_compose(UINT16 pri);
95   void tecmosys_do_final_mix(bitmap_rgb32 &bitmap);
96   void tecmosys_descramble();
97   DECLARE_WRITE_LINE_MEMBER(sound_irq);
98   required_device<cpu_device> m_maincpu;
99   required_device<cpu_device> m_audiocpu;
100   required_device<eeprom_serial_93cxx_device> m_eeprom;
101   required_device<gfxdecode_device> m_gfxdecode;
102   required_device<screen_device> m_screen;
103   required_device<palette_device> m_palette;
110104};
trunk/src/mame/includes/tehkanwc.h
r243680r243681
1010
1111   tehkanwc_state(const machine_config &mconfig, device_type type, const char *tag)
1212      : driver_device(mconfig, type, tag),
13      m_videoram(*this, "videoram"),
14      m_colorram(*this, "colorram"),
15      m_videoram2(*this, "videoram2"),
16      m_spriteram(*this, "spriteram"),
1317      m_maincpu(*this, "maincpu"),
1418      m_audiocpu(*this, "audiocpu"),
1519      m_subcpu(*this, "sub"),
1620      m_msm(*this, "msm"),
1721      m_gfxdecode(*this, "gfxdecode"),
18      m_palette(*this, "palette"),
19      m_videoram(*this, "videoram"),
20      m_colorram(*this, "colorram"),
21      m_videoram2(*this, "videoram2"),
22      m_spriteram(*this, "spriteram") { }
22      m_palette(*this, "palette") { }
2323
24   required_device<cpu_device> m_maincpu;
25   required_device<cpu_device> m_audiocpu;
26   required_device<cpu_device> m_subcpu;
27   required_device<msm5205_device> m_msm;
28   required_device<gfxdecode_device> m_gfxdecode;
29   required_device<palette_device> m_palette;
30
31   required_shared_ptr<UINT8> m_videoram;
32   required_shared_ptr<UINT8> m_colorram;
33   required_shared_ptr<UINT8> m_videoram2;
34   required_shared_ptr<UINT8> m_spriteram;
35   
3624   int m_track0[2];
3725   int m_track1[2];
3826   int m_msm_data_offs;
3927   int m_toggle;
28   required_shared_ptr<UINT8> m_videoram;
29   required_shared_ptr<UINT8> m_colorram;
30   required_shared_ptr<UINT8> m_videoram2;
4031   UINT8 m_scroll_x[2];
4132   UINT8 m_led0;
4233   UINT8 m_led1;
4334   tilemap_t *m_bg_tilemap;
4435   tilemap_t *m_fg_tilemap;
45   
36   required_shared_ptr<UINT8> m_spriteram;
4637   DECLARE_WRITE8_MEMBER(sub_cpu_halt_w);
47   DECLARE_READ8_MEMBER(track_0_r);
48   DECLARE_READ8_MEMBER(track_1_r);
49   DECLARE_WRITE8_MEMBER(track_0_reset_w);
50   DECLARE_WRITE8_MEMBER(track_1_reset_w);
38   DECLARE_READ8_MEMBER(tehkanwc_track_0_r);
39   DECLARE_READ8_MEMBER(tehkanwc_track_1_r);
40   DECLARE_WRITE8_MEMBER(tehkanwc_track_0_reset_w);
41   DECLARE_WRITE8_MEMBER(tehkanwc_track_1_reset_w);
5142   DECLARE_WRITE8_MEMBER(sound_command_w);
5243   DECLARE_WRITE8_MEMBER(sound_answer_w);
53   DECLARE_WRITE8_MEMBER(videoram_w);
54   DECLARE_WRITE8_MEMBER(colorram_w);
55   DECLARE_WRITE8_MEMBER(videoram2_w);
56   DECLARE_WRITE8_MEMBER(scroll_x_w);
57   DECLARE_WRITE8_MEMBER(scroll_y_w);
58   DECLARE_WRITE8_MEMBER(flipscreen_x_w);
59   DECLARE_WRITE8_MEMBER(flipscreen_y_w);
44   DECLARE_WRITE8_MEMBER(tehkanwc_videoram_w);
45   DECLARE_WRITE8_MEMBER(tehkanwc_colorram_w);
46   DECLARE_WRITE8_MEMBER(tehkanwc_videoram2_w);
47   DECLARE_WRITE8_MEMBER(tehkanwc_scroll_x_w);
48   DECLARE_WRITE8_MEMBER(tehkanwc_scroll_y_w);
49   DECLARE_WRITE8_MEMBER(tehkanwc_flipscreen_x_w);
50   DECLARE_WRITE8_MEMBER(tehkanwc_flipscreen_y_w);
6051   DECLARE_WRITE8_MEMBER(gridiron_led0_w);
6152   DECLARE_WRITE8_MEMBER(gridiron_led1_w);
62   DECLARE_READ8_MEMBER(portA_r);
63   DECLARE_READ8_MEMBER(portB_r);
64   DECLARE_WRITE8_MEMBER(portA_w);
65   DECLARE_WRITE8_MEMBER(portB_w);
53   DECLARE_READ8_MEMBER(tehkanwc_portA_r);
54   DECLARE_READ8_MEMBER(tehkanwc_portB_r);
55   DECLARE_WRITE8_MEMBER(tehkanwc_portA_w);
56   DECLARE_WRITE8_MEMBER(tehkanwc_portB_w);
6657   DECLARE_WRITE8_MEMBER(msm_reset_w);
67   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
68
58   DECLARE_DRIVER_INIT(teedoff);
6959   TILE_GET_INFO_MEMBER(get_bg_tile_info);
7060   TILE_GET_INFO_MEMBER(get_fg_tile_info);
71
72   DECLARE_DRIVER_INIT(teedoff);
73   virtual void machine_start();
7461   virtual void video_start();
75   
76   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
77   void draw_led(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 led,int player);
62   UINT32 screen_update_tehkanwc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
63   void gridiron_draw_led(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 led,int player);
7864   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
79
65   DECLARE_WRITE_LINE_MEMBER(tehkanwc_adpcm_int);
66   required_device<cpu_device> m_maincpu;
67   required_device<cpu_device> m_audiocpu;
68   required_device<cpu_device> m_subcpu;
69   required_device<msm5205_device> m_msm;
70   required_device<gfxdecode_device> m_gfxdecode;
71   required_device<palette_device> m_palette;
8072protected:
8173   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
8274};
trunk/src/mame/machine/tecmosys.c
r243680r243681
103103};
104104
105105
106void tecmosys_state::prot_reset()
106void tecmosys_state::tecmosys_prot_reset()
107107{
108108   m_device_read_ptr = 0;
109109   m_device_status = DS_IDLE;
110110   m_device_value = 0xff;
111111}
112112
113void tecmosys_state::prot_init(int which)
113void tecmosys_state::tecmosys_prot_init(int which)
114114{
115115   switch (which)
116116   {
r243680r243681
119119   case 2: m_device_data = &tkdensha_data; break;
120120   }
121121
122   machine().add_notifier(MACHINE_NOTIFY_RESET, machine_notify_delegate(FUNC(tecmosys_state::prot_reset),this));
122   machine().add_notifier(MACHINE_NOTIFY_RESET, machine_notify_delegate(FUNC(tecmosys_state::tecmosys_prot_reset),this));
123123}
124124
125READ16_MEMBER(tecmosys_state::prot_status_r)
125READ16_MEMBER(tecmosys_state::tecmosys_prot_status_r)
126126{
127127   if (ACCESSING_BITS_8_15)
128128   {
r243680r243681
134134   return 0xc0; // simulation is always ready
135135}
136136
137WRITE16_MEMBER(tecmosys_state::prot_status_w)
137WRITE16_MEMBER(tecmosys_state::tecmosys_prot_status_w)
138138{
139139   // deroon clears the status in one place.
140140}
141141
142142
143READ16_MEMBER(tecmosys_state::prot_data_r)
143READ16_MEMBER(tecmosys_state::tecmosys_prot_data_r)
144144{
145145   // prot appears to be read-ready for two consecutive reads
146146   // but returns 0xff for subsequent reads.
r243680r243681
151151}
152152
153153
154WRITE16_MEMBER(tecmosys_state::prot_data_w)
154WRITE16_MEMBER(tecmosys_state::tecmosys_prot_data_w)
155155{
156156   // Only LSB
157157   data >>= 8;
trunk/src/mame/video/tecmosys.c
r243680r243681
6666}
6767
6868
69inline void tecmosys_state::set_color_555(pen_t color, int rshift, int gshift, int bshift, UINT16 data)
69inline void tecmosys_state::set_color_555_tecmo(pen_t color, int rshift, int gshift, int bshift, UINT16 data)
7070{
7171   m_palette->set_pen_color(color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
7272}
r243680r243681
7474WRITE16_MEMBER(tecmosys_state::tilemap_paletteram16_xGGGGGRRRRRBBBBB_word_w)
7575{
7676   COMBINE_DATA(&m_tilemap_paletteram16[offset]);
77   set_color_555(offset+0x4000, 5, 10, 0, m_tilemap_paletteram16[offset]);
77   set_color_555_tecmo(offset+0x4000, 5, 10, 0, m_tilemap_paletteram16[offset]);
7878}
7979
8080WRITE16_MEMBER(tecmosys_state::bg0_tilemap_lineram_w)
r243680r243681
9797
9898
9999
100void tecmosys_state::render_sprites_to_bitmap(bitmap_rgb32 &bitmap, UINT16 extrax, UINT16 extray )
100void tecmosys_state::tecmosys_render_sprites_to_bitmap(bitmap_rgb32 &bitmap, UINT16 extrax, UINT16 extray )
101101{
102102   UINT8 *gfxsrc    = memregion       ( "gfx1" )->base();
103103   int i;
r243680r243681
188188   }
189189}
190190
191void tecmosys_state::tilemap_copy_to_compose(UINT16 pri)
191void tecmosys_state::tecmosys_tilemap_copy_to_compose(UINT16 pri)
192192{
193193   int y,x;
194194   UINT16 *srcptr;
r243680r243681
205205   }
206206}
207207
208void tecmosys_state::do_final_mix(bitmap_rgb32 &bitmap)
208void tecmosys_state::tecmosys_do_final_mix(bitmap_rgb32 &bitmap)
209209{
210210   const pen_t *paldata = m_palette->pens();
211211   int y,x;
r243680r243681
275275}
276276
277277
278UINT32 tecmosys_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
278UINT32 tecmosys_state::screen_update_tecmosys(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
279279{
280280   bitmap.fill(m_palette->pen(0x4000), cliprect);
281281
r243680r243681
293293
294294   m_tmp_tilemap_renderbitmap.fill(0, cliprect);
295295   m_bg0tilemap->draw(screen, m_tmp_tilemap_renderbitmap, cliprect, 0,0);
296   tilemap_copy_to_compose(0x0000);
296   tecmosys_tilemap_copy_to_compose(0x0000);
297297
298298   m_tmp_tilemap_renderbitmap.fill(0, cliprect);
299299   m_bg1tilemap->draw(screen, m_tmp_tilemap_renderbitmap, cliprect, 0,0);
300   tilemap_copy_to_compose(0x4000);
300   tecmosys_tilemap_copy_to_compose(0x4000);
301301
302302   m_tmp_tilemap_renderbitmap.fill(0, cliprect);
303303   m_bg2tilemap->draw(screen, m_tmp_tilemap_renderbitmap, cliprect, 0,0);
304   tilemap_copy_to_compose(0x8000);
304   tecmosys_tilemap_copy_to_compose(0x8000);
305305
306306   m_tmp_tilemap_renderbitmap.fill(0, cliprect);
307307   m_txt_tilemap->draw(screen, m_tmp_tilemap_renderbitmap, cliprect, 0,0);
308   tilemap_copy_to_compose(0xc000);
308   tecmosys_tilemap_copy_to_compose(0xc000);
309309
310310
311   do_final_mix(bitmap);
311   tecmosys_do_final_mix(bitmap);
312312
313313   // prepare sprites for NEXT frame - causes 1 frame palette errors, but prevents sprite lag in tkdensho, which is correct?
314   render_sprites_to_bitmap(bitmap, m_880000regs[0x0], m_880000regs[0x1]);
314   tecmosys_render_sprites_to_bitmap(bitmap, m_880000regs[0x0], m_880000regs[0x1]);
315315
316316   return 0;
317317}
r243680r243681
339339
340340   m_bg2tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmosys_state::get_bg2tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
341341   m_bg2tilemap->set_transparent_pen(0);
342   
343   save_item(NAME(m_spritelist));
344342}
trunk/src/mame/video/tehkanwc.c
r243680r243681
1515#include "includes/tehkanwc.h"
1616
1717
18WRITE8_MEMBER(tehkanwc_state::videoram_w)
18WRITE8_MEMBER(tehkanwc_state::tehkanwc_videoram_w)
1919{
2020   m_videoram[offset] = data;
2121   m_fg_tilemap->mark_tile_dirty(offset);
2222}
2323
24WRITE8_MEMBER(tehkanwc_state::colorram_w)
24WRITE8_MEMBER(tehkanwc_state::tehkanwc_colorram_w)
2525{
2626   m_colorram[offset] = data;
2727   m_fg_tilemap->mark_tile_dirty(offset);
2828}
2929
30WRITE8_MEMBER(tehkanwc_state::videoram2_w)
30WRITE8_MEMBER(tehkanwc_state::tehkanwc_videoram2_w)
3131{
3232   m_videoram2[offset] = data;
3333   m_bg_tilemap->mark_tile_dirty(offset / 2);
3434}
3535
36WRITE8_MEMBER(tehkanwc_state::scroll_x_w)
36WRITE8_MEMBER(tehkanwc_state::tehkanwc_scroll_x_w)
3737{
3838   m_scroll_x[offset] = data;
3939}
4040
41WRITE8_MEMBER(tehkanwc_state::scroll_y_w)
41WRITE8_MEMBER(tehkanwc_state::tehkanwc_scroll_y_w)
4242{
4343   m_bg_tilemap->set_scrolly(0, data);
4444}
4545
46WRITE8_MEMBER(tehkanwc_state::flipscreen_x_w)
46WRITE8_MEMBER(tehkanwc_state::tehkanwc_flipscreen_x_w)
4747{
4848   flip_screen_x_set(data & 0x40);
4949}
5050
51WRITE8_MEMBER(tehkanwc_state::flipscreen_y_w)
51WRITE8_MEMBER(tehkanwc_state::tehkanwc_flipscreen_y_w)
5252{
5353   flip_screen_y_set(data & 0x40);
5454}
r243680r243681
9494         8, 8, 32, 32);
9595
9696   m_fg_tilemap->set_transparent_pen(0);
97   
98   save_item(NAME(m_scroll_x));
99   save_item(NAME(m_led0));
100   save_item(NAME(m_led1));
10197}
10298
10399/*
r243680r243681
117113   bit 7 = enable (0 = display off)
118114 */
119115
120void tehkanwc_state::draw_led(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 led,int player)
116void tehkanwc_state::gridiron_draw_led(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 led,int player)
121117{
122118   if (led&0x80)
123119      output_set_digit_value(player, led&0x7f);
r243680r243681
127123
128124void tehkanwc_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
129125{
130   for (int offs = 0;offs < m_spriteram.bytes();offs += 4)
126   UINT8 *spriteram = m_spriteram;
127   int offs;
128
129   for (offs = 0;offs < m_spriteram.bytes();offs += 4)
131130   {
132      int attr = m_spriteram[offs + 1];
133      int code = m_spriteram[offs] + ((attr & 0x08) << 5);
131      int attr = spriteram[offs + 1];
132      int code = spriteram[offs] + ((attr & 0x08) << 5);
134133      int color = attr & 0x07;
135134      int flipx = attr & 0x40;
136135      int flipy = attr & 0x80;
137      int sx = m_spriteram[offs + 2] + ((attr & 0x20) << 3) - 128;
138      int sy = m_spriteram[offs + 3];
136      int sx = spriteram[offs + 2] + ((attr & 0x20) << 3) - 128;
137      int sy = spriteram[offs + 3];
139138
140139      if (flip_screen_x())
141140      {
r243680r243681
154153   }
155154}
156155
157UINT32 tehkanwc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
156UINT32 tehkanwc_state::screen_update_tehkanwc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
158157{
159158   m_bg_tilemap->set_scrollx(0, m_scroll_x[0] + 256 * m_scroll_x[1]);
160159   m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
161160   m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
162161   draw_sprites(bitmap, cliprect);
163162   m_fg_tilemap->draw(screen, bitmap, cliprect, 1, 0);
164   draw_led(bitmap, cliprect, m_led0, 0);
165   draw_led(bitmap, cliprect, m_led1, 1);
163   gridiron_draw_led(bitmap, cliprect, m_led0, 0);
164   gridiron_draw_led(bitmap, cliprect, m_led1, 1);
166165   return 0;
167166}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team