mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
ab9c8c2678
17
docs/SDL.txt
17
docs/SDL.txt
@ -13,7 +13,7 @@ Debugging options
|
||||
|
||||
-[no]oslog
|
||||
|
||||
Outputs the error.log data to the stderr TTY channel (usually the
|
||||
Outputs the error.log data to the stderr TTY channel (usually the
|
||||
command line window MAME was started in). This can be used at
|
||||
the same time as -log to output the log data to both targets as well.
|
||||
Default is OFF (-nooslog).
|
||||
@ -34,20 +34,19 @@ Performance options
|
||||
|
||||
-[no]multithreading / -[no]mt
|
||||
|
||||
Enables multithreading for the final drawing operation. This can help
|
||||
Enables multithreading for the final drawing operation. This can help
|
||||
performance on multicore/hyperthreaded systems with slow video cards,
|
||||
but may cause undesired behavior in some games.
|
||||
Note that some drivers in MAME and MESS will use multiple threads even
|
||||
when this is set to OFF, assuming -numprocessors allows it.
|
||||
The default is OFF (-nomultithreading).
|
||||
|
||||
|
||||
-numprocessors <auto|value> / -np <auto|value>
|
||||
|
||||
Specify the number of processors to use for work queues. Specifying
|
||||
"auto" will use the value reported by the system or environment
|
||||
"auto" will use the value reported by the system or environment
|
||||
variable OSDPROCESSORS. To avoid abuse, this value is internally limited
|
||||
to 4 times the number of processors reported by the system.
|
||||
to 4 times the number of processors reported by the system.
|
||||
The default is "auto".
|
||||
|
||||
-sdlvideofps
|
||||
@ -68,8 +67,8 @@ Video options
|
||||
|
||||
-video <soft|opengl|none>
|
||||
|
||||
Specifies which video subsystem to use for drawing. The default for
|
||||
Mac OS X is 'opengl' because OS X is guaranteed to have a compliant
|
||||
Specifies which video subsystem to use for drawing. The default for
|
||||
Mac OS X is 'opengl' because OS X is guaranteed to have a compliant
|
||||
OpenGL stack. The default on all other systems is 'soft'.
|
||||
|
||||
-numscreens <count>
|
||||
@ -188,7 +187,7 @@ Video OpenGL-specific options
|
||||
-[no]gl_pbo Enable OpenGL PBO, if available (default on)
|
||||
|
||||
These 4 options are for compatibility in -video opengl. If you report
|
||||
rendering artifacts you may be asked to try messing with them by the
|
||||
rendering artifacts you may be asked to try messing with them by the
|
||||
devs, but normally they should be left at their defaults which results
|
||||
in the best possible video performance.
|
||||
|
||||
@ -363,7 +362,7 @@ SDL Joystick Mapping
|
||||
-joy_idx6 Name of joystick mapped to joystick #6, default is auto.
|
||||
-joy_idx7 Name of joystick mapped to joystick #7, default is auto.
|
||||
-joy_idx8 Name of joystick mapped to joystick #8, default is auto.
|
||||
-sixaxis Use special handling for PS3 Sixaxis controllers.
|
||||
-sixaxis Use special handling for PS3 Sixaxis controllers.
|
||||
Default is OFF (-nosixaxis)
|
||||
|
||||
|
||||
|
@ -294,21 +294,21 @@ of your command:
|
||||
Displays a list of all devices known to be hooked up to a game. The ":"
|
||||
is considered the game itself with the devices list being attached to give
|
||||
the user a better understanding of what the emulation is using.
|
||||
|
||||
|
||||
-listslots [<gamename|wildcard>]
|
||||
|
||||
Show available slots and options for each slot (if available). Primarily
|
||||
used for MESS to allow control over internal plug-in cards, much like PC's
|
||||
needing video, sound and other cards.
|
||||
|
||||
|
||||
-listmedia / -lm [<gamename|wildcard>]
|
||||
|
||||
|
||||
List available media that the chosen game or system allows to be used. This
|
||||
includes media types (cartridge, cassette, diskette and more) as well as
|
||||
common file extentions which are supported.
|
||||
|
||||
-listsoftware [<gamename|wildcard>]
|
||||
|
||||
|
||||
Posts to screen all software lists which can be used by the entered gamename
|
||||
or system. Notice, this is simply a copy/paste of the .XML file which reside
|
||||
in the HASH folder which are allowed to be used.
|
||||
@ -331,12 +331,12 @@ of your command:
|
||||
softwarelistname. By default, all drivers that have valid ZIP files or directories
|
||||
in the rompath are verified; however, you can limit this list by specifying a
|
||||
specific softwarelistname (without .XML) after the -verifysoftlist command.
|
||||
|
||||
|
||||
-listmidi
|
||||
|
||||
Create a list of list available MIDI I/O devices for use with emulation.
|
||||
|
||||
|
||||
|
||||
|
||||
Configuration options
|
||||
---------------------
|
||||
@ -570,14 +570,14 @@ Core state/playback options
|
||||
find the next empty value for %i and use that for a filename. The
|
||||
default is %g/%i, which creates a separate folder for each game,
|
||||
and names the snapshots under it starting with 0000 and increasing
|
||||
from there. In addition to the above, for drivers using different
|
||||
media, like carts or floppy disks, you can also use the %d_[media]
|
||||
from there. In addition to the above, for drivers using different
|
||||
media, like carts or floppy disks, you can also use the %d_[media]
|
||||
indicator. Replace [media] with the media switch you want to use.
|
||||
A few examples: if you use 'mame robby -snapname foo/%g%i' snapshots
|
||||
A few examples: if you use 'mame robby -snapname foo/%g%i' snapshots
|
||||
will be saved as 'snaps\foo\robby0000.png' , 'snaps\foo\robby0001.png'
|
||||
and so on ; if you use 'mess nes -cart robby -snapname %g/%d_cart'
|
||||
snapshots will be saved as 'snaps\nes\robby.png' ; if you use
|
||||
'mess c64 -flop1 robby -snapname %g/%d_flop1/%i' snapshots will be
|
||||
and so on ; if you use 'mess nes -cart robby -snapname %g/%d_cart'
|
||||
snapshots will be saved as 'snaps\nes\robby.png' ; if you use
|
||||
'mess c64 -flop1 robby -snapname %g/%d_flop1/%i' snapshots will be
|
||||
saved as 'snaps\c64\robby\0000.png'.
|
||||
|
||||
-snapsize <width>x<height>
|
||||
@ -607,30 +607,30 @@ Core state/playback options
|
||||
-statename <name>
|
||||
|
||||
Describes how MAME should store save state files, relative to the
|
||||
state_directory path. <name> is a string that provides a template that
|
||||
is used to generate a relative path. Two simple substitutions are
|
||||
provided: the / character represents the path separator on any target
|
||||
platform (even Windows); the string %g represents the driver name of
|
||||
the current game. The default is %g, which creates a separate folder for
|
||||
each game. In addition to the above, for drivers using different
|
||||
media, like carts or floppy disks, you can also use the %d_[media]
|
||||
state_directory path. <name> is a string that provides a template that
|
||||
is used to generate a relative path. Two simple substitutions are
|
||||
provided: the / character represents the path separator on any target
|
||||
platform (even Windows); the string %g represents the driver name of
|
||||
the current game. The default is %g, which creates a separate folder for
|
||||
each game. In addition to the above, for drivers using different
|
||||
media, like carts or floppy disks, you can also use the %d_[media]
|
||||
indicator. Replace [media] with the media switch you want to use.
|
||||
A few examples: if you use 'mame robby -statename foo/%g' save states
|
||||
will be stored inside 'sta\foo\robby\' ; if you use 'mess nes -cart
|
||||
robby -statename %g/%d_cart' save states will be stored inside
|
||||
'sta\nes\robby\' ; if you use 'mess c64 -flop1 robby -statename
|
||||
A few examples: if you use 'mame robby -statename foo/%g' save states
|
||||
will be stored inside 'sta\foo\robby\' ; if you use 'mess nes -cart
|
||||
robby -statename %g/%d_cart' save states will be stored inside
|
||||
'sta\nes\robby\' ; if you use 'mess c64 -flop1 robby -statename
|
||||
%g/%d_flop1' save states will be stored inside 'sta\c64\robby\'.
|
||||
|
||||
-[no]burnin
|
||||
|
||||
Tracks brightness of the screen during play and at the end of
|
||||
Tracks brightness of the screen during play and at the end of
|
||||
emulation generates a PNG that can be used to simulate burn-in
|
||||
effects on other games. The resulting PNG is created such that the
|
||||
least used-areas of the screen are fully white (since burned-in areas
|
||||
least used-areas of the screen are fully white (since burned-in areas
|
||||
are darker, all other areas of the screen must be lightened a touch).
|
||||
The intention is that this PNG can be loaded via an artwork file with
|
||||
a low alpha (e.g, 0.1-0.2 seems to work well) and blended over the
|
||||
entire screen. The PNG files are saved in the snap directory under
|
||||
entire screen. The PNG files are saved in the snap directory under
|
||||
the gamename/burnin-<screen.name>.png. The default is OFF (-noburnin).
|
||||
|
||||
|
||||
@ -1122,7 +1122,7 @@ Debugging options
|
||||
|
||||
A special 'internal' debugger for debugging. Activated when used along
|
||||
with -debug. The default if OFF (-nodebug_internal).
|
||||
|
||||
|
||||
|
||||
|
||||
Core misc options
|
||||
@ -1149,7 +1149,7 @@ Core misc options
|
||||
Specifies the name of a font file to use for the UI font. If this font
|
||||
cannot be found or cannot be loaded, the system will fall back to its
|
||||
built-in UI font. On some platforms 'fontname' can be a system font
|
||||
name (TTF) instead of a (BDF) font file. The default is 'default' (use
|
||||
name (TTF) instead of a (BDF) font file. The default is 'default' (use
|
||||
the OSD-determined default font).
|
||||
|
||||
-ramsize [n]
|
||||
|
@ -83,11 +83,11 @@ is usually behind the term "density".
|
||||
A sensor detects when the head is on track 0 and the controller is not
|
||||
supposed to try to go past it. In addition physical blocks prevent
|
||||
the head from going out of the correct track range. Some systems
|
||||
(apple 2, some c64) do not take the track 0 sensor into account and
|
||||
(Apple II, some C64) do not take the track 0 sensor into account and
|
||||
just wham the head against the track 0 physical block, giving a
|
||||
well-known crash noise and eventually damaging the head alignment.
|
||||
|
||||
Also, some systems (apple 2 and c64 again) have direct access to the
|
||||
Also, some systems (Apple II and C64 again) have direct access to the
|
||||
phases of the head positioning motor, allowing to trick the head into
|
||||
going between tracks, in middle or even quarter positions. That was
|
||||
not usable to write more tracks, since the head width did not change,
|
||||
@ -95,15 +95,15 @@ but since reliable reading was only possible with the correct position
|
||||
it was used for some copy protection systems.
|
||||
|
||||
The disk rotates at a fixed speed for a given track. The most usual
|
||||
speed is 300rpm for every track, with 360rpm found for HD 5.25"
|
||||
floppies and most 8" ones, and a number of different values like 90rpm
|
||||
for the earlier floppies or 150rpm for an HD floppy in an amiga.
|
||||
speed is 300 rpm for every track, with 360 rpm found for HD 5.25"
|
||||
floppies and most 8" ones, and a number of different values like 90 rpm
|
||||
for the earlier floppies or 150 rpm for an HD floppy in an Amiga.
|
||||
Having a fixed rotational speed for the whole disk is called Constant
|
||||
Angular Velocity (CAV, almost everybody) or Zoned Constant Angular
|
||||
Velocity (ZCAV, C64) depending on whether the read/write bitrate is
|
||||
constant or track-dependant. Some systems (apple 2, mac) varies the
|
||||
rotational speed depending on the track (something like 394rpm up to
|
||||
590rpm) to end up with a Constant Linear Velocity (CLV). The idea
|
||||
constant or track-dependant. Some systems (Apple II, Mac) vary the
|
||||
rotational speed depending on the track (something like 394 rpm up to
|
||||
590 rpm) to end up with a Constant Linear Velocity (CLV). The idea
|
||||
behind ZCAV/CLV is to get more bits out of the media by keeping the
|
||||
minimal spacing between magnetic orientation transitions close to the
|
||||
best the support can do. It seems that the complexity was not deemed
|
||||
@ -158,10 +158,10 @@ is never known.
|
||||
2.3 Floppy controller
|
||||
|
||||
The task of the floppy controller is to turn the signals to/from the
|
||||
floppy drive into something the main cpu can digest. The level of
|
||||
floppy drive into something the main CPU can digest. The level of
|
||||
support actually done by the controller is extremely variable from one
|
||||
device to the other, from pretty much nothing (apple2, c64) through
|
||||
minimal (amiga) to complete (western digital chips, upd765 family).
|
||||
device to the other, from pretty much nothing (Apple II, C64) through
|
||||
minimal (Amiga) to complete (Western Digital chips, uPD765 family).
|
||||
Usual functions include drive selection, motor control, track seeking
|
||||
and of course reading and writing data. Of these only the last two
|
||||
need to be described, the rest is obvious.
|
||||
@ -170,21 +170,21 @@ The data is structured at two levels: how individual bits (or nibbles,
|
||||
or bytes) are encoded on the surface, and how these are grouped in
|
||||
individually-addressable sectors. Two standards exist for these,
|
||||
called FM and MFM, and in addition a number of systems use their
|
||||
home-grown variants. Moreover, some systems such as the amiga use a
|
||||
standard bit-level encoding (MFM) but an homegrown sector-level
|
||||
home-grown variants. Moreover, some systems such as the Amiga use a
|
||||
standard bit-level encoding (MFM) but a homegrown sector-level
|
||||
organisation.
|
||||
|
||||
|
||||
2.3.1 Bit-level encodings
|
||||
2.3.1.1 Cell organization
|
||||
|
||||
All floppy controllers, even the wonkiest like the apple 2 one, start
|
||||
All floppy controllers, even the wonkiest like the Apple II one, start
|
||||
by dividing the track in equally-sized cells. They're angular
|
||||
sections in the middle of which a magnetic orientation inversion may
|
||||
be present. From an hardware point of view the cells are seen as
|
||||
be present. From a hardware point of view the cells are seen as
|
||||
durations, which combined with the floppy rotation give the section.
|
||||
For instance the standard MFM cell size for a 3" double-density floppy
|
||||
is 2us, which combined with the also standard 300rpm rotational speed
|
||||
is 2us, which combined with the also standard 300 rpm rotational speed
|
||||
gives an angular size of 1/100000th of a turn. Another way of saying
|
||||
it is that there are 100K cells in a 3" DD track.
|
||||
|
||||
@ -234,7 +234,7 @@ Modulation encoding, which can cram exactly twice as much data on the
|
||||
same surface, hence its other name of "double density". The cell size
|
||||
is set at slightly over half the physical limit, e.g. 2us usually.
|
||||
The constraint means that two '1' cells must be separated by at least
|
||||
one '0' cell. Each bit is once again encoded on two cells:
|
||||
one '0' cell. Each bit is once again encoded on two cells:
|
||||
|
||||
- the first cell, called the clock bit, is '1' if both the previous
|
||||
and current data bits are 0, '0' otherwise
|
||||
@ -252,7 +252,7 @@ maximum of three zeroes.
|
||||
Group Coded Recording, or GCR, encodings are a class of encodings
|
||||
where strings of bits at least nibble-size are encoded into a given
|
||||
cell stream given by a table. It has been used in particular by the
|
||||
apple 2, the mac and the c64, and each system has its own table, or
|
||||
Apple II, the Mac and the C64, and each system has its own table, or
|
||||
tables.
|
||||
|
||||
2.3.1.5 Other encodings
|
||||
@ -342,7 +342,7 @@ usually start at 1 and size code is 0 for 128 bytes, 1 for 256, 2 for
|
||||
The crc is a cyclic redundancy check of the data bits starting with
|
||||
the mark just after the pulse train using polynom 0x11021.
|
||||
|
||||
The western digital-based controllers usually get rid of everything
|
||||
The Western Digital-based controllers usually get rid of everything
|
||||
but some 0xff before the first sector and allow a better use of space
|
||||
as a result.
|
||||
|
||||
@ -365,19 +365,19 @@ Then for each sector:
|
||||
- MFM-encoded 0xfb, sector data followed by two bytes of crc
|
||||
- A number of MFM-encoded 0x4e (usually 84, very variable)
|
||||
|
||||
The the track is finished with a stream of MFM-encoded 0x4e.
|
||||
The track is finished with a stream of MFM-encoded 0x4e.
|
||||
|
||||
The 250KHz pulse trains are used to lock the PLL to the signal
|
||||
correctly. The cell pattern 4489 does not appear in normal
|
||||
MFM-encoded data and is used for clock/data separation.
|
||||
MFM-encoded data and is used for clock/data separation.
|
||||
|
||||
As for FM, the western digital-based controllers usually get rid of
|
||||
As for FM, the Western Digital-based controllers usually get rid of
|
||||
everything but some 0x4e before the first sector and allow a better
|
||||
use of space as a result.
|
||||
|
||||
2.3.2.3 Formatting and write splices
|
||||
|
||||
To be usable a floppy must have the sector headers and default sector
|
||||
To be usable, a floppy must have the sector headers and default sector
|
||||
data written on every track before using it. The controller starts
|
||||
writing at a given place, often the index pulse but on some systems
|
||||
whenever the command is sent, and writes until a complete turn is
|
||||
@ -392,7 +392,7 @@ Similarly two write splices are created when a sector is written at
|
||||
the start and end of the data block part. They're not supposed to
|
||||
happen on a mastered disk though, even if there are some rare
|
||||
exceptions.
|
||||
|
||||
|
||||
|
||||
3 The new implementation
|
||||
3.1 Floppy disk representation
|
||||
@ -417,7 +417,7 @@ position of the start of the cell (not the size), and bits
|
||||
- 3, MG_D -> Damaged zone, reads as neutral but cannot be changed by writing
|
||||
|
||||
The position is in angular units of 1/200,000,000th of a turn. It
|
||||
corresponds to one nanosecond when the drive rotates at 300rpm.
|
||||
corresponds to one nanosecond when the drive rotates at 300 rpm.
|
||||
|
||||
The last cell implicit end position is of course 200,000,000.
|
||||
|
||||
@ -523,7 +523,7 @@ extract_sectors_from_bitstream_fm_pc(const UINT8 *cell stream,
|
||||
int sectdata_size)
|
||||
|
||||
Extract standard mfm or fm sectors from a regenerated
|
||||
cell stream. Sectors must point to an array of 256 desc_xs.
|
||||
cell stream. Sectors must point to an array of 256 desc_xs.
|
||||
|
||||
An existing sector is recognizable by having ->data non-null.
|
||||
Sector data is written in sectdata up to sectdata_size bytes.
|
||||
@ -563,8 +563,8 @@ the current time is the same for all devices.
|
||||
|
||||
3.3.1 Control signals
|
||||
|
||||
Due to the way they're usually connected to cpus (e.g. directly on an
|
||||
i/o port) the controls signals work with physical instead of logical
|
||||
Due to the way they're usually connected to CPUs (e.g. directly on an
|
||||
I/O port), the control signals work with physical instead of logical
|
||||
values. Which means than in general 0 means active, 1 means inactive.
|
||||
Some signals also have a callback associated called when they change.
|
||||
|
||||
|
@ -42,7 +42,7 @@ converge_y [r,g,b] Convergence in screen-relative Y directi
|
||||
radial_converge_x [r,g,b] Radial convergence in screen-relative X direction.
|
||||
radial_converge_y [r,g,b] Radial convergence in screen-relative Y direction.
|
||||
Allowed values for convergence: -150 to 150 for each color.
|
||||
red_ratio [r,g,b] These parameters define a 3x3 matrix which is multiplied
|
||||
red_ratio [r,g,b] These parameters define a 3x3 matrix which is multiplied
|
||||
grn_ratio [r,g,b] by the incoming RGB signal. This can be used for any
|
||||
blu_ratio [r,g,b] standard matrix convolution, including H/S/V or simply
|
||||
affecting the TV-style tint.
|
||||
@ -109,4 +109,4 @@ bloom_lvl6_weight 0.13 Bloom level 6 (.) weight. (0.00-1.00)
|
||||
bloom_lvl7_weight 0.12 Bloom level 7 (.) weight. (0.00-1.00)
|
||||
bloom_lvl8_weight 0.11 Bloom level 8 (.) weight. (0.00-1.00)
|
||||
bloom_lvl9_weight 0.10 Bloom level 9 (.) weight. (0.00-1.00)
|
||||
bloom_lvl10_weight 0.09 Bloom level 10 (1x1 target) weight. (0.00-1.00)
|
||||
bloom_lvl10_weight 0.09 Bloom level 10 (1x1 target) weight. (0.00-1.00)
|
||||
|
@ -81,7 +81,7 @@ only for early revisions of lynx archivs
|
||||
only extraction supported
|
||||
not heavily tested
|
||||
|
||||
Lynx archivs could and should be handled in a c64 emulation
|
||||
Lynx archivs could and should be handled in a c64 emulation
|
||||
with the native lynx tool
|
||||
|
||||
|
||||
@ -128,7 +128,7 @@ special disk controller necessary for enhanced density
|
||||
type 7: 3 1/2 inch, enhanced density, DS, 2.88mb: sectors 36, heads 2, tracks 80
|
||||
|
||||
unix with bash: use
|
||||
dd if=/dev/zero of=<name.dsk> bs=512 count=$((9*2*40))
|
||||
dd if=/dev/zero of=<name.dsk> bs=512 count=$((9*2*40))
|
||||
to generate standard blank 360kb image
|
||||
|
||||
|
||||
@ -145,14 +145,14 @@ standard parameter for common disk formats:
|
||||
type 0: 20mb standard pc/xt harddisk: 17 sectors, 4 heads, 615 cylinders
|
||||
|
||||
unix with bash: use
|
||||
dd if=/dev/zero of=<name.dsk> bs=512 count=$((17*4*615))
|
||||
dd if=/dev/zero of=<name.dsk> bs=512 count=$((17*4*615))
|
||||
to generate standard blank 20mb pc xt harddisk image
|
||||
|
||||
|
||||
Virtual MSX tape archive
|
||||
------------------------
|
||||
Converts .tap files from Virtual MSX 1.x to .cas files. It is not
|
||||
fault-tolerant.
|
||||
fault-tolerant.
|
||||
|
||||
|
||||
Virtual MSX Game Master 2 SRAM file
|
||||
@ -161,7 +161,7 @@ Very simple, not overly useful but some might want it. Virtual MSX stored the
|
||||
SRAM of Konami's Game Master 2 in "gmaster2.ram". To convert this to something
|
||||
useful with MESS and other MSX emulators, go:
|
||||
|
||||
imgtool getall vmsx_gm2 gmaster2.ram
|
||||
imgtool getall vmsx_gm2 gmaster2.ram
|
||||
|
||||
You'll get a file called gmaster2.mem, which must place in the correct directory
|
||||
of mess to use (MESS\MEMCARD\GameMaster2 if your Game Master 2 .rom file is
|
||||
@ -174,7 +174,7 @@ Converts .cas files to .wav files. The MSX driver can use .cas files directly
|
||||
so you don't have to convert them. You can use it to export files to a real
|
||||
MSX. Connect the MSX to the line out of your computer. Give the apropriate
|
||||
command on the MSX (BLOAD "CAS:",R for example) and then play the .wav file
|
||||
on your computer.
|
||||
on your computer.
|
||||
|
||||
imgtool dir fmsx_cas file.cas
|
||||
imgtool getall fmsx_cas file.cas
|
||||
@ -185,7 +185,7 @@ XelaSoft Archive (.xsa)
|
||||
-----------------------
|
||||
|
||||
The XelaSoft Archive is a compressed file. It can only contain one
|
||||
file. Although it can contain any file, it's always used for MSX disk
|
||||
file. Although it can contain any file, it's always used for MSX disk
|
||||
images. The were programs written by XelaSoft which made a dump
|
||||
of a disk, and compressing them at the same time. Very useful to store
|
||||
a disk dump on another disk. zip/gzip offer much better compression and
|
||||
@ -205,7 +205,7 @@ emulators, is .dsk (a plain dump without any header information). This
|
||||
filetype converts them all to .dsk format.
|
||||
|
||||
msx_img are disk images with an extra byte at the beginning. It' 1 (0x01)
|
||||
for single-sided images and 2 (0x02) for double-side images. These
|
||||
for single-sided images and 2 (0x02) for double-side images. These
|
||||
files are at: ftp://ftp.funet.fi/pub/msx/. The extension is .img
|
||||
|
||||
msx_ddi are DiskDupe 5.12 disk images. There is a 0x1800 bytes header
|
||||
@ -215,9 +215,9 @@ often contain garbage so it's simply stripped. The extension is .ddi
|
||||
msx_msx are disk images with a weird sector order. You can find them
|
||||
at: ftp://jazz.snu.ac.kr/pub/msx/. The extension is .msx
|
||||
|
||||
msx_mul are "multi disk" images, used by fmsx-dos 1.6. It is simply
|
||||
msx_mul are "multi disk" images, used by fmsx-dos 1.6. It is simply
|
||||
more than one .dsk image appended to one another. The extension is
|
||||
still .dsk, but the file is larger than 720kB (actually always a
|
||||
still .dsk, but the file is larger than 720kB (actually always a
|
||||
multiple of 720kB.
|
||||
|
||||
|
||||
@ -235,7 +235,7 @@ The card filesystem is similar to FAT, but not identical.
|
||||
The maximum card size is 1mb, and maximum file size is 64k.
|
||||
(Files will be cut at 64k if they are larger - e.g. when putting a large file)
|
||||
|
||||
As far as I know there is no directory system, however there is always a
|
||||
As far as I know there is no directory system, however there is always a
|
||||
system "NC100" directory which points to the root directory. (Like the DOS "."
|
||||
directory).
|
||||
|
||||
|
@ -34,11 +34,11 @@ tree. The final class hierarchy is this:
|
||||
|
|
||||
+------+--------+--+--+-------+-------+
|
||||
| | | | | |
|
||||
6510 deco16 6504 6509 n2a03 65c02
|
||||
6510 deco16 6504 6509 n2a03 65c02
|
||||
| |
|
||||
+-----+-----+ r65c02
|
||||
| | | |
|
||||
6510t 7501 8502 +---+---+
|
||||
6510t 7501 8502 +---+---+
|
||||
| |
|
||||
65ce02 65sc02
|
||||
|
|
||||
|
@ -30,12 +30,12 @@ Windows debugging options
|
||||
|
||||
Specifies the name of the font to use for debugger windows. By default,
|
||||
the font is Lucida Console.
|
||||
|
||||
|
||||
-debugger_font_size <points> / -dfontsize <points>
|
||||
|
||||
Specifies the size of the font to use for debugger windows, in points.
|
||||
By default, this is set to 9pt.
|
||||
|
||||
|
||||
|
||||
|
||||
Windows performance options
|
||||
@ -54,13 +54,13 @@ Windows performance options
|
||||
window and all DirectDraw/Direct3D code to execute on a second thread,
|
||||
which can improve performance on hyperthreaded and multicore systems.
|
||||
The default is OFF (-nomultithreading).
|
||||
|
||||
|
||||
-numprocessors <auto|value> / -np <auto|value>
|
||||
|
||||
Specify the number of processors to use for work queues. Specifying
|
||||
"auto" will use the value reported by the system or environment
|
||||
"auto" will use the value reported by the system or environment
|
||||
variable OSDPROCESSORS. To avoid abuse, this value is internally limited
|
||||
to 4 times the number of processors reported by the system.
|
||||
to 4 times the number of processors reported by the system.
|
||||
The default is "auto".
|
||||
|
||||
-profile [n]
|
||||
|
@ -64,7 +64,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CHIP("S2", DIPSWITCH, &dipswitch2_desc)
|
||||
CHIP("S3", DIPSWITCH, &dipswitch3_desc)
|
||||
CHIP("S4", DIPSWITCH, &dipswitch4_desc)
|
||||
|
||||
|
||||
SOLVER(Solver, 48000)
|
||||
PARAM(Solver.ACCURACY, 1e-7) // works and is sufficient
|
||||
//CHIP("CLOCK", CLOCK_14_318_MHZ)
|
||||
@ -80,7 +80,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CHIP("C36", CAPACITOR, &c36_desc)
|
||||
CHIP("C37", CAPACITOR, &c37_desc)
|
||||
CHIP("PAD_EN_BUF", BUFFER, &pad_en_buf_desc)
|
||||
|
||||
|
||||
CHIP("A3", 7474)
|
||||
CHIP("A4", 7408)
|
||||
CHIP("A5", 7400)
|
||||
@ -105,7 +105,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CHIP("C7", 9316)
|
||||
CHIP("C8", 9316)
|
||||
CHIP("C9", 555_Mono, &c9_555_desc)
|
||||
|
||||
|
||||
CHIP("D2", 7432)
|
||||
CHIP("D3", 7474)
|
||||
CHIP("D4", 9316)
|
||||
@ -208,11 +208,11 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CHIP("COIN1", COIN_INPUT)
|
||||
|
||||
//CHIP("COIN2", COIN_INPUT)
|
||||
|
||||
|
||||
CHIP("START", START_INPUT)
|
||||
|
||||
CHIP("SERVE", BUTTONS1_INPUT)
|
||||
|
||||
|
||||
//TODO: coin2 and start 2
|
||||
|
||||
VIDEO(breakout)
|
||||
@ -256,7 +256,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
#define H64 "K2", 3
|
||||
#define H128 "K2", 6
|
||||
|
||||
//#define V1
|
||||
//#define V1
|
||||
#define V2 "M3", 3
|
||||
#define V4 "M3", 6
|
||||
#define V8 "M3", 11
|
||||
@ -274,10 +274,10 @@ CIRCUIT_LAYOUT( breakout )
|
||||
#define BSYNC "J1", 15
|
||||
#define BSYNC_n "J1", 14
|
||||
|
||||
#define BALL "D7", 6
|
||||
#define BALL "D7", 6
|
||||
#define BALL_DISPLAY "A4", 6
|
||||
#define PLAYFIELD "H4", 3
|
||||
#define SCORE "D3", 5
|
||||
#define PLAYFIELD "H4", 3
|
||||
#define SCORE "D3", 5
|
||||
#define VERT_TRIG_n "H1", 8
|
||||
|
||||
#define CLOCK "H1", 11
|
||||
@ -292,7 +292,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
|
||||
#define COIN "L9", 6
|
||||
#define COIN1_n "F8", 5
|
||||
#define COIN2_n "H9", 5
|
||||
#define COIN2_n "H9", 5
|
||||
#define CREDIT_1_OR_2 "L9", 3
|
||||
#define CREDIT_1_OR_2_n "F9", 8
|
||||
#define CREDIT2 "F9", 6
|
||||
@ -306,7 +306,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
|
||||
#define P2_CONDITIONAL "H1", 3
|
||||
#define P2_CONDITIONAL_dash "H7", 8
|
||||
#define PLAYER_2 "B4", 14
|
||||
#define PLAYER_2 "B4", 14
|
||||
#define PLAYER_2_n "M9", 8
|
||||
|
||||
#define START_GAME "D8", 6
|
||||
@ -317,24 +317,24 @@ CIRCUIT_LAYOUT( breakout )
|
||||
#define BG1 "K8", 8
|
||||
#define BG2_n "K8", 5
|
||||
#define BG2 "K8", 6
|
||||
|
||||
|
||||
#define FREE_GAME_TONE "N7", 3
|
||||
#define BONUS_COIN "L9", 11
|
||||
|
||||
|
||||
//#define Q "E9", 6
|
||||
#define LAT_Q "E9", 6
|
||||
#define Q_n "LATCH", 3
|
||||
#define SBD_n "D2", 11
|
||||
|
||||
#define PLAY_CP "D2", 8
|
||||
#define PLGM2_n "F7", 7
|
||||
#define PLGM2_n "F7", 7
|
||||
#define VB_HIT_n "A5", 6
|
||||
|
||||
#define SERVE_n "SERVE", 1
|
||||
#define SERVE_WAIT "A3", 9
|
||||
#define SERVE_WAIT_n "A3", 8
|
||||
#define SERVE_WAIT_n "A3", 8
|
||||
|
||||
#define BRICK_DISPLAY "E3", 1
|
||||
#define BRICK_DISPLAY "E3", 1
|
||||
#define BRICK_HIT "E6", 5
|
||||
#define BRICK_HIT_n "E6", 6
|
||||
|
||||
@ -401,14 +401,14 @@ CIRCUIT_LAYOUT( breakout )
|
||||
#define FPD1_n "F3", 9
|
||||
#define FPD2 "F3", 6
|
||||
#define FPD2_n "F3", 7
|
||||
|
||||
|
||||
#define COUNT "N7", 11
|
||||
#define COUNT_1 "N7", 8
|
||||
#define COUNT_2 "N7", 6
|
||||
|
||||
#define ATTRACT "E6", 8
|
||||
#define ATTRACT_n "E6", 9
|
||||
|
||||
|
||||
#define BRICK_SOUND "B8", 14
|
||||
#define P_HIT_SOUND "B7", 12
|
||||
#define VB_HIT_SOUND "B7", 11
|
||||
@ -416,7 +416,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
#define LH_SIDE "J3", 13
|
||||
#define RH_SIDE "H2", 3
|
||||
#define TOP_BOUND "K4", 6
|
||||
|
||||
|
||||
// CONNECTION(CREDIT_1_OR_2, "CREDIT_LIGHT1", 1)
|
||||
// CONNECTION(CREDIT2, "CREDIT_LIGHT2", 1)
|
||||
// CONNECTION(SERVE_WAIT_n, "SERVE_LIGHT", 1)
|
||||
@ -540,7 +540,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(P2_CONDITIONAL, "M2", 7)
|
||||
CONNECTION(GND, "M2", 4)
|
||||
CONNECTION(GND, "M2", 16)
|
||||
|
||||
|
||||
CONNECTION("M2", 14, "N2", 13)
|
||||
CONNECTION(V16_d, "N2", 10)
|
||||
CONNECTION(V32_d, "N2", 8)
|
||||
@ -608,7 +608,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(P, "K1", 10)
|
||||
CONNECTION(CLOCK, "K1", 2)
|
||||
CONNECTION("L1", 15, "K1", 7)
|
||||
|
||||
|
||||
CONNECTION(P, "L1", 1)
|
||||
CONNECTION(P, "L1", 3)
|
||||
CONNECTION(GND, "L1", 4)
|
||||
@ -631,7 +631,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
|
||||
CONNECTION("M1", 15, "H2", 5)
|
||||
CONNECTION("L1", 15, "H2", 4)
|
||||
|
||||
|
||||
CONNECTION(V128_d, "N4", 5)
|
||||
CONNECTION(V64_d, "N4", 3)
|
||||
CONNECTION(V32_d, "N4", 4)
|
||||
@ -648,7 +648,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION("L1", 15, "M1", 7)
|
||||
CONNECTION("K1", 15, "M1", 10)
|
||||
|
||||
|
||||
|
||||
//9312 circuit
|
||||
CONNECTION(PLAYER_2, "M9", 9)
|
||||
CONNECTION(BALL_A, "C5", 5)
|
||||
@ -758,7 +758,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
|
||||
//PADDLES
|
||||
CONNECTION(ATTRACT_n, "B2", 4)
|
||||
|
||||
|
||||
CONNECTION("B2", 3, "E9", 13)
|
||||
CONNECTION(PLAYER_2_n, "M3", 9)
|
||||
CONNECTION(V128, "M3", 10)
|
||||
@ -810,7 +810,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(P, "D4", 10)
|
||||
CONNECTION("C3", 11, "D4", 7)
|
||||
CONNECTION(VSYNC_n, "D4", 1)
|
||||
|
||||
|
||||
CONNECTION("D4", 15, "E4", 10)
|
||||
CONNECTION("H7", 6, "E4", 9)
|
||||
CONNECTION("C9", 3, "H7", 5)
|
||||
@ -839,14 +839,14 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(V32_d, "J2", 9)
|
||||
CONNECTION("J2", 8, "C2", 10)
|
||||
CONNECTION("C2", 6, "C2", 9)
|
||||
|
||||
|
||||
|
||||
//SCORE
|
||||
CONNECTION(SCI_n, "D3", 4)
|
||||
CONNECTION(GND, "D3", 2)
|
||||
CONNECTION(GND, "D3", 3)
|
||||
CONNECTION(GND, "D3", 1)
|
||||
|
||||
|
||||
//PLAYER2_CONDITIONAL
|
||||
CONNECTION(PLAYER_2, "H7", 10)
|
||||
CONNECTION(GND, "S2", 1)
|
||||
@ -874,7 +874,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(PLAYER_2, "M6", 7)
|
||||
CONNECTION(COUNT_2, "M6", 2)
|
||||
CONNECTION(START_GAME_n, "M6", 1)
|
||||
|
||||
|
||||
CONNECTION("M6", 15, "L6", 10)
|
||||
CONNECTION(PLAYER_2, "L6", 7)
|
||||
CONNECTION(COUNT_2, "L6", 2)
|
||||
@ -884,7 +884,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(RAM_PLAYER1, "H6", 7)
|
||||
CONNECTION(COUNT_1, "H6", 2)
|
||||
CONNECTION(START_GAME_n, "H6", 1)
|
||||
|
||||
|
||||
CONNECTION("H6", 15, "J6", 10)
|
||||
CONNECTION(RAM_PLAYER1, "J6", 7)
|
||||
CONNECTION(COUNT_1, "J6", 2)
|
||||
@ -917,7 +917,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION("N8", 9, "N9", 11)
|
||||
CONNECTION(P, "N9", 15)
|
||||
CONNECTION(P, "N9", 5)
|
||||
|
||||
|
||||
CONNECTION(COUNT, "N9", 4)
|
||||
CONNECTION(START_GAME, "N9", 14)
|
||||
CONNECTION(H8_n, "N9", 1)
|
||||
@ -991,7 +991,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(CKBH, "H1", 12)
|
||||
CONNECTION("F1", 14, "H1", 13)
|
||||
CONNECTION("F1", 15, "E1", 5)
|
||||
|
||||
|
||||
CONNECTION(P, "F1", 1)
|
||||
CONNECTION(P, "F1", 7)
|
||||
CONNECTION(P, "F1", 10)
|
||||
@ -1029,7 +1029,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
|
||||
// Coin Circuit
|
||||
CONNECTION("COIN1", 1, "F9", 13)
|
||||
|
||||
|
||||
CONNECTION(CSW1, "F9", 11)
|
||||
//CONNECTION("F9", 10, "F9", 13) //TODO: causes lots of bouncing, commented out since this trace is not implemented in gotcha
|
||||
|
||||
@ -1044,7 +1044,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(V64I, "F8", 3)
|
||||
CONNECTION("F8", 9, "F8", 2)
|
||||
CONNECTION(CSW1, "F8", 4)
|
||||
|
||||
|
||||
CONNECTION("F8", 6, "H8", 12)
|
||||
CONNECTION(P, "H8", 10)
|
||||
CONNECTION(V16_d, "H8", 11)
|
||||
@ -1063,7 +1063,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
//COIN2 circuit
|
||||
//CONNECTION("COIN2", 1, "F9", 1)
|
||||
CONNECTION(GND, "F9", 1) //TODO: coin2 not implemented
|
||||
|
||||
|
||||
CONNECTION(CSW2, "F9", 3)
|
||||
CONNECTION(CSW2, "H9", 10)
|
||||
CONNECTION("F9", 4, "H9", 12)
|
||||
@ -1073,7 +1073,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION("H9", 9, "H9", 2)
|
||||
CONNECTION(CSW2, "H9", 4)
|
||||
CONNECTION(P, "H9", 1)
|
||||
|
||||
|
||||
CONNECTION(P, "H8", 4)
|
||||
CONNECTION("H9", 6, "H8", 2)
|
||||
CONNECTION(V16_d, "H8", 3)
|
||||
@ -1179,7 +1179,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(P, "D3", 12)
|
||||
CONNECTION(START_GAME, "D3", 11)
|
||||
CONNECTION(SERVE_n, "D3", 13)
|
||||
|
||||
|
||||
//Playfield
|
||||
CONNECTION(LH_SIDE, "H3", 1)
|
||||
CONNECTION(TOP_BOUND, "H3", 13)
|
||||
@ -1187,7 +1187,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION("H3", 12, "H4", 2)
|
||||
CONNECTION("E1", 2, "C36", 1)
|
||||
CONNECTION("C36", 2, "H4", 1)
|
||||
|
||||
|
||||
CONNECTION(BALL_DISPLAY, "A5", 10)
|
||||
CONNECTION(PSYNC, "A5", 9)
|
||||
CONNECTION(BSYNC, "C3", 2)
|
||||
@ -1200,7 +1200,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION("C5", 12, "A5", 2)
|
||||
CONNECTION(BSYNC, "A5", 5)
|
||||
CONNECTION(VSYNC, "A5", 4)
|
||||
|
||||
|
||||
CONNECTION("C5", 12, "A5", 13)
|
||||
CONNECTION("A5", 3, "A5", 12)
|
||||
|
||||
@ -1213,7 +1213,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION("C4", 6, "A6", 12)
|
||||
CONNECTION(BP_HIT_n, "A6", 11)
|
||||
CONNECTION(P, "A6", 13)
|
||||
|
||||
|
||||
CONNECTION("A5", 3, "A6", 4)
|
||||
CONNECTION(V16_d, "A6", 2)
|
||||
CONNECTION(VB_HIT_n, "A6", 3)
|
||||
@ -1241,7 +1241,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
|
||||
CONNECTION("B5", 6, "C5", 11)
|
||||
CONNECTION("B5", 7, "C5", 9)
|
||||
|
||||
|
||||
CONNECTION(SU_n, "B5", 11)
|
||||
CONNECTION(P, "B5", 15)
|
||||
CONNECTION(P, "B5", 1)
|
||||
@ -1326,7 +1326,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(P, "F4", 2)
|
||||
CONNECTION("E4", 3, "F4", 3)
|
||||
CONNECTION(START_GAME1_n, "F4", 1)
|
||||
|
||||
|
||||
CONNECTION(P, "F4", 10)
|
||||
CONNECTION(P, "F4", 12)
|
||||
CONNECTION("E4", 6, "F4", 11)
|
||||
@ -1339,8 +1339,8 @@ CIRCUIT_LAYOUT( breakout )
|
||||
|
||||
CONNECTION(P, "F3", 3)
|
||||
CONNECTION(P, "F3", 13)
|
||||
|
||||
|
||||
|
||||
|
||||
//CREDIT_COUNTER
|
||||
CONNECTION(BONUS_COIN, "E7", 8)
|
||||
CONNECTION(COIN, "E7", 9)
|
||||
@ -1364,7 +1364,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION("L8", 6, "M8", 10)
|
||||
CONNECTION("L8", 2, "M8", 11)
|
||||
CONNECTION("L8", 3, "M9", 13)
|
||||
|
||||
|
||||
CONNECTION(CREDIT2_n, "F9", 5)
|
||||
CONNECTION(CREDIT2_n, "L9", 2)
|
||||
CONNECTION("M9", 12, "L9", 1)
|
||||
@ -1402,11 +1402,11 @@ CIRCUIT_LAYOUT( breakout )
|
||||
CONNECTION(BALL_C, "S4", 2)
|
||||
CONNECTION("S4", 3, "A4", 1)
|
||||
CONNECTION("A4", 3, "C37", 1)
|
||||
|
||||
|
||||
CONNECTION(SERVE_WAIT_n, "A4", 5)
|
||||
CONNECTION(BALL, "A4", 4)
|
||||
|
||||
// Ball Circuit
|
||||
// Ball Circuit
|
||||
|
||||
|
||||
// Video Summing
|
||||
@ -1428,7 +1428,7 @@ CIRCUIT_LAYOUT( breakout )
|
||||
|
||||
CONNECTION("VIDEO", Video::HBLANK_PIN, HSYNC)
|
||||
CONNECTION("VIDEO", Video::VBLANK_PIN, "E3", 10)
|
||||
|
||||
|
||||
|
||||
// Audio Summing
|
||||
CONNECTION("AUDIO", 1, "B9", 11)
|
||||
|
@ -155,21 +155,21 @@ ROM_START( dmac_hdc )
|
||||
ROMX_LOAD("390721-01.u13", 0x4000, 0x2000, CRC(00dbf615) SHA1(503940d04fb3b49eaa61100fd3a487018b35e25a), ROM_SKIP(1) | ROM_BIOS(2))
|
||||
ROMX_LOAD("390722-01.u12", 0x4001, 0x2000, CRC(c460cfdb) SHA1(0de457daec3b84f75e8fb344defe24ce56cda3e0), ROM_SKIP(1) | ROM_BIOS(2))
|
||||
|
||||
// changelog v6.6: fixes dual scsi problems with the wd33c93a controller
|
||||
// changelog v6.6: fixes dual SCSI problems with the wd33c93a controller
|
||||
ROM_SYSTEM_BIOS(2, "v66", "Version 6.6")
|
||||
ROMX_LOAD("390721-02.u13", 0x0000, 0x2000, CRC(c0871d25) SHA1(e155f18abb90cf820589c15e70559d3b6b391af8), ROM_SKIP(1) | ROM_BIOS(3))
|
||||
ROMX_LOAD("390722-02.u12", 0x0001, 0x2000, CRC(e536bbb2) SHA1(fd7f8a6da18c1b02d07eb990c2467a24183ede12), ROM_SKIP(1) | ROM_BIOS(3))
|
||||
ROMX_LOAD("390721-02.u13", 0x4000, 0x2000, CRC(c0871d25) SHA1(e155f18abb90cf820589c15e70559d3b6b391af8), ROM_SKIP(1) | ROM_BIOS(3))
|
||||
ROMX_LOAD("390722-02.u12", 0x4001, 0x2000, CRC(e536bbb2) SHA1(fd7f8a6da18c1b02d07eb990c2467a24183ede12), ROM_SKIP(1) | ROM_BIOS(3))
|
||||
|
||||
// final commodore released version
|
||||
// final Commodore released version
|
||||
ROM_SYSTEM_BIOS(3, "v70", "Version 7.0")
|
||||
ROMX_LOAD("390721-03.u13", 0x0000, 0x2000, CRC(2942747a) SHA1(dbd7648e79c753337ff3e4f491de224bf05e6bb6), ROM_SKIP(1) | ROM_BIOS(4))
|
||||
ROMX_LOAD("390722-03.u12", 0x0001, 0x2000, CRC(a9ccffed) SHA1(149f5bd52e2d29904e3de483b9ad772448e9278e), ROM_SKIP(1) | ROM_BIOS(4))
|
||||
ROMX_LOAD("390721-03.u13", 0x4000, 0x2000, CRC(2942747a) SHA1(dbd7648e79c753337ff3e4f491de224bf05e6bb6), ROM_SKIP(1) | ROM_BIOS(4))
|
||||
ROMX_LOAD("390722-03.u12", 0x4001, 0x2000, CRC(a9ccffed) SHA1(149f5bd52e2d29904e3de483b9ad772448e9278e), ROM_SKIP(1) | ROM_BIOS(4))
|
||||
|
||||
// third-party upgrade rom, requires a small rom adapter pcb
|
||||
// third-party upgrade ROM, requires a small ROM adapter pcb
|
||||
ROM_SYSTEM_BIOS(4, "g614", "Guru-ROM 6.14")
|
||||
ROMX_LOAD("gururom_v614.bin", 0x0000, 0x8000, CRC(04e52f93) SHA1(6da21b6f5e8f8837d64507cd8a4d5cdcac4f426b), ROM_GROUPWORD | ROM_BIOS(5))
|
||||
|
||||
@ -234,7 +234,7 @@ void a590_device::device_start()
|
||||
{
|
||||
set_zorro_device();
|
||||
|
||||
// setup dmac
|
||||
// setup DMAC
|
||||
m_dmac->set_address_space(m_slot->m_space);
|
||||
m_dmac->set_rom(memregion("bootrom")->base());
|
||||
}
|
||||
@ -243,7 +243,7 @@ void a2091_device::device_start()
|
||||
{
|
||||
set_zorro_device();
|
||||
|
||||
// setup dmac
|
||||
// setup DMAC
|
||||
m_dmac->set_address_space(m_slot->m_space);
|
||||
m_dmac->set_rom(memregion("bootrom")->base());
|
||||
}
|
||||
@ -258,7 +258,7 @@ void dmac_hdc_device::device_reset()
|
||||
|
||||
void dmac_hdc_device::resize_ram(int config)
|
||||
{
|
||||
// allocate space for ram
|
||||
// allocate space for RAM
|
||||
switch (config & 0x0f)
|
||||
{
|
||||
case 0x01:
|
||||
@ -301,7 +301,7 @@ WRITE_LINE_MEMBER( a590_device::cfgin_w )
|
||||
m_int6 = m_jp4->read() & 0x01;
|
||||
resize_ram(m_dips->read() & 0x0f);
|
||||
|
||||
// then tell the dmac to start configuring
|
||||
// then tell the DMAC to start configuring
|
||||
m_dmac->configin_w(state);
|
||||
}
|
||||
|
||||
@ -311,7 +311,7 @@ WRITE_LINE_MEMBER( a2091_device::cfgin_w )
|
||||
m_int6 = m_jp3->read() & 0x01;
|
||||
resize_ram(m_jp1->read() & 0x0f);
|
||||
|
||||
// then tell the dmac to start configuring
|
||||
// then tell the DMAC to start configuring
|
||||
m_dmac->configin_w(state);
|
||||
}
|
||||
|
||||
@ -345,6 +345,6 @@ WRITE_LINE_MEMBER( dmac_hdc_device::dmac_int_w )
|
||||
|
||||
WRITE_LINE_MEMBER( dmac_hdc_device::scsi_irq_w )
|
||||
{
|
||||
// should be or'ed with xt-ide irq
|
||||
// should be or'ed with xt-ide IRQ
|
||||
m_dmac->intx_w(state);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
intel 8086 and compatibles
|
||||
--------------------------
|
||||
|
||||
this info is here,
|
||||
this info is here,
|
||||
to list and give some remarks on all 8086 compatible processors
|
||||
|
||||
excellent info in Hamarsoft's 86BUGS list
|
||||
@ -12,13 +12,13 @@ excellent info in Hamarsoft's 86BUGS list
|
||||
20 bit address bus, 16 bit data bus and registers
|
||||
many 8080 assembler sources should be compilable/reusable
|
||||
|
||||
8086
|
||||
8086
|
||||
----
|
||||
6 bytes prefetch queue
|
||||
|
||||
8088
|
||||
----
|
||||
8086 with 8 bit data bus,
|
||||
8086 with 8 bit data bus,
|
||||
prefetch queue only 4 byte, and refilled when 1 byte empty
|
||||
|
||||
early 8086/8088 revisions bug
|
||||
@ -93,7 +93,7 @@ v30? emulation mode (without 8080 emulation mode)
|
||||
80286
|
||||
-----
|
||||
80186 with additional instructions
|
||||
24 bit address bus,
|
||||
24 bit address bus,
|
||||
protected mode
|
||||
|
||||
80386 and later
|
||||
@ -106,6 +106,6 @@ mathematical coprocessors
|
||||
|
||||
weitek, iit variants
|
||||
|
||||
in 80486 coprocessor integrated
|
||||
in 80486 coprocessor integrated
|
||||
(except 80486sx and several clones)
|
||||
80487: 80486 with other pinout
|
||||
|
@ -48,7 +48,7 @@ const device_type FLOPPY_8_DSSD = &device_creator<floppy_8_dssd>;
|
||||
const device_type FLOPPY_8_SSDD = &device_creator<floppy_8_ssdd>;
|
||||
const device_type FLOPPY_8_DSDD = &device_creator<floppy_8_dsdd>;
|
||||
|
||||
// epson 3.5" drives
|
||||
// Epson 3.5" drives
|
||||
#if 0
|
||||
const device_type EPSON_SMD_110 = &device_creator<epson_smd_110>;
|
||||
const device_type EPSON_SMD_120 = &device_creator<epson_smd_120>;
|
||||
@ -70,7 +70,7 @@ const device_type EPSON_SMD_480LM = &device_creator<epson_smd_480lm>;
|
||||
const device_type EPSON_SMD_489M = &device_creator<epson_smd_489m>;
|
||||
#endif
|
||||
|
||||
// epson 5.25" drives
|
||||
// Epson 5.25" drives
|
||||
#if 0
|
||||
const device_type EPSON_SD_311 = &device_creator<epson_sd_311>;
|
||||
#endif
|
||||
@ -88,12 +88,12 @@ const device_type EPSON_SD_621L = &device_creator<epson_sd_621l>;
|
||||
const device_type EPSON_SD_680L = &device_creator<epson_sd_680l>;
|
||||
#endif
|
||||
|
||||
// sony 3.5" drives
|
||||
// Sony 3.5" drives
|
||||
const device_type SONY_OA_D31V = &device_creator<sony_oa_d31v>;
|
||||
const device_type SONY_OA_D32W = &device_creator<sony_oa_d32w>;
|
||||
const device_type SONY_OA_D32V = &device_creator<sony_oa_d32v>;
|
||||
|
||||
// teac 5.25" drives
|
||||
// TEAC 5.25" drives
|
||||
#if 0
|
||||
const device_type TEAC_FD_55A = &device_creator<teac_fd_55a>;
|
||||
const device_type TEAC_FD_55B = &device_creator<teac_fd_55b>;
|
||||
@ -1672,7 +1672,7 @@ void epson_sd_321::handled_variants(UINT32 *variants, int &var_count) const
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// sony oa-d31v
|
||||
// Sony OA-D31V
|
||||
//
|
||||
// track to track: 15 ms
|
||||
// average: 365 ms
|
||||
@ -1706,7 +1706,7 @@ void sony_oa_d31v::handled_variants(UINT32 *variants, int &var_count) const
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// sony oa-d32w
|
||||
// Sony OA-D32W
|
||||
//
|
||||
// track to track: 12 ms
|
||||
// average: 350 ms
|
||||
@ -1742,7 +1742,7 @@ void sony_oa_d32w::handled_variants(UINT32 *variants, int &var_count) const
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// sony oa-d32v
|
||||
// Sony OA-D32V
|
||||
//
|
||||
// track to track: 12 ms
|
||||
// average: 350 ms
|
||||
@ -1777,7 +1777,7 @@ void sony_oa_d32v::handled_variants(UINT32 *variants, int &var_count) const
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// teac fd-55f
|
||||
// TEAC FD-55F
|
||||
//
|
||||
// track to track: 3 ms
|
||||
// average: 94 ms
|
||||
@ -1815,7 +1815,7 @@ void teac_fd_55f::handled_variants(UINT32 *variants, int &var_count) const
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// teac fd-55g
|
||||
// TEAC FD-55G
|
||||
//
|
||||
// track to track: 3 ms
|
||||
// average: 91 ms
|
||||
|
@ -263,7 +263,7 @@ void vrc4373_device::dma_transfer(int which)
|
||||
m_cpu_regs[NREG_DMA_CPAR] += 0x4;
|
||||
m_cpu_regs[NREG_DMA_REM]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
// CPU I/F
|
||||
READ32_MEMBER (vrc4373_device::cpu_if_r)
|
||||
{
|
||||
@ -347,13 +347,13 @@ WRITE32_MEMBER(vrc4373_device::cpu_if_w)
|
||||
case NREG_DMACR1:
|
||||
case NREG_DMACR2:
|
||||
// Start when DMA_GO bit is set
|
||||
if (!(oldData & DMA_GO) && (data & DMA_GO)) {
|
||||
if (!(oldData & DMA_GO) && (data & DMA_GO)) {
|
||||
int which = (offset-NREG_DMACR1)>>3;
|
||||
// Check to see DMA is not already started
|
||||
if (!(data&DMA_BUSY)) {
|
||||
// Set counts and address
|
||||
m_cpu_regs[NREG_DMA_CPAR] = m_cpu_regs[NREG_DMAPCI1+which*0xC];
|
||||
m_cpu_regs[NREG_DMA_CMAR] = m_cpu_regs[NREG_DMAMAR1+which*0xC];
|
||||
m_cpu_regs[NREG_DMA_CMAR] = m_cpu_regs[NREG_DMAMAR1+which*0xC];
|
||||
m_cpu_regs[NREG_DMA_REM] = (data & DMA_BLK_SIZE)>>2;
|
||||
m_cpu_regs[NREG_DMACR1+which*0xc] |= DMA_BUSY;
|
||||
// Start the transfer
|
||||
|
@ -120,7 +120,6 @@ private:
|
||||
|
||||
UINT32 m_pci1_laddr, m_pci2_laddr, m_pci_io_laddr;
|
||||
UINT32 m_target1_laddr, m_target2_laddr;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -94,9 +94,9 @@ TIMER_DEVICE_CALLBACK_MEMBER(es1373_device::es_timer_callback)
|
||||
// The initalized is to signal that inital buffer has been written
|
||||
if (m_dac2.buf_count<=m_dac2.buf_size && m_dac2.initialized) {
|
||||
// Send data to sound???
|
||||
// sound = m_sound_cache[chan.buf_rptr]
|
||||
if (0 && LOG_ES)
|
||||
logerror("%X: DAC2 buf_count: %i buf_size: %X buf_rptr: %X buf_wptr: %X\n", machine().device("maincpu")->safe_pc(),
|
||||
// sound = m_sound_cache[chan.buf_rptr]
|
||||
if (0 && LOG_ES)
|
||||
logerror("%X: DAC2 buf_count: %i buf_size: %X buf_rptr: %X buf_wptr: %X\n", machine().device("maincpu")->safe_pc(),
|
||||
m_dac2.buf_count, m_dac2.buf_size, m_dac2.buf_rptr, m_dac2.buf_wptr);
|
||||
if (m_dac2.buf_count==m_dac2.buf_size) {
|
||||
if (m_dac2.int_en) {
|
||||
@ -122,8 +122,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(es1373_device::es_timer_callback)
|
||||
}
|
||||
if (m_adc.enable) {
|
||||
if (m_adc.buf_count<=m_adc.buf_size) {
|
||||
if (LOG_ES)
|
||||
logerror("%s: ADC buf_count: %i buf_size: %i buf_rptr: %i buf_wptr: %i\n", machine().describe_context(),
|
||||
if (LOG_ES)
|
||||
logerror("%s: ADC buf_count: %i buf_size: %i buf_rptr: %i buf_wptr: %i\n", machine().describe_context(),
|
||||
m_adc.buf_count, m_adc.buf_size, m_adc.buf_rptr, m_adc.buf_wptr);
|
||||
if (m_adc.int_en && m_adc.buf_count==m_adc.buf_size) {
|
||||
m_es_regs[ES_INT_CS_STATUS] |= ICSTATUS_ADC_INT_MASK;
|
||||
|
@ -114,7 +114,6 @@ private:
|
||||
chan_info m_dac2;
|
||||
chan_info m_adc;
|
||||
void transfer_pci_audio(chan_info& chan, int type);
|
||||
|
||||
};
|
||||
|
||||
extern const device_type ES1373;
|
||||
|
@ -4,12 +4,12 @@
|
||||
31 Jan 97
|
||||
|
||||
The PokeySound Chip Emulator is designed to emulate the functionality of the
|
||||
Atari POKEY Chip Hardware through 'C' Sourcecode. The emulator is able to
|
||||
produce sounds which are essentially identical to the original POKEY chip,
|
||||
including the exact distortions and pitches.
|
||||
Atari POKEY Chip Hardware through 'C' Sourcecode. The emulator is able to
|
||||
produce sounds which are essentially identical to the original POKEY chip,
|
||||
including the exact distortions and pitches.
|
||||
|
||||
The emulator is designed to run in a 32-bit environment. Though it can be
|
||||
compiled and run in a 16-bit environment, it is slow.
|
||||
compiled and run in a 16-bit environment, it is slow.
|
||||
|
||||
I would like to give special thanks to Neil Bradley. He provided excellent
|
||||
testing support and was also the driving force behind the multiple POKEY
|
||||
@ -26,9 +26,9 @@ Version 2.0 of the 'PokeySound' adds the following features:
|
||||
2) An adjustable gain. The previous releases had a built-in gain of 64.
|
||||
|
||||
3) A clipping option. Depending on the number of chips emulated and the
|
||||
configured gain, it is possible for the output to exceed 8-bits.
|
||||
configured gain, it is possible for the output to exceed 8-bits.
|
||||
Clipping can be enabled to prevent this, though it does increase the
|
||||
processing time.
|
||||
processing time.
|
||||
|
||||
|
||||
Standard Features:
|
||||
@ -36,12 +36,12 @@ Standard Features:
|
||||
|
||||
The 'PokeySound' emulator supports the following functions:
|
||||
|
||||
1) All polynomial sound generators:
|
||||
1) All polynomial sound generators:
|
||||
a) 4-bit poly - actual bit pattern determined from sampled sound
|
||||
b) 5-bit poly - actual bit pattern determined from sampled sound
|
||||
c) 17-bit poly - simulated random bit pattern
|
||||
d) 9-bit poly - derived from simulated 17-bit poly
|
||||
|
||||
|
||||
2) Full support of all 'Divide by N' counter clocks:
|
||||
a) 1.79 MHz (high limited to playback sample rate)
|
||||
b) 64 KHz (high limited to playback sample rate)
|
||||
@ -51,7 +51,7 @@ The 'PokeySound' emulator supports the following functions:
|
||||
a) 8-bit - single channel
|
||||
b) 16-bit - double channel
|
||||
|
||||
4) Full support of all distortions
|
||||
4) Full support of all distortions
|
||||
a) 5-bit poly, then 17-bit poly
|
||||
b) 5-bit poly only
|
||||
c) 5-bit poly, then 4-bit poly
|
||||
@ -59,7 +59,7 @@ The 'PokeySound' emulator supports the following functions:
|
||||
e) no poly counters (pure tone)
|
||||
f) 5-bit poly only
|
||||
|
||||
5) Full support of volume control
|
||||
5) Full support of volume control
|
||||
|
||||
6) Full support of all pitches - distortions will vary exactly as the
|
||||
original Atari based on different pitches
|
||||
@ -84,39 +84,39 @@ In the 2.0 release, I've removed the non-optimized vrersion. It was only
|
||||
left in for reference. If you would still like to see the non-optimized
|
||||
version, it's available in the 1.2 release.
|
||||
|
||||
One of the unique features of the emulator is that the processing time varies
|
||||
based on the frequency. Since the routine only calculates new output values
|
||||
when a change is sensed, the lower frequencies (which change less frequently)
|
||||
One of the unique features of the emulator is that the processing time varies
|
||||
based on the frequency. Since the routine only calculates new output values
|
||||
when a change is sensed, the lower frequencies (which change less frequently)
|
||||
will require less processing time.
|
||||
|
||||
|
||||
Differences Between the Emulator and the Actual POKEY Chip:
|
||||
-----------------------------------------------------------
|
||||
-----------------------------------------------------------
|
||||
|
||||
The biggest difference between the emulator and the original hardware is
|
||||
that the emulator emulates an 'ideal' POKEY chip. All output from the
|
||||
The biggest difference between the emulator and the original hardware is
|
||||
that the emulator emulates an 'ideal' POKEY chip. All output from the
|
||||
emulator is a based on a precise square wave, whereas the output from the
|
||||
original chip has decay. Though the output is slightly different, I
|
||||
don't believe this difference is easily discernible.
|
||||
|
||||
Another slight difference is the 17-bit/9-bit poly. Since the polynomial
|
||||
is large (2^17 bits), I choose to create the sample using a random number
|
||||
generator rather than a table. I don't believe this difference is
|
||||
generator rather than a table. I don't believe this difference is
|
||||
significant.
|
||||
|
||||
There are also a few differences which are introduced by aliasing. This is
|
||||
a direct result of using an output sampling rate which is not identical to
|
||||
the original sound rate. It is most evident with high frequencies.
|
||||
the original sound rate. It is most evident with high frequencies.
|
||||
|
||||
A final difference is the lack of support for the High-Pass Filter
|
||||
A final difference is the lack of support for the High-Pass Filter
|
||||
functionality. I plan to add this in a future release if necessary.
|
||||
|
||||
|
||||
Sample/Test Application:
|
||||
------------------------
|
||||
|
||||
The test program I've distributed is a 16-bit DOS application created with
|
||||
the Borland 'C' compiler. The only reason I used 16-bit was because I
|
||||
The test program I've distributed is a 16-bit DOS application created with
|
||||
the Borland 'C' compiler. The only reason I used 16-bit was because I
|
||||
already had a set of working SB drivers in 16-bit. Since the test system
|
||||
is dedicated to generating sounds, the performance in 16-bit is more than
|
||||
adequate.
|
||||
@ -125,20 +125,20 @@ adequate.
|
||||
POKEY.C
|
||||
=======
|
||||
|
||||
The POKEY.C file is the heart of the PokeySound Emulation program.
|
||||
The POKEY.C file is the heart of the PokeySound Emulation program.
|
||||
Although the routines in the file must work together, no other files are
|
||||
modules are required for operation. A header file, 'POKEY.H', has
|
||||
been included for use in other modules, and provides the necessary
|
||||
modules are required for operation. A header file, 'POKEY.H', has
|
||||
been included for use in other modules, and provides the necessary
|
||||
function prototypes. I've attempted to make the routines as portable as
|
||||
possible, so the file should compile on almost any compiler with little
|
||||
or no modification.
|
||||
or no modification.
|
||||
|
||||
I have made some attempts at optimizing the routines, though I am sure
|
||||
more optimization can be done. They are currently only available in 'C'.
|
||||
I'll be happy to convert them to assembly language if desired. Please feel
|
||||
I'll be happy to convert them to assembly language if desired. Please feel
|
||||
free to send me e-mail at rfries@tcmail.frco.com.
|
||||
|
||||
The routines are easy to use. Detailed descriptions on the function calls
|
||||
The routines are easy to use. Detailed descriptions on the function calls
|
||||
are listed below.
|
||||
|
||||
The POKEY.C module can be compiled in a 32-bit or 16-bit environment.
|
||||
@ -150,17 +150,17 @@ the variable COMP16.
|
||||
GENERAL OVERVIEW
|
||||
----------------
|
||||
|
||||
On start-up of the system, a single call should be made to Pokey_sound_init.
|
||||
On start-up of the system, a single call should be made to Pokey_sound_init.
|
||||
This routine will prepare the structures for sound output. This routine
|
||||
can be called again if necessary during warm-start or other reset.
|
||||
|
||||
Once in the main loop, there are two other functions that will be used.
|
||||
Once in the main loop, there are two other functions that will be used.
|
||||
Whenever the system needs to write to either the AUDC or AUDF values,
|
||||
a call should be made to the Update_pokey_sound routine. This routine will
|
||||
a call should be made to the Update_pokey_sound routine. This routine will
|
||||
take care of updating the internal registers. It will pre-calculate several
|
||||
values to help with optimization.
|
||||
|
||||
The only other routine that is called is the Pokey_process function. This
|
||||
The only other routine that is called is the Pokey_process function. This
|
||||
function will fill a audio buffer with a specified number of bytes. This
|
||||
function should be called whenever a new audio buffer is required.
|
||||
|
||||
@ -176,44 +176,44 @@ Pokey_sound_init(uint32 freq17, uint16 playback_freq, uint8 num_pokeys)
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
This function initializes the structures used by the PokeySound routines.
|
||||
This function takes three parameters: the main clock frequency, the
|
||||
This function takes three parameters: the main clock frequency, the
|
||||
playback frequency and the number of POKEY chips to emulate.
|
||||
|
||||
The maximum number of POKEY chips emulated is configured at compile time.
|
||||
Though the maximum number of chips can be configured as one, the PokeySound
|
||||
1.2 routines are recommended if only a single chip is to be emulated since
|
||||
they have will provide better performance.
|
||||
Though the maximum number of chips can be configured as one, the PokeySound
|
||||
1.2 routines are recommended if only a single chip is to be emulated since
|
||||
they have will provide better performance.
|
||||
|
||||
The main clock frequency is the frequency of the 1.79MHz source clock.
|
||||
To provide exact results, freq17 should be set equal to 1789790 Hz. As an
|
||||
alternative, freq17 can be set to an approximate frequency of 1787520 Hz.
|
||||
Using this approximate frequency will reduce aliasing and thus produce a
|
||||
The main clock frequency is the frequency of the 1.79MHz source clock.
|
||||
To provide exact results, freq17 should be set equal to 1789790 Hz. As an
|
||||
alternative, freq17 can be set to an approximate frequency of 1787520 Hz.
|
||||
Using this approximate frequency will reduce aliasing and thus produce a
|
||||
clearer output signal.
|
||||
|
||||
A constant has been defined for both of these values for your convenience.
|
||||
The names are FREQ_17_EXACT and FREQ_17_APPROX.
|
||||
|
||||
The playback frequency is the frequency of the sound playback (the frequency
|
||||
used by the sound card). For best results, the playback frequency should
|
||||
The playback frequency is the frequency of the sound playback (the frequency
|
||||
used by the sound card). For best results, the playback frequency should
|
||||
be an even division of the main clock frequency. Since most of the sounds
|
||||
will be generated using the 64kHz clock, I also recommend making the
|
||||
will be generated using the 64kHz clock, I also recommend making the
|
||||
playback frequency an even division of the 64kHz clock.
|
||||
|
||||
The 64kHz clock is exactly equal to the main clock divided by 28. For
|
||||
the playback frequency, I recommend one of the following values:
|
||||
|
||||
1) FREQ_17_APPROX / (28*1), which is equal to 63840. Of course, most sound
|
||||
1) FREQ_17_APPROX / (28*1), which is equal to 63840. Of course, most sound
|
||||
cards can't reproduce this frequency.
|
||||
|
||||
2) FREQ_17_APPROX / (28*2), which is equal to 31920. All of the newer cards
|
||||
will support this frequency.
|
||||
will support this frequency.
|
||||
|
||||
3) FREQ_17_APPROX / (28*3), which is equal to 21280. All of the SB
|
||||
3) FREQ_17_APPROX / (28*3), which is equal to 21280. All of the SB
|
||||
compatibles should support this frequency.
|
||||
|
||||
4) FREQ_17_APPROX / (28*4), which is equal to 15960. This may be the
|
||||
best choice, as it offers good sound reproduction with good performance.
|
||||
|
||||
|
||||
Of course, these options also assume you are using the approximate
|
||||
frequency for the main clock as well. Any of these choices will offer the
|
||||
best results when the main 64kHz clock is used, reasonable results when the
|
||||
@ -231,7 +231,7 @@ Update_pokey_sound (uint16 addr, uint8 val, uint8 chip, uint8 gain)
|
||||
|
||||
This function should be called each time an AUDC, AUDF or AUDCTL value
|
||||
changes. This function takes four parameters: the address to change,
|
||||
the new value, the chip to be updated, and the gain to be used.
|
||||
the new value, the chip to be updated, and the gain to be used.
|
||||
The lower four bits of the address should be one of the following values:
|
||||
|
||||
Addr Description
|
||||
@ -250,26 +250,26 @@ In order to support multiple POKEY chips, only the lower four bits of
|
||||
the address are used. Note that this routine can no longer be called with
|
||||
any address as it will affect the operation of the specified chip.
|
||||
|
||||
The routine pre-calculates several values that are needed by the
|
||||
The routine pre-calculates several values that are needed by the
|
||||
processing function. This is done to optimize performance.
|
||||
|
||||
The output will be amplified (multiplied) by gain/16 (previous releases had
|
||||
a built in multiplier of 4, which calculates to a gain value of 64). If the
|
||||
output exceeds the maximum value after then gain and clipping is enabled,
|
||||
The output will be amplified (multiplied) by gain/16 (previous releases had
|
||||
a built in multiplier of 4, which calculates to a gain value of 64). If the
|
||||
output exceeds the maximum value after then gain and clipping is enabled,
|
||||
the output will be limited to reduce distortion.
|
||||
|
||||
The best value for the gain depends on the number of POKEYs emulated and
|
||||
the maximum volume used. The maximum possible output for each channel is 15,
|
||||
making the maximum possible output for a single chip to be 60. Assuming all
|
||||
four channels on the chip are used at full volume, a gain of 64 can be used
|
||||
without distortion. If 4 POKEY chips are emulated and all 16 channels are
|
||||
used at full volume, the gain must be no more than 16 to prevent distortion.
|
||||
Of course, if only a few of the 16 channels are used or not all channels are
|
||||
the maximum volume used. The maximum possible output for each channel is 15,
|
||||
making the maximum possible output for a single chip to be 60. Assuming all
|
||||
four channels on the chip are used at full volume, a gain of 64 can be used
|
||||
without distortion. If 4 POKEY chips are emulated and all 16 channels are
|
||||
used at full volume, the gain must be no more than 16 to prevent distortion.
|
||||
Of course, if only a few of the 16 channels are used or not all channels are
|
||||
used at full volume, a larger gain can be used.
|
||||
|
||||
To enable clipping, define the logical CLIP before compiling. This is the
|
||||
default mode of operation as it has already been included in the POKEY.H file.
|
||||
Note that this is only recommended if clipping is necessary since it will
|
||||
Note that this is only recommended if clipping is necessary since it will
|
||||
impact the performance.
|
||||
|
||||
This function has no return value (void).
|
||||
@ -280,7 +280,7 @@ Pokey_process (uint8 *buffer, uint16 n)
|
||||
|
||||
This function calculates and fills a buffer with unsigned 8-bit mono audio.
|
||||
This function takes two parameters: a pointer to the buffer to fill and
|
||||
the size of the buffer (limited to 65535). This function fills the
|
||||
the size of the buffer (limited to 65535). This function fills the
|
||||
buffer based on the requested size and returns. It automatically
|
||||
updates the pointers for the next call, so subsequent calls to this function
|
||||
will provide a continuous stream of data.
|
||||
@ -292,7 +292,7 @@ system and emulator performance.
|
||||
|
||||
Selecting the correct buffer size is a careful balance. Selecting a buffer
|
||||
size that is too small will produce noticeable clicks in the output, though
|
||||
selecting a size that is too large will cause a poor response time and
|
||||
selecting a size that is too large will cause a poor response time and
|
||||
possible delays in the system when the new buffer is filled.
|
||||
|
||||
This function has no return value (void).
|
||||
@ -303,17 +303,17 @@ License Information and Copyright Notice
|
||||
|
||||
PokeySound is Copyright(c) 1996-1997 by Ron Fries
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it under
|
||||
the terms of version 2 of the GNU Library General Public License as published
|
||||
This library is free software; you can redistribute it and/or modify it under
|
||||
the terms of version 2 of the GNU Library General Public License as published
|
||||
by the Free Software Foundation.
|
||||
|
||||
This library is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
|
||||
This library is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
|
||||
details.
|
||||
|
||||
To obtain a copy of the GNU Library General Public License, write to the Free
|
||||
To obtain a copy of the GNU Library General Public License, write to the Free
|
||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Any permitted reproduction of these routines, in whole or in part, must bear
|
||||
this legend.
|
||||
Any permitted reproduction of these routines, in whole or in part, must bear
|
||||
this legend.
|
||||
|
@ -123,10 +123,10 @@ static const int tune2[96*6] = {
|
||||
/*
|
||||
* The theme from Phoenix, a sad little tune.
|
||||
* Gerald Coy:
|
||||
* The starting song from Phoenix is coming from a old french movie and
|
||||
* The starting song from Phoenix comes from an old French movie and
|
||||
* it's called : "Jeux interdits" which means "unallowed games" ;-)
|
||||
* Mirko Buffoni:
|
||||
* It's called "Sogni proibiti" in italian, by Anonymous.
|
||||
* It's called "Sogni proibiti" in Italian, by Anonymous.
|
||||
* Magic*:
|
||||
* This song is a classical piece called "ESTUDIO" from M.A.Robira.
|
||||
*/
|
||||
|
@ -406,7 +406,7 @@ void tms5220_device::register_for_save_states()
|
||||
save_item(NAME(m_digital_select));
|
||||
|
||||
save_item(NAME(m_io_ready));
|
||||
|
||||
|
||||
save_item(NAME(m_true_timing));
|
||||
|
||||
save_item(NAME(m_rs_ws));
|
||||
|
@ -110,7 +110,7 @@ Stephh's additional notes (based on the games M68000 code and some tests) :
|
||||
- There is no Dip Switch to determine if you are allowed to continue a game
|
||||
or not, so you ALWAYS have the possibility to continue a game.
|
||||
|
||||
|
||||
|
||||
Stephh's log (2002.06.19) :
|
||||
|
||||
- Create macros for players inputs and "Coinage" Dip Switch
|
||||
|
@ -21,7 +21,7 @@ U3 Max691cpe
|
||||
U300 Nec D7759GC (10Mhz xtal near it)
|
||||
|
||||
TODO:
|
||||
- No idea about how to surpass the "No Funzione" (sic) screen. According to the bad settings almost
|
||||
- No idea about how to surpass the "No Funzione" (sic) screen. According to the bad settings almost
|
||||
surely it wants EEPROM hooked up (i/o at 0x680/0x682?)
|
||||
|
||||
*/
|
||||
@ -41,7 +41,7 @@ public:
|
||||
m_maincpu(*this, "maincpu") { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
|
||||
|
||||
DECLARE_READ16_MEMBER(unk_r);
|
||||
};
|
||||
|
||||
@ -109,7 +109,7 @@ static INPUT_PORTS_START( gambl186 )
|
||||
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
|
||||
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
|
||||
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
|
||||
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
@ -251,7 +251,7 @@ static INPUT_PORTS_START( gambl186 )
|
||||
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
|
||||
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x01, 0x01, "1-1" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
|
@ -20,7 +20,7 @@
|
||||
* Jack Potten's Poker (set 6), 198?, Bootleg.
|
||||
* Jack Potten's Poker (set 7, Royale GFX), 198?, Bootleg.
|
||||
* Good Luck, 198?, Unknown.
|
||||
* Super Double (french), 198?, Karateco.
|
||||
* Super Double (French), 198?, Karateco.
|
||||
* Jack Potten's Poker (NGold, set 1), 198?, Unknown.
|
||||
* Jack Potten's Poker (NGold, set 2), 198?, Unknown.
|
||||
* Jack Potten's Poker (NGold, set 3), 198?, Unknown.
|
||||
@ -104,7 +104,7 @@
|
||||
* Falcons Wild - World Wide Poker (VK set 1), 1990, Video Klein.
|
||||
* Falcons Wild - World Wide Poker (VK set 2), 1990, Video Klein.
|
||||
* Falcons Wild - Wild Card 1991, 1991, TVG.
|
||||
* PlayMan Poker (german), 1981, PM / Beck Elektronik.
|
||||
* PlayMan Poker (German), 1981, PM / Beck Elektronik.
|
||||
* Super Loco 93 (Spanish, set 1), 1993, Unknown.
|
||||
* Super Loco 93 (Spanish, set 2), 1993, Unknown.
|
||||
* Royale (set 1), 198?, Unknown.
|
||||
@ -119,7 +119,7 @@
|
||||
* Genie, 198?, Video Fun Games Ltd.
|
||||
* Silver Game, 1983, Unknown.
|
||||
* Casino Poker (Ver PM86LO-35-5, German), 1987, PM / Beck Elektronik.
|
||||
* "Unknown french poker game", 198?, Unknown.
|
||||
* "Unknown French poker game", 198?, Unknown.
|
||||
* "Unknown encrypted poker game", 198?, Unknown.
|
||||
* Bonne Chance! (Golden Poker prequel hardware), 198?, Unknown.
|
||||
* Mundial/Mondial (Italian/French), 1987, Unknown.
|
||||
@ -215,7 +215,7 @@
|
||||
Maybe some settings can enable the use of them...
|
||||
|
||||
|
||||
* Witch Card (spanish sets)
|
||||
* Witch Card (Spanish sets)
|
||||
|
||||
This game is derivated from Golden Poker.
|
||||
|
||||
@ -336,7 +336,7 @@
|
||||
The game has 2 service switches/buttons:
|
||||
One for settings, and other just for bookkeeping.
|
||||
|
||||
Here the original Service Card (in german), and the english translation:
|
||||
Here the original Service Card (in German), and the English translation:
|
||||
_____________________________________ _____________________________________
|
||||
| | | |
|
||||
| SERVICE ANLEITUNG | | SERVICE MANUAL |
|
||||
@ -772,10 +772,10 @@
|
||||
- Fixed the visible area based on M6845 registers.
|
||||
- Improved the lamps layouts to be more realistic.
|
||||
- Added Good Luck (potten's poker hybrid running in goldnpkr hardware).
|
||||
- Added Buena Suerte (spanish) x 2 sets.
|
||||
- Added Buena Suerte (Spanish) x 2 sets.
|
||||
- Added set Royale.
|
||||
- Added Witch Card and spanish variants.
|
||||
- Added Super Loco 93 (spanish) x 2 sets.
|
||||
- Added Witch Card and Spanish variants.
|
||||
- Added Super Loco 93 (Spanish) x 2 sets.
|
||||
- Renamed set goldnpkc to pottnpkr (parent Jack Potten's Poker set).
|
||||
- Renamed set jokerpkr to potnpkra, since is another Jack Potten's Poker set.
|
||||
- Added other 2 clones of Jack Potten's Poker.
|
||||
@ -817,11 +817,11 @@
|
||||
[2009-09-05]
|
||||
|
||||
- Added 2 new Witch Card sets.
|
||||
- Reworked inputs for Witch Card (german set 1).
|
||||
- Created new inputs for Witch Card (english, witch game, lamps).
|
||||
- Reworked inputs for Witch Card (German set 1).
|
||||
- Created new inputs for Witch Card (English, witch game, lamps).
|
||||
- Added and connected lamps for both sets.
|
||||
- Added minimal bet and 50/60 Hz. switches to both sets.
|
||||
- Added DIP switches info for Witch Card (german, set 2).
|
||||
- Added DIP switches info for Witch Card (German, set 2).
|
||||
|
||||
- Added Genius, running in a modified Golden Poker board.
|
||||
|
||||
@ -844,7 +844,7 @@
|
||||
|
||||
[2010-11-18]
|
||||
|
||||
- Added Karateco Super Double (french)
|
||||
- Added Karateco Super Double (French)
|
||||
- Extended ROM space for goldnpkr game to include the 0x2000..0x3fff range
|
||||
|
||||
|
||||
@ -4362,7 +4362,7 @@ ROM_END
|
||||
ROM_LOAD( "epoxy_82s129.bin", 0x0100, 0x0100, CRC(f0c012b1) SHA1(5502977404172e8c5b9fbf305581a406668ad1d9) ) /* original epoxy block PROM */
|
||||
ROM_END
|
||||
|
||||
/* Witch Card (spanish, set 1)
|
||||
/* Witch Card (Spanish, set 1)
|
||||
Unknown argentine manufacturer.
|
||||
*/
|
||||
ROM_START( witchcda )
|
||||
@ -4382,7 +4382,7 @@ ROM_START( witchcda )
|
||||
ROM_LOAD( "82s129.9c", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) /* PROM dump needed */
|
||||
ROM_END
|
||||
|
||||
/* Witch Card (spanish, set 2)
|
||||
/* Witch Card (Spanish, set 2)
|
||||
Unknown argentine manufacturer.
|
||||
*/
|
||||
ROM_START( witchcdb )
|
||||
@ -4402,7 +4402,7 @@ ROM_START( witchcdb )
|
||||
ROM_LOAD( "82s129.9c", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) /* PROM dump needed */
|
||||
ROM_END
|
||||
|
||||
/* Witch Card (english, no witch game)
|
||||
/* Witch Card (English, no witch game)
|
||||
Hack?
|
||||
*/
|
||||
ROM_START( witchcdc )
|
||||
@ -4424,7 +4424,7 @@ ROM_END
|
||||
|
||||
/***************************************
|
||||
|
||||
Witch Card (german, WC3050, set 1 )
|
||||
Witch Card (German, WC3050, set 1 )
|
||||
|
||||
TV GAME ELEKTRONIK 1994
|
||||
PROMA
|
||||
@ -4477,7 +4477,7 @@ ROM_END
|
||||
ROM_LOAD( "24s10_epoxy.bin", 0x0100, 0x0100, CRC(ddfd7034) SHA1(78dee69ab4ba759485ee7f00446c2d86f08cc50f) ) /* original epoxy block PROM */
|
||||
ROM_END
|
||||
|
||||
/* Witch Card (english, witch game, lights)
|
||||
/* Witch Card (English, witch game, lights)
|
||||
PCB by PM. Hybrid hardware.
|
||||
|
||||
Copyright 1983/84/85
|
||||
@ -4539,7 +4539,7 @@ ROM_END
|
||||
|
||||
/***************************************
|
||||
|
||||
Witch Card (german, WC3050, set 2 )
|
||||
Witch Card (German, WC3050, set 2 )
|
||||
|
||||
TV GAME ELEKTRONIK 1994
|
||||
PROMA
|
||||
@ -4882,7 +4882,7 @@ ROM_START( bsuertek )
|
||||
ROM_END
|
||||
|
||||
ROM_START( bsuertel )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 ) /* bslacer128: Buena Suerte! (portugues), english settings */
|
||||
ROM_REGION( 0x10000, "maincpu", 0 ) /* bslacer128: Buena Suerte! (portugues), English settings */
|
||||
ROM_LOAD( "bslacer.128", 0x4000, 0x4000, CRC(edc254f4) SHA1(20e5543e59bfd67a0afec7cbeeb7000f6bba6c69) )
|
||||
|
||||
ROM_REGION( 0x3000, "gfx1", 0 )
|
||||
@ -4899,7 +4899,7 @@ ROM_START( bsuertel )
|
||||
ROM_END
|
||||
|
||||
ROM_START( bsuertem )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 ) /* bslacer128: Buena Suerte! (portugues), english settings, set 2*/
|
||||
ROM_REGION( 0x10000, "maincpu", 0 ) /* bslacer128: Buena Suerte! (portugues), English settings, set 2*/
|
||||
ROM_LOAD( "bslacer.256", 0x0000, 0x8000, CRC(9f8a899a) SHA1(a1f3d0635b309d4734289b7ff48eceda69dfd3d0) )
|
||||
|
||||
ROM_REGION( 0x3000, "gfx1", 0 )
|
||||
@ -5464,7 +5464,7 @@ ROM_END
|
||||
mc6845 video chip
|
||||
10mhz (?) xtal
|
||||
|
||||
There are french strings related to the game, so maybe is
|
||||
There are French strings related to the game, so maybe is
|
||||
a leftover, or maybe there is a unknown way to switch the
|
||||
language.
|
||||
|
||||
@ -5544,7 +5544,7 @@ ROM_END
|
||||
Unknown poker game, set 1.
|
||||
198?.
|
||||
|
||||
There are french strings related to the game into
|
||||
There are French strings related to the game into
|
||||
the program ROM.
|
||||
|
||||
The dump lacks of 1 program ROM located at 17a.
|
||||
@ -5606,7 +5606,7 @@ ROM_END
|
||||
|
||||
/************************************
|
||||
|
||||
Jolli Witch (german)
|
||||
Jolli Witch (German)
|
||||
Epoxy CPU box.
|
||||
|
||||
Using the whole addressing
|
||||
|
@ -337,7 +337,7 @@ DRIVER_INIT_MEMBER(m72_state,m72_8751)
|
||||
program.install_read_bank(0xb0000, 0xbffff, "bank1");
|
||||
program.install_write_handler(0xb0000, 0xb0fff, write16_delegate(FUNC(m72_state::main_mcu_w),this));
|
||||
membank("bank1")->configure_entry(0, m_protection_ram);
|
||||
|
||||
|
||||
save_pointer(NAME(m_protection_ram), 0x10000/2);
|
||||
save_item(NAME(m_mcu_sample_latch));
|
||||
save_item(NAME(m_mcu_sample_addr));
|
||||
@ -685,7 +685,7 @@ void m72_state::install_protection_handler(const UINT8 *code,const UINT8 *crc)
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xb0ffa, 0xb0ffb, read16_delegate(FUNC(m72_state::protection_r),this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xb0000, 0xb0fff, write16_delegate(FUNC(m72_state::protection_w),this));
|
||||
membank("bank1")->configure_entry(0, m_protection_ram);
|
||||
|
||||
|
||||
save_pointer(NAME(m_protection_ram), 0x1000/2);
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ public:
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_tilemap(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 draw_flag);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
|
||||
INTERRUPT_GEN_MEMBER(vblank_irq);
|
||||
};
|
||||
|
||||
@ -247,7 +247,7 @@ UINT32 mirax_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
|
||||
void mirax_state::machine_start()
|
||||
{
|
||||
m_nAyCtrl = 0x00;
|
||||
|
||||
|
||||
save_item(NAME(m_nAyCtrl));
|
||||
save_item(NAME(m_nmi_mask));
|
||||
save_item(NAME(m_flipscreen_x));
|
||||
|
@ -779,7 +779,7 @@ static MACHINE_CONFIG_DERIVED( musobana, niyanpai )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(musobana_map)
|
||||
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(niyanpai_state, musobana)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -157,18 +157,18 @@ public:
|
||||
|
||||
tilemap_t *m_fg_tilemap;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER(fgram_w);
|
||||
DECLARE_WRITE8_MEMBER(bgram_w);
|
||||
DECLARE_WRITE8_MEMBER(port4_w);
|
||||
DECLARE_WRITE8_MEMBER(sound_w);
|
||||
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void video_start();
|
||||
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
};
|
||||
|
||||
|
@ -71,7 +71,7 @@ public:
|
||||
DECLARE_MACHINE_RESET(themj);
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
};
|
||||
|
||||
@ -102,7 +102,7 @@ void rmhaihai_state::video_start()
|
||||
{
|
||||
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(rmhaihai_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS,
|
||||
8, 8, 64, 32);
|
||||
|
||||
|
||||
save_item(NAME(m_keyboard_cmd));
|
||||
save_item(NAME(m_gfxbank));
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ WRITE8_MEMBER(seicross_state::portB_w)
|
||||
m_irq_mask = data & 1;
|
||||
|
||||
/* bit 1 flips screen */
|
||||
|
||||
|
||||
/* bit 2 resets the microcontroller */
|
||||
if (((m_portb & 4) == 0) && (data & 4))
|
||||
{
|
||||
|
@ -10481,13 +10481,13 @@ ROM_START( daiohc ) /* Found on a 93111A PCB - same PCB as War of Areo & J. J. S
|
||||
ROM_LOAD( "6.u6", 0x080000, 0x080000, CRC(9ad8b4b4) SHA1(b6e4cff160ae0efe6f3fd0df9a8a618957c3ce61) )
|
||||
ROM_LOAD( "7.u7", 0x100000, 0x080000, CRC(babf194a) SHA1(ef838aab2d651c10553fb87552c67f289a8ac83d) )
|
||||
ROM_LOAD( "8.u8", 0x180000, 0x080000, CRC(2db65290) SHA1(4f4d65e984fad7bb1d886de67bc50645798282bb) )
|
||||
|
||||
|
||||
ROM_REGION( 0x200000, "gfx3", 0 ) /* Layer 2 */
|
||||
ROM_LOAD( "1.u1", 0x000000, 0x080000, CRC(30f81f99) SHA1(9c164c798c7e869e92505d9d85f06f4a1c9a9528) ) /* connects to U68 through a riser card */
|
||||
ROM_LOAD( "2.u2", 0x080000, 0x080000, CRC(3b3e0f4e) SHA1(740afe4eefea480f941dd80a03392592d8d4b084) )
|
||||
ROM_LOAD( "3.u3", 0x100000, 0x080000, CRC(c5eef1c1) SHA1(d4b3188b39bad5c7a2c7b7dbc91a79c7ee80a3a1) )
|
||||
ROM_LOAD( "4.u4", 0x180000, 0x080000, CRC(851115b6) SHA1(b8e1e22231d131085c90afcf30ff35a2866edff5) )
|
||||
|
||||
|
||||
ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples */
|
||||
ROM_LOAD( "data.u69", 0x000000, 0x080000, CRC(21e4f093) SHA1(f0420d158dc5d182e41b6fb2ea3af6baf88bacb8) )
|
||||
ROM_LOAD( "data.u70", 0x080000, 0x080000, CRC(593c3c58) SHA1(475fb530a6d23269cb0aea6e294291c7463b57a2) )
|
||||
|
@ -117,9 +117,9 @@ public:
|
||||
required_shared_ptr<UINT8> m_main;
|
||||
required_shared_ptr<UINT8> m_vram;
|
||||
required_shared_ptr<UINT8> m_cram;
|
||||
|
||||
|
||||
tilemap_t *m_sc0_tilemap;
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER(vram_w);
|
||||
DECLARE_WRITE8_MEMBER(cram_w);
|
||||
DECLARE_READ8_MEMBER(spool99_io_r);
|
||||
@ -127,10 +127,10 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(eeprom_resetline_w);
|
||||
DECLARE_WRITE8_MEMBER(eeprom_clockline_w);
|
||||
DECLARE_WRITE8_MEMBER(eeprom_dataline_w);
|
||||
|
||||
|
||||
DECLARE_DRIVER_INIT(spool99);
|
||||
virtual void video_start();
|
||||
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info);
|
||||
};
|
||||
|
@ -282,7 +282,7 @@ void stactics_state::machine_start()
|
||||
m_vert_pos = 0;
|
||||
m_horiz_pos = 0;
|
||||
*m_motor_on = 0;
|
||||
|
||||
|
||||
save_item(NAME(m_vert_pos));
|
||||
save_item(NAME(m_horiz_pos));
|
||||
}
|
||||
|
@ -40,7 +40,7 @@
|
||||
Minimal Winner Hand (Jacks or Better, Two Pair).
|
||||
Deal Speed (Slow, Fast).
|
||||
Aces Type (Normal Aces, Number 1).
|
||||
Cards Deck Type (english cards, french cards).
|
||||
Cards Deck Type (English cards, French cards).
|
||||
Max Bet (5, 10, 15, 20).
|
||||
- Added NVRAM support.
|
||||
- Reorganized and cleaned-up the driver.
|
||||
|
@ -1250,7 +1250,7 @@ DRIVER_INIT_MEMBER(thepit_state,rtriv)
|
||||
{
|
||||
// Set-up the weirdest questions read ever done
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x4fff, read8_delegate(FUNC(thepit_state::rtriv_question_r),this));
|
||||
|
||||
|
||||
save_item(NAME(m_question_address));
|
||||
save_item(NAME(m_question_rom));
|
||||
save_item(NAME(m_remap_address));
|
||||
|
@ -437,8 +437,8 @@ WRITE16_MEMBER(ttchamp_state::ttchamp_mem_w)
|
||||
{
|
||||
if (m_port10 & 0x30) // this is set when moving objects are cleared, although not screen clears?
|
||||
{
|
||||
/* guess: assume that bit 4 is for layer 0 and bit 5 for layer 1
|
||||
(according to 0x21 setted at the "Clubs League" color fade-out)
|
||||
/* guess: assume that bit 4 is for layer 0 and bit 5 for layer 1
|
||||
(according to 0x21 setted at the "Clubs League" color fade-out)
|
||||
*/
|
||||
if(m_port10 & 0x10)
|
||||
m_videoram0[offset] = 0x0000;
|
||||
@ -450,7 +450,7 @@ WRITE16_MEMBER(ttchamp_state::ttchamp_mem_w)
|
||||
else
|
||||
{
|
||||
UINT8 data;
|
||||
|
||||
|
||||
data = (src[(m_spritesaddr * 2) + 1]);
|
||||
//data |= vram[offset] >> 8;
|
||||
|
||||
@ -636,7 +636,7 @@ static MACHINE_CONFIG_START( ttchamp, ttchamp_state )
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 0x400)
|
||||
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("backram")
|
||||
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(input_r);
|
||||
DECLARE_WRITE8_MEMBER(output_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(timer_out);
|
||||
|
||||
|
||||
virtual void machine_start();
|
||||
DECLARE_PALETTE_INIT(horse);
|
||||
|
||||
|
@ -152,7 +152,7 @@ void warpspeed_state::video_start()
|
||||
m_text_tilemap->set_transparent_pen(0);
|
||||
m_starfield_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(warpspeed_state::get_starfield_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
|
||||
m_starfield_tilemap->mark_all_dirty();
|
||||
|
||||
|
||||
save_item(NAME(m_regs));
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
The template family tree is an attempt to ease the pain to write CPUs/drivers/devices
|
||||
from scratch (especially for smaller projects).
|
||||
The template family tree is an attempt to ease the pain to write CPUs/drivers/devices
|
||||
from scratch (especially for smaller projects).
|
||||
|
||||
===
|
||||
Usage:
|
||||
|
@ -31,14 +31,14 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(videoram2_w);
|
||||
DECLARE_WRITE16_MEMBER(videoram3_w);
|
||||
|
||||
|
||||
TILEMAP_MAPPER_MEMBER(bg_scan);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_tile2_info);
|
||||
TILE_GET_INFO_MEMBER(get_tile3_info);
|
||||
|
||||
|
||||
virtual void video_start();
|
||||
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
};
|
||||
|
@ -58,7 +58,7 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(spritebuffer_w);
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_pf_tile_info);
|
||||
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(scanline_interrupt);
|
||||
|
||||
DECLARE_DRIVER_INIT(firebarr);
|
||||
|
@ -67,12 +67,12 @@ public:
|
||||
|
||||
// majtitle specific
|
||||
int m_majtitle_rowscroll;
|
||||
|
||||
|
||||
// m72_i8751 specific
|
||||
UINT8 m_mcu_snd_cmd_latch;
|
||||
UINT8 m_mcu_sample_latch;
|
||||
UINT32 m_mcu_sample_addr;
|
||||
|
||||
|
||||
// common
|
||||
DECLARE_READ16_MEMBER(palette1_r);
|
||||
DECLARE_READ16_MEMBER(palette2_r);
|
||||
@ -82,7 +82,7 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(videoram2_w);
|
||||
DECLARE_READ16_MEMBER(soundram_r);
|
||||
DECLARE_WRITE16_MEMBER(soundram_w);
|
||||
|
||||
|
||||
// m72_i8751 specific
|
||||
DECLARE_WRITE16_MEMBER(main_mcu_sound_w);
|
||||
DECLARE_WRITE16_MEMBER(main_mcu_w);
|
||||
@ -118,14 +118,14 @@ public:
|
||||
DECLARE_READ16_MEMBER(poundfor_trackball_r);
|
||||
DECLARE_WRITE16_MEMBER(rtype2_port02_w);
|
||||
DECLARE_WRITE16_MEMBER(majtitle_gfx_ctrl_w);
|
||||
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(hharry_get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(rtype2_get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(rtype2_get_fg_tile_info);
|
||||
TILEMAP_MAPPER_MEMBER(majtitle_scan_rows);
|
||||
|
||||
|
||||
void machine_start();
|
||||
void machine_reset();
|
||||
DECLARE_VIDEO_START(m72);
|
||||
@ -147,15 +147,15 @@ public:
|
||||
DECLARE_DRIVER_INIT(nspirit);
|
||||
DECLARE_DRIVER_INIT(loht);
|
||||
DECLARE_DRIVER_INIT(imgfight);
|
||||
|
||||
|
||||
INTERRUPT_GEN_MEMBER(mcu_int);
|
||||
INTERRUPT_GEN_MEMBER(fake_nmi);
|
||||
TIMER_CALLBACK_MEMBER(synch_callback);
|
||||
TIMER_CALLBACK_MEMBER(scanline_interrupt);
|
||||
TIMER_CALLBACK_MEMBER(kengo_scanline_interrupt);
|
||||
TIMER_CALLBACK_MEMBER(delayed_ram16_w);
|
||||
|
||||
|
||||
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_majtitle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
inline void get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum);
|
||||
|
@ -24,23 +24,23 @@ public:
|
||||
tilemap_t *m_bg_tilemap;
|
||||
int m_sound_cpu_busy;
|
||||
UINT32 m_bg_tile_offset;
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER(sound_command_w);
|
||||
DECLARE_READ8_MEMBER(sound_ack_r);
|
||||
DECLARE_WRITE8_MEMBER(c600_w);
|
||||
DECLARE_WRITE8_MEMBER(fgram_w);
|
||||
DECLARE_WRITE8_MEMBER(bgram_w);
|
||||
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(sound_r);
|
||||
|
||||
|
||||
TILEMAP_MAPPER_MEMBER(marvins_tx_scan_cols);
|
||||
TILE_GET_INFO_MEMBER(get_tx_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void video_start();
|
||||
DECLARE_PALETTE_INIT(mainsnk);
|
||||
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int scrollx, int scrolly );
|
||||
};
|
||||
|
@ -346,7 +346,7 @@ const unsigned int ddZoneSecSize[16] = {232,216,208,192,176,160,144,128,
|
||||
216,208,192,176,160,144,128,112};
|
||||
const unsigned int ddZoneTrackSize[16] = {158,158,149,149,149,149,149,114,
|
||||
158,158,149,149,149,149,149,114};
|
||||
const unsigned int ddStartOffset[16] =
|
||||
const unsigned int ddStartOffset[16] =
|
||||
{0x0,0x5F15E0,0xB79D00,0x10801A0,0x1523720,0x1963D80,0x1D414C0,0x20BBCE0,
|
||||
0x23196E0,0x28A1E00,0x2DF5DC0,0x3299340,0x36D99A0,0x3AB70E0,0x3E31900,0x4149200};
|
||||
|
||||
|
@ -51,12 +51,12 @@ public:
|
||||
UINT8 *m_clut[VRAM_MAX];
|
||||
int m_flipscreen_old[VRAM_MAX];
|
||||
emu_timer *m_blitter_timer;
|
||||
|
||||
|
||||
// musobana and derived machine configs
|
||||
int m_musobana_inputport;
|
||||
int m_musobana_outcoin_flag;
|
||||
UINT8 m_motor_on;
|
||||
|
||||
|
||||
// common
|
||||
DECLARE_WRITE8_MEMBER(soundbank_w);
|
||||
DECLARE_WRITE8_MEMBER(soundlatch_clear_w);
|
||||
@ -76,7 +76,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(clutsel_1_w);
|
||||
DECLARE_WRITE8_MEMBER(clutsel_2_w);
|
||||
DECLARE_WRITE16_MEMBER(tmp68301_parallel_port_w);
|
||||
|
||||
|
||||
// musobana and derived machine configs
|
||||
DECLARE_READ16_MEMBER(musobana_inputport_0_r);
|
||||
DECLARE_WRITE16_MEMBER(musobana_inputport_w);
|
||||
|
@ -41,9 +41,9 @@ public:
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_0);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_1);
|
||||
TILEMAP_MAPPER_MEMBER(get_memory_offset_0);
|
||||
|
||||
|
||||
virtual void video_start();
|
||||
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
};
|
||||
|
@ -32,11 +32,11 @@ public:
|
||||
required_shared_ptr<UINT8> m_videoram_d;
|
||||
required_shared_ptr<UINT8> m_videoram_e;
|
||||
required_shared_ptr<UINT8> m_videoram_f;
|
||||
|
||||
|
||||
/* machine state */
|
||||
int m_vert_pos;
|
||||
int m_horiz_pos;
|
||||
|
||||
|
||||
/* video state */
|
||||
UINT8 m_y_scroll_d;
|
||||
UINT8 m_y_scroll_e;
|
||||
|
@ -39,10 +39,10 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(flip_screen_x_w);
|
||||
DECLARE_WRITE8_MEMBER(flip_screen_y_w);
|
||||
DECLARE_READ8_MEMBER(input_port_0_r);
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(intrepid_colorram_mirror_r);
|
||||
DECLARE_WRITE8_MEMBER(intrepid_graphics_bank_w);
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(rtriv_question_r);
|
||||
|
||||
TILE_GET_INFO_MEMBER(solid_get_tile_info);
|
||||
@ -57,6 +57,6 @@ public:
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_desertdan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority_to_draw);
|
||||
|
||||
|
||||
INTERRUPT_GEN_MEMBER(vblank_irq);
|
||||
};
|
||||
|
@ -25,7 +25,7 @@ public:
|
||||
UINT8 m_control;
|
||||
tilemap_t *m_fg_tilemap;
|
||||
bitmap_ind16 m_tmpbitmap;
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER(control_w);
|
||||
DECLARE_READ8_MEMBER(button_r);
|
||||
DECLARE_WRITE8_MEMBER(videoram_w);
|
||||
@ -34,7 +34,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(dsw2_2r);
|
||||
DECLARE_READ8_MEMBER(dsw2_3r);
|
||||
DECLARE_READ8_MEMBER(dsw2_4r);
|
||||
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
|
||||
virtual void video_start();
|
||||
|
@ -899,7 +899,7 @@ static const struct game_keys keys_table[] =
|
||||
{ "sfz2alj", { 0x99450c88,0xa00a2c4d }, 0x100000 }, // 0C80 8E73 9110 cmpi.l #$8E739110,D0
|
||||
{ "sfz2alh", { 0x95f15b7c,0x200c08c6 }, 0x100000 }, // 0C80 8E73 9110 cmpi.l #$8E739110,D0
|
||||
{ "sfz2alb", { 0x73cd4a28,0xff83af1c }, 0x100000 }, // 0C80 8E73 9110 cmpi.l #$8E739110,D0
|
||||
{ "spf2t", { 0xdde26f09,0x55821ee7 }, 0x040000 }, // 0C80 3039 9819 cmpi.l #$30399819,D0
|
||||
{ "spf2t", { 0xdde26f09,0x55821ee7 }, 0x040000 }, // 0C80 3039 9819 cmpi.l #$30399819,D0
|
||||
{ "spf2tu", { 0x706a8750,0x7d0fc185 }, 0x040000 }, // 0C80 3039 9819 cmpi.l #$30399819,D0
|
||||
{ "spf2xj", { 0xb12c835a,0xe90976ff }, 0x040000 }, // 0C80 3039 9819 cmpi.l #$30399819,D0
|
||||
{ "spf2ta", { 0x9c48e1ab,0xd60f34fb }, 0x040000 }, // 0C80 3039 9819 cmpi.l #$30399819,D0
|
||||
|
@ -141,12 +141,12 @@ void m107_state::video_start()
|
||||
}
|
||||
|
||||
m_buffered_spriteram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
|
||||
|
||||
|
||||
save_item(NAME(m_sprite_display));
|
||||
save_item(NAME(m_raster_irq_position));
|
||||
save_item(NAME(m_control));
|
||||
save_pointer(NAME(m_buffered_spriteram), 0x1000/2);
|
||||
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
save_item(NAME(m_pf_layer[i].vram_base), i);
|
||||
|
@ -178,7 +178,7 @@ VIDEO_START_MEMBER(m72_state,poundfor)
|
||||
m_bg_tilemap->set_scrolldx(6,0);
|
||||
m_fg_tilemap->set_scrolldy(-128,-128);
|
||||
m_bg_tilemap->set_scrolldy(-128,-128);
|
||||
|
||||
|
||||
save_item(NAME(m_prev));
|
||||
save_item(NAME(m_diff));
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ void mainsnk_state::video_start()
|
||||
|
||||
m_bg_tilemap->set_scrolldx(16, 16);
|
||||
m_bg_tilemap->set_scrolldy(8, 8);
|
||||
|
||||
|
||||
save_item(NAME(m_bg_tile_offset));
|
||||
}
|
||||
|
||||
|
@ -371,7 +371,7 @@ void niyanpai_state::video_start()
|
||||
m_clut[2] = auto_alloc_array(machine(), UINT8, 0x1000);
|
||||
m_nb19010_busyflag = 1;
|
||||
m_blitter_timer = timer_alloc(TIMER_BLITTER);
|
||||
|
||||
|
||||
save_item(NAME(m_scrollx));
|
||||
save_item(NAME(m_scrolly));
|
||||
save_item(NAME(m_blitter_destx));
|
||||
|
@ -68,7 +68,7 @@ void portrait_state::video_start()
|
||||
m_foreground = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(portrait_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32 );
|
||||
|
||||
m_foreground->set_transparent_pen(7);
|
||||
|
||||
|
||||
save_item(NAME(m_scroll));
|
||||
}
|
||||
|
||||
|
@ -168,7 +168,7 @@ void powerins_state::video_start()
|
||||
m_tilemap_1->set_scroll_rows(1);
|
||||
m_tilemap_1->set_scroll_cols(1);
|
||||
m_tilemap_1->set_transparent_pen(15);
|
||||
|
||||
|
||||
save_item(NAME(m_tile_bank));
|
||||
}
|
||||
|
||||
|
@ -363,7 +363,7 @@ void stactics_state::video_start()
|
||||
m_shot_arrive = 0;
|
||||
m_beam_state = 0;
|
||||
m_old_beam_state = 0;
|
||||
|
||||
|
||||
save_item(NAME(m_y_scroll_d));
|
||||
save_item(NAME(m_y_scroll_e));
|
||||
save_item(NAME(m_y_scroll_f));
|
||||
|
@ -136,7 +136,7 @@ void thepit_state::video_start()
|
||||
m_dummy_tile = auto_alloc_array_clear(machine(), UINT8, 8*8);
|
||||
|
||||
m_graphics_bank = 0; /* only used in intrepid */
|
||||
|
||||
|
||||
save_item(NAME(m_graphics_bank));
|
||||
save_item(NAME(m_flip_x));
|
||||
save_item(NAME(m_flip_y));
|
||||
|
@ -78,7 +78,7 @@ void tunhunt_state::video_start()
|
||||
|
||||
m_fg_tilemap->set_transparent_pen(0);
|
||||
m_fg_tilemap->set_scrollx(0, 64);
|
||||
|
||||
|
||||
save_item(NAME(m_control));
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/***************************************************************************
|
||||
|
||||
commodore c65 home computer
|
||||
Commodore C65 home computer
|
||||
PeT mess@utanet.at
|
||||
|
||||
documention
|
||||
@ -256,7 +256,7 @@ static INPUT_PORTS_START( c65 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Mouse 1350 Button 2") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
/* Still to verify how many mices you were able to plug into a c64 */
|
||||
/* Still to verify how many mice you were able to plug into a C64 */
|
||||
/* Only one, for now */
|
||||
PORT_START("JOY2_2B")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
@ -69,7 +69,7 @@ void elecbowl_state::prepare_display()
|
||||
m_display_state[5] = (m_display_state[5] & ~mask) | d;
|
||||
if (~m_r & 4)
|
||||
m_display_state[6] = (m_display_state[6] & ~mask) | d;
|
||||
|
||||
|
||||
// digit 4 is from mux2 Q7
|
||||
m_display_segmask[4] = 6;
|
||||
m_display_state[4] = (m_display_state[6] & 0x80) ? 6 : 0;
|
||||
@ -173,7 +173,7 @@ static const UINT16 elecbowl_output_pla[0x20] =
|
||||
lA+lB+lC, // 7
|
||||
lA+lB+lC+lD+lE+lF+lG, // 8
|
||||
lA+lB+lG+lF+lC+lD, // 9
|
||||
|
||||
|
||||
0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
|
||||
0,1,2,3,4,5,6,7, // lamp muxes select
|
||||
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f
|
||||
|
@ -74,9 +74,9 @@ PB.6 - enable language switches (W, see below)
|
||||
PB.7 - TSI DONE line (R)
|
||||
|
||||
(button rows pulled up to 5V through 2.2K resistors)
|
||||
PC.0 - button row 0, german language jumper (R)
|
||||
PC.1 - button row 1, french language jumper (R)
|
||||
PC.2 - button row 2, spanish language jumper (R)
|
||||
PC.0 - button row 0, German language jumper (R)
|
||||
PC.1 - button row 1, French language jumper (R)
|
||||
PC.2 - button row 2, Spanish language jumper (R)
|
||||
PC.3 - button row 3, special language jumper (R)
|
||||
PC.4 - button column A (W)
|
||||
PC.5 - button column B (W)
|
||||
@ -90,20 +90,20 @@ language switches:
|
||||
When PB.6 is pulled low, the language switches can be read. There are four.
|
||||
They connect to the button rows. When enabled, the row(s) will read low if
|
||||
the jumper is present. English only VCC's do not have the 367 or any pads stuffed.
|
||||
The jumpers are labelled: french, german, spanish, and special.
|
||||
The jumpers are labelled: French, German, Spanish, and special.
|
||||
|
||||
|
||||
language latch:
|
||||
---------------
|
||||
|
||||
There's an unstuffed 7474 on the board that connects to PA.6 and PA.7. It allows
|
||||
one to latch the state of A12 to the speech ROM. The english version has the chip
|
||||
one to latch the state of A12 to the speech ROM. The English version has the chip
|
||||
missing, and a jumper pulling "A12" to ground. This line is really a negative
|
||||
enable.
|
||||
|
||||
To make the VCC multi-language, one would install the 74367 (note: it must be a 74367
|
||||
or possibly a 74LS367. A 74HC367 would not work since they rely on the input current
|
||||
to keep the inputs pulled up), solder a piggybacked ROM to the existing english
|
||||
to keep the inputs pulled up), solder a piggybacked ROM to the existing English
|
||||
speech ROM, and finally install a 7474 dual flipflop.
|
||||
|
||||
This way, the game can then detect which secondary language is present, and then it can
|
||||
@ -569,7 +569,7 @@ selection jumpers:
|
||||
|
||||
These act like another row of buttons. It is composed of two diode locations,
|
||||
so there's up to 4 possible configurations. My board does not have either diode
|
||||
stuffed, so this most likely is "english". I suspect it selects which language to use
|
||||
stuffed, so this most likely is "English". I suspect it selects which language to use
|
||||
for the speech synth. Of course you need the other speech ROMs for this to function
|
||||
properly.
|
||||
|
||||
|
@ -187,7 +187,7 @@ void hh_hmcs40_state::display_update()
|
||||
int state = active_state[y] >> x & 1;
|
||||
char buf1[0x10]; // lampyx
|
||||
char buf2[0x10]; // y.x
|
||||
|
||||
|
||||
if (x == m_display_maxx)
|
||||
{
|
||||
// always-on if selected
|
||||
@ -262,7 +262,7 @@ void hh_hmcs40_state::set_interrupt(int line, int state)
|
||||
{
|
||||
line = line ? 1 : 0;
|
||||
state = state ? 1 : 0;
|
||||
|
||||
|
||||
if (state != m_int[line])
|
||||
{
|
||||
if (machine().phase() >= MACHINE_PHASE_RESET)
|
||||
@ -531,7 +531,7 @@ WRITE8_MEMBER(zackman_state::plate_w)
|
||||
// R0x-R6x,D0,D1: vfd matrix plate
|
||||
int shift = offset * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
|
||||
// update display
|
||||
UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
|
||||
UINT32 plate = BITSWAP32(m_plate,31,30,27,0,1,2,3,4,5,6,7,8,9,10,11,24,25,26,29,28,23,22,21,20,19,18,17,16,15,14,13,12);
|
||||
@ -550,10 +550,10 @@ WRITE16_MEMBER(zackman_state::grid_w)
|
||||
m_inp_mux = inp_mux;
|
||||
update_int0();
|
||||
}
|
||||
|
||||
|
||||
// D8-D15: vfd matrix grid
|
||||
m_grid = data >> 8 & 0xff;
|
||||
|
||||
|
||||
// D0,D1: plate 12,13 (update display there)
|
||||
plate_w(space, 7, data & 3);
|
||||
}
|
||||
@ -784,7 +784,7 @@ WRITE8_MEMBER(cdkong_state::plate_w)
|
||||
// R13: speaker on
|
||||
if (offset == HMCS40_PORT_R1X && data & 8)
|
||||
m_speaker_volume = CDKONG_SPEAKER_MAX;
|
||||
|
||||
|
||||
// R0x-R6x: vfd matrix plate
|
||||
int shift = offset * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
@ -843,7 +843,7 @@ static MACHINE_CONFIG_START( cdkong, cdkong_state )
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("speaker_decay", cdkong_state, speaker_decay_sim, attotime::from_msec(CDKONG_SPEAKER_DECAY))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
|
||||
|
||||
|
||||
/* no video! */
|
||||
|
||||
/* sound hardware */
|
||||
@ -899,7 +899,7 @@ WRITE8_MEMBER(cgalaxn_state::grid_w)
|
||||
{
|
||||
// D0: speaker out
|
||||
m_speaker->level_w(data & 1);
|
||||
|
||||
|
||||
// D1: speaker on?
|
||||
|
||||
// D2-D15: vfd matrix plate
|
||||
@ -912,7 +912,7 @@ WRITE16_MEMBER(cgalaxn_state::plate_w)
|
||||
// R10,R11: input mux
|
||||
if (offset == HMCS40_PORT_R1X)
|
||||
m_inp_mux = data & 3;
|
||||
|
||||
|
||||
// R1x-R3x: vfd matrix grid
|
||||
int shift = (offset - HMCS40_PORT_R1X) * 4;
|
||||
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
|
||||
@ -979,7 +979,7 @@ MACHINE_CONFIG_END
|
||||
* board label Coleco 75690
|
||||
* Hitachi HD38820A28/29 MCU
|
||||
* cyan/red VFD display Futaba DM-34Z 2A, with color overlay
|
||||
|
||||
|
||||
known releases:
|
||||
- Japan: Super Pack Monster, by Gakken
|
||||
- USA: Pac-Man, published by Coleco (name-license from Midway)
|
||||
@ -1105,7 +1105,7 @@ MACHINE_CONFIG_END
|
||||
- P1 Left: Ms. Pac-Man (default game)
|
||||
- P1 Down: Head-to-Head Ms. Pac-Man (2-player mode)
|
||||
- P1 Up: Demo
|
||||
|
||||
|
||||
BTANB note: in demo-mode, she hardly ever walks to the upper two rows
|
||||
|
||||
NOTE!: MESS external artwork is recommended
|
||||
@ -1439,7 +1439,7 @@ WRITE8_MEMBER(pbqbert_state::plate_w)
|
||||
// R0x-R6x,D8: vfd matrix plate
|
||||
int shift = offset * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
|
||||
// update display
|
||||
UINT32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23);
|
||||
display_matrix(30, 8, plate, m_grid);
|
||||
@ -1553,10 +1553,10 @@ WRITE16_MEMBER(kingman_state::grid_w)
|
||||
m_inp_mux = inp_mux;
|
||||
update_int0();
|
||||
}
|
||||
|
||||
|
||||
// D7-D15: vfd matrix grid
|
||||
m_grid = data >> 7 & 0x1ff;
|
||||
|
||||
|
||||
// D0-D4: more plates
|
||||
m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000);
|
||||
prepare_display();
|
||||
@ -1674,10 +1674,10 @@ WRITE16_MEMBER(tmtron_state::grid_w)
|
||||
m_inp_mux = inp_mux;
|
||||
update_int1();
|
||||
}
|
||||
|
||||
|
||||
// D6-D15: vfd matrix grid
|
||||
m_grid = data >> 6 & 0x3ff;
|
||||
|
||||
|
||||
// D0-D3,D5: more plates
|
||||
m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x2f0000);
|
||||
prepare_display();
|
||||
|
@ -147,7 +147,7 @@ void hh_pic16_state::display_update()
|
||||
int state = active_state[y] >> x & 1;
|
||||
char buf1[0x10]; // lampyx
|
||||
char buf2[0x10]; // y.x
|
||||
|
||||
|
||||
if (x == m_display_maxx)
|
||||
{
|
||||
// always-on if selected
|
||||
|
@ -181,7 +181,7 @@ void hh_tms1k_state::display_update()
|
||||
int state = active_state[y] >> x & 1;
|
||||
char buf1[0x10]; // lampyx
|
||||
char buf2[0x10]; // y.x
|
||||
|
||||
|
||||
if (x == m_display_maxx)
|
||||
{
|
||||
// always-on if selected
|
||||
@ -1346,7 +1346,7 @@ MACHINE_CONFIG_END
|
||||
Ideal Electronic Detective
|
||||
* TMS0980NLL MP6100A (die labeled 0980B-00)
|
||||
* 10-digit 7seg LED display, 1bit sound
|
||||
|
||||
|
||||
hardware (and concept) is very similar to Parker Bros Stop Thief
|
||||
|
||||
This is an electronic board game. It requires game cards with suspect info,
|
||||
@ -1638,7 +1638,7 @@ WRITE16_MEMBER(astro_state::write_r)
|
||||
{
|
||||
// R0-R7: input mux
|
||||
m_inp_mux = data & 0xff;
|
||||
|
||||
|
||||
// R0-R9: led select
|
||||
m_r = data;
|
||||
prepare_display();
|
||||
@ -1965,13 +1965,13 @@ WRITE16_MEMBER(ssimon_state::write_r)
|
||||
{
|
||||
// R0-R3,R9,R10: input mux
|
||||
m_inp_mux = (data & 0xf) | (data >> 5 & 0x30);
|
||||
|
||||
|
||||
// R4: yellow lamps
|
||||
// R5: green lamps
|
||||
// R6: blue lamps
|
||||
// R7: red lamps
|
||||
display_matrix(4, 1, data >> 4, 1);
|
||||
|
||||
|
||||
// R8: speaker out
|
||||
m_speaker->level_w(data >> 8 & 1);
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ void hh_ucom4_state::display_update()
|
||||
int state = active_state[y] >> x & 1;
|
||||
char buf1[0x10]; // lampyx
|
||||
char buf2[0x10]; // y.x
|
||||
|
||||
|
||||
if (x == m_display_maxx)
|
||||
{
|
||||
// always-on if selected
|
||||
|
@ -8148,10 +8148,10 @@ COMP(1986, ax170, 0, 0, ax170, msx, driver_device, 0, "Al
|
||||
COMP(1983, canonv8, 0, 0, canonv8, msx, driver_device, 0, "Canon", "V-8 (MSX1)", 0)
|
||||
COMP(1983, canonv10, canonv20, 0, canonv10, msx, driver_device, 0, "Canon", "V-10 (MSX1)", 0)
|
||||
COMP(1983, canonv20, 0, 0, canonv20, msx, driver_device, 0, "Canon", "V-20 (MSX1)", 0)
|
||||
COMP(1983, canonv20e, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20E (MSX1)", 0) // Different euro keyboard layout?
|
||||
COMP(1983, canonv20f, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20F (MSX1)", 0) // Different french keyboard layout?
|
||||
COMP(1983, canonv20g, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20G (MSX1)", 0) // Different german keyboard layout?
|
||||
COMP(1983, canonv20s, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20S (MSX1)", 0) // Different spanish keyboard layout?
|
||||
COMP(1983, canonv20e, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20E (MSX1)", 0) // Different Euro keyboard layout?
|
||||
COMP(1983, canonv20f, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20F (MSX1)", 0) // Different French keyboard layout?
|
||||
COMP(1983, canonv20g, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20G (MSX1)", 0) // Different German keyboard layout?
|
||||
COMP(1983, canonv20s, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20S (MSX1)", 0) // Different Spanish keyboard layout?
|
||||
COMP(1984, mx10, 0, 0, mx10, msx, driver_device, 0, "Casio", "MX-10 (MSX1)", 0)
|
||||
COMP(1984, mx101, mx10, 0, mx101, msx, driver_device, 0, "Casio", "MX-101 (MSX1)", 0)
|
||||
COMP(1984, mx15, mx10, 0, mx15, msx, driver_device, 0, "Casio", "MX-15 (MSX1)", 0)
|
||||
|
@ -1833,7 +1833,6 @@ static MACHINE_CONFIG_START( pc88va, pc88va_state )
|
||||
MCFG_AM9517A_IN_MEMR_CB(READ8(pc88va_state, dma_memr_cb))
|
||||
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(pc88va_state, dma_memw_cb))
|
||||
|
||||
|
||||
MCFG_UPD765A_ADD("upd765", false, true)
|
||||
MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(pc88va_state, fdc_irq))
|
||||
MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(pc88va_state, fdc_drq))
|
||||
|
0
src/mess/drivers/ti85.c
Executable file → Normal file
0
src/mess/drivers/ti85.c
Executable file → Normal file
@ -85,7 +85,7 @@ void tisr16_state::prepare_display()
|
||||
// exponent sign is from R10 O1, and R10 itself only uses segment G
|
||||
m_display_state[11] = m_display_state[10] << 5 & 0x40;
|
||||
m_display_state[10] &= 0x40;
|
||||
|
||||
|
||||
set_display_size(8, 12);
|
||||
display_update();
|
||||
}
|
||||
@ -651,7 +651,7 @@ MACHINE_CONFIG_END
|
||||
TI Little Professor (1978 version)
|
||||
* TMS1990 MCU labeled TMC1993NL. die labeled 1990C-c3C
|
||||
* 9-digit 7seg LED display(one custom digit)
|
||||
|
||||
|
||||
1978 re-release, with on/off and level select on buttons instead of
|
||||
switches. The casing was slightly revised in 1980 again, but same rom.
|
||||
|
||||
|
@ -338,7 +338,7 @@ void tispeak_state::machine_start()
|
||||
{
|
||||
hh_tms1k_state::machine_start();
|
||||
memset(m_display_segmask, ~0, sizeof(m_display_segmask)); // !
|
||||
|
||||
|
||||
init_cartridge();
|
||||
}
|
||||
|
||||
@ -606,11 +606,11 @@ INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( snread )
|
||||
PORT_INCLUDE( snspell )
|
||||
|
||||
|
||||
PORT_MODIFY("IN.7")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Word Zapper")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Word Maker")
|
||||
|
||||
|
||||
PORT_MODIFY("IN.8")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Read It")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Picture Read")
|
||||
|
@ -482,8 +482,8 @@ MACHINE_CONFIG_END
|
||||
WP keyboard, has 23-094E2 alt charset rom, 23-093E2 AVO rom.
|
||||
* VT100-WY/WZ - has AVO board preinstalled, WP romset?, English
|
||||
WP keyboard, has 23-094E2 alt charset rom, 23-093E2 AVO rom.
|
||||
The WP romset supports english, french, dutch and german languages but
|
||||
will only display text properly in the non-english languages if the
|
||||
The WP romset supports English, French, Dutch and German languages but
|
||||
will only display text properly in the non-English languages if the
|
||||
23-094E2 alt charset rom AND the foreign language 23-093E2
|
||||
AVO rom are populated.
|
||||
* VT100-NA/NB - ? romset with DECFORM keycaps
|
||||
@ -557,7 +557,7 @@ MACHINE_CONFIG_END
|
||||
23-095e2,096e2,139e2,140e2 set and probably others as well)
|
||||
* The vt100/101/102/103/etc 23-018e2-00 character set rom at location e4 is a 24 pin 2316 mask rom with enables as such: pin 18: CS2; pin 20: /CS1; pin 21: /CS3
|
||||
* The optional 23-094e2-00 alternate character set rom at location e9 is a 24 pin 2316 mask rom with enables as such: pin 18: /CS2; pin 20: /CS1; pin 21: /CS3
|
||||
Supposedly the 23-094e2 rom is meant for vt100-WC or -WF systems, (which are french canadian and french respectively), implying that it has european language specific accented characters on it. It is probably used in all the -W* systems.
|
||||
Supposedly the 23-094e2 rom is meant for vt100-WC or -WF systems, (which are French Canadian and French respectively), implying that it has European language specific accented characters on it. It is probably used in all the -W* systems.
|
||||
Pin 21 can be jumpered to +5v for this socket at location e9 by removing jumper w4 and inserting jumper w5, allowing a normal 2716 eprom to be used.
|
||||
* The optional AVO character set roms (see below) have: pin 18: /CS2*; pin 20: /CS1; pin 21: CS3 hence they match a normal 2716
|
||||
*(this is marked on the image as if it was CS2 but the input is tied to gnd meaning it must be /CS2)
|
||||
|
0
src/mess/includes/ti85.h
Executable file → Normal file
0
src/mess/includes/ti85.h
Executable file → Normal file
@ -1,4 +1,4 @@
|
||||
/* CD controller code from megacd.c, used by Sega Cd / Mega CD */
|
||||
/* CD controller code from megacd.c, used by Sega CD / Mega CD */
|
||||
|
||||
/* todo: cleanup(!!), make more generic, unifiy implementation with NeoCD, turn into a device and move to the proper lc89510.c file
|
||||
currently this is a bit of a mix of system specific bits, incomplete implementations etc. as well as a rather kludgy combination
|
||||
@ -217,7 +217,7 @@ void lc89510_temp_device::CDD_GetPos(void)
|
||||
CLEAR_CDD_RESULT
|
||||
UINT32 msf;
|
||||
CDD_STATUS &= 0xFF;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
CDD_STATUS |= SCD_STATUS;
|
||||
msf = lba_to_msf_alt(SCD_CURLBA+150);
|
||||
@ -233,7 +233,7 @@ void lc89510_temp_device::CDD_GetTrackPos(void)
|
||||
UINT32 msf;
|
||||
CDD_STATUS &= 0xFF;
|
||||
// UINT32 end_msf = ;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
CDD_STATUS |= SCD_STATUS;
|
||||
elapsedlba = SCD_CURLBA - segacd.toc->tracks[ cdrom_get_track(segacd.cd, SCD_CURLBA) ].logframeofs;
|
||||
@ -248,7 +248,7 @@ void lc89510_temp_device::CDD_GetTrack(void)
|
||||
{
|
||||
CLEAR_CDD_RESULT
|
||||
CDD_STATUS &= 0xFF;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
CDD_STATUS |= SCD_STATUS;
|
||||
SCD_CURTRK = cdrom_get_track(segacd.cd, SCD_CURLBA)+1;
|
||||
@ -259,7 +259,7 @@ void lc89510_temp_device::CDD_Length(void)
|
||||
{
|
||||
CLEAR_CDD_RESULT
|
||||
CDD_STATUS &= 0xFF;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
CDD_STATUS |= SCD_STATUS;
|
||||
|
||||
@ -276,7 +276,7 @@ void lc89510_temp_device::CDD_FirstLast(void)
|
||||
{
|
||||
CLEAR_CDD_RESULT
|
||||
CDD_STATUS &= 0xFF;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
CDD_STATUS |= SCD_STATUS;
|
||||
CDD_MIN = 1; // first
|
||||
@ -291,7 +291,7 @@ void lc89510_temp_device::CDD_GetTrackAdr(void)
|
||||
int last_track = cdrom_get_last_track(segacd.cd);
|
||||
|
||||
CDD_STATUS &= 0xFF;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
CDD_STATUS |= SCD_STATUS;
|
||||
|
||||
@ -323,7 +323,7 @@ void lc89510_temp_device::CDD_GetTrackType(void)
|
||||
int last_track = cdrom_get_last_track(segacd.cd);
|
||||
|
||||
CDD_STATUS &= 0xFF;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
CDD_STATUS |= SCD_STATUS;
|
||||
|
||||
@ -359,7 +359,7 @@ void lc89510_temp_device::CDD_Play(running_machine &machine)
|
||||
CLEAR_CDD_RESULT
|
||||
UINT32 msf = getmsf_from_regs();
|
||||
SCD_CURLBA = msf_to_lba(msf)-150;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
UINT32 end_msf = segacd.toc->tracks[ cdrom_get_track(segacd.cd, SCD_CURLBA) + 1 ].logframeofs;
|
||||
SCD_CURTRK = cdrom_get_track(segacd.cd, SCD_CURLBA)+1;
|
||||
@ -384,7 +384,7 @@ void lc89510_temp_device::CDD_Seek(void)
|
||||
CLEAR_CDD_RESULT
|
||||
UINT32 msf = getmsf_from_regs();
|
||||
SCD_CURLBA = msf_to_lba(msf)-150;
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
SCD_CURTRK = cdrom_get_track(segacd.cd, SCD_CURLBA)+1;
|
||||
LC8951UpdateHeader();
|
||||
@ -417,7 +417,7 @@ void lc89510_temp_device::CDD_Resume(running_machine &machine)
|
||||
{
|
||||
CLEAR_CDD_RESULT
|
||||
STOP_CDC_READ
|
||||
if(segacd.cd == NULL) // no cd is there, bail out
|
||||
if(segacd.cd == NULL) // no CD is there, bail out
|
||||
return;
|
||||
SCD_CURTRK = cdrom_get_track(segacd.cd, SCD_CURLBA)+1;
|
||||
SCD_STATUS = CDD_PLAYINGCDDA;
|
||||
|
0
src/mess/machine/ti85.c
Executable file → Normal file
0
src/mess/machine/ti85.c
Executable file → Normal file
@ -12,24 +12,24 @@
|
||||
I don't know how close to this standard the character sets used by the
|
||||
911 VDT are.
|
||||
|
||||
The japanese terminal uses 8-bit character codes. The 128 first characters
|
||||
The Japanese terminal uses 8-bit character codes. The 128 first characters
|
||||
are identical to the US character set (except that '\' is replaced by the
|
||||
Yen symbol), and the next 128 characters include the katakana syllabus.
|
||||
Kanji ideograms are not supported in this scheme.
|
||||
|
||||
The arabic terminal uses 8-bit character codes, too. It requires
|
||||
The Arabic terminal uses 8-bit character codes, too. It requires
|
||||
additional code in the TI990 OS for correct operation, as the keyboard
|
||||
returns codes for isolated characters (i.e. without ligatures), which need
|
||||
to be substituted with codes with correct context-dependent ligatures.
|
||||
And both OS and application programs need to support the fact that the
|
||||
writing direction can be either right-to-left or left-to-right, according
|
||||
to whether the characters are latin or arabic.
|
||||
to whether the characters are Latin or Arabic.
|
||||
|
||||
As the original ROMs have not been dumped yet, I recreated the matrices
|
||||
from various matrix printouts in TI documentation.
|
||||
*/
|
||||
/*
|
||||
The arabic character set is not implemented, because documentation is ambiguous
|
||||
The Arabic character set is not implemented, because documentation is ambiguous
|
||||
(it says there are 115 characters, but I can hardly see 80 characters in the
|
||||
attached table), and the character matrices are not documented.
|
||||
*/
|
||||
@ -47,26 +47,26 @@ enum
|
||||
/* extra symbols for national character sets */
|
||||
char_defs_pound = char_defs_katakana_base+128, /* pound sign (UK 0x23, French WP 0x23) */
|
||||
char_defs_yen, /* yen sign (Japan 0x5C) */
|
||||
char_defs_auml, /* latin small letter a with diaeresis (Swedish/Finish 0x7B, German 0x7B) */
|
||||
char_defs_Auml, /* latin capital letter A with diaeresis (Swedish/Finish 0x5B, German 0x5B) */
|
||||
char_defs_Aring, /* latin capital letter A with ring above (Swedish/Finish 0x5D, Norwegian/Danish 0x5D) */
|
||||
char_defs_uuml, /* latin small letter u with diaeresis (Swedish/Finish 0x7E, German 0x7D) */
|
||||
char_defs_aring, /* latin small letter a with ring above (Swedish/Finish 0x7D, Norwegian/Danish 0x7D) */
|
||||
char_defs_Uuml, /* latin capital letter U with diaeresis (German 0x5D) */
|
||||
char_defs_ouml, /* latin small letter o with diaeresis (German 0x7C) */
|
||||
char_defs_Ouml, /* latin capital letter O with diaeresis (German 0x5C) */
|
||||
char_defs_szlig, /* latin small letter sharp s (German 0x7E) */
|
||||
char_defs_aelig, /* latin small letter ae (Norwegian/Danish 0x7B) */
|
||||
char_defs_AElig, /* latin capital letter AE (Norwegian/Danish 0x5B) */
|
||||
char_defs_oslash, /* latin small letter o with stroke (Norwegian/Danish 0x7C) */
|
||||
char_defs_Oslash, /* latin capital letter O with stroke (Norwegian/Danish 0x5C) */
|
||||
char_defs_agrave, /* latin small letter a with grave (French WP 0x40) */
|
||||
char_defs_auml, /* Latin small letter a with diaeresis (Swedish/Finish 0x7B, German 0x7B) */
|
||||
char_defs_Auml, /* Latin capital letter A with diaeresis (Swedish/Finish 0x5B, German 0x5B) */
|
||||
char_defs_Aring, /* Latin capital letter A with ring above (Swedish/Finish 0x5D, Norwegian/Danish 0x5D) */
|
||||
char_defs_uuml, /* Latin small letter u with diaeresis (Swedish/Finish 0x7E, German 0x7D) */
|
||||
char_defs_aring, /* Latin small letter a with ring above (Swedish/Finish 0x7D, Norwegian/Danish 0x7D) */
|
||||
char_defs_Uuml, /* Latin capital letter U with diaeresis (German 0x5D) */
|
||||
char_defs_ouml, /* Latin small letter o with diaeresis (German 0x7C) */
|
||||
char_defs_Ouml, /* Latin capital letter O with diaeresis (German 0x5C) */
|
||||
char_defs_szlig, /* Latin small letter sharp s (German 0x7E) */
|
||||
char_defs_aelig, /* Latin small letter ae (Norwegian/Danish 0x7B) */
|
||||
char_defs_AElig, /* Latin capital letter AE (Norwegian/Danish 0x5B) */
|
||||
char_defs_oslash, /* Latin small letter o with stroke (Norwegian/Danish 0x7C) */
|
||||
char_defs_Oslash, /* Latin capital letter O with stroke (Norwegian/Danish 0x5C) */
|
||||
char_defs_agrave, /* Latin small letter a with grave (French WP 0x40) */
|
||||
char_defs_deg, /* degree sign (French WP 0x5B) */
|
||||
char_defs_ccedil, /* latin small letter c with cedilla (French WP 0x5C) */
|
||||
char_defs_ccedil, /* Latin small letter c with cedilla (French WP 0x5C) */
|
||||
char_defs_sect, /* section sign (French WP 0x5D) */
|
||||
char_defs_egrave, /* latin small letter e with grave (French WP 0x7B) */
|
||||
char_defs_ugrave, /* latin small letter u with grave (French WP 0x7C) */
|
||||
char_defs_eacute, /* latin small letter e with acute (French WP 0x7D) */
|
||||
char_defs_egrave, /* Latin small letter e with grave (French WP 0x7B) */
|
||||
char_defs_ugrave, /* Latin small letter u with grave (French WP 0x7C) */
|
||||
char_defs_eacute, /* Latin small letter e with acute (French WP 0x7D) */
|
||||
char_defs_uml, /* diaeresis (French WP 0x7E) */
|
||||
|
||||
char_defs_count /* total character count */
|
||||
@ -87,13 +87,13 @@ static const char_override_t UK_overrides[1] =
|
||||
{ 0x23, char_defs_pound }
|
||||
};
|
||||
|
||||
/* One japan-specific character (see below for the 128 additionnal characters) */
|
||||
/* One Japan-specific character (see below for the 128 additionnal characters) */
|
||||
static const char_override_t japanese_overrides[1] =
|
||||
{
|
||||
{ 0x5C, char_defs_yen }
|
||||
};
|
||||
|
||||
/* 5 sweden/finland-specific characters */
|
||||
/* 5 Sweden/Finland-specific characters */
|
||||
static const char_override_t swedish_overrides[/*5*/7] =
|
||||
{
|
||||
{ 0x7B, char_defs_auml },
|
||||
@ -106,7 +106,7 @@ static const char_override_t swedish_overrides[/*5*/7] =
|
||||
{ 0x7C, char_defs_ouml }
|
||||
};
|
||||
|
||||
/* 7 german-specific characters */
|
||||
/* 7 German-specific characters */
|
||||
static const char_override_t german_overrides[7] =
|
||||
{
|
||||
{ 0x5D, char_defs_Uuml },
|
||||
@ -118,7 +118,7 @@ static const char_override_t german_overrides[7] =
|
||||
{ 0x5B, char_defs_Auml } /* 945423-9701 rev. B p. 1-10 says 0x5D, but it must be a mistake */
|
||||
};
|
||||
|
||||
/* 6 norway/denmark-specific characters */
|
||||
/* 6 Norway/Denmark-specific characters */
|
||||
static const char_override_t norwegian_overrides[6] =
|
||||
{
|
||||
{ 0x5D, char_defs_Aring },
|
||||
@ -129,7 +129,7 @@ static const char_override_t norwegian_overrides[6] =
|
||||
{ 0x5C, char_defs_Oslash}
|
||||
};
|
||||
|
||||
/* 9 french-specific characters (word-processing model only: the data-processing model uses
|
||||
/* 9 French-specific characters (word-processing model only: the data-processing model uses
|
||||
the US character set, although the keyboard mapping is different from the US model) */
|
||||
/* WARNING: I have created the character matrices from scratch, as I have no printout of
|
||||
the original matrices. */
|
||||
@ -1690,7 +1690,7 @@ static const UINT8 char_defs[char_defs_count][10] =
|
||||
},
|
||||
|
||||
|
||||
/* 128 additional characters for japanese terminals */
|
||||
/* 128 additional characters for Japanese terminals */
|
||||
{ /* 0x80 */
|
||||
0x00,
|
||||
0x00,
|
||||
|
@ -87,7 +87,7 @@ static const unsigned short vdt911_palette[] =
|
||||
/*
|
||||
Macros for model features
|
||||
*/
|
||||
/* TRUE for japanese and arabic terminals, which use 8-bit charcodes and keyboard shift modes */
|
||||
/* TRUE for Japanese and Arabic terminals, which use 8-bit charcodes and keyboard shift modes */
|
||||
#define USES_8BIT_CHARCODES() ((m_model == vdt911_model_Japanese) /*|| (m_model == vdt911_model_Arabic)*/)
|
||||
/* TRUE for keyboards which have this extra key (on the left of TAB/SKIP)
|
||||
(Most localized keyboards have it) */
|
||||
@ -541,9 +541,9 @@ void vdt911_device::check_keyboard()
|
||||
{
|
||||
enum modifier_state_t
|
||||
{
|
||||
/* states for western keyboards and katakana/arabic keyboards in romaji/latin mode */
|
||||
/* states for Western keyboards and katakana/Arabic keyboards in romaji/Latin mode */
|
||||
lower_case = 0, upper_case, shift, control,
|
||||
/* states for katakana/arabic keyboards in katakana/arabic mode */
|
||||
/* states for katakana/Arabic keyboards in katakana/Arabic mode */
|
||||
foreign, foreign_shift,
|
||||
/* special value to stop repeat if the modifier state changes */
|
||||
special_debounce = -1
|
||||
@ -568,7 +568,7 @@ void vdt911_device::check_keyboard()
|
||||
/* parse modifier keys */
|
||||
if ((USES_8BIT_CHARCODES())
|
||||
&& ((key_buf[5] & 0x0400) || ((!(key_buf[5] & 0x0100)) && m_foreign_mode)))
|
||||
{ /* we are in katakana/arabic mode */
|
||||
{ /* we are in katakana/Arabic mode */
|
||||
m_foreign_mode = true;
|
||||
|
||||
if ((key_buf[4] & 0x0400) || (key_buf[5] & 0x0020))
|
||||
@ -577,8 +577,8 @@ void vdt911_device::check_keyboard()
|
||||
modifier_state = foreign;
|
||||
}
|
||||
else
|
||||
{ /* we are using a western keyboard, or a katakana/arabic keyboard in
|
||||
romaji/latin mode */
|
||||
{ /* we are using a Western keyboard, or a katakana/Arabic keyboard in
|
||||
romaji/Latin mode */
|
||||
m_foreign_mode = false;
|
||||
|
||||
if (key_buf[3] & 0x0040)
|
||||
|
@ -17,15 +17,15 @@ Known bugs:
|
||||
* SDL2.0: sdlvideofps does not take -numscreens>1 into account.
|
||||
* SDL1.3/WIN32: crashes with -rd d3d
|
||||
* SDL1.3/WIN32: resizing does not work
|
||||
|
||||
|
||||
Build SDL 2.0 from HG
|
||||
======================
|
||||
|
||||
Pull 2.0 from hg. Than
|
||||
Pull 2.0 from hg. Then
|
||||
|
||||
sh autogen.sh
|
||||
./configure --prefix=/usr/local/sdl13/ --disable-video-svga --enable-video-directfb --enable-fusionsound
|
||||
make
|
||||
make
|
||||
[sudo] make install
|
||||
|
||||
You may leave away the last two enables, if you do not want to play around with directfb - although it is lightning fast now :-)
|
||||
@ -66,15 +66,15 @@ The following modes are working:
|
||||
SDL13
|
||||
=====
|
||||
|
||||
This is driver using SDL texture and line drawing support. It supports
|
||||
-prescale, -filter and -waitvsync. The driver determines which pixel
|
||||
formats perform best and converts textures to these pixel formats and at
|
||||
the same time performs any necessary rotation.
|
||||
This is driver using SDL texture and line drawing support. It supports
|
||||
-prescale, -filter and -waitvsync. The driver determines which pixel
|
||||
formats perform best and converts textures to these pixel formats and at
|
||||
the same time performs any necessary rotation.
|
||||
|
||||
Basic usage examples:
|
||||
|
||||
X11/opengl: ./mamed -video sdl13 -rd opengl mario
|
||||
DFB/DFB: ./mamed -video sdl13 -vd directfb -rd directfb mario
|
||||
X11/opengl: ./mamed -video sdl13 -rd opengl mario
|
||||
DFB/DFB: ./mamed -video sdl13 -vd directfb -rd directfb mario
|
||||
|
||||
The performance of the directfb driver depends on the combined
|
||||
support of the kernel framebuffer driver and the directfb driver.
|
||||
@ -93,7 +93,7 @@ Soft:
|
||||
OpenGL:
|
||||
=======
|
||||
|
||||
Plain opengl does work. Anything more advanced like pbo, fbo or glsl will
|
||||
Plain opengl does work. Anything more advanced like pbo, fbo or glsl will
|
||||
most probably not work with more than one screen.
|
||||
|
||||
./mamed -mt -video opengl mario -nogl_pbo -nogl_vbo -nogl_glsl -numscreens 2
|
||||
@ -106,8 +106,8 @@ YUV - modes:
|
||||
Using DirectFB, the following should get you going
|
||||
|
||||
./mamed -mt -video soft -sm yuy2 -vd directfb -rd directfb mario
|
||||
|
||||
for accelerated blitting on the framebuffer - provided directfb supports it.
|
||||
|
||||
for accelerated blitting on the framebuffer - provided directfb supports it.
|
||||
At least my Radeon R480 is supported.
|
||||
|
||||
-video soft and -scale_mode (-sm)
|
||||
@ -121,12 +121,10 @@ hwblit: Rendering in software/scaling with hardware (if supported)
|
||||
|
||||
hwbest: Rendering in software/antialiased scaling with hardware (if supported)
|
||||
|
||||
yv12, yv12x2, yuy2, yuy2x2:
|
||||
yv12, yv12x2, yuy2, yuy2x2:
|
||||
Rendering in software / scaling with hardware (if supported)
|
||||
|
||||
Whether these are actually hardware accelerated depends on the SDL driver
|
||||
and the hardware. The SDL directfb driver supports all above if the hardware
|
||||
supports it. However, only one YUV-texture per display is supported.
|
||||
and the hardware. The SDL directfb driver supports all above if the hardware
|
||||
supports it. However, only one YUV-texture per display is supported.
|
||||
The second window consequently will get "software" YUV blitting.
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Keymap file for a swiss keyboard (Linux)
|
||||
#
|
||||
#
|
||||
#
|
||||
ITEM_ID_MINUS SDLK_QUOTE 0x14 0x27 '
|
||||
ITEM_ID_EQUALS SDLK_CARET 0x15 0x0 ^
|
||||
ITEM_ID_Y SDLK_z 0x1d 0x7a z
|
||||
|
@ -1,23 +1,23 @@
|
||||
# Keymap for French AZERTY keyboard (Linux)
|
||||
ITEM_ID_TILDE SDLK_WORLD_18 0x31 0xb2 ²
|
||||
ITEM_ID_1 SDLK_AMPERSAND 0xa 0x26 &
|
||||
ITEM_ID_2 SDLK_WORLD_73 0xb 0xe9 é
|
||||
ITEM_ID_3 SDLK_QUOTEDBL 0xc 0x22 "
|
||||
ITEM_ID_4 SDLK_QUOTE 0xd 0x27 '
|
||||
ITEM_ID_5 SDLK_LEFTPAREN 0xe 0x28 (
|
||||
ITEM_ID_6 SDLK_MINUS 0xf 0x2d -
|
||||
ITEM_ID_7 SDLK_WORLD_72 0x10 0xe8 è
|
||||
ITEM_ID_8 SDLK_UNDERSCORE 0x11 0x5f _
|
||||
ITEM_ID_9 SDLK_WORLD_71 0x12 0xe7 ç
|
||||
ITEM_ID_0 SDLK_WORLD_64 0x13 0xe0 à
|
||||
ITEM_ID_MINUS SDLK_RIGHTPAREN 0x14 0x29 )
|
||||
ITEM_ID_EQUALS SDLK_EQUALS 0x15 0x3d =
|
||||
ITEM_ID_TILDE SDLK_WORLD_18 0x31 0xb2 ²
|
||||
ITEM_ID_1 SDLK_AMPERSAND 0xa 0x26 &
|
||||
ITEM_ID_2 SDLK_WORLD_73 0xb 0xe9 é
|
||||
ITEM_ID_3 SDLK_QUOTEDBL 0xc 0x22 "
|
||||
ITEM_ID_4 SDLK_QUOTE 0xd 0x27 '
|
||||
ITEM_ID_5 SDLK_LEFTPAREN 0xe 0x28 (
|
||||
ITEM_ID_6 SDLK_MINUS 0xf 0x2d -
|
||||
ITEM_ID_7 SDLK_WORLD_72 0x10 0xe8 è
|
||||
ITEM_ID_8 SDLK_UNDERSCORE 0x11 0x5f _
|
||||
ITEM_ID_9 SDLK_WORLD_71 0x12 0xe7 ç
|
||||
ITEM_ID_0 SDLK_WORLD_64 0x13 0xe0 à
|
||||
ITEM_ID_MINUS SDLK_RIGHTPAREN 0x14 0x29 )
|
||||
ITEM_ID_EQUALS SDLK_EQUALS 0x15 0x3d =
|
||||
ITEM_ID_OPENBRACE SDLK_CARET 0x22 0x0
|
||||
ITEM_ID_CLOSEBRACE SDLK_DOLLAR 0x23 0x0
|
||||
ITEM_ID_COMMA SDLK_COMMA 0x3a 0x2c ,
|
||||
ITEM_ID_STOP SDLK_SEMICOLON 0x3b 0x3b ;
|
||||
ITEM_ID_SLASH SDLK_COLON 0x3c 0x3a :
|
||||
ITEM_ID_COLON SDLK_WORLD_89 0x30 0xf9 ù
|
||||
ITEM_ID_QUOTE SDLK_ASTERISK 0x33 0x2a *
|
||||
ITEM_ID_BACKSLASH SDLK_EXCLAIM 0x3d 0x21 !
|
||||
ITEM_ID_COMMA SDLK_COMMA 0x3a 0x2c ,
|
||||
ITEM_ID_STOP SDLK_SEMICOLON 0x3b 0x3b ;
|
||||
ITEM_ID_SLASH SDLK_COLON 0x3c 0x3a :
|
||||
ITEM_ID_COLON SDLK_WORLD_89 0x30 0xf9 ù
|
||||
ITEM_ID_QUOTE SDLK_ASTERISK 0x33 0x2a *
|
||||
ITEM_ID_BACKSLASH SDLK_EXCLAIM 0x3d 0x21 !
|
||||
ITEM_ID_BACKSLASH2 SDLK_LESS 0x5e 0x3c <
|
||||
|
Loading…
Reference in New Issue
Block a user