|
Joined: Mar 2001
Posts: 17,215 Likes: 234
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,215 Likes: 234 |
Performance on modern CPUs will be better with the code generated by newer GCCs though, so it's not optimal to have a public builder using the old compiler.
|
|
|
|
Joined: Jul 2007
Posts: 4,625
Very Senior Member
|
Very Senior Member
Joined: Jul 2007
Posts: 4,625 |
I agree but it should exist alternatives by using older CPUs.
|
|
|
|
Joined: Apr 2008
Posts: 49
Member
|
Member
Joined: Apr 2008
Posts: 49 |
I'm having a problem compiling. I've updated to the latest svn, and ran make TARGET=mess -j4 PTR64=1, like I normally do and I get: src/osd/sdl/sdl.mak:449: *** commands commence before first target. Stop. src/osd/sdl/sdl.mak line 449 has $(error Ubuntu 12.10 detected. Please install the gcc-4.6 and g++-4.6 packages) I am running Ubuntu 12.10. After installing gcc-4.6 and g++-4.6, it compiles file, so I guess it's just a problem with the Ubuntu 12.10 detection.
|
|
|
|
Joined: Mar 2001
Posts: 17,215 Likes: 234
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,215 Likes: 234 |
I'll check, it's possible the whitespace cleaner thingy did something bad to the makefile that prevents that from printing.
|
|
|
|
Joined: Apr 2008
Posts: 49
Member
|
Member
Joined: Apr 2008
Posts: 49 |
Looks like the new psx analog stuff isn't compiling right: src/mess/machine/psxanalog.c: In member function �UINT8 psx_analog_controller_device::pad_data(int, bool)�: src/mess/machine/psxanalog.c:46:9: error: �data� may be used uninitialized in this function [-Werror=uninitialized] At global scope: cc1plus: error: unrecognized command line option "-Wno-narrowing" [-Werror] cc1plus: all warnings being treated as errors make: *** [obj/sdl64/mess/machine/psxanalog.o] Error 1 make: *** Waiting for unfinished jobs.... (edit: trying to compile with make TARGET=mess -j4 PTR64=1 after a make clean on Ubuntu 12.10) (edit again: nevermind! Carl's svn commit r20305 fixes it! Thanks Carl!)
Last edited by zillion; 01/17/13 07:46 PM.
|
|
|
|
Joined: Jul 2007
Posts: 4,625
Very Senior Member
|
Very Senior Member
Joined: Jul 2007
Posts: 4,625 |
r20719 Compile fix (no whatsnew) [src/emu/cpu/es5510] I have still a problem ... Compiling src/emu/cpu/es5510/es5510.c... cc1plus.exe: warnings being treated as errors src/emu/cpu/es5510/es5510.c:140: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:140: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:140: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:141: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:372: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:373: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:374: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:375: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:376: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:377: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:427: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:447: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:449: error: integer constant is too large for 'long' type src/emu/cpu/es5510/es5510.c:590: error: integer constant is too large for 'long' type make: *** [obj/windows/emu/cpu/es5510/es5510.o] Error 1 However, I�ll make a clean compile again.
|
|
|
|
Joined: May 2008
Posts: 4,930 Likes: 24
Very Senior Member
|
Very Senior Member
Joined: May 2008
Posts: 4,930 Likes: 24 |
This should fix it: rene@thunder:~/src/mame-svn> svn diff
Index: src/emu/cpu/es5510/es5510.c
===================================================================
--- src/emu/cpu/es5510/es5510.c (revision 20723)
+++ src/emu/cpu/es5510/es5510.c (working copy)
@@ -137,8 +137,8 @@
static inline INT32 SX(INT32 x) { return (x & 0x00800000) ? x | 0xff000000 : x & 0x00ffffff; }
static inline INT32 SC(INT32 x) { return x & 0x00ffffff; }
-static inline INT64 SX64(INT64 x) { return (x & (0x0000800000000000)) ? x | 0xffff000000000000L : x & 0x0000ffffffffffffL; }
-static inline INT64 SC64(INT64 x) { return x & 0x0000ffffffffffff; }
+static inline INT64 SX64(INT64 x) { return (x & (0x0000800000000000LL)) ? x | 0xffff000000000000LL : x & 0x0000ffffffffffffLL; }
+static inline INT64 SC64(INT64 x) { return x & 0x0000ffffffffffffLL; }
static inline const char * const REGNAME(UINT8 r) {
static char rn[8];
@@ -369,12 +369,12 @@
break;
/* 0x03 to 0x08 INSTR Register */
- case 0x03: instr_latch = ((instr_latch&0x00ffffffffff) | ((INT64)data&0xff)<<40); logerror("ES5510: Write INSTR latch[5] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
- case 0x04: instr_latch = ((instr_latch&0xff00ffffffff) | ((INT64)data&0xff)<<32); logerror("ES5510: Write INSTR latch[4] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
- case 0x05: instr_latch = ((instr_latch&0xffff00ffffff) | ((INT64)data&0xff)<<24); logerror("ES5510: Write INSTR latch[3] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
- case 0x06: instr_latch = ((instr_latch&0xffffff00ffff) | ((INT64)data&0xff)<<16); logerror("ES5510: Write INSTR latch[2] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
- case 0x07: instr_latch = ((instr_latch&0xffffffff00ff) | ((INT64)data&0xff)<< 8); logerror("ES5510: Write INSTR latch[1] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
- case 0x08: instr_latch = ((instr_latch&0xffffffffff00) | ((INT64)data&0xff)<< 0); logerror("ES5510: Write INSTR latch[0] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
+ case 0x03: instr_latch = ((instr_latch&0x00ffffffffffLL) | ((INT64)data&0xff)<<40); logerror("ES5510: Write INSTR latch[5] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
+ case 0x04: instr_latch = ((instr_latch&0xff00ffffffffLL) | ((INT64)data&0xff)<<32); logerror("ES5510: Write INSTR latch[4] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
+ case 0x05: instr_latch = ((instr_latch&0xffff00ffffffLL) | ((INT64)data&0xff)<<24); logerror("ES5510: Write INSTR latch[3] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
+ case 0x06: instr_latch = ((instr_latch&0xffffff00ffffLL) | ((INT64)data&0xff)<<16); logerror("ES5510: Write INSTR latch[2] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
+ case 0x07: instr_latch = ((instr_latch&0xffffffff00ffLL) | ((INT64)data&0xff)<< 8); logerror("ES5510: Write INSTR latch[1] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
+ case 0x08: instr_latch = ((instr_latch&0xffffffffff00LL) | ((INT64)data&0xff)<< 0); logerror("ES5510: Write INSTR latch[0] = %02x -> %012" I64FMT "x\n", data, instr_latch); break;
/* 0x09 to 0x0b DIL Register (r/o) */
@@ -424,7 +424,7 @@
break;
case 0x80: /* Read select - GPR + INSTR */
- logerror("ES5510: Read INSTR+GPR %02x (%s): %012" I64FMT "x %06x (%d)\n", data, REGNAME(data & 0xff), instr[data] & 0xffffffffffffL, gpr[data] & 0xffffff, gpr[data]);
+ logerror("ES5510: Read INSTR+GPR %02x (%s): %012" I64FMT "x %06x (%d)\n", data, REGNAME(data & 0xff), instr[data] & 0xffffffffffffLL, gpr[data] & 0xffffff, gpr[data]);
/* Check if an INSTR address is selected */
if (data < 0xa0) {
@@ -444,9 +444,9 @@
case 0xc0: /* Write select - INSTR */
DESCRIBE_INSTR(buf, instr_latch, gpr[data]);
- logerror("ES5510: Write INSTR %02x %012" I64FMT "x: %s\n",data, instr_latch&0xffffffffffffL, buf);
+ logerror("ES5510: Write INSTR %02x %012" I64FMT "x: %s\n",data, instr_latch&0xffffffffffffLL, buf);
if (data < 0xa0) {
- instr[data] = instr_latch&0xffffffffffffL;
+ instr[data] = instr_latch&0xffffffffffffLL;
}
break;
@@ -587,7 +587,7 @@
if (mulacc.write_result) {
mulacc.product = (mulacc.cValue * mulacc.dValue) << mulshift;
mulacc.result = (mulacc.accumulate ? machl : 0) + mulacc.product;
- INT32 tmp = (mulacc.result & 0x0000ffffff000000) >> 24;
+ INT32 tmp = (mulacc.result & 0x0000ffffff000000LL) >> 24;
if (mulacc.dst & SRC_DST_REG) {
machl = mulacc.result;
write_reg(mulacc.cReg, tmp);
A mind is like a parachute. It doesn't work unless it's open. [Frank Zappa]
|
|
|
|
Joined: Jul 2007
Posts: 4,625
Very Senior Member
|
Very Senior Member
Joined: Jul 2007
Posts: 4,625 |
Nice, thank you.
|
|
|
|
Joined: Mar 2001
Posts: 17,215 Likes: 234
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,215 Likes: 234 |
That change will break MSVC; MAME provides the U64() wrapper macro for 64-bit constants. ETA: I've now committed a corrected version.
Last edited by R. Belmont; 02/04/13 02:34 PM.
|
|
|
|
Joined: May 2008
Posts: 4,930 Likes: 24
Very Senior Member
|
Very Senior Member
Joined: May 2008
Posts: 4,930 Likes: 24 |
Thanks, RB!
That's a bit OT, but I'm actually surprised that MSVC has trouble with that?! I'm using some decimal "*ULL" constants successfully in QMC2, it also works fine with MSVC as far as I can tell. May be I'm missing something, though.
A mind is like a parachute. It doesn't work unless it's open. [Frank Zappa]
|
|
|
2 members (Kale, 1 invisible),
233
guests, and
1
robot. |
Key:
Admin,
Global Mod,
Mod
|
|
Forums9
Topics9,320
Posts121,923
Members5,074
|
Most Online1,283 Dec 21st, 2022
|
|
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!
|
|
|
|