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
 

Reply via email to