Previous 199869 Revisions Next

r35089 Tuesday 17th February, 2015 at 07:48:18 UTC by Miodrag Milanović
Merge pull request #132 from cuavas/master

More Cocoa debugger improvements
[3rdparty/mongoose]LICENSE README.md mongoose.c
[3rdparty/mongoose/docs]SSL.md
[3rdparty/mongoose/examples/http_client]Makefile
[hash]pencil2.xml
[src/emu/cpu/amis2000]amis2000.c amis2000.h amis2000op.inc
[src/emu/cpu/m68000]m68000.h m68kcpu.c m68kcpu.h
[src/mame/drivers]cclimber.c cops.c n8080.c nbmj9195.c skeetsht.c wc90.c wwfsstar.c xxmissio.c
[src/mame/includes]wc90.h wwfsstar.h xxmissio.h
[src/mame/video]wc90.c wwfsstar.c xxmissio.c
[src/mess/drivers]pencil2.c tb303.c wildfire.c
[src/osd/modules/sound]sdl_sound.c
[src/osd/osdmini]osdmini.mak
[src/osd/sdl]sdl.mak

trunk/3rdparty/mongoose/LICENSE
r243600r243601
11Copyright (c) 2004-2013 Sergey Lyubka <valenok@gmail.com>
2Copyright (c) 2013 Cesanta Software Limited
2Copyright (c) 2013-2015 Cesanta Software Limited
33All rights reserved
44
55This code is dual-licensed: you can redistribute it and/or modify
trunk/3rdparty/mongoose/README.md
r243600r243601
7878
7979# Other products by Cesanta Software: simple and effective
8080
81- [Fossa](http://github.com/cesanta/fossa) - Multi-protocol networking library
8182- [SSL Wrapper](https://github.com/cesanta/ssl_wrapper) - application to
8283  secure network communications
8384- [Frozen](https://github.com/cesanta/frozen) - JSON parser and generator
8485- [SLRE](https://github.com/cesanta/slre) - Super Light Regular Expression
8586  library
86- [Net Skeleton](https://github.com/cesanta/net_skeleton) - framework for
87  building network applications
88- [SLDR](https://github.com/cesanta/sldr) - Super Light DNS Resolver
trunk/3rdparty/mongoose/docs/SSL.md
r243600r243601
11# Mongoose SSL guide
22
33SSL is a protocol that makes web communication secure. To enable SSL
4in mongoose, 3 steps are required:
4in mongoose, 2 steps are required:
55
6   1. Valid certificate file must be created
7   2. `ssl_certificate` options must be set to contain path to the
8       certificate file.
9   3. `listening_ports` option must contain a port number with letter `s`
10        appended to it, which instructs Mongoose to use SSL for all connections
11        made to that port.
6   1. Create valid SSL certificate file
7   2. Append SSL certificate file path to the `listening_ports` option
128
139Below is the `mongoose.conf` file snippet for typical SSL setup:
1410
15    document_root     www_root        # Serve files in www_root directory
16    listening_ports   80r,443s        # Redirect all HTTP requests to HTTPS
17    ssl_certificate   ssl_cert.pem    # Location of certificate file
11    document_root     www_root         # Serve files in www_root directory
12    listening_ports   80,443:cert.pem  # Listen on ports 80 and 443
1813
1914## How to create SSL certificate file
2015
trunk/3rdparty/mongoose/examples/http_client/Makefile
r243600r243601
99   $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
1010
1111clean:
12   rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
12   rm -rf $(PROG) *.exe *.dSYM *.obj *.exp *.o *.lib
trunk/3rdparty/mongoose/mongoose.c
r243600r243601
4848#define _INTEGRAL_MAX_BITS 64   // Enable _stati64() on Windows
4949#define _CRT_SECURE_NO_WARNINGS // Disable deprecation warning in VS2005+
5050#undef WIN32_LEAN_AND_MEAN      // Let windows.h always include winsock2.h
51#if defined(__Linux__) || defined(_WIN32)
5152#define _XOPEN_SOURCE 600       // For flockfile() on Linux
53#endif
5254#define __STDC_FORMAT_MACROS    // <inttypes.h> wants this for C++
5355#define __STDC_LIMIT_MACROS     // C++ wants that for INT64_MAX
5456#ifndef _LARGEFILE_SOURCE
r243600r243601
345347  assert(io != NULL);
346348  assert(io->len <= io->size);
347349
350  /* check overflow */
351  if (len > ~(size_t)0 - (size_t)(io->buf + io->len)) {
352    return 0;
353  }
354
348355  if (len <= 0) {
349356  } else if (io->len + len <= io->size) {
350357    memcpy(io->buf + io->len, buf, len);
r243600r243601
28912898static int deliver_websocket_frame(struct connection *conn) {
28922899  // Having buf unsigned char * is important, as it is used below in arithmetic
28932900  unsigned char *buf = (unsigned char *) conn->ns_conn->recv_iobuf.buf;
2894  int i, len, buf_len = conn->ns_conn->recv_iobuf.len, frame_len = 0,
2901  size_t i, len, buf_len = conn->ns_conn->recv_iobuf.len, frame_len = 0,
28952902      mask_len = 0, header_len = 0, data_len = 0, buffered = 0;
28962903
28972904  if (buf_len >= 2) {
r243600r243601
29022909      header_len = 2 + mask_len;
29032910    } else if (len == 126 && buf_len >= 4 + mask_len) {
29042911      header_len = 4 + mask_len;
2905      data_len = ((((int) buf[2]) << 8) + buf[3]);
2912      data_len = ((((size_t) buf[2]) << 8) + buf[3]);
29062913    } else if (buf_len >= 10 + mask_len) {
29072914      header_len = 10 + mask_len;
2908      data_len = (int) (((uint64_t) htonl(* (uint32_t *) &buf[2])) << 32) +
2915      data_len = (size_t) (((uint64_t) htonl(* (uint32_t *) &buf[2])) << 32) +
29092916        htonl(* (uint32_t *) &buf[6]);
29102917    }
29112918  }
r243600r243601
29362943}
29372944
29382945size_t mg_websocket_write(struct mg_connection *conn, int opcode,
2939                       const char *data, size_t data_len) {
2946                          const char *data, size_t data_len) {
29402947    unsigned char mem[4192], *copy = mem;
29412948    size_t copy_len = 0;
29422949
2950    /* Check overflow */
2951    if (data_len > ~(size_t)0 - (size_t)10) {
2952      return 0;
2953    }
2954
29432955    if (data_len + 10 > sizeof(mem) &&
29442956        (copy = (unsigned char *) NS_MALLOC(data_len + 10)) == NULL) {
29452957      return 0;
trunk/hash/pencil2.xml
r243600r243601
55<!--
66
77Undumped known carts
8
8~~~~~~~~~~~~~~~~~~~~
99SD-BASIC V1.0
1010Le Jardin Magique (PEN-701)
1111Le Plongeur a la Recherche du Tresor (PEN-702) / Treasure Hunter
12Alien Invader
1213Big Foot Chase
14Parashooter
15Pinball
16Robot Killer
1317Smurf
18Space Squadron
19Space Vulture
20Super Bug
1421Zaxxon
1522
23Undumped known floppies
24~~~~~~~~~~~~~~~~~~~~~~~
25Basic Computer
26Data Base
27Payroll
28
29Undumped known cassettes
30~~~~~~~~~~~~~~~~~~~~~~~~
31Cheque Book Balance
32Data Base
33Household Expenses
34Reminder Calendar
35
1636-->
1737
1838
trunk/src/emu/cpu/amis2000/amis2000.c
r243600r243601
66  Overall functionality is similar to (and probably derived from) NEC uCOM-4.
77
88  References:
9  - AMI MOS Products Catalog Winter 1979
9  - AMI MOS Products Catalog 1979/1980
1010  - AMI S2000 Programming Manual (rev. 2)
1111
1212  TODO:
r243600r243601
2727// S2000 is the most basic one, 64 nibbles internal RAM and 1KB internal ROM
2828// S2150 increased RAM to 80 nibbles and ROM to 1.5KB
2929// high-voltage output versions of these chips (S2000A and S2150A) are identical overall
30const device_type AMI_S2000 = &device_creator<amis2000_device>;
31const device_type AMI_S2150 = &device_creator<amis2150_device>;
30const device_type AMI_S2000 = &device_creator<amis2000_cpu_device>;
31const device_type AMI_S2150 = &device_creator<amis2150_cpu_device>;
3232
33// S2152 is an extension to S2150, removing the K pins and adding a better timer
34const device_type AMI_S2152 = &device_creator<amis2152_cpu_device>;
3335
36
3437// internal memory maps
35static ADDRESS_MAP_START(program_1k, AS_PROGRAM, 8, amis2000_device)
38static ADDRESS_MAP_START(program_1k, AS_PROGRAM, 8, amis2000_base_device)
3639   AM_RANGE(0x0000, 0x03ff) AM_ROM
3740ADDRESS_MAP_END
3841
39static ADDRESS_MAP_START(program_1_5k, AS_PROGRAM, 8, amis2000_device)
42static ADDRESS_MAP_START(program_1_5k, AS_PROGRAM, 8, amis2000_base_device)
4043   AM_RANGE(0x0000, 0x03ff) AM_ROM
4144   AM_RANGE(0x0400, 0x05ff) AM_NOP // 0x00
4245   AM_RANGE(0x0600, 0x07ff) AM_ROM
4346ADDRESS_MAP_END
4447
4548
46static ADDRESS_MAP_START(data_64x4, AS_DATA, 8, amis2000_device)
49static ADDRESS_MAP_START(data_64x4, AS_DATA, 8, amis2000_base_device)
4750   AM_RANGE(0x00, 0x3f) AM_RAM
4851ADDRESS_MAP_END
4952
50static ADDRESS_MAP_START(data_80x4, AS_DATA, 8, amis2000_device)
53static ADDRESS_MAP_START(data_80x4, AS_DATA, 8, amis2000_base_device)
5154   AM_RANGE(0x00, 0x3f) AM_RAM
5255   AM_RANGE(0x40, 0x4f) AM_RAM
5356ADDRESS_MAP_END
5457
5558
5659// device definitions
57amis2000_device::amis2000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
58   : cpu_device(mconfig, AMI_S2000, "AMI S2000", tag, owner, clock, "amis2000", __FILE__),
59   m_program_config("program", ENDIANNESS_BIG, 8, 13, 0, ADDRESS_MAP_NAME(program_1k)),
60   m_data_config("data", ENDIANNESS_BIG, 8, 6, 0, ADDRESS_MAP_NAME(data_64x4)),
61   m_bu_bits(2),
62   m_callstack_bits(10),
63   m_callstack_depth(3),
64   m_read_k(*this),
65   m_read_i(*this),
66   m_read_d(*this),
67   m_write_d(*this),
68   m_write_a(*this)
69{
70}
60amis2000_cpu_device::amis2000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
61   : amis2000_base_device(mconfig, AMI_S2000, "AMI S2000", tag, owner, clock, 2, 10, 3, 13, ADDRESS_MAP_NAME(program_1k), 6, ADDRESS_MAP_NAME(data_64x4), "amis2000", __FILE__)
62{ }
7163
72amis2000_device::amis2000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 bu_bits, UINT8 callstack_bits, UINT8 callstack_depth, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
73   : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
74   m_program_config("program", ENDIANNESS_BIG, 8, prgwidth, 0, program),
75   m_data_config("data", ENDIANNESS_BIG, 8, datawidth, 0, data),
76   m_bu_bits(bu_bits),
77   m_callstack_bits(callstack_bits),
78   m_callstack_depth(callstack_depth),
79   m_read_k(*this),
80   m_read_i(*this),
81   m_read_d(*this),
82   m_write_d(*this),
83   m_write_a(*this)
84{
85}
64amis2150_cpu_device::amis2150_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
65   : amis2000_base_device(mconfig, AMI_S2150, "AMI S2150", tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4), "amis2150", __FILE__)
66{ }
8667
87amis2150_device::amis2150_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
88   : amis2000_device(mconfig, AMI_S2150, "AMI S2150", tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4), "amis2150", __FILE__)
89{
90}
68amis2152_cpu_device::amis2152_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
69   : amis2000_base_device(mconfig, AMI_S2152, "AMI S2152", tag, owner, clock, 3, 11, 3, 13, ADDRESS_MAP_NAME(program_1_5k), 7, ADDRESS_MAP_NAME(data_80x4), "amis2152", __FILE__)
70{ }
9171
9272
73
9374// disasm
94void amis2000_device::state_string_export(const device_state_entry &entry, astring &string)
75void amis2000_base_device::state_string_export(const device_state_entry &entry, astring &string)
9576{
9677   switch (entry.index())
9778   {
r243600r243601
11091   }
11192}
11293
113offs_t amis2000_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
94offs_t amis2000_base_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
11495{
11596   extern CPU_DISASSEMBLE(amis2000);
11697   return CPU_DISASSEMBLE_NAME(amis2000)(this, buffer, pc, oprom, opram, options);
r243600r243601
128109   S2000_ACC, S2000_E, S2000_CY
129110};
130111
131void amis2000_device::device_start()
112void amis2000_base_device::device_start()
132113{
133114   m_program = &space(AS_PROGRAM);
134115   m_data = &space(AS_DATA);
r243600r243601
138119   m_read_d.resolve_safe(0);
139120   m_write_d.resolve_safe();
140121   m_write_a.resolve_safe();
122   m_write_f.resolve_safe();
141123
142124   m_bu_mask = (1 << m_bu_bits) - 1;
143125   m_callstack_mask = (1 << m_callstack_bits) - 1;
r243600r243601
197179}
198180
199181
182void amis2152_cpu_device::device_start()
183{
184   amis2000_base_device::device_start();
200185
186   m_d2f_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(amis2152_cpu_device::d2f_timer_cb), this));
187   
188   // zerofill
189   m_d2f_latch = 0;
190   m_fout_state = 0;
191
192   // register for savestates
193   save_item(NAME(m_d2f_latch));
194   save_item(NAME(m_fout_state));
195}
196
197
198
201199//-------------------------------------------------
202200//  device_reset - device-specific reset
203201//-------------------------------------------------
204202
205void amis2000_device::device_reset()
203void amis2000_base_device::device_reset()
206204{
207205   m_pc = 0;
208206   m_op = 0;
209207   m_skip = false;
210208   
211209   // clear i/o
210   m_a = 0x1fff;
211   m_write_a(0, m_a, 0xffff);
212212   m_d_polarity = 0;
213   m_d = 0; d_latch_out(false);
214   m_a = 0; m_write_a(0, 0, 0xffff);
213   m_d = 0;
214   d_latch_out(false);
215215}
216216
217217
218void amis2152_cpu_device::device_reset()
219{
220   amis2000_base_device::device_reset();
218221
222   // start d2f timer
223   m_write_f(0);
224   d2f_timer_clock();
225}
226
227
228
219229//-------------------------------------------------
220230//  execute
221231//-------------------------------------------------
222232
223void amis2000_device::execute_run()
233void amis2000_base_device::execute_run()
224234{
225235   while (m_icount > 0)
226236   {
trunk/src/emu/cpu/amis2000/amis2000.h
r243600r243601
1414
1515// generic input pins (4 bits each)
1616#define MCFG_AMI_S2000_READ_K_CB(_devcb) \
17   amis2000_device::set_read_k_callback(*device, DEVCB_##_devcb);
17   amis2000_base_device::set_read_k_callback(*device, DEVCB_##_devcb);
1818
1919#define MCFG_AMI_S2000_READ_I_CB(_devcb) \
20   amis2000_device::set_read_i_callback(*device, DEVCB_##_devcb);
20   amis2000_base_device::set_read_i_callback(*device, DEVCB_##_devcb);
2121
2222// 8-bit external databus coupled as input/output pins
2323#define MCFG_AMI_S2000_READ_D_CB(_devcb) \
24   amis2000_device::set_read_d_callback(*device, DEVCB_##_devcb);
24   amis2000_base_device::set_read_d_callback(*device, DEVCB_##_devcb);
2525
2626#define MCFG_AMI_S2000_WRITE_D_CB(_devcb) \
27   amis2000_device::set_write_d_callback(*device, DEVCB_##_devcb);
27   amis2000_base_device::set_write_d_callback(*device, DEVCB_##_devcb);
2828
2929// 13-bit external addressbus coupled as output pins
3030#define MCFG_AMI_S2000_WRITE_A_CB(_devcb) \
31   amis2000_device::set_write_a_callback(*device, DEVCB_##_devcb);
31   amis2000_base_device::set_write_a_callback(*device, DEVCB_##_devcb);
3232
33// F_out pin (only for S2152)
34#define MCFG_AMI_S2152_FOUT_CB(_devcb) \
35   amis2000_base_device::set_write_f_callback(*device, DEVCB_##_devcb);
3336
34class amis2000_device : public cpu_device
37
38class amis2000_base_device : public cpu_device
3539{
3640public:
3741   // construction/destruction
38   amis2000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
39   amis2000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 bu_bits, UINT8 callstack_bits, UINT8 callstack_depth, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source);
42   amis2000_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT8 bu_bits, UINT8 callstack_bits, UINT8 callstack_depth, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data, const char *shortname, const char *source)
43      : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
44      , m_program_config("program", ENDIANNESS_BIG, 8, prgwidth, 0, program)
45      , m_data_config("data", ENDIANNESS_BIG, 8, datawidth, 0, data)
46      , m_bu_bits(bu_bits)
47      , m_callstack_bits(callstack_bits)
48      , m_callstack_depth(callstack_depth)
49      , m_read_k(*this)
50      , m_read_i(*this)
51      , m_read_d(*this)
52      , m_write_d(*this)
53      , m_write_a(*this)
54      , m_write_f(*this)
55   { }
4056
4157   // static configuration helpers
42   template<class _Object> static devcb_base &set_read_k_callback(device_t &device, _Object object) { return downcast<amis2000_device &>(device).m_read_k.set_callback(object); }
43   template<class _Object> static devcb_base &set_read_i_callback(device_t &device, _Object object) { return downcast<amis2000_device &>(device).m_read_i.set_callback(object); }
44   template<class _Object> static devcb_base &set_read_d_callback(device_t &device, _Object object) { return downcast<amis2000_device &>(device).m_read_d.set_callback(object); }
45   template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<amis2000_device &>(device).m_write_d.set_callback(object); }
46   template<class _Object> static devcb_base &set_write_a_callback(device_t &device, _Object object) { return downcast<amis2000_device &>(device).m_write_a.set_callback(object); }
58   template<class _Object> static devcb_base &set_read_k_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_read_k.set_callback(object); }
59   template<class _Object> static devcb_base &set_read_i_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_read_i.set_callback(object); }
60   template<class _Object> static devcb_base &set_read_d_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_read_d.set_callback(object); }
61   template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_write_d.set_callback(object); }
62   template<class _Object> static devcb_base &set_write_a_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_write_a.set_callback(object); }
63   template<class _Object> static devcb_base &set_write_f_callback(device_t &device, _Object object) { return downcast<amis2000_base_device &>(device).m_write_f.set_callback(object); }
4764
4865protected:
4966   // device-level overrides
r243600r243601
103120   devcb_read8 m_read_d;
104121   devcb_write8 m_write_d;
105122   devcb_write16 m_write_a;
123   devcb_write_line m_write_f;
106124   
107125   // misc internal helpers
108126   UINT8 ram_r();
r243600r243601
112130   void d_latch_out(bool active);
113131   
114132   // opcode handlers
115   void op_lai();
116   void op_lab();
117   void op_lae();
118   void op_xab();
119   void op_xabu();
120   void op_xae();
121   void op_lbe();
122   void op_lbep();
123   void op_lbz();
124   void op_lbf();
133   virtual void op_lai();
134   virtual void op_lab();
135   virtual void op_lae();
136   virtual void op_xab();
137   virtual void op_xabu();
138   virtual void op_xae();
139   virtual void op_lbe();
140   virtual void op_lbep();
141   virtual void op_lbz();
142   virtual void op_lbf();
125143
126   void op_lam();
127   void op_xc();
128   void op_xci();
129   void op_xcd();
130   void op_stm();
131   void op_rsm();
144   virtual void op_lam();
145   virtual void op_xc();
146   virtual void op_xci();
147   virtual void op_xcd();
148   virtual void op_stm();
149   virtual void op_rsm();
132150
133   void op_inp();
134   void op_out();
135   void op_disb();
136   void op_disn();
137   void op_mvs();
138   void op_psh();
139   void op_psl();
140   void op_eur();
151   virtual void op_inp();
152   virtual void op_out();
153   virtual void op_disb();
154   virtual void op_disn();
155   virtual void op_mvs();
156   virtual void op_psh();
157   virtual void op_psl();
158   virtual void op_eur();
141159
142   void op_pp();
143   void op_jmp();
144   void op_jms();
145   void op_rt();
146   void op_rts();
147   void op_nop();
148   void op_halt();
160   virtual void op_pp();
161   virtual void op_jmp();
162   virtual void op_jms();
163   virtual void op_rt();
164   virtual void op_rts();
165   virtual void op_nop();
166   virtual void op_halt();
149167
150   void op_szc();
151   void op_szm();
152   void op_szi();
153   void op_szk();
154   void op_sbe();
155   void op_sam();
156   void op_sos();
157   void op_tf1();
158   void op_tf2();
168   virtual void op_szc();
169   virtual void op_szm();
170   virtual void op_szi();
171   virtual void op_szk();
172   virtual void op_sbe();
173   virtual void op_sam();
174   virtual void op_sos();
175   virtual void op_tf1();
176   virtual void op_tf2();
159177
160   void op_adcs();
161   void op_adis();
162   void op_add();
163   void op_and();
164   void op_xor();
165   void op_stc();
166   void op_rsc();
167   void op_cma();
168   void op_sf1();
169   void op_rf1();
170   void op_sf2();
171   void op_rf2();
178   virtual void op_adcs();
179   virtual void op_adis();
180   virtual void op_add();
181   virtual void op_and();
182   virtual void op_xor();
183   virtual void op_stc();
184   virtual void op_rsc();
185   virtual void op_cma();
186   virtual void op_sf1();
187   virtual void op_rf1();
188   virtual void op_sf2();
189   virtual void op_rf2();
172190};
173191
174192
175class amis2150_device : public amis2000_device
193class amis2000_cpu_device : public amis2000_base_device
176194{
177195public:
178   amis2150_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
196   amis2000_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
179197};
180198
181199
200class amis2150_cpu_device : public amis2000_base_device
201{
202public:
203   amis2150_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
204};
182205
206
207class amis2152_cpu_device : public amis2000_base_device
208{
209public:
210   amis2152_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
211
212protected:
213   // device-level overrides
214   virtual void device_start();
215   virtual void device_reset();
216   
217   // digital-to-frequency converter
218   UINT8 m_d2f_latch;
219   emu_timer *m_d2f_timer;
220   int m_fout_state;
221
222   void d2f_timer_clock();
223   TIMER_CALLBACK_MEMBER(d2f_timer_cb);
224   
225   // opcode handlers
226   virtual void op_szk();
227};
228
229
230
183231extern const device_type AMI_S2000;
184232extern const device_type AMI_S2150;
233extern const device_type AMI_S2152;
185234
186235
187236#endif /* _AMIS2000_H_ */
trunk/src/emu/cpu/amis2000/amis2000op.inc
r243600r243601
22
33// internal helpers
44
5inline UINT8 amis2000_device::ram_r()
5inline UINT8 amis2000_base_device::ram_r()
66{
77   UINT16 address = m_bu << 4 | m_bl;
88   return m_data->read_byte(address) & 0xf;
99}
1010
11inline void amis2000_device::ram_w(UINT8 data)
11inline void amis2000_base_device::ram_w(UINT8 data)
1212{
1313   UINT16 address = m_bu << 4 | m_bl;
1414   m_data->write_byte(address, data & 0xf);
1515}
1616
17void amis2000_device::pop_callstack()
17void amis2000_base_device::pop_callstack()
1818{
1919   m_pc = (m_pc & ~m_callstack_mask) | (m_callstack[0] & m_callstack_mask);
2020   for (int i = 0; i < m_callstack_depth-1; i++)
2121      m_callstack[i] = m_callstack[i+1];
2222}
2323
24void amis2000_device::push_callstack()
24void amis2000_base_device::push_callstack()
2525{
2626   for (int i = m_callstack_depth-1; i >= 1; i--)
2727      m_callstack[i] = m_callstack[i-1];
2828   m_callstack[0] = m_pc & m_callstack_mask;
2929}
3030
31void amis2000_device::d_latch_out(bool active)
31void amis2000_base_device::d_latch_out(bool active)
3232{
3333   m_write_d(0, active ? (m_d ^ m_d_polarity) : 0, 0xff);
3434   m_d_active = active;
r243600r243601
3737
3838// Register Instructions
3939
40void amis2000_device::op_lai()
40void amis2000_base_device::op_lai()
4141{
4242   // LAI X: load ACC with X, select I and K inputs
4343   // note: only execute the first one in a sequence of LAI
r243600r243601
4949   }
5050}
5151
52void amis2000_device::op_lab()
52void amis2000_base_device::op_lab()
5353{
5454   // LAB: load ACC with BL
5555   m_acc = m_bl;
5656}
5757
58void amis2000_device::op_lae()
58void amis2000_base_device::op_lae()
5959{
6060   // LAE: load ACC with E
6161   m_acc = m_e;
6262}
6363
64void amis2000_device::op_xab()
64void amis2000_base_device::op_xab()
6565{
6666   // XAB: exchange ACC with BL
6767   UINT8 old_acc = m_acc;
r243600r243601
6969   m_bl = old_acc;
7070}
7171
72void amis2000_device::op_xabu()
72void amis2000_base_device::op_xabu()
7373{
7474   // XABU: exchange ACC with BU
7575   UINT8 old_acc = m_acc;
r243600r243601
7777   m_bu = old_acc & m_bu_mask;
7878}
7979
80void amis2000_device::op_xae()
80void amis2000_base_device::op_xae()
8181{
8282   // XAE: exchange ACC with E
8383   UINT8 old_acc = m_acc;
r243600r243601
8585   m_e = old_acc;
8686}
8787
88void amis2000_device::op_lbe()
88void amis2000_base_device::op_lbe()
8989{
9090   // LBE Y: load BU with Y, load BL with E
9191   // note: only execute the first one in a sequence of LB*
r243600r243601
9797   }
9898}
9999
100void amis2000_device::op_lbep()
100void amis2000_base_device::op_lbep()
101101{
102102   // LBEP Y: load BU with Y, load BL with E+1
103103   // note: only execute the first one in a sequence of LB*
r243600r243601
109109   }
110110}
111111
112void amis2000_device::op_lbz()
112void amis2000_base_device::op_lbz()
113113{
114114   // LBZ Y: load BU with Y, load BL with 0
115115   // note: only execute the first one in a sequence of LB*
r243600r243601
121121   }
122122}
123123
124void amis2000_device::op_lbf()
124void amis2000_base_device::op_lbf()
125125{
126126   // LBF Y: load BU with Y, load BL with 15
127127   // note: only execute the first one in a sequence of LB*
r243600r243601
136136
137137// RAM Instructions
138138
139void amis2000_device::op_lam()
139void amis2000_base_device::op_lam()
140140{
141141   // LAM _Y: load ACC with RAM, xor BU with _Y
142142   m_acc = ram_r();
r243600r243601
144144   m_bu ^= (param & m_bu_mask);
145145}
146146
147void amis2000_device::op_xc()
147void amis2000_base_device::op_xc()
148148{
149149   // XC _Y: exchange ACC with RAM, xor BU with _Y
150150   UINT8 old_acc = m_acc;
r243600r243601
154154   m_bu ^= (param & m_bu_mask);
155155}
156156
157void amis2000_device::op_xci()
157void amis2000_base_device::op_xci()
158158{
159159   // XCI _Y: exchange ACC with RAM, increment BL(skip next on carry), xor BU with _Y
160160   op_xc();
r243600r243601
162162   m_skip = (m_bl == 0);
163163}
164164
165void amis2000_device::op_xcd()
165void amis2000_base_device::op_xcd()
166166{
167167   // XCD _Y: exchange ACC with RAM, decrement BL(skip next on carry), xor BU with _Y
168168   op_xc();
r243600r243601
170170   m_skip = (m_bl == 0xf);
171171}
172172
173void amis2000_device::op_stm()
173void amis2000_base_device::op_stm()
174174{
175175   // STM Z: set RAM bit Z
176176   UINT8 param = 1 << (m_op & 0x03);
177177   ram_w(ram_r() | param);
178178}
179179
180void amis2000_device::op_rsm()
180void amis2000_base_device::op_rsm()
181181{
182182   // RSM Z: reset RAM bit Z
183183   UINT8 param = 1 << (m_op & 0x03);
r243600r243601
187187
188188// Input/Output Instructions
189189
190void amis2000_device::op_inp()
190void amis2000_base_device::op_inp()
191191{
192192   // INP: input D-pins to ACC and RAM
193193   UINT8 in = m_d_active ? m_d : m_read_d(0, 0xff);
r243600r243601
195195   ram_w(in >> 4 & 0xf);
196196}
197197
198void amis2000_device::op_out()
198void amis2000_base_device::op_out()
199199{
200200   // OUT: pulse output ACC and RAM to D-pins
201201   logerror("%s unknown opcode $%02X at $%04X\n", tag(), m_op, m_pc);
202202}
203203
204void amis2000_device::op_disb()
204void amis2000_base_device::op_disb()
205205{
206206   // DISB: set D-latch to ACC and RAM directly
207207   m_d = m_acc | ram_r() << 4;
208208   d_latch_out(true);
209209}
210210
211void amis2000_device::op_disn()
211void amis2000_base_device::op_disn()
212212{
213213   // DISN: set D-latch to ACC+carry via on-die segment decoder
214214   static const UINT8 lut_segment_decoder[0x10] =
r243600r243601
220220   d_latch_out(true);
221221}
222222
223void amis2000_device::op_mvs()
223void amis2000_base_device::op_mvs()
224224{
225225   // MVS: output master strobe latch to A-pins
226226   d_latch_out(false);
227227   m_write_a(0, m_a, 0xffff);
228228}
229229
230void amis2000_device::op_psh()
230void amis2000_base_device::op_psh()
231231{
232232   // PSH: preset high(BL) master strobe latch
233233   switch (m_bl)
r243600r243601
254254   }
255255}
256256
257void amis2000_device::op_psl()
257void amis2000_base_device::op_psl()
258258{
259259   // PSL: preset low(BL) master strobe latch
260260   switch (m_bl)
r243600r243601
281281   }
282282}
283283
284void amis2000_device::op_eur()
284void amis2000_base_device::op_eur()
285285{
286286   // EUR: set timer frequency(European) and D-latch polarity, via ACC
287287   m_d_polarity = (m_acc & 1) ? 0x00 : 0xff;
r243600r243601
291291
292292// Program Control Instructions
293293
294void amis2000_device::op_pp()
294void amis2000_base_device::op_pp()
295295{
296296   // PP _X: prepare page/bank with _X
297297   UINT8 param = ~m_op & 0x0f;
r243600r243601
301301      m_pbr = param & 7;
302302}
303303
304void amis2000_device::op_jmp()
304void amis2000_base_device::op_jmp()
305305{
306306   // JMP X: jump to X(+PP)
307307   UINT16 mask = 0x3f;
r243600r243601
316316   m_pc = (m_pc & ~mask) | param;
317317}
318318
319void amis2000_device::op_jms()
319void amis2000_base_device::op_jms()
320320{
321321   // JMS X: call to X(+PP)
322322   m_icount--;
r243600r243601
328328      m_pc |= 0x3c0;
329329}
330330
331void amis2000_device::op_rt()
331void amis2000_base_device::op_rt()
332332{
333333   // RT: return from subroutine
334334   pop_callstack();
335335}
336336
337void amis2000_device::op_rts()
337void amis2000_base_device::op_rts()
338338{
339339   // RTS: return from subroutine and skip next
340340   op_rt();
341341   m_skip = true;
342342}
343343
344void amis2000_device::op_nop()
344void amis2000_base_device::op_nop()
345345{
346346   // NOP: no operation
347347}
348348
349void amis2000_device::op_halt()
349void amis2000_base_device::op_halt()
350350{
351351   // HALT: debugger breakpoint for devkit-use
352352   logerror("%s unknown opcode $%02X at $%04X\n", tag(), m_op, m_pc);
r243600r243601
355355
356356// Skip Instructions
357357
358void amis2000_device::op_szc()
358void amis2000_base_device::op_szc()
359359{
360360   // SZC: skip next on zero(no) carry
361361   m_skip = !m_carry;
362362}
363363
364void amis2000_device::op_szm()
364void amis2000_base_device::op_szm()
365365{
366366   // SZM Z: skip next on zero RAM bit Z
367367   UINT8 param = 1 << (m_op & 0x03);
368368   m_skip = !(ram_r() & param);
369369}
370370
371void amis2000_device::op_szi()
371void amis2000_base_device::op_szi()
372372{
373373   // SZI: skip next on I pin(s)
374374   m_skip = ((~m_read_i(0, 0xff) & m_ki_mask) != 0);
375375}
376376
377void amis2000_device::op_szk()
377void amis2000_base_device::op_szk()
378378{
379379   // SZK: skip next on K pin(s)
380380   m_skip = ((~m_read_k(0, 0xff) & m_ki_mask) != 0);
381381}
382382
383void amis2000_device::op_sbe()
383void amis2000_base_device::op_sbe()
384384{
385385   // SBE: skip next on BL equals E
386386   m_skip = (m_bl == m_e);
387387}
388388
389void amis2000_device::op_sam()
389void amis2000_base_device::op_sam()
390390{
391391   // SAM: skip next on ACC equals RAM
392392   m_skip = (m_acc == ram_r());
393393}
394394
395void amis2000_device::op_sos()
395void amis2000_base_device::op_sos()
396396{
397397   // SOS: skip next on SF(timer output), clear SF
398398   logerror("%s unknown opcode $%02X at $%04X\n", tag(), m_op, m_pc);
399399}
400400
401void amis2000_device::op_tf1()
401void amis2000_base_device::op_tf1()
402402{
403403   // TF1: skip next on flag 1
404404   m_skip = ((m_f & 0x01) != 0);
405405}
406406
407void amis2000_device::op_tf2()
407void amis2000_base_device::op_tf2()
408408{
409409   // TF2: skip next on flag 2
410410   m_skip = ((m_f & 0x02) != 0);
r243600r243601
413413
414414// Arithmetic and Logical Instructions
415415
416void amis2000_device::op_adcs()
416void amis2000_base_device::op_adcs()
417417{
418418   // ADCS: add RAM to ACC+carry, skip next on not carry
419419   m_acc += ram_r() + m_carry;
r243600r243601
422422   m_acc &= 0xf;
423423}
424424
425void amis2000_device::op_adis()
425void amis2000_base_device::op_adis()
426426{
427427   // ADIS X: add X to ACC, skip next on not carry
428428   UINT8 param = m_op & 0x0f;
r243600r243601
431431   m_acc &= 0xf;
432432}
433433
434void amis2000_device::op_add()
434void amis2000_base_device::op_add()
435435{
436436   // ADD: add RAM to ACC
437437   m_acc = (m_acc + ram_r()) & 0xf;
438438}
439439
440void amis2000_device::op_and()
440void amis2000_base_device::op_and()
441441{
442442   // AND: and ACC with RAM
443443   m_acc &= ram_r();
444444}
445445
446void amis2000_device::op_xor()
446void amis2000_base_device::op_xor()
447447{
448448   // XOR: xor ACC with RAM
449449   m_acc ^= ram_r();
450450}
451451
452void amis2000_device::op_stc()
452void amis2000_base_device::op_stc()
453453{
454454   // STC: set carry
455455   m_carry = 1;
456456}
457457
458void amis2000_device::op_rsc()
458void amis2000_base_device::op_rsc()
459459{
460460   // RSC: reset carry
461461   m_carry = 0;
462462}
463463
464void amis2000_device::op_cma()
464void amis2000_base_device::op_cma()
465465{
466466   // CMA: complement ACC
467467   m_acc ^= 0xf;
468468}
469469
470void amis2000_device::op_sf1()
470void amis2000_base_device::op_sf1()
471471{
472472   // SF1: set flag 1
473473   m_f |= 0x01;
474474}
475475
476void amis2000_device::op_rf1()
476void amis2000_base_device::op_rf1()
477477{
478478   // RF1: reset flag 1
479479   m_f &= ~0x01;
480480}
481481
482void amis2000_device::op_sf2()
482void amis2000_base_device::op_sf2()
483483{
484484   // SF2: set flag 2
485485   m_f |= 0x02;
486486}
487487
488void amis2000_device::op_rf2()
488void amis2000_base_device::op_rf2()
489489{
490490   // RF2: reset flag 2
491491   m_f &= ~0x02;
492492}
493
494
495
496// AMI S2152 specific handlers
497
498void amis2152_cpu_device::d2f_timer_clock()
499{
500   // schedule next timeout (frequency is guessed)
501   attotime base = attotime::from_hz(unscaled_clock() / 4 / 64);
502   m_d2f_timer->adjust(base * (0x10 - m_d2f_latch));
503}
504
505TIMER_CALLBACK_MEMBER(amis2152_cpu_device::d2f_timer_cb)
506{
507   m_write_f(m_fout_state);
508   m_fout_state ^= 1;
509   
510   d2f_timer_clock();
511}
512
513void amis2152_cpu_device::op_szk()
514{
515   // instead of SZK: ???: load d2f latch with ACC(?)
516   m_d2f_latch = m_acc;
517}
trunk/src/emu/cpu/m68000/m68000.h
r243600r243601
356356   UINT16 mmu_tmp_buserror_rw;   /* temporary hack: (first) bus error rw */
357357
358358   UINT32 ic_address[M68K_IC_SIZE];   /* instruction cache address data */
359   UINT16 ic_data[M68K_IC_SIZE];      /* instruction cache content data */
359   UINT32 ic_data[M68K_IC_SIZE];      /* instruction cache content data */
360   bool   ic_valid[M68K_IC_SIZE];      /* instruction cache valid flags */
360361
361362
362363
363
364364   /* 68307 / 68340 internal address map */
365365   address_space *internal;
366366
trunk/src/emu/cpu/m68000/m68kcpu.c
r243600r243601
24782478   mmu_tmp_buserror_rw = 0;
24792479
24802480   for (int i=0;i<M68K_IC_SIZE;i++)
2481   {
24812482      ic_address[i] = 0;
2482
2483   for (int i=0;i<M68K_IC_SIZE;i++)
24842483      ic_data[i] = 0;
2484      ic_valid[i] = false;
2485   }
24852486
24862487   internal = 0;
24872488}
trunk/src/emu/cpu/m68000/m68kcpu.h
r243600r243601
683683
684684INLINE UINT32 m68ki_ic_readimm16(m68000_base_device *m68k, UINT32 address)
685685{
686/*  if(CPU_TYPE_IS_EC020_PLUS(m68k->cpu_type) && (m68k->cacr & M68K_CACR_EI))
687    {
688        UINT32 ic_offset = (address >> 1) % M68K_IC_SIZE;
689        if (m68k->ic_address[ic_offset] == address)
690        {
691            return m68k->ic_data[ic_offset];
692        }
693        else
694        {
695            UINT32 data = m68k->memory.readimm16(address);
696            if (!m68k->mmu_tmp_buserror_occurred)
697            {
698                m68k->ic_data[ic_offset] = data;
699                m68k->ic_address[ic_offset] = address;
700            }
701            return data;
702        }
703    }
704    else*/
686   if (m68k->cacr & M68K_CACR_EI)
705687   {
706      return m68k->/*memory.*/readimm16(address);
688      // 68020 series I-cache (MC68020 User's Manual, Section 4 - On-Chip Cache Memory)
689      if (m68k->cpu_type & (CPU_TYPE_EC020 | CPU_TYPE_020))
690      {
691         UINT32 tag = (address >> 8) | (m68k->s_flag ? 0x1000000 : 0);
692         int idx = (address >> 2) & 0x3f;   // 1-of-64 select
693
694         // do a cache fill if the line is invalid or the tags don't match
695         if ((!m68k->ic_valid[idx]) || (m68k->ic_address[idx] != tag))
696         {
697            m68k->ic_data[idx] = m68k->read32(address & ~3);
698
699//            printf("m68k: doing cache fill at %08x (tag %08x idx %d)\n", address, tag, idx);
700
701            // if no buserror occured, validate the tag
702            if (!m68k->mmu_tmp_buserror_occurred)
703            {
704               m68k->ic_address[idx] = tag;
705               m68k->ic_valid[idx] = true;
706            }
707            else
708            {
709               return m68k->readimm16(address);
710            }
711         }
712
713         // at this point, the cache is guaranteed to be valid, either as
714         // a hit or because we just filled it.
715         if (address & 2)
716         {
717            return m68k->ic_data[idx] & 0xffff;
718         }
719         else
720         {
721            return m68k->ic_data[idx] >> 16;
722         }
723      }
707724   }
708725
709   // this can't happen, but Apple GCC insists
710//  return 0;
726   return m68k->readimm16(address);
711727}
712728
713729/* Handles all immediate reads, does address error check, function code setting,
trunk/src/mame/drivers/cclimber.c
r243600r243601
16221622
16231623This game runs on dedicated hardware.
16241624
1625Possibly bootlegged by Hafasonic?
1626
16251627CPU Board
16261628---------
16271629
r243600r243601
23942396GAME( 1981, ckong,       0,        cclimber, ckong, driver_device,    0,        ROT270, "Kyoei / Falcon", "Crazy Kong", 0 ) // on a Falcon FCK-01 PCB, but doesn't display any Falcon copyright
23952397GAME( 1981, ckongalc,    ckong,    cclimber, ckong, driver_device,    0,        ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", 0 )
23962398GAME( 1981, monkeyd,     ckong,    cclimber, ckong, driver_device,    0,        ROT270, "bootleg", "Monkey Donkey", 0 )
2397GAME( 1981, dking,       ckong,    cclimber, ckong, cclimber_state,   dking,    ROT270, "bootleg", "Donkey King", 0 )
2399GAME( 1981, dking,       ckong,    cclimber, ckong, cclimber_state,   dking,    ROT270, "bootleg", "Donkey King", 0 ) // supposedly, possibly by Hafasonic?
23982400GAME( 1981, ckongdks,    ckong,    cclimber, ckong, cclimber_state,   dking,    ROT270, "bootleg", "Donkey Kong (Spanish Crazy Kong bootleg)", 0 )
23992401
24002402/* these sets have correct colours, and also contain the graphics used for the extra attract screen in the BG roms, but it is unused
trunk/src/mame/drivers/cops.c
r243600r243601
889889
890890   ROM_REGION( 0x8000, "system", 0 )
891891   ROM_LOAD( "cops_sys.dat", 0x0000, 0x8000, CRC(0060e5d0) SHA1(b8c9f6fde6a315e33fa7946e5d3bb4ea2fbe76a8) )
892   
893   DISK_REGION( "audiocd" )
894        DISK_IMAGE_READONLY( "copscd", 0, NO_DUMP )
895
896   DISK_REGION( "laserdisc" )
897        DISK_IMAGE_READONLY( "cops", 0, NO_DUMP )
892898ROM_END
893899
894900ROM_START( copsuk )
r243600r243601
897903
898904   ROM_REGION( 0x8000, "system", 0 )
899905   ROM_LOAD( "cops_sys.dat", 0x0000, 0x8000, CRC(0060e5d0) SHA1(b8c9f6fde6a315e33fa7946e5d3bb4ea2fbe76a8) )
906
907   DISK_REGION( "audiocd" )
908        DISK_IMAGE_READONLY( "copscd", 0, NO_DUMP )
909
910   DISK_REGION( "laserdisc" )
911        DISK_IMAGE_READONLY( "cops", 0, NO_DUMP )
900912ROM_END
901913
902914ROM_START( revlatns )
r243600r243601
905917
906918   ROM_REGION( 0x8000, "system", 0 )
907919   ROM_LOAD( "revelations_sys.bin", 0x0000, 0x8000, CRC(43e5e3ec) SHA1(fa44b102b5aa7ad2421c575abdc67f1c29f23bc1) )
920
921   DISK_REGION( "laserdisc" )
922        DISK_IMAGE_READONLY( "revlatns", 0, NO_DUMP )
908923ROM_END
909924
910925
trunk/src/mame/drivers/n8080.c
r243600r243601
33  Nintendo 8080 hardware
44
55    - Space Fever
6    - Space Fever High Splitter
6    - Space Fever High Splitter (aka SF-Hisplitter)
77    - Space Launcher
88    - Sheriff / Bandido / Western Gun 2
99    - Helifire
r243600r243601
933933GAME( 1979, spacefev,   0,        spacefev, spacefev, driver_device, 0, ROT270, "Nintendo", "Space Fever (New Ver.)", GAME_SUPPORTS_SAVE )
934934GAME( 1979, spacefevo,  spacefev, spacefev, spacefev, driver_device, 0, ROT270, "Nintendo", "Space Fever (Old Ver.)", GAME_SUPPORTS_SAVE )
935935GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, driver_device, 0, ROT270, "Nintendo", "Space Fever (Older Ver.)", GAME_SUPPORTS_SAVE )
936GAME( 1979, highsplt,   0,        spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", GAME_SUPPORTS_SAVE )
937GAME( 1979, highsplta,  highsplt, spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", GAME_SUPPORTS_SAVE )
938GAME( 1979, highspltb,  highsplt, spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", GAME_SUPPORTS_SAVE )
936GAME( 1979, highsplt,   0,        spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", GAME_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer
937GAME( 1979, highsplta,  highsplt, spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", GAME_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer
938GAME( 1979, highspltb,  highsplt, spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", GAME_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer
939939GAME( 1979, spacelnc,   0,        spacefev, spacelnc, driver_device, 0, ROT270, "Nintendo", "Space Launcher", GAME_SUPPORTS_SAVE )
940940GAME( 1979, sheriff,    0,        sheriff,  sheriff, driver_device,  0, ROT270, "Nintendo", "Sheriff", GAME_SUPPORTS_SAVE )
941941GAME( 1980, bandido,    sheriff,  sheriff,  bandido, driver_device,  0, ROT270, "Nintendo (Exidy license)", "Bandido", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/nbmj9195.c
r243600r243601
37203720   ROM_LOAD( "6.bin",        0x020000, 0x010000, CRC(0fece809) SHA1(1fe8436af8ead02a3b517b6306f9824cd64b2d26) )
37213721   ROM_LOAD( "5.bin",        0x010000, 0x010000, CRC(0706386a) SHA1(29eee363775869dcc9c46285632e8bf745c9110b) )
37223722   ROM_LOAD( "4.bin",        0x000000, 0x010000, CRC(199e2127) SHA1(2514d51cb06438b312d1f328c72baa739280416a) )
3723   
3724   DISK_REGION( "laserdisc" )
3725        DISK_IMAGE_READONLY( "shabdama", 0, NO_DUMP )
37233726ROM_END
37243727
37253728//    YEAR, NAME,     PARENT,   MACHINE,  INPUT,    INIT,     MONITOR, COMPANY, FULLNAME, FLAGS
trunk/src/mame/drivers/skeetsht.c
r243600r243601
33    Dynamo Skeet Shot
44
55    Notes:
6        Pop Shot is a prototype sequal (or upgrade) to Skeet Shot
6        Pop Shot is a prototype sequel (or upgrade) to Skeet Shot
7       
8        Supposedly Skeet Shot used a laserdisc to supply video for eight
9        different background "scenes". Pop Shot probably did too, in that case.
710
811***************************************************************************/
912
r243600r243601
263266   ROM_REGION16_LE( 0x200000, "tms", 0 )
264267   ROM_LOAD16_BYTE( "even_v1.2.u14", 0x000000, 0x40000, CRC(c7c9515e) SHA1(ce3e813c15085790d5335d9fc751b3cc5b617b20) )
265268   ROM_LOAD16_BYTE( "odd_v1.2.u13",  0x000001, 0x40000, CRC(ea4402fb) SHA1(b0b6b191a8b48bead660a385c638363943a6ffe2) )
269   
270   DISK_REGION( "laserdisc" )
271        DISK_IMAGE_READONLY( "skeetsht", 0, NO_DUMP ) // unknown disc label?
266272ROM_END
267273
268274ROM_START( popshot )
r243600r243601
273279   ROM_REGION16_LE( 0x200000, "tms", 0 )
274280   ROM_LOAD16_BYTE( "popshot_tms34_even.u14", 0x000000, 0x80000, CRC(bf2f7309) SHA1(6ca252f857e5dc2e5267c176403c44e7a15f539e) )
275281   ROM_LOAD16_BYTE( "popshot_tms34_odd.u13",  0x000001, 0x80000, CRC(82d616d8) SHA1(83ab33727ebab882b79c9ebd3557e2c319b3387a) )
282
283   DISK_REGION( "laserdisc" )
284        DISK_IMAGE_READONLY( "popshot", 0, NO_DUMP ) // unknown disc label?
276285ROM_END
277286
278287
trunk/src/mame/drivers/wc90.c
r243600r243601
5555*                           *
5656*****************************
5757
58There is known to be a Pacman hack running on this hardware.  It was done by Mike C. and isn't ment
58There is known to be a Pacman hack running on this hardware.  It was done by Mike C. and isn't meant
5959for inclusion in MAME.  However the roms with checksums are listed below to prevent it being added
6060as a newly "found" game:
6161
r243600r243601
7979#include "includes/wc90.h"
8080
8181
82WRITE8_MEMBER(wc90_state::wc90_bankswitch_w)
82WRITE8_MEMBER(wc90_state::bankswitch_w)
8383{
8484   int bankaddress;
8585   UINT8 *RAM = memregion("maincpu")->base();
r243600r243601
8989   membank("bank1")->set_base(&RAM[bankaddress] );
9090}
9191
92WRITE8_MEMBER(wc90_state::wc90_bankswitch1_w)
92WRITE8_MEMBER(wc90_state::bankswitch1_w)
9393{
9494   int bankaddress;
9595   UINT8 *RAM = memregion("sub")->base();
r243600r243601
9999   membank("bank2")->set_base(&RAM[bankaddress] );
100100}
101101
102WRITE8_MEMBER(wc90_state::wc90_sound_command_w)
102WRITE8_MEMBER(wc90_state::sound_command_w)
103103{
104104   soundlatch_byte_w(space, offset, data);
105105   m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
r243600r243601
110110static ADDRESS_MAP_START( wc90_map_1, AS_PROGRAM, 8, wc90_state )
111111   AM_RANGE(0x0000, 0x7fff) AM_ROM
112112   AM_RANGE(0x8000, 0x9fff) AM_RAM     /* Main RAM */
113   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(wc90_fgvideoram_w) AM_SHARE("fgvideoram") /* fg video ram */
113   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") /* fg video ram */
114114   AM_RANGE(0xb000, 0xbfff) AM_RAM
115   AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(wc90_bgvideoram_w) AM_SHARE("bgvideoram")
115   AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
116116   AM_RANGE(0xd000, 0xdfff) AM_RAM
117   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(wc90_txvideoram_w) AM_SHARE("txvideoram") /* tx video ram */
117   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") /* tx video ram */
118118   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
119119   AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1")
120120   AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("P1")
r243600r243601
134134   AM_RANGE(0xfc43, 0xfc43) AM_WRITEONLY AM_SHARE("scroll2yhi")
135135   AM_RANGE(0xfc46, 0xfc46) AM_WRITEONLY AM_SHARE("scroll2xlo")
136136   AM_RANGE(0xfc47, 0xfc47) AM_WRITEONLY AM_SHARE("scroll2xhi")
137   AM_RANGE(0xfcc0, 0xfcc0) AM_WRITE(wc90_sound_command_w)
137   AM_RANGE(0xfcc0, 0xfcc0) AM_WRITE(sound_command_w)
138138   AM_RANGE(0xfcd0, 0xfcd0) AM_WRITE(watchdog_reset_w)
139   AM_RANGE(0xfce0, 0xfce0) AM_WRITE(wc90_bankswitch_w)
139   AM_RANGE(0xfce0, 0xfce0) AM_WRITE(bankswitch_w)
140140ADDRESS_MAP_END
141141
142142static ADDRESS_MAP_START( wc90_map_2, AS_PROGRAM, 8, wc90_state )
r243600r243601
147147   AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
148148   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank2")
149149   AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1")
150   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(wc90_bankswitch1_w)
150   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(bankswitch1_w)
151151   AM_RANGE(0xfc01, 0xfc01) AM_WRITE(watchdog_reset_w)
152152ADDRESS_MAP_END
153153
r243600r243601
316316   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
317317   MCFG_SCREEN_SIZE(32*8, 32*8)
318318   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
319   MCFG_SCREEN_UPDATE_DRIVER(wc90_state, screen_update_wc90)
319   MCFG_SCREEN_UPDATE_DRIVER(wc90_state, screen_update)
320320   MCFG_SCREEN_PALETTE("palette")
321321
322322   MCFG_GFXDECODE_ADD("gfxdecode", "palette", wc90)
r243600r243601
472472   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
473473ROM_END
474474
475GAME( 1989, wc90,  0,    wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (World)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
476GAME( 1989, wc90a, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 1)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
477GAME( 1989, wc90b, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 2)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
478GAME( 1989, wc90t, wc90, wc90t,wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (trackball set 1)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
475GAME( 1989, wc90,  0,    wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (World)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
476GAME( 1989, wc90a, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 1)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
477GAME( 1989, wc90b, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 2)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
478GAME( 1989, wc90t, wc90, wc90t,wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (trackball set 1)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/wwfsstar.c
r243600r243601
121121 04 Mar 2002 | Fixed Dip Switches and Inputs    (Steph)
122122             | Fixed screen flipping by using similar routine to the one
123123             | in src/video/wwfwfest.c        (Steph)
124 18 Jun 2001 | Changed Interrupt Function .. its not fully understood whats
124 18 Jun 2001 | Changed Interrupt Function .. it's not fully understood what
125125             | is meant to be going on ..
126126 15 Jun 2001 | Cleaned up Sprite Drawing a bit, correcting some clipping probs,
127127             | mapped DSW's
r243600r243601
170170
171171static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, wwfsstar_state )
172172   AM_RANGE(0x000000, 0x03ffff) AM_ROM
173   AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(wwfsstar_fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram */
174   AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(wwfsstar_bg0_videoram_w) AM_SHARE("bg0_videoram") /* BG0 Ram */
173   AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram */
174   AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(bg0_videoram_w) AM_SHARE("bg0_videoram") /* BG0 Ram */
175175   AM_RANGE(0x100000, 0x1003ff) AM_RAM AM_SHARE("spriteram")       /* SPR Ram */
176176   AM_RANGE(0x140000, 0x140fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
177   AM_RANGE(0x180000, 0x180003) AM_WRITE(wwfsstar_irqack_w)
177   AM_RANGE(0x180000, 0x180003) AM_WRITE(irqack_w)
178178   AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW1")
179179   AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW2")
180180   AM_RANGE(0x180004, 0x180005) AM_READ_PORT("P1")
181   AM_RANGE(0x180004, 0x180007) AM_WRITE(wwfsstar_scrollwrite)
181   AM_RANGE(0x180004, 0x180007) AM_WRITE(scroll_w)
182182   AM_RANGE(0x180006, 0x180007) AM_READ_PORT("P2")
183183   AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM")
184   AM_RANGE(0x180008, 0x180009) AM_WRITE(wwfsstar_soundwrite)
185   AM_RANGE(0x18000a, 0x18000b) AM_WRITE(wwfsstar_flipscreen_w)
184   AM_RANGE(0x180008, 0x180009) AM_WRITE(sound_w)
185   AM_RANGE(0x18000a, 0x18000b) AM_WRITE(flipscreen_w)
186186   AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM                             /* Work Ram */
187187ADDRESS_MAP_END
188188
r243600r243601
201201 as used by the above memory map
202202*******************************************************************************/
203203
204WRITE16_MEMBER(wwfsstar_state::wwfsstar_scrollwrite)
204WRITE16_MEMBER(wwfsstar_state::scroll_w)
205205{
206206   switch (offset)
207207   {
r243600r243601
214214   }
215215}
216216
217WRITE16_MEMBER(wwfsstar_state::wwfsstar_soundwrite)
217WRITE16_MEMBER(wwfsstar_state::sound_w)
218218{
219219   soundlatch_byte_w(space, 1, data & 0xff);
220220   m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
221221}
222222
223WRITE16_MEMBER(wwfsstar_state::wwfsstar_flipscreen_w)
223WRITE16_MEMBER(wwfsstar_state::flipscreen_w)
224224{
225225   flip_screen_set(data & 1);
226226}
227227
228WRITE16_MEMBER(wwfsstar_state::wwfsstar_irqack_w)
228WRITE16_MEMBER(wwfsstar_state::irqack_w)
229229{
230230   if (offset == 0)
231231      m_maincpu->set_input_line(6, CLEAR_LINE);
r243600r243601
247247    A hack is required: raise the vblank bit a scanline early.
248248*/
249249
250TIMER_DEVICE_CALLBACK_MEMBER(wwfsstar_state::wwfsstar_scanline)
250TIMER_DEVICE_CALLBACK_MEMBER(wwfsstar_state::scanline)
251251{
252252   int scanline = param;
253253
r243600r243601
278278   }
279279}
280280
281CUSTOM_INPUT_MEMBER(wwfsstar_state::wwfsstar_vblank_r)
281CUSTOM_INPUT_MEMBER(wwfsstar_state::vblank_r)
282282{
283283   return m_vblank;
284284}
r243600r243601
313313   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Button B (1P VS 2P - Buy-in)")
314314
315315   PORT_START("SYSTEM")
316   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfsstar_state,wwfsstar_vblank_r, NULL) /* VBlank */
316   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wwfsstar_state, vblank_r, NULL) /* VBlank */
317317   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN1 )
318318   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN2 )
319319   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 )
r243600r243601
416416   /* basic machine hardware */
417417   MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK)
418418   MCFG_CPU_PROGRAM_MAP(main_map)
419   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", wwfsstar_state, wwfsstar_scanline, "screen", 0, 1)
419   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", wwfsstar_state, scanline, "screen", 0, 1)
420420
421421   MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
422422   MCFG_CPU_PROGRAM_MAP(sound_map)
r243600r243601
424424   /* video hardware */
425425   MCFG_SCREEN_ADD("screen", RASTER)
426426   MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 320, 0, 256, 272, 8, 248)   /* HTOTAL and VTOTAL are guessed */
427   MCFG_SCREEN_UPDATE_DRIVER(wwfsstar_state, screen_update_wwfsstar)
427   MCFG_SCREEN_UPDATE_DRIVER(wwfsstar_state, screen_update)
428428   MCFG_SCREEN_PALETTE("palette")
429429
430430   MCFG_GFXDECODE_ADD("gfxdecode", "palette", wwfsstar)
r243600r243601
627627
628628
629629
630GAME( 1989, wwfsstar,   0,        wwfsstar, wwfsstar, driver_device,  0, ROT0, "Technos Japan", "WWF Superstars (Europe)", 0 )
631GAME( 1989, wwfsstaru,  wwfsstar, wwfsstar, wwfsstar, driver_device,  0, ROT0, "Technos Japan", "WWF Superstars (US, Newer)", 0 )
632GAME( 1989, wwfsstarua, wwfsstar, wwfsstar, wwfsstar, driver_device,  0, ROT0, "Technos Japan", "WWF Superstars (US)", 0 )
633GAME( 1989, wwfsstarj,  wwfsstar, wwfsstar, wwfsstar, driver_device,  0, ROT0, "Technos Japan", "WWF Superstars (Japan)", 0 )
634GAME( 1989, wwfsstarb,  wwfsstar, wwfsstar, wwfsstar, driver_device,  0, ROT0, "bootleg",       "WWF Superstars (bootleg)", 0 )
630GAME( 1989, wwfsstar,   0,        wwfsstar, wwfsstar, driver_device,  0, ROT0, "Technos Japan", "WWF Superstars (Europe)", GAME_SUPPORTS_SAVE )
631GAME( 1989, wwfsstaru,  wwfsstar, wwfsstar, wwfsstar, driver_device,  0, ROT0, "Technos Japan", "WWF Superstars (US, Newer)", GAME_SUPPORTS_SAVE )
632GAME( 1989, wwfsstarua, wwfsstar, wwfsstar, wwfsstar, driver_device,  0, ROT0, "Technos Japan", "WWF Superstars (US)", GAME_SUPPORTS_SAVE )
633GAME( 1989, wwfsstarj,  wwfsstar, wwfsstar, wwfsstar, driver_device,  0, ROT0, "Technos Japan", "WWF Superstars (Japan)", GAME_SUPPORTS_SAVE )
634GAME( 1989, wwfsstarb,  wwfsstar, wwfsstar, wwfsstar, driver_device,  0, ROT0, "bootleg",       "WWF Superstars (bootleg)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/xxmissio.c
r243600r243601
1414#include "includes/xxmissio.h"
1515
1616
17WRITE8_MEMBER(xxmissio_state::xxmissio_bank_sel_w)
17WRITE8_MEMBER(xxmissio_state::bank_sel_w)
1818{
1919   membank("bank1")->set_entry(data & 7);
2020}
2121
22CUSTOM_INPUT_MEMBER(xxmissio_state::xxmissio_status_r)
22CUSTOM_INPUT_MEMBER(xxmissio_state::status_r)
2323{
2424   int bit_mask = (FPTR)param;
2525   return (m_status & bit_mask) ? 1 : 0;
2626}
2727
28WRITE8_MEMBER(xxmissio_state::xxmissio_status_m_w)
28WRITE8_MEMBER(xxmissio_state::status_m_w)
2929{
3030   switch (data)
3131   {
r243600r243601
4444   }
4545}
4646
47WRITE8_MEMBER(xxmissio_state::xxmissio_status_s_w)
47WRITE8_MEMBER(xxmissio_state::status_s_w)
4848{
4949   switch (data)
5050   {
r243600r243601
6363   }
6464}
6565
66INTERRUPT_GEN_MEMBER(xxmissio_state::xxmissio_interrupt_m)
66INTERRUPT_GEN_MEMBER(xxmissio_state::interrupt_m)
6767{
6868   m_status &= ~0x20;
69   device.execute().set_input_line(0, HOLD_LINE);
69   m_maincpu->set_input_line(0, HOLD_LINE);
7070}
7171
72INTERRUPT_GEN_MEMBER(xxmissio_state::xxmissio_interrupt_s)
72INTERRUPT_GEN_MEMBER(xxmissio_state::interrupt_s)
7373{
7474   m_status &= ~0x10;
75   device.execute().set_input_line(0, HOLD_LINE);
75   m_subcpu->set_input_line(0, HOLD_LINE);
7676}
7777
7878void xxmissio_state::machine_start()
7979{
8080   membank("bank1")->configure_entries(0, 8, memregion("user1")->base(), 0x4000);
8181   membank("bank1")->set_entry(0);
82   
83   save_item(NAME(m_status));
8284}
8385
8486/****************************************************************************/
r243600r243601
9294   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
9395   AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2")
9496   AM_RANGE(0xa002, 0xa002) AM_READ_PORT("STATUS")
95   AM_RANGE(0xa002, 0xa002) AM_WRITE(xxmissio_status_m_w)
96   AM_RANGE(0xa003, 0xa003) AM_WRITE(xxmissio_flipscreen_w)
97   AM_RANGE(0xa002, 0xa002) AM_WRITE(status_m_w)
98   AM_RANGE(0xa003, 0xa003) AM_WRITE(flipscreen_w)
9799
98100   AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("fgram")
99   AM_RANGE(0xc800, 0xcfff) AM_READWRITE(xxmissio_bgram_r, xxmissio_bgram_w) AM_SHARE("bgram")
101   AM_RANGE(0xc800, 0xcfff) AM_READWRITE(bgram_r, bgram_w) AM_SHARE("bgram")
100102   AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
101103
102104   AM_RANGE(0xd800, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
r243600r243601
112114
113115   AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
114116   AM_RANGE(0x8002, 0x8003) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
115   AM_RANGE(0x8006, 0x8006) AM_WRITE(xxmissio_bank_sel_w)
117   AM_RANGE(0x8006, 0x8006) AM_WRITE(bank_sel_w)
116118
117119   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
118120   AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2")
119121   AM_RANGE(0xa002, 0xa002) AM_READ_PORT("STATUS")
120   AM_RANGE(0xa002, 0xa002) AM_WRITE(xxmissio_status_s_w)
121   AM_RANGE(0xa003, 0xa003) AM_WRITE(xxmissio_flipscreen_w)
122   AM_RANGE(0xa002, 0xa002) AM_WRITE(status_s_w)
123   AM_RANGE(0xa003, 0xa003) AM_WRITE(flipscreen_w)
122124
123125   AM_RANGE(0xc000, 0xc7ff) AM_SHARE("fgram") AM_RAM
124   AM_RANGE(0xc800, 0xcfff) AM_SHARE("bgram") AM_READWRITE(xxmissio_bgram_r, xxmissio_bgram_w)
126   AM_RANGE(0xc800, 0xcfff) AM_SHARE("bgram") AM_READWRITE(bgram_r, bgram_w)
125127   AM_RANGE(0xd000, 0xd7ff) AM_SHARE("spriteram") AM_RAM
126128
127129   AM_RANGE(0xd800, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
r243600r243601
196198   PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" ) /* Shown as "Unused" in the manual */
197199
198200   PORT_START("STATUS")
199   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state,xxmissio_status_r, (void *)0x01)
201   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state, status_r, (void *)0x01)
200202   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
201   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state,xxmissio_status_r, (void *)0x04)
202   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state,xxmissio_status_r, (void *)0x08)
203   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state,xxmissio_status_r, (void *)0x10)
204   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state,xxmissio_status_r, (void *)0x20)
205   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state,xxmissio_status_r, (void *)0x40)
206   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state,xxmissio_status_r, (void *)0x80)
203   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state, status_r, (void *)0x04)
204   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state, status_r, (void *)0x08)
205   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state, status_r, (void *)0x10)
206   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state, status_r, (void *)0x20)
207   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state, status_r, (void *)0x40)
208   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xxmissio_state, status_r, (void *)0x80)
207209INPUT_PORTS_END
208210
209211/****************************************************************************/
r243600r243601
258260   /* basic machine hardware */
259261   MCFG_CPU_ADD("maincpu", Z80,12000000/4) /* 3.0MHz */
260262   MCFG_CPU_PROGRAM_MAP(map1)
261   MCFG_CPU_VBLANK_INT_DRIVER("screen", xxmissio_state,  xxmissio_interrupt_m)
263   MCFG_CPU_VBLANK_INT_DRIVER("screen", xxmissio_state,  interrupt_m)
262264
263265   MCFG_CPU_ADD("sub", Z80,12000000/4) /* 3.0MHz */
264266   MCFG_CPU_PROGRAM_MAP(map2)
265   MCFG_CPU_PERIODIC_INT_DRIVER(xxmissio_state, xxmissio_interrupt_s, 2*60)
267   MCFG_CPU_PERIODIC_INT_DRIVER(xxmissio_state, interrupt_s, 2*60)
266268
267269   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
268270
r243600r243601
273275   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
274276   MCFG_SCREEN_SIZE(64*8, 32*8)
275277   MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 4*8, 28*8-1)
276   MCFG_SCREEN_UPDATE_DRIVER(xxmissio_state, screen_update_xxmissio)
278   MCFG_SCREEN_UPDATE_DRIVER(xxmissio_state, screen_update)
277279   MCFG_SCREEN_PALETTE("palette")
278280
279281   MCFG_GFXDECODE_ADD("gfxdecode", "palette", xxmissio)
r243600r243601
293295   MCFG_SOUND_ROUTE(3, "mono", 0.40)
294296
295297   MCFG_SOUND_ADD("ym2", YM2203, 12000000/8)
296   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(xxmissio_state, xxmissio_scroll_x_w))
297   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(xxmissio_state, xxmissio_scroll_y_w))
298   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(xxmissio_state, scroll_x_w))
299   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(xxmissio_state, scroll_y_w))
298300   MCFG_SOUND_ROUTE(0, "mono", 0.15)
299301   MCFG_SOUND_ROUTE(1, "mono", 0.15)
300302   MCFG_SOUND_ROUTE(2, "mono", 0.15)
r243600r243601
326328   ROM_LOAD16_BYTE( "xx11.4b", 0x0001,  0x8000, CRC(d9dd827c) SHA1(aea3a5abd871adf7f75ad4d6cc57eff0833135c7) )
327329ROM_END
328330
329GAME( 1986, xxmissio, 0, xxmissio, xxmissio, driver_device, 0, ROT90, "UPL", "XX Mission", 0 )
331GAME( 1986, xxmissio, 0, xxmissio, xxmissio, driver_device, 0, ROT90, "UPL", "XX Mission", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/wc90.h
r243600r243601
55public:
66   wc90_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_maincpu(*this, "maincpu"),
9      m_audiocpu(*this, "audiocpu"),
10      m_gfxdecode(*this, "gfxdecode"),
11      m_palette(*this, "palette"),
12      m_sprgen(*this, "spritegen"),
813      m_fgvideoram(*this, "fgvideoram"),
914      m_bgvideoram(*this, "bgvideoram"),
1015      m_txvideoram(*this, "txvideoram"),
r243600r243601
2025      m_scroll1yhi(*this, "scroll1yhi"),
2126      m_scroll2ylo(*this, "scroll2ylo"),
2227      m_scroll2yhi(*this, "scroll2yhi"),
23      m_spriteram(*this, "spriteram"),
24      m_maincpu(*this, "maincpu"),
25      m_audiocpu(*this, "audiocpu"),
26      m_gfxdecode(*this, "gfxdecode"),
27      m_palette(*this, "palette"),
28      m_sprgen(*this, "spritegen")
28      m_spriteram(*this, "spriteram")
2929   { }
3030
31   
32   required_device<cpu_device> m_maincpu;
33   required_device<cpu_device> m_audiocpu;
34   required_device<gfxdecode_device> m_gfxdecode;
35   required_device<palette_device> m_palette;
36   required_device<tecmo_spr_device> m_sprgen;
3137
32
3338   required_shared_ptr<UINT8> m_fgvideoram;
3439   required_shared_ptr<UINT8> m_bgvideoram;
3540   required_shared_ptr<UINT8> m_txvideoram;
r243600r243601
4550   required_shared_ptr<UINT8> m_scroll1yhi;
4651   required_shared_ptr<UINT8> m_scroll2ylo;
4752   required_shared_ptr<UINT8> m_scroll2yhi;
53   required_shared_ptr<UINT8> m_spriteram;
54   
4855   tilemap_t *m_tx_tilemap;
4956   tilemap_t *m_fg_tilemap;
5057   tilemap_t *m_bg_tilemap;
51   required_shared_ptr<UINT8> m_spriteram;
52   DECLARE_WRITE8_MEMBER(wc90_bankswitch_w);
53   DECLARE_WRITE8_MEMBER(wc90_bankswitch1_w);
54   DECLARE_WRITE8_MEMBER(wc90_sound_command_w);
55   DECLARE_WRITE8_MEMBER(wc90_bgvideoram_w);
56   DECLARE_WRITE8_MEMBER(wc90_fgvideoram_w);
57   DECLARE_WRITE8_MEMBER(wc90_txvideoram_w);
58
59   DECLARE_WRITE8_MEMBER(bankswitch_w);
60   DECLARE_WRITE8_MEMBER(bankswitch1_w);
61   DECLARE_WRITE8_MEMBER(sound_command_w);
62   DECLARE_WRITE8_MEMBER(bgvideoram_w);
63   DECLARE_WRITE8_MEMBER(fgvideoram_w);
64   DECLARE_WRITE8_MEMBER(txvideoram_w);
65   DECLARE_WRITE_LINE_MEMBER(irqhandler);
66   
5867   TILE_GET_INFO_MEMBER(get_bg_tile_info);
5968   TILE_GET_INFO_MEMBER(get_fg_tile_info);
6069   TILE_GET_INFO_MEMBER(get_tx_tile_info);
6170   TILE_GET_INFO_MEMBER(track_get_bg_tile_info);
6271   TILE_GET_INFO_MEMBER(track_get_fg_tile_info);
72   
6373   virtual void video_start();
6474   DECLARE_VIDEO_START(wc90t);
65   UINT32 screen_update_wc90(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
66
67   DECLARE_WRITE_LINE_MEMBER(irqhandler);
68   required_device<cpu_device> m_maincpu;
69   required_device<cpu_device> m_audiocpu;
70   required_device<gfxdecode_device> m_gfxdecode;
71   required_device<palette_device> m_palette;
72   required_device<tecmo_spr_device> m_sprgen;
75   
76   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7377};
trunk/src/mame/includes/wwfsstar.h
r243600r243601
33public:
44   wwfsstar_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_spriteram(*this, "spriteram"),
7      m_fg0_videoram(*this, "fg0_videoram"),
8      m_bg0_videoram(*this, "bg0_videoram"),
96      m_maincpu(*this, "maincpu"),
107      m_audiocpu(*this, "audiocpu"),
118      m_gfxdecode(*this, "gfxdecode"),
129      m_screen(*this, "screen"),
13      m_palette(*this, "palette") { }
10      m_palette(*this, "palette"),
11      m_spriteram(*this, "spriteram"),
12      m_fg0_videoram(*this, "fg0_videoram"),
13      m_bg0_videoram(*this, "bg0_videoram") { }
1414
15   required_device<cpu_device> m_maincpu;
16   required_device<cpu_device> m_audiocpu;
17   required_device<gfxdecode_device> m_gfxdecode;
18   required_device<screen_device> m_screen;
19   required_device<palette_device> m_palette;
20
21   required_shared_ptr<UINT16> m_spriteram;
22   required_shared_ptr<UINT16> m_fg0_videoram;
23   required_shared_ptr<UINT16> m_bg0_videoram;
24   
1525   int m_vblank;
1626   int m_scrollx;
1727   int m_scrolly;
18   required_shared_ptr<UINT16> m_spriteram;
19   required_shared_ptr<UINT16> m_fg0_videoram;
20   required_shared_ptr<UINT16> m_bg0_videoram;
2128   tilemap_t *m_fg0_tilemap;
2229   tilemap_t *m_bg0_tilemap;
23   DECLARE_WRITE16_MEMBER(wwfsstar_scrollwrite);
24   DECLARE_WRITE16_MEMBER(wwfsstar_soundwrite);
25   DECLARE_WRITE16_MEMBER(wwfsstar_flipscreen_w);
26   DECLARE_WRITE16_MEMBER(wwfsstar_irqack_w);
27   DECLARE_WRITE16_MEMBER(wwfsstar_fg0_videoram_w);
28   DECLARE_WRITE16_MEMBER(wwfsstar_bg0_videoram_w);
29   DECLARE_CUSTOM_INPUT_MEMBER(wwfsstar_vblank_r);
30   
31   DECLARE_WRITE16_MEMBER(scroll_w);
32   DECLARE_WRITE16_MEMBER(sound_w);
33   DECLARE_WRITE16_MEMBER(flipscreen_w);
34   DECLARE_WRITE16_MEMBER(irqack_w);
35   DECLARE_WRITE16_MEMBER(fg0_videoram_w);
36   DECLARE_WRITE16_MEMBER(bg0_videoram_w);
37   
38   DECLARE_CUSTOM_INPUT_MEMBER(vblank_r);
39   
40   TIMER_DEVICE_CALLBACK_MEMBER(scanline);
41   
3042   TILE_GET_INFO_MEMBER(get_fg0_tile_info);
3143   TILEMAP_MAPPER_MEMBER(bg0_scan);
3244   TILE_GET_INFO_MEMBER(get_bg0_tile_info);
45
3346   virtual void video_start();
34   UINT32 screen_update_wwfsstar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
35   TIMER_DEVICE_CALLBACK_MEMBER(wwfsstar_scanline);
47
48   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3649   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
37   required_device<cpu_device> m_maincpu;
38   required_device<cpu_device> m_audiocpu;
39   required_device<gfxdecode_device> m_gfxdecode;
40   required_device<screen_device> m_screen;
41   required_device<palette_device> m_palette;
4250};
trunk/src/mame/includes/xxmissio.h
r243600r243601
33public:
44   xxmissio_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_bgram(*this, "bgram"),
7      m_fgram(*this, "fgram"),
8      m_spriteram(*this, "spriteram"),
96      m_maincpu(*this, "maincpu"),
107      m_subcpu(*this, "sub"),
118      m_gfxdecode(*this, "gfxdecode"),
12      m_palette(*this, "palette")  { }
9      m_palette(*this, "palette"),
10      m_bgram(*this, "bgram"),
11      m_fgram(*this, "fgram"),
12      m_spriteram(*this, "spriteram")  { }
1313
14   UINT8 m_status;
14   required_device<cpu_device> m_maincpu;
15   required_device<cpu_device> m_subcpu;
16   required_device<gfxdecode_device> m_gfxdecode;
17   required_device<palette_device> m_palette;
18
1519   required_shared_ptr<UINT8> m_bgram;
1620   required_shared_ptr<UINT8> m_fgram;
1721   required_shared_ptr<UINT8> m_spriteram;
22
1823   tilemap_t *m_bg_tilemap;
1924   tilemap_t *m_fg_tilemap;
25   UINT8 m_status;
2026   UINT8 m_xscroll;
2127   UINT8 m_yscroll;
2228   UINT8 m_flipscreen;
23   DECLARE_WRITE8_MEMBER(xxmissio_bank_sel_w);
24   DECLARE_WRITE8_MEMBER(xxmissio_status_m_w);
25   DECLARE_WRITE8_MEMBER(xxmissio_status_s_w);
26   DECLARE_WRITE8_MEMBER(xxmissio_flipscreen_w);
27   DECLARE_WRITE8_MEMBER(xxmissio_bgram_w);
28   DECLARE_READ8_MEMBER(xxmissio_bgram_r);
29   DECLARE_CUSTOM_INPUT_MEMBER(xxmissio_status_r);
29   
30   DECLARE_WRITE8_MEMBER(bank_sel_w);
31   DECLARE_WRITE8_MEMBER(status_m_w);
32   DECLARE_WRITE8_MEMBER(status_s_w);
33   DECLARE_WRITE8_MEMBER(flipscreen_w);
34   DECLARE_WRITE8_MEMBER(bgram_w);
35   DECLARE_READ8_MEMBER(bgram_r);
36   DECLARE_WRITE8_MEMBER(scroll_x_w);
37   DECLARE_WRITE8_MEMBER(scroll_y_w);
38   
39   DECLARE_CUSTOM_INPUT_MEMBER(status_r);
40   
41   INTERRUPT_GEN_MEMBER(interrupt_m);
42   INTERRUPT_GEN_MEMBER(interrupt_s);
43   
3044   TILE_GET_INFO_MEMBER(get_bg_tile_info);
3145   TILE_GET_INFO_MEMBER(get_fg_tile_info);
46   
3247   virtual void machine_start();
3348   virtual void video_start();
34   UINT32 screen_update_xxmissio(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
35   INTERRUPT_GEN_MEMBER(xxmissio_interrupt_m);
36   INTERRUPT_GEN_MEMBER(xxmissio_interrupt_s);
37   DECLARE_WRITE8_MEMBER(xxmissio_scroll_x_w);
38   DECLARE_WRITE8_MEMBER(xxmissio_scroll_y_w);
49   
50   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3951   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx);
40   required_device<cpu_device> m_maincpu;
41   required_device<cpu_device> m_subcpu;
42   required_device<gfxdecode_device> m_gfxdecode;
43   required_device<palette_device> m_palette;
4452};
trunk/src/mame/video/wc90.c
r243600r243601
9494
9595***************************************************************************/
9696
97WRITE8_MEMBER(wc90_state::wc90_bgvideoram_w)
97WRITE8_MEMBER(wc90_state::bgvideoram_w)
9898{
9999   m_bgvideoram[offset] = data;
100100   m_bg_tilemap->mark_tile_dirty(offset & 0x7ff);
101101}
102102
103WRITE8_MEMBER(wc90_state::wc90_fgvideoram_w)
103WRITE8_MEMBER(wc90_state::fgvideoram_w)
104104{
105105   m_fgvideoram[offset] = data;
106106   m_fg_tilemap->mark_tile_dirty(offset & 0x7ff);
107107}
108108
109WRITE8_MEMBER(wc90_state::wc90_txvideoram_w)
109WRITE8_MEMBER(wc90_state::txvideoram_w)
110110{
111111   m_txvideoram[offset] = data;
112112   m_tx_tilemap->mark_tile_dirty(offset & 0x7ff);
r243600r243601
121121***************************************************************************/
122122
123123
124UINT32 wc90_state::screen_update_wc90(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
124UINT32 wc90_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
125125{
126126   m_bg_tilemap->set_scrollx(0,m_scroll2xlo[0] + 256 * m_scroll2xhi[0]);
127127   m_bg_tilemap->set_scrolly(0,m_scroll2ylo[0] + 256 * m_scroll2yhi[0]);
trunk/src/mame/video/wwfsstar.c
r243600r243601
1515 for writes to Video Ram
1616*******************************************************************************/
1717
18WRITE16_MEMBER(wwfsstar_state::wwfsstar_fg0_videoram_w)
18WRITE16_MEMBER(wwfsstar_state::fg0_videoram_w)
1919{
2020   COMBINE_DATA(&m_fg0_videoram[offset]);
2121   m_fg0_tilemap->mark_tile_dirty(offset/2);
2222}
2323
24WRITE16_MEMBER(wwfsstar_state::wwfsstar_bg0_videoram_w)
24WRITE16_MEMBER(wwfsstar_state::bg0_videoram_w)
2525{
2626   COMBINE_DATA(&m_bg0_videoram[offset]);
2727   m_bg0_tilemap->mark_tile_dirty(offset/2);
r243600r243601
207207
208208   m_bg0_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wwfsstar_state::get_bg0_tile_info),this),tilemap_mapper_delegate(FUNC(wwfsstar_state::bg0_scan),this), 16, 16,32,32);
209209   m_fg0_tilemap->set_transparent_pen(0);
210   
211   save_item(NAME(m_vblank));
212   save_item(NAME(m_scrollx));
213   save_item(NAME(m_scrolly));
210214}
211215
212UINT32 wwfsstar_state::screen_update_wwfsstar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
216UINT32 wwfsstar_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
213217{
214218   m_bg0_tilemap->set_scrolly(0, m_scrolly  );
215219   m_bg0_tilemap->set_scrollx(0, m_scrollx  );
trunk/src/mame/video/xxmissio.c
r243600r243601
1212#include "includes/xxmissio.h"
1313
1414
15WRITE8_MEMBER(xxmissio_state::xxmissio_scroll_x_w)
15WRITE8_MEMBER(xxmissio_state::scroll_x_w)
1616{
1717   m_xscroll = data;
1818}
19WRITE8_MEMBER(xxmissio_state::xxmissio_scroll_y_w)
19WRITE8_MEMBER(xxmissio_state::scroll_y_w)
2020{
2121   m_yscroll = data;
2222}
2323
24WRITE8_MEMBER(xxmissio_state::xxmissio_flipscreen_w)
24WRITE8_MEMBER(xxmissio_state::flipscreen_w)
2525{
2626   m_flipscreen = data & 0x01;
2727}
2828
29WRITE8_MEMBER(xxmissio_state::xxmissio_bgram_w)
29WRITE8_MEMBER(xxmissio_state::bgram_w)
3030{
3131   int x = (offset + (m_xscroll >> 3)) & 0x1f;
3232   offset = (offset & 0x7e0) | x;
3333
3434   m_bgram[offset] = data;
3535}
36READ8_MEMBER(xxmissio_state::xxmissio_bgram_r)
36READ8_MEMBER(xxmissio_state::bgram_r)
3737{
3838   int x = (offset + (m_xscroll >> 3)) & 0x1f;
3939   offset = (offset & 0x7e0) | x;
r243600r243601
6969   m_bg_tilemap->set_scrolldx(2, 12);
7070
7171   m_fg_tilemap->set_transparent_pen(0);
72   
73   save_item(NAME(m_xscroll));
74   save_item(NAME(m_yscroll));
75   save_item(NAME(m_flipscreen));
7276}
7377
7478
r243600r243601
122126}
123127
124128
125UINT32 xxmissio_state::screen_update_xxmissio(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
129UINT32 xxmissio_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
126130{
127131   machine().tilemap().mark_all_dirty();
128132   machine().tilemap().set_flip_all(m_flipscreen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
trunk/src/mess/drivers/pencil2.c
r243600r243601
99
1010    Computer kindly donated for MESS by Ian Farquhar.
1111
12    Accessories:
13    - PEN-216 : 16k RAM expansion
14    - PEN-264 : 64k RAM expansion
15    - PEN-511 : Data Cassette Recorder
16    - ???     : Printer
17    - ???     : Floppy Disk Drive (5.25)
18    - ???     : Floppy Disk Controller
19    - ???     : RS-232C Serial Interface
20    - PEN-8xx : Various software on Cassette or Floppy Disk
21    - ???     : Game Controller (joystick and 14 buttons)
22    - PEN-7xx : Various software in Cartridge format
23    - PEN-430 : Modem
24
1225Information found by looking inside the computer
1326------------------------------------------------
1427Main Board PEN-002 11-50332-10
r243600r243601
5669
5770
5871ToDo:
59- Cassette isn't working
6072- Joysticks (no info)
6173
6274****************************************************************************/
r243600r243601
96108   virtual void machine_start();
97109   int m_centronics_busy;
98110   int m_centronics_ack;
111   bool m_cass_state;
99112   required_device<cpu_device> m_maincpu;
100113   required_device<centronics_device> m_centronics;
101114   required_device<cassette_image_device> m_cass;
r243600r243601
135148
136149READ8_MEMBER( pencil2_state::porte2_r)
137150{
138   return (m_cass->input() > 0.1);
151   return (m_cass->input() > 0.1) ? 0xff : 0x7f;
139152}
140153
141154WRITE8_MEMBER( pencil2_state::port10_w )
r243600r243601
145158
146159WRITE8_MEMBER( pencil2_state::port30_w )
147160{
148   m_cass->output( BIT(data, 0) ? -1.0 : +1.0);
161   m_cass_state ^= 1;
162   m_cass->output( m_cass_state ? -1.0 : +1.0);
149163}
150164
151165WRITE8_MEMBER( pencil2_state::port80_w )
r243600r243601
323337/* Driver */
324338
325339/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT     STATE         INIT  COMPANY    FULLNAME       FLAGS */
326COMP( 1983, pencil2,   0,     0,     pencil2,   pencil2, driver_device,  0,  "Hanimex", "Pencil II", GAME_NOT_WORKING )
340COMP( 1983, pencil2,   0,     0,     pencil2,   pencil2, driver_device,  0,  "Hanimex", "Pencil II", 0 )
trunk/src/mess/drivers/tb303.c
r243600r243601
1313
1414#include "emu.h"
1515#include "cpu/ucom4/ucom4.h"
16#include "sound/speaker.h"
1716
1817#include "tb303.lh"
1918
r243600r243601
2322public:
2423   tb303_state(const machine_config &mconfig, device_type type, const char *tag)
2524      : driver_device(mconfig, type, tag),
26      m_maincpu(*this, "maincpu")
25      m_maincpu(*this, "maincpu"),
26      m_t3_off_timer(*this, "t3_off")
2727   { }
2828
2929   required_device<cpu_device> m_maincpu;
30   required_device<timer_device> m_t3_off_timer;
3031
32   TIMER_DEVICE_CALLBACK_MEMBER(t3_clock);
33   TIMER_DEVICE_CALLBACK_MEMBER(t3_off);
34
3135   virtual void machine_start();
3236};
3337
3438
39// T2 to MCU CLK: LC circuit, stable sine wave, 2.2us interval
40#define TB303_T2_CLOCK_HZ   454545 /* in hz */
41
42// T3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
43#define TB303_T3_CLOCK      attotime::from_usec(1800)
44#define TB303_T3_OFF        (TB303_T3_CLOCK / 8)
45
46TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::t3_off)
47{
48   m_maincpu->set_input_line(0, CLEAR_LINE);
49}
50
51TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::t3_clock)
52{
53   m_maincpu->set_input_line(0, ASSERT_LINE);
54   m_t3_off_timer->adjust(TB303_T3_OFF);
55}
56
57
58
59
3560static INPUT_PORTS_START( tb303 )
3661INPUT_PORTS_END
3762
r243600r243601
5176static MACHINE_CONFIG_START( tb303, tb303_state )
5277
5378   /* basic machine hardware */
54   MCFG_CPU_ADD("maincpu", NEC_D650, 454545) // LC circuit, 2.2us pulse interval
79   MCFG_CPU_ADD("maincpu", NEC_D650, TB303_T2_CLOCK_HZ)
5580
81   MCFG_TIMER_DRIVER_ADD_PERIODIC("t3_clock", tb303_state, t3_clock, TB303_T3_CLOCK)
82   MCFG_TIMER_DRIVER_ADD("t3_off", tb303_state, t3_off)
83
5684   MCFG_DEFAULT_LAYOUT(layout_tb303)
5785
5886   /* no video! */
trunk/src/mess/drivers/wildfire.c
r243600r243601
1313
1414
1515  TODO:
16  - bad sound (probably MCU related)
16  - sound emulation could still be improved
1717  - when the game strobes a led faster, it should appear brighter, for example when
1818    the ball hits one of the bumpers
1919  - some 7segs digits are wrong (mcu on-die decoder is customizable?)
r243600r243601
2828#include "wildfire.lh" // this is a test layout, external artwork is necessary
2929
3030// master clock is a single stage RC oscillator: R=?K, C=?pf,
31// S2150 default frequency is 850kHz
31// S2000 default frequency is 850kHz
3232#define MASTER_CLOCK (850000)
3333
3434
r243600r243601
3838   wildfire_state(const machine_config &mconfig, device_type type, const char *tag)
3939      : driver_device(mconfig, type, tag),
4040      m_maincpu(*this, "maincpu"),
41      m_speaker(*this, "speaker")
41      m_speaker(*this, "speaker"),
42      m_a12_decay_timer(*this, "a12_decay")
4243   { }
4344
4445   required_device<cpu_device> m_maincpu;
4546   required_device<speaker_sound_device> m_speaker;
47   required_device<timer_device> m_a12_decay_timer;
4648
4749   UINT8 m_d;
4850   UINT16 m_a;
51   UINT8 m_q2;
52   UINT8 m_q3;
4953
5054   UINT16 m_display_state[0x10];
5155   UINT16 m_display_cache[0x10];
r243600r243601
5357
5458   DECLARE_WRITE8_MEMBER(write_d);
5559   DECLARE_WRITE16_MEMBER(write_a);
60   DECLARE_WRITE_LINE_MEMBER(write_f);
5661
5762   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
63   bool index_is_7segled(int index);
5864   void display_update();
59   bool index_is_7segled(int index);
65   
66   TIMER_DEVICE_CALLBACK_MEMBER(reset_q2);
67   void write_a12(int state);
68   void sound_update();
6069
6170   virtual void machine_start();
6271};
r243600r243601
104113   for (int i = 0; i < 0x10; i++)
105114   {
106115      // update current state
107      m_display_state[i] = (~m_a >> i & 1) ? m_d : 0;
116      m_display_state[i] = (m_a >> i & 1) ? m_d : 0;
108117
109118      active_state[i] = 0;
110119
r243600r243601
150159
151160/***************************************************************************
152161
162  Sound
163
164***************************************************************************/
165
166// Sound output is via a speaker between transistors Q2(from A12) and Q3(from F_out)
167// A12 to Q2 has a little electronic circuit going, causing a slight delay.
168// (see patent US4334679 FIG.5, the 2 resistors are 10K and the cap is a 4.7uF electrolytic)
169
170// decay time, in steps of 1ms
171#define A12_DECAY_TIME 5 /* a complete guess */
172
173void wildfire_state::sound_update()
174{
175   m_speaker->level_w(m_q2 & m_q3);
176}
177
178WRITE_LINE_MEMBER(wildfire_state::write_f)
179{
180   // F_out pin: speaker out
181   m_q3 = (state) ? 1 : 0;
182   sound_update();
183}
184
185TIMER_DEVICE_CALLBACK_MEMBER(wildfire_state::reset_q2)
186{
187   m_q2 = 0;
188   sound_update();
189}
190
191void wildfire_state::write_a12(int state)
192{
193   if (state)
194   {
195      m_a12_decay_timer->adjust(attotime::never);
196      m_q2 = state;
197      sound_update();
198   }
199   else if (m_a >> 12 & 1)
200   {
201      // falling edge
202      m_a12_decay_timer->adjust(attotime::from_msec(A12_DECAY_TIME));
203   }
204}
205
206
207
208/***************************************************************************
209
153210  I/O
154211
155212***************************************************************************/
r243600r243601
163220
164221WRITE16_MEMBER(wildfire_state::write_a)
165222{
166   // A12: enable speaker out
167   // this is in combination with the MCU K4-pin, how?
168   m_speaker->level_w(data >> 12 & 1);
223   data ^= 0x1fff; // active-low
224   
225   // A12: enable speaker
226   write_a12(data >> 12 & 1);
169227
170228   // A0-A2: select 7segleds
171229   // A3-A11: select other leds
r243600r243601
206264
207265   m_d = 0;
208266   m_a = 0;
267   m_q2 = 0;
268   m_q3 = 0;
209269
210270   // register for savestates
211271   save_item(NAME(m_display_state));
r243600r243601
214274
215275   save_item(NAME(m_d));
216276   save_item(NAME(m_a));
277   save_item(NAME(m_q2));
278   save_item(NAME(m_q3));
217279}
218280
219281
220282static MACHINE_CONFIG_START( wildfire, wildfire_state )
221283
222284   /* basic machine hardware */
223   MCFG_CPU_ADD("maincpu", AMI_S2150, MASTER_CLOCK)
285   MCFG_CPU_ADD("maincpu", AMI_S2152, MASTER_CLOCK)
224286   MCFG_AMI_S2000_READ_I_CB(IOPORT("IN1"))
225287   MCFG_AMI_S2000_WRITE_D_CB(WRITE8(wildfire_state, write_d))
226288   MCFG_AMI_S2000_WRITE_A_CB(WRITE16(wildfire_state, write_a))
289   MCFG_AMI_S2152_FOUT_CB(WRITELINE(wildfire_state, write_f))
227290
228291   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", wildfire_state, display_decay_tick, attotime::from_msec(1))
292   MCFG_TIMER_DRIVER_ADD("a12_decay", wildfire_state, reset_q2)
229293
230294   MCFG_DEFAULT_LAYOUT(layout_wildfire)
231295
trunk/src/osd/modules/sound/sdl_sound.c
r243600r243601
1212#include "sound_module.h"
1313#include "modules/osdmodule.h"
1414
15#if (!defined(OSD_WINDOWS) || defined(USE_SDL_SOUND))
15#if (defined(OSD_SDL) || defined(USE_SDL_SOUND))
1616
1717// standard sdl header
1818#include "../../sdl/sdlinc.h"
trunk/src/osd/osdmini/osdmini.mak
r243600r243601
3939
4040# add a define identifying the target osd
4141DEFS += -DOSD_MINI
42
42DEFS += -DUSE_QTDEBUG=0
43DEFS += -DUSE_SDL=0
4344#-------------------------------------------------
4445# object and source roots
4546#-------------------------------------------------
r243600r243601
5354OBJDIRS += $(MINIOBJ) \
5455   $(OSDOBJ)/modules/sync \
5556   $(OSDOBJ)/modules/lib \
56   $(OSDOBJ)/modules/midi
57   $(OSDOBJ)/modules/sound \
58   $(OSDOBJ)/modules/midi \
59   $(OSDOBJ)/modules/font \
60   $(OSDOBJ)/modules/netdev
5761
5862#-------------------------------------------------
5963# OSD core library
r243600r243601
6569   $(MINIOBJ)/minimisc.o \
6670   $(MINIOBJ)/minisync.o \
6771   $(MINIOBJ)/minitime.o \
72   $(OSDOBJ)/modules/sync/work_mini.o \
73   $(OSDOBJ)/modules/osdmodule.o \
6874
6975#-------------------------------------------------
7076# OSD mini library
r243600r243601
7278
7379OSDOBJS = \
7480   $(MINIOBJ)/minimain.o \
75   $(OSDOBJ)/modules/sync/work_mini.o \
7681   $(OSDOBJ)/modules/lib/osdobj_common.o  \
82   $(OSDOBJ)/modules/midi/portmidi.o \
7783   $(OSDOBJ)/modules/midi/none.o \
84   $(OSDOBJ)/modules/lib/osdobj_common.o  \
85   $(OSDOBJ)/modules/sound/js_sound.o  \
86   $(OSDOBJ)/modules/sound/direct_sound.o  \
87   $(OSDOBJ)/modules/sound/sdl_sound.o  \
88   $(OSDOBJ)/modules/sound/none.o  \
89   $(OSDOBJ)/modules/font/font_sdl.o \
90   $(OSDOBJ)/modules/font/font_windows.o \
91   $(OSDOBJ)/modules/font/font_osx.o \
92   $(OSDOBJ)/modules/font/font_none.o \
93   $(OSDOBJ)/modules/netdev/pcap.o \
94   $(OSDOBJ)/modules/netdev/taptun.o \
95   $(OSDOBJ)/modules/netdev/none.o \
96   $(OSDOBJ)/modules/debugger/debugwin.o \
97   $(OSDOBJ)/modules/debugger/debugint.o \
98   $(OSDOBJ)/modules/debugger/debugqt.o \
99   $(OSDOBJ)/modules/debugger/none.o \
78100
79101ifeq ($(OS),Windows_NT)
80102LIBS += -lwinmm -lwsock32
trunk/src/osd/sdl/sdl.mak
r243600r243601
559559CCOMFLAGS += -DNO_SDL_GLEXT
560560# Remove libSDLmain, as its symbols conflict with SDLMain_tmpl.m
561561LIBS += `$(SDL_CONFIG) --libs | sed 's/-lSDLmain//'` -lpthread -framework Cocoa -framework OpenGL
562BASELIBS += `$(SDL_CONFIG) --libs | sed 's/-lSDLmain//'` -lpthread -framework Cocoa -framework OpenGL
562563DEFS += -DMACOSX_USE_LIBSDL
563564endif   # MACOSX_USE_LIBSDL
564565


Previous 199869 Revisions Next


© 1997-2024 The MAME Team