Excerpts from Ryan Freeman's message of Fri Aug 13 08:49:30 -0700 2010: > Hello ports@ > > Here is a patch updating my chocolate-doom port from 1.2.1 to the > latest version, 1.4.0. Daniel Dickman previously submitted a patch > to me updating to 1.3.0, however Edd Barrett informed me that the > 1.4.0 version would not build on sparc64. > > To summarize changes, the 1.4.0 and 1.5.0 release logs are here: > 1.3.0 to 1.4.0: > http://chocolate-doom.svn.sourceforge.net/viewvc/chocolate-doom/trunk/chocolate-doom/ChangeLog?r1=1869&r2=1941 > 1.2.1 to 1.3.0: > http://chocolate-doom.svn.sourceforge.net/viewvc/chocolate-doom/trunk/chocolate-doom/ChangeLog?r1=1421&r2=1869 > > One thing to note is fraggle's efforts to add support for openbsd's > OPL device driver, and a software OPL emulator to play back doom's > music as closely as possible to the way it would have originally > sounded back in 1993 with the appropriate audio card :) > > Please test, and Edd if you could let me know if this now builds > on sparc64, i would appreciate it :D Also if it doesn't, did you > ever get a chance to check and see if chocolate-doom 1.2.1 built > on sparc64? >
first of all to correct confusion there is no 1.5.0 release, i meant to type 'the 1.3.0 and 1.4.0 release logs are here:' Calling Edd! :) I received a patch from Simon Howard (chocolate-doom author) for sparc64 issues can this be tested by Edd or anyone with sparc64? thanks! >From Simon: I checked the ports@ archives about the sparc64 problem and it seems to be a SIGBUS, which implies a memory alignment problem. Apparently SPARC64 expects some things to be 8-byte word aligned. Doom's zone memory system aligns allocated memory to 4 byte boundaries and I assumed this would be enough, but it may be an invalid assumption. /usr/ports/mystuff/games/chocolate-doom/patches/patch-src_z_zone_c: $OpenBSD$ --- src/z_zone.c.orig Mon Aug 16 09:05:39 2010 +++ src/z_zone.c Mon Aug 16 09:06:59 2010 @@ -40,7 +40,8 @@ // It is of no value to free a cachable block, // because it will get overwritten automatically if needed. // - + +#define MEM_ALIGN sizeof(void *) #define ZONEID 0x1d4a11 typedef struct memblock_s @@ -201,7 +202,7 @@ Z_Malloc memblock_t* base; void *result; - size = (size + 3) & ~3; + size = (size + MEM_ALIGN - 1) & ~(MEM_ALIGN - 1); // scan through the block list, // looking for the first free block