* Fix build of ldplayer on OS X. Since the CUSTOM sound module no longer exists, I
arbitrarily changed it to WAVE, as ar gets upset if it has no input files. I also
removed the -all_load flag for ldplayer from the main makefile as it upsets the linker
on OS X.
* Fix build for PPC64 Linux. (This slightly messes up static branch prediction hints
on OS X and AIX, but OS X for PPC64 is dead, and no- one builds MAME for AIX, and
it will still build, anyway.)
* Paramaterise the arguments to check for NULL in the ATTR_NONNULL macro rather than
just checking the first argument. This requires compiler support for C99 variadic
macros (MSVC2005 and GCC4 have this AFAIK).
Vas
* corrupt files in archives now generate an error
* archive files ending in "/" will not be tested for crc - skip path entries
* add new flag FILE_OPEN_NO_PRELOAD to skip decompressing on open
This is used in audit.c, which only tests whether files exist
* added error checking to all calls to load_file_zipped
compilation:
- new option CPP_COMPILE to trigger this (off by default)
- split CFLAGS into common, C-only, and C++-only flags
- when enabled, CPP_COMPILE causes 'pp' to be appended to
the target name
NOTE THAT THE SYSTEM CANNOT ACTUALLY BE COMPILED THIS WAY
YET. IT IS JUST AN EXPERIMENT.
Modified lib.mak to always build zlib/expat as C regardless
of CPP_COMPILE.
Modified windows.mak to fix warnings with MAXOPT=1, and to
leverage the new CFLAGs definitions.
Modified vconv.c to do appropriate conversions for new C++
options.
Updated sources so that libutil, libocore (Windows), and
libosd (Windows) can be cleanly compiled as C or C++. This
was mostly adding some casts against void *.
Fixed a few more general obvious problems at random
locations in the source:
- device->class is now device->devclass
- TYPES_COMPATIBLE uses typeid() when compiled for C++
- some functions with reserved names ('xor' in particular)
were renamed
- nested enums and structs were pulled out into separate
definitions (under C++ these would need to be scoped to
be referenced)
- TOKEN_VALUE cannot use .field=x initialization in C++ :(
which control the font and size used in the debugger text Windows. These
default to "Lucida Console" and 9pt, which is the same face as previously
hard-coded but 1pt larger. Personally, I prefer "Consolas" 9pt, which is
one of the new "C" fonts included with Windows Vista and later (also
available for free download on older systems). Note that only fixed-width
fonts really work here, for obvious reasons.
(It was doing a double-shift for CPUs with a address shift)
(The bpset command seems to occasionally behave oddly for cpus with address shifts as well. Didn't figure that problem out in the few minutes i looked at it.)
necessary to remove 12 of the final 14 references to the global
Machine. The remaining 2 are in fatalerror() and logerror(), which
are both local to mame.c, so Machine is now fully static.
--
From: Atari Ace [mailto:atari_ace@verizon.net]
Sent: Thursday, December 18, 2008 5:47 PM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] Make Machine static followup
Hi mamedev,
This incremental patch to my last patch undoes the change that caches
the ppu2c0x videorom. I changed the code back to how it behaved
originally, using an existing machine on the chip struct to eliminate
the one troublesome Machine reference.
~aa
--
From: Atari Ace [mailto:atari_ace@verizon.net]
Sent: Thursday, December 18, 2008 2:54 PM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] Make Machine static!
Hi mamedev,
This large patch completes the removal of the use of Machine
throughout MAME. It does so primarily by adding machine, device or
space to various apis and modifying the callers, but for some
remaining cases it adds a new api, mame_get_running_machine(), which
will be called instead. There are only 14 uses of this api currently,
and that number should drop over time.
There are a few changes of note:
1. 6821pia.c. I attached machine to the 'device' structure. I'm
working on converting this to a proper device, but that change isn't
ready.
2. fddebug.c. I added a proper header so that the apis won't get
accidentally converted to static again.
3. scsi.c. I added a machine to SCSIInstance.
4. system16.c. I modified sys16_patch_code to take an array of
patches.
4. custom.h. I added the owning sound device to the reset/stop
routines as well as the token. Note that passing only the device
would require exposing the internals of custom_sound, as the token
passed is not the device token, but the token returned from the
CUSTOM_START routine. Better ideas here are welcome.
4. ppc2c0x.c. To avoid changing more interfaces, the init routine
saves the videorom location rather than looks it up each time.
I tried to choose what I felt was the natural parameter for an api,
rather than always pass machine, but in some cases I used machine to
limit the number of additional changes. Some additional cleanup here
is probably warranted, I'll look into that later once I'm recovered
from this two-week project.
~aa
debugger. In order to get the OSD to update, a new function
debug_view_flush_updates() must be called. Currently this is automatically
called before osd_wait_for_debugger(), and during the periodic updates while
executing. The OSD code may occasionally need to call it under other
circumstances (for example, the Windows code calls it explicitly while
tracking scrollbar thumbs to get live scrolling).
Sent: Saturday, December 06, 2008 4:52 PM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] Deprecat.h cleanup
Hi mamedev,
This patch changes some global Machine references to use machine,
device->machine, ... instead, and removes any unneeded #include
"deprecat.h" lines as well (about 10% of them in fact). It was
generated using the attached script, and then reverting some cases
where it was overzealous.
~aa
* select correct memory region by default when created
(should be first address space of visible CPU)
* when created, default bytes/chunk is correct
* when changing width, cursor no longer moves around
* memory regions display more than all 0xff now
Also fixed:
* qword big-endian memory reads no longer call little-endian handlers
* memory regions are tracked in creation order (show up in order
in the menu now)
* ROMREGION_DISPOSE memory regions are not disposed if the debugger
is enabled
02683: Pressing F5 while running debugger causes access violation
02669: pandoras: music tempo is too fast
02691: Some drivers with z80/ay8910 Audio: Audio tempo has changed
Also fixed debugger memory leak.
Added a number of new cputag_* macros to cpuexec.h.
Added the concept of 'subviews' to the debugger views. The core
now creates a list of possible subviews, and the OSD can select
between them. This removes code from the OSD that was previously
required to find all possible memory and disassembly views.
Added machine parameters to debugger console output functions.
Fixed some oddities in the memory view.
Moved globals to hang off of the machine structure.
Fixed bug where the visiblecpu was not updated immediately upon
a break.
Important note for OSD ports: the get/set property functions have
been retired for debug_views. Instead, there are specific functions
to perform each get/set operation. In addition, the format of the
update callback has changed to pass the osd private data in, and
the update callback/osd private data must be passed in at view
allocation time. And osd_wait_for_debugger() now gets a CPU object
instead of the machine.
Removed extra debugger tracking for address spaces and added some
of the useful data to the address_space structure. Updated all
debugger commands and views to use CPU and address space objects
where appropriate.
Added new memory functions for converting between bytes and
addresses, and for performing translations for a given address
space. Removed debugger macros that did similar things in favor
of calling these functions.
Rewrote most of the memory view handling. Disasm and register views
still need some additional tweaking.
works. Added callback parameters to the expression engine. Improved
CPU parsing so you can use a CPU tag or index in most commands that
take one. Switched to passing CPU and address space objects around
where appropriate. Lots of other minor tweaks.
Moved memory global state into a struct hanging off of the machine.
Updated almost all memory APIs to take an address_space * where
appropriate, and updated all callers. Changed memory internals to
use address spaces where appropriate. Changed accessors to point
to the memory_* functions instead of the address space-specific
functions. Improved internal handling of watchpoints.
Added cputag_* functions: cputag_reset(), cputag_get_index(),
cputag_get_address_space(). These just expand via macros to an
initial fetch of the CPU via cputag_get_cpu() followed by the
standard CPU call.
Added debugger_interrupt_hook() and debugger_exception_hook() calls
which intelligently look at the debugger flags before calling.
Did minimal cleanup of debugger, mainly moving CPU-specific data
to hang off of the CPU classdata for more direct access.
- removed unnecessary deprecat.h includes
- replaces Machine with existing running_machine* instances
- re-adds a peroid I accidentally removed when changed a message to
use defines
- adds a running_machine* to win_window_info and debugwin_info to get
rid of most Machine occurances and clean up the running_machine*
parameters I added in the past
[Oliver Stoeneberg]
* added a set of cpu_* calls which accept a CPU device object;
these are now the preferred means of manipulating a CPU
* removed the cpunum_* calls; added an array of cpu[] to the
running_machine object; converted all existing cpunum_* calls
to cpu_* calls, pulling the CPU device object from the new
array in the running_machine
* removed the activecpu_* calls; added an activecpu member to
the running_machine object; converted all existing activecpu_*
calls to cpu_* calls, pulling the active CPU device object
from the running_machine
* changed cpuintrf_push_context() to cpu_push_context(), taking
a CPU object pointer; changed cpuintrf_pop_context() to
cpu_pop_context(); eventually these will go away
* many other similar changes moving toward a model where all CPU
references are done by the CPU object and not by index
deprecat.h.
Changed render_texture_set_bitmap() to accept a palette object
instead of a palette index. The renderer remains optimized for the
system palette but will work if objects have their own palette as
well.
Changed renderer to permit palettes for RGB and YUY textures. If
specified, these palettes specify a 32-entry (RGB15) or 256-entry
(others) lookup for applying additional brightness/contrast/gamma
on a per-texture basis.
Removed rescale notification. It never really worked that well and
violated proper layering.
Renamed palette_set_brightness() to palette_set_pen_contrast() for
clarity.
Changed palette objects to support global brightness/contrast/gamma
in addition to per-group and per-entry controls.
Sent: Sunday, September 21, 2008 10:45 AM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] More static qualifiers
Hi mamedev,
Another static function update from yours truly, almost entirely
affecting code added in the last few months to MAME. The fixes are
the usual lot, changing enum definitions so they aren't declared,
decorating dead code/declarations with #if...#endif, and of course,
adding static where appropriate. In addition, I fixed a bunch of
UNUSED_FUNCTON symbols to be spelled correctly (I didn't introduce
this).
~aa
Subject: Several patchlets
ledutil.diff
- checking if memory is allocated before using it is good, freeing what
has
been allocated in the error path is better
for this new support to work.
Clickable input support. Mostly by Nathan. A few changes from the
proposal:
* as far as the layout is concerned, states are 0 (off) or 1 (on) and
aren't impacted by the port's ACTIVE_HIGH or ACTIVE_LOW
* instead of checking each individual field for a hit, we look to see
what is hit once per frame and then just check against that; this
is faster, but does limit us to a single hit item
* added function input_field_by_tag_and_mask() to look up a particular
input_field_config by tag and mask; this makes it possible to easily
get the port default value or other information as necessary
Added 1:1 fallback if surface creation fails at prescale values. Changed
prescale logic to create prescale target surfaces as ARGB for YUY2
sources. Forced the use of render-to-texture over StretchRect for YUY2
sources.
Subject: Profiler related
Hi,
here is a smalll patch that :
- remove include "profiler.h" to files that do not use profiling function
* emu/machine/laserdsc.c
* osd/windows/video.c
- use PROFILER_USER2 instead of PROFILER_USER1 in mame/video/tx1.c
USER1 was used twice, USER3 once. I guess that USER1 should be used
only once and USER2 used in the 2nd place
- remove unused MACRO in emu/memory.c
Best regards,
Christophe JAILLET
Removed channels parameter from avcomp decode configuration.
Fixed incorrect test in winwork that led to spinning instead
of using the nicely allocated events we had on hand.
Forced a sound synchronization on each vsync in the laserdisc
playback. This prevents overwriting the tail end of the
buffer which was fouling up the MACH 3 audio decoding.
Removed obsolete size check for uncompressable audio data.
now simply requires an AVI file input.
Relaxed VBI Manchester code clocking to allow for a little bit
of wiggle when finding the clock.
Changed laserdisc support to parse white flags and other data
from the VBI data directly, rather than relying on the textual
metadata. Expanded video frame cache to 3. Changed the way
frames are assembled to decrease the likelihood of getting an
interlaced weave. Fixed sound creation so that it is done at
reset time instead of device start, when the sound devices aren't
yet live.
Fixed bug in winwork that caused the creation of single work
items to return NULL, and thus lead to massive memory leaks when
using A/V CHDs.