summaryrefslogtreecommitdiff
path: root/games/xclannad/patches/patch-window_picture.cc
blob: 37eb1eb3ff4245fdbbe70cc40f14b8c5c2a30350 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$NetBSD: patch-window_picture.cc,v 1.1 2020/01/03 02:35:51 tsutsui Exp $

- avoid unaligned copy for RISC cpus

--- window/picture.cc.orig	2008-01-06 05:17:14.000000000 +0000
+++ window/picture.cc
@@ -370,7 +370,7 @@ err_ret:
 			char* s = (char*)((SDL_Surface*)surface_own)->pixels + ((SDL_Surface*)surface_own)->pitch*i;
 			int bpp = ((SDL_Surface*)surface_own)->format->BytesPerPixel;
 			for (j=0; j<w; j++) {
-				if ( ((*(int*)s) & 0xffffff) == 0) *a = 0;
+				if ( (read_little_endian_int(s) & 0xffffff) == 0) *a = 0;
 				else if (*a == 0) *a = 0xff;
 				s += bpp; a++;
 			}
@@ -730,10 +730,10 @@ inline Surface* FileToSurface::LoadSurfa
 		MaskType is_mask = conv->IsMask() ? ALPHA_MASK : NO_MASK;
 		if (is_mask == ALPHA_MASK) { // alpha �����٤� 0xff �ʤ�ޥ���̵���Ȥ���
 			int len = conv->Width()*conv->Height();
-			unsigned int* d = (unsigned int*)mem;
+			char* d = mem;
 			int i; for (i=0; i<len; i++) {
-				if ( (*d&0xff000000) != 0xff000000) break;
-				d++;
+				if ( (read_little_endian_int(d)&0xff000000) != 0xff000000) break;
+				d += 4;
 			}
 			if (i == len) {
 				is_mask = NO_MASK;