Commit graph

55 commits

Author SHA1 Message Date
Curt Coder
70efaaf040 Delete symbols file if defined when invoking clean target. [Curt Coder] 2011-02-12 22:17:46 +00:00
R. Belmont
28e34ea140 NetBSD support [Thomas Klausner]
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.
2011-02-02 03:29:54 +00:00
Andrew Gardner
ffc1d29080 Silly. 2010-12-30 06:50:24 +00:00
Andrew Gardner
ea5f8009fa plygonet.c : Fixed save state & device handler regressions. [Andrew Gardner] 2010-12-30 04:47:25 +00:00
Miodrag Milanovic
689a7d16d2 Made depend creation target independent (no whatsnew) 2010-09-28 07:33:09 +00:00
Aaron Giles
db797ba791 New build tool makedep.c, derived from src2html.c (really!).
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.
2010-09-14 01:15:26 +00:00
Aaron Giles
c70c5fee5a Created CPU-specific device types for all CPUs, using new macros
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.
2010-07-03 00:12:44 +00:00
Aaron Giles
b67fd48c9f Winmain cleanup:
* 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.
2010-07-02 03:49:56 +00:00
Aaron Giles
7eb08a94fb Clean up profiling flags in the makefile. Removed GPROF flag, it is now just
PROFILE. When enabled, automatically turn on basic symbols. Also added new
SYMLEVEL option to control the symbols level (defaults to 2). [Aaron Giles]
2010-06-11 23:07:16 +00:00
Michaël Banaan Ananas
0035e1cd17 documentation: -march option core2 is in gcc since 4.3 2010-05-13 18:12:53 +00:00
Phil Bennett
37da163717 Added makefile PPC64 autodetection [Julian Sikorski] 2010-04-14 13:51:37 +00:00
Aaron Giles
717a11337e Added gprof support to the makefile. [Bryan Ischo]
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]
2010-04-08 06:10:18 +00:00
R. Belmont
1afbd40efb [#3792, #3793] SDL compile fixes [Christian MArillat]
- Autodetect FreeBSD variant
- Altivec/VMX fixes for non-Mac PPC
2010-03-24 04:06:07 +00:00
R. Belmont
beeffeb5e7 Add MAME-ified version of SoftFloat library [John R. Hauser]
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.
2010-03-02 04:26:48 +00:00
Couriersud
6d89d0cedf Fixed MT3698 (NOWERROR=1 casues -fno-strict-aliasing to be dropped).
[couriersud]
2010-03-01 21:59:28 +00:00
R. Belmont
f31c069a53 Fix for non-standard OS X builds [Scott Michel] 2010-02-14 17:44:34 +00:00
Couriersud
c55eb7889c Fix os2 auto-detect [Credit: KO Myung-Hun] 2010-02-03 20:00:10 +00:00
Couriersud
6815e7cf8f It's late, last fix for today to avoid introducing new ones. 2010-01-20 01:32:08 +00:00
Couriersud
eb9ed61a68 OpenBSD support in makefile/sdl.mak
Fix XBSD detection of PTR64 (uses amd64)
Cosmetic change to sdlprefix.h
2010-01-20 01:18:35 +00:00
Couriersud
0328f34acb Autodetection of PTR64 can be inhibited now by specifying PTR64=0.
On mixed 32bit/64bit targets identifying themselves as 64bit this can be used to build a 32bit executable.
2010-01-19 22:09:45 +00:00
Couriersud
d991c43b73 Add OS/2 autodetect to makefile 2010-01-19 21:53:06 +00:00
Couriersud
b423367224 Allow that zlib and expat can be linked dynamically without changing the makefile by specifying "=0":
make BUILD_ZLIB=0 BUILD_EXPAT=0

This was possible before as well but this is more what users (and myself) would expect.
2010-01-17 20:36:46 +00:00
Couriersud
ecec9ae9b1 Added checkautodetect target to makefile delivering e.g. on linux 64 bit:
TARGETOS=unix
PTR64=1
BIGENDIAN=
UNAME=Linux core 2.6.28-17-generic #58-Ubuntu SMP Tue Dec 1 21:27:25 UTC 2009 x86_64 GNU/Linux
2010-01-17 20:26:49 +00:00
Couriersud
feb8630108 Autotest for BIGENDIAN. A bit hacked, though. 2010-01-16 13:02:03 +00:00
Aaron Giles
f373246c42 Fix PTR64 autodetect for Windows 2010-01-16 04:40:55 +00:00
Couriersud
25b0e97ca1 - Fix TARGETOS detection on OS X.
- Do not try to check TARGETOS when cross-compiling
- For non-windows targets, try to auto-detect PTR64
2010-01-15 22:05:00 +00:00
R. Belmont
9ba62e6bce SDLMAME: improved OS X and SDL 1.3 SVN support, try to autodetect SDLMAME targets [Couriersud] 2010-01-15 21:05:29 +00:00
Aaron Giles
4169b811db Makefile changes:
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)
2010-01-13 16:27:27 +00:00
R. Belmont
f8b28bd2f1 Merge makefile with outstanding SDLMAME changes (no whatsnew)
This turns off -Werror on a few OSes and fixes multithreaded version.c building.
2010-01-13 03:49:37 +00:00
Aaron Giles
5885e973db Makefile changes:
- 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
2010-01-05 22:01:10 +00:00
Aaron Giles
b4099c91bc Changes to sync with new toolchain:
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.
2010-01-03 21:31:44 +00:00
Aaron Giles
3df8953bca Removed the various HAS_xxxx for sound cores. To select sound cores,
just choose them in the make system. Further granularity is not
necessary. This also means that the samples core is always required.
2010-01-02 20:21:00 +00:00
Phil Bennett
2fd263c18b Removed the global "includes" include and instead specify the "includes" path in all #include occurences. [Oliver Stoneberg]
---------- 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.
2009-12-21 23:09:02 +00:00
Aaron Giles
38978f878a Move MSVC clean out of core makefile and into windows.mak where it belongs. 2009-09-21 09:03:25 +00:00
Curt Coder
33bf61f326 Added deletion of MSVC specific files to clean task. 2009-09-16 07:20:32 +00:00
Aaron Giles
f474114e1d Added infrastructure to compile universal standalone disassembler:
- 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.
2009-08-22 06:25:07 +00:00
Ryan Holtz
98ca3ea7c1 Now turn symbols and mapfile generation off... man, I'm dumb. (no whatsnew) 2009-07-29 22:52:54 +00:00
Ryan Holtz
efe16bb749 Turning debug flag back off in the makefile (no whatsnew) 2009-07-29 22:46:08 +00:00
Andreas Naive
059b62aa1d Simplified Atomiswave's decryption routine & keys. [Andreas Naive]
-----
Furthermore, i have uploaded a new revision of the cracking tool to 
/encryption/aw_key_distiller.zip
2009-07-29 21:59:55 +00:00
Wilbert Pol
a35ef58b54 CPU cores are now enabled on a per cpu core family basis instead of per cpu core variant. As a result CPUDEFS is no longer needed in the makefile. 2009-03-25 19:39:41 +00:00
Aaron Giles
58d832602b Having decided to look at the MAME source again, I have a fairly minor patch:
* 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
2009-03-19 06:15:14 +00:00
Aaron Giles
e2757c60d2 Modified the makefile to support experimental optional C++
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++ :(
2009-02-28 22:10:06 +00:00
Aaron Giles
68f3a9ab9e Removed DEBUGGER flag from makefile and ENABLE_DEBUGGER
macro from the source code. All MAME builds now include
the debugger, and it is enabled/disabled exclusively by
the runtime command-line/ini settings. This is a minor 
speed hit for now, but will be further optimized going 
forward.

Changed the 'd' suffix in the makefile to apply to DEBUG
builds (versus DEBUGGER builds as it did before).

Changed machine->debug_mode to machine->debug_flags.
These flags now indicate several things, such as whether
debugging is enabled, whether CPU cores should call the
debugger on each instruction, and whether there are live
watchpoints on each address space.

Redesigned a significant portion of debugcpu.c around
the concept of maintaining these flags globally and a
similar, more complete set of flags internally for each
CPU. All previous functionality should work as designed
but should be more robust and faster to work with.

Added new debugger hooks for starting/stopping CPU
execution. This allows the debugger to decide whether
or not a given CPU needs to call the debugger on each
instruction during the coming timeslice.

Added new debugger hook for reporting exceptions.
Proper exception breakpoints are not yet implemented.

Added new module debugger.c which is where global
debugger functions live.
2008-06-26 14:51:23 +00:00
Aaron Giles
ed6ad8b4f9 PowerPC dynamic recompiler: [Aaron Giles]
- rewrote PowerPC implementation as a dynamic recompiler on top
    of the universal recompiler engine
 - wrote a front-end to analyze PowerPC code paths and register usage
 - wrote a common shared module with C implementations of tricky
    CPU behaviors
 - added separate CPU types for the variants supported, instead of
    relying on a hidden model enum
 - rewrote the serial port emulation for the 4xx series to be more
    accurate and not rely on separate DMA handlers
 - rewrote the MMU handling to implement a software TLB that faults
    in pages and handles changed bits appropriately
 - implemented emulation of the PowerPC 603's software TLB, which
    allows the model 3 games to run without a hack to disable the MMU

Updated the PowerPC disassembler to share constants with the rest of
the core, and to more aggressively use simplified mnemonics, especially
for branches. [Aaron Giles]

Universal recompiler:
 - fixed frontend to handle opcode widths different from bus width
 - added several new opcodes:
    * (D)GETFLGS - copies the UML flags to a destination operand
    * FDRNDS - rounds a double precision value to single precision
 - renamed several opcodes:
    * SETC   -> CARRY
    * XTRACT -> ROLAND
    * INSERT -> ROLINS
 - consolidated the following opcodes:
    * LOAD?U -> LOAD
    * LOAD?S -> LOADS
    * STORE? -> STORE
    * READ?U -> READ
    * READ?M -> READM
    * WRITE? -> WRITE
    * WRITM? -> WRITEM
    * SEXT?  -> SEXT
    * FTOI?? -> FTOINT
    * FFRI?  -> FFRINT
    * FFRF?  -> FFRFLT
 - removed some opcodes:
    * FLAGS - can be done with GETFLGS/LOAD4/ROLINS
    * ZEXT - can be achieved with AND
    * READ?S - can be achieved with READ/SEXT
 - updated C, x86, and x64 back-ends to support these opcode changes
 - updated disassembler to support these opcode changes
 
MIPS3 dynamic recompiler:
 - updated to use new/changed opcode forms
 - changed context switch so that it only swaps a single pointer

Konami Hornet changes: [Aaron Giles]
 - updated to new PowerPC configurations
 - updated some memory handlers to be native 8-bit handlers
 - cleaned up JVS implementation to work with new serial code
 - added fast RAM for the work RAM to give a small speed boost

Konami GTI Club changes: [Aaron Giles]
 - updated to new PowerPC configurations
 - updated some memory handlers to be native 8-bit handlers

Konami Viper/ZR107 changes: [Aaron Giles]
 - updated to new PowerPC configurations

Sega Model 3 changes: [Aaron Giles]
 - updated to new PowerPC configurations
 - reimplemented/centralized interrupt handling
 - these games are broken for the moment

Fixed crasher due to some Konami games using 8 layers in
the K056832 implementation, even though it was only written
for 4. [Aaron Giles]

Added fisttp opcode to i386 disassembler. [Aaron Giles]
2008-06-05 08:34:13 +00:00
Aaron Giles
b735b4be6c New universal dynamic recompiler system. The central module
is drcuml.c, which defines a universal machine language
syntax that can be generated by a frontend recompiler and
then retargeted via a generic backend interface to any of
a number of different architectures. A disassembler for the
UML is also included to allow examination of the generated
UML code.

Currently supported backend architectures include 32-bit x86,
64-bit x86, and a platform-neutral interpreted C backend that
can be used as a fallback for platforms without native 
support. The C backend also performs additional validation
to ensure assumptions are met.

Along with the new architecture is a new MIPS III/IV 
recompiler frontend. This frontend has been rewritten from 
the old x64-specific recompiler to generate UML opcodes
instead. This means that the single recompiler can be used
to target multiple backend architectures and should in
theory produce identical results across all of them.

The old 32-bit and 64-bit MIPS recompilers are now officially
retired. The new system provides similar performance (within
5% generally) to the old system and has similar compatibility.
The only currently known issues are some problems with the
two Gauntlet 3D games.
2008-05-11 22:15:13 +00:00
Aaron Giles
4328302538 From: Marc Sandusky
Subject: Minor patch submission - verbose build information for development in IDE

I am submitting this minor patch that adds verbose build information to the 
build output when the "VERBOSE" flag is set to "1", rather than the simple 
output normally seen, by adding the "-v" flag to the CFLAGS variable.  This 
is most useful for those that like to use an IDE (Eclipse in my case) for 
source browsing and development.  The IDE usually will parse the build 
information, which is currently not available, to determine include file 
locations, build definitions, etc. and will use that information to provide 
more advanced navigation features.
2008-04-02 08:28:58 +00:00
Couriersud
504337cfb1 Followup to r767:
* submit changes to makefile omitted in r767
2008-02-22 00:17:36 +00:00
Aaron Giles
aa16ee779d Changed debugger-related code to be based off a new makefile define (DEBUGGER) which sets
a new compile-time define (ENABLE_DEBUGGER). This means that MAME_DEBUG no longer means
"enable debugger", it simply enables debugging features such as assertions and debug code
in drivers.

Also removed the various levels of opbase protection in memory.h and always just turned 
on full bounds checking.

Fixed build break due to missing ampoker.lay -> ampoker2.lay renaming.
2008-02-02 08:57:39 +00:00
Aaron Giles
ee9f88963c Copyright cleanup:
- removed years from copyright notices
 - removed redundant (c) from copyright notices
 - updated "the MAME Team" to be "Nicola Salmoria and the MAME Team"
2008-01-06 00:47:40 +00:00
Aaron Giles
314928a333 (From Oliver Stoneberg)
beastrzb097u2red.patch
- added GAME_NOT_WORKING flag, so this bogus bug report can be 
removed (not even worth 1 buck!)

20080104_1.patch
- fixes a memory in src/mame/machine/stvcd.c

memoryleak0118u1ora.patch
- fixes a memory leak, that only happened when no RawInput API was 
available

memory_leak0111u6ora_1.patch
- only a partial patch - model3.c still missing
2008-01-04 18:09:45 +00:00