out of log:
This way it is possible to link two or more separated executables with different
copyright/xml out/name/... in one compilation, just one step closer...
- Removed LOADBYNAME, since it is deprecated by using per device rom load_software_part_region
- Created makedev tool to generate array of devices, and created lst file according to current devices usage.
- Changed listxml command to output device roms too
using one cothread for each executable device. This functionality is
strictly internal and should result in no changes in scheduling
behavior. However, it now becomes possible to exit out of a device's
execution in the midst of an instruction by calling
machine().scheduler().make_active(). Note that this is somewhat dangerous
for cores that have logic at the start of their execute loop to check for
interrupts or other conditions, as those checks will be skipped upon
resume, so consider this sort of early exiting to be highly experimental
for now. [Aaron Giles, Miodrag Milanovic, byuu]
loader rewrite, which is still in progress....)
Replaced mamedriv.c with a new driver list mechanism that is generated
by the build tools. The emulator core now expects the presence of a
file called src/$(TARGET)/$(SUBTARGET).lst which is just a raw list of
driver names, one per line. C and C++ comments are still permitted.
This file is parsed by a new build tool makelist which extracts the
driver names, sorts them, and generates a file called drivlist.c, which
is consumed by the core. [Aaron Giles]
Added new osdcore function osd_malloc_array() which is identical to
osd_malloc() but obviously hints that the underlying allocation is for
an array. Updated all callers to use the appropriate form. Modified the
Windows allocator to only use guard pages for array-style allocations,
allowing us to enable them once again in debug builds. [Aaron Giles]
Created new static class driver_list to wrap accesses to the list of
available drivers. Improved speed of driver lookups by relying on the
presorting done by makelist. [Aaron Giles]
Created helper class driver_enumerator as a helper for iterating through
the list of drivers. This class supports basic filtering and iteration,
and also serves as a temporary cache of machine_configs. [Aaron Giles]
Created cli_frontend object to wrap all the CLI handling code in
clifront.c. Updated/simplified all the code to take advantage of the
driver_enumerator. [Aaron Giles]
Created media_auditor object to wrap all the auditing functions in
audit.c. Updated all users to the new interface. Note that the new
auditing mechanism is slightly out of sync with the romload code in
terms of finding ROMs owned by devices, so it may mis-report some
issues until the new ROM loading code is in. [Aaron Giles]
Added concept of a per-device searchpath. For most devices, their
searchpath is just the short name of the device. For driver_devices, the
searchpath is driver[;parent[;bios]]. This searchpath will eventually be
used by the rom loader to find ROMs. For now it is used by the media
auditor only. [Aaron Giles]
Created info_xml_creator object to wrap all the info generation functions
in info.c. Converted the file to C++ and cleaned up the input processing
code. [Aaron Giles]
(not for whatsnew ... Known issues: auditing of CHDs appears busted, and
debug builds report unfreed memory if you use the built-in game picker)
Not for whatsnew: I added -Wno-conversion unconditionally to disable the
warnings Thomas reported. That setting is the default for GCC out-of-the-box
but apparently not on NetBSD. As far as I know it shouldn't cause a problem
with any GCC version back to at least 4.0.0 so we're safe even on PPC OSX,
but do let me know if hilarity ensues.
Does basic dependency analysis and supports excluding paths.
Makefile now supports a depend target which will run makedep
on the src/$(TARGET) tree and create dependencies. It deliberately
excludes the root of src/emu as well as the osd directories in
order to keep the dependency file down to a reasonable size, so
if a core header file changes, you still need to clean and build
all.
DECLARE_LEGACY_CPU_DEVICE and DEFINE_LEGACY_CPU_DEVICE. Changed CPUs
to be their own device types, rather than all of type CPU with a
special internal subtype. Note that as part of this process I removed
the CPU_ prefix from the ALL-CAPS device name, so CPU_Z80 is just
plain old Z80 now. This required changing a couple of names like
8080 to I8080 so that there was an alphabetic first character.
Added memory interfaces to the list of fast-access interfaces. To do
this properly I had to add a separate method to devices which is
called immediately after construction, when it is possible to perform
dynamic_casts on fully-constructed objects. (This is just internal,
no changes necessary to the devices themselves.)
Some additional notes:
* SH2 and SH4 had typedefs that conflicted with their CPU_-less names
so I bulk renamed to structures to sh2_state and sh4_state; RB, feel
free to choose alternate names if you don't like 'em
* SCSP was caught doing something to the 3rd indexed CPU. Since several
systems that use SCSP don't even have 3 CPUs, I had no idea what
this was supposed to do, so I changed to it reference "audiocpu"
assuming that stv was the assumed target. This is really gross and
should be a configuration parameter, not a hard-coded assumption.
* created dynamic_bind<> template class to handle dynamically binding to
optionally-supported functions
* wrapped stack walking code in a class
* wrapped symbol lookup code in a class
* added support for parsing objdump-produced symbol dumps which include
non-global functions for much better stack dumps and profiling in gcc builds
Also: modified makefile for win32 targets to automatically run objdump and
produce a .sym file if SYMBOLS is enabled.
Added a check for the OPTION_READCONFIG option before executing
the code which would attempt to incorporate configuration file
settings into the current configuration, because if OPTION_READCONFIG
is set to false, then there is no reason to even try to do this as
every single configuration file will be ignored (because config files
have been turned off by OPTION_READCONFIG). [Bryan Ischo]
Fixed small memory leak in mame.c. [Bryan Ischo]
Fixed double-free error in render.c. [Bryan Ischo]
Made core_strdup use osd_malloc instead of malloc. [Bryan Ischo]
As previously discussed, this will be used for the MC680x0 FPU in
order to handle high-precision floats portably. The license is
included in README.txt and is MAME compatible.
1. If OSD is not defined, we look for the built-in Windows
environment variable 'OS' and if it is set to 'Windows_NT',
we assume OSD=windows; otherwise we assume OSD=sdl.
2. If TARGETOS is not defined, we look for the same variable
and set TARGETOS=win32 if it is set to 'Windows_NT'.
3. Windows SDL builds have an 'sdl' prefix on the executable
so they can live side-by-side.
The upshot of this is that on Windows systems:
make -> standard Windows build producing mame.exe
make OSD=sdl -> SDL Windows builds producing sdlmame.exe
On non-Windows systems:
make -> SDL build by default (don't need to say OSD=sdl)
- Changed INLINE to map to "static inline"
- (Windows only) Made -static-libgcc standard for both 32-bit and 64-bit
- (Windows only) Some fixes for MSVC builds
1. Removed CPP_COMPILE option. All files (except expat and zlib)
are now compiled as C++ by default. For now, imagine nothing has
changed. The goal is not to go hog-wild with C++isms, but to
leverage it where it makes the most sense.
2. Mapped INLINE to plain old C++ inline now, fixing several
cases where this was problematic.
3. Marked global const structures explicitly extern since consts
are locally-scoped by default in C++.
4. Added new 'default' make target which just builds the emulator.
Use 'make all' to build everything including the tools.
5. 64-bit builds now get a '64' suffix on them. We might want to
just make this true for Windows builds, but it's on for everyone
at the moment.
6. (Windows) Removed UNICODE option. UNICODE is enabled by default
on all Windows builds now. The 32-bit version links against
libunicows.a for continued Win9x compatibility.
7. (Windows) Removed hacks surrounding unicode handling of main().
They are no longer necessary with the new tools.
---------- Forwarded message ----------
From: Oliver Stöneberg <oliverst@online.de>
Date: Sat, Dec 12, 2009 at 3:27 PM
Subject: includes cleanup
To: submit@mamedev.org
This patch removes the global "includes" include and explcitly
specifies the "includes" path in all #include occurances.
- added unidasm to the tools build
- split the disassemblers out of libcpu and into new libdasm
- ensured the disassembly entry points for all disassemblers are
in the source file for the disassembler (sometimes new generic
versions were created)
Still needs command line options and file loading, but the
fundamentals are present, and it links.