Previous Thread
Next Thread
Print Thread
Page 10 of 43 1 2 8 9 10 11 12 42 43
Joined: Mar 2001
Posts: 16,960
Likes: 76
R
Very Senior Member
Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,960
Likes: 76
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
A
Very Senior Member
Offline
Very Senior Member
A
Joined: Jul 2007
Posts: 4,625
I agree but it should exist alternatives by using older CPUs.

Joined: Apr 2008
Posts: 49
Z
Member
Offline
Member
Z
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:

Quote:
src/osd/sdl/sdl.mak:449: *** commands commence before first target. Stop.



src/osd/sdl/sdl.mak line 449 has
Quote:
$(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: 16,960
Likes: 76
R
Very Senior Member
Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,960
Likes: 76
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
Z
Member
Offline
Member
Z
Joined: Apr 2008
Posts: 49
Looks like the new psx analog stuff isn't compiling right:

Quote:
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
A
Very Senior Member
Offline
Very Senior Member
A
Joined: Jul 2007
Posts: 4,625
r20719
Compile fix (no whatsnew)
[src/emu/cpu/es5510]

I have still a problem ...

Quote:
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
Q
Very Senior Member
Offline
Very Senior Member
Q
Joined: May 2008
Posts: 4,930
Likes: 24
This should fix it:

Code:
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
A
Very Senior Member
Offline
Very Senior Member
A
Joined: Jul 2007
Posts: 4,625
Nice, thank you. smile

Joined: Mar 2001
Posts: 16,960
Likes: 76
R
Very Senior Member
Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,960
Likes: 76
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
Q
Very Senior Member
Offline
Very Senior Member
Q
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]
Page 10 of 43 1 2 8 9 10 11 12 42 43

Link Copied to Clipboard
Who's Online Now
1 members (Pernod), 23 guests, and 4 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,158
Posts119,911
Members5,034
Most Online1,283
Dec 21st, 2022
Our Sponsor
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!

Superior Solitaire
Forum hosted by www.retrogamesformac.com