2 * Glide64 - Glide video plugin for Nintendo 64 emulators.
3 * Copyright (c) 2002 Dave2001
4 * Copyright (c) 2008 Günther <guenther.emu@freenet.de>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 //****************************************************************
23 // Glide64 - Glide Plugin for Nintendo 64 emulators (tested mostly with Project64)
24 // Project started on December 29th, 2001
27 // * Write your name and (optional)email, commented by your work, so I know who did it, and so that you can find which parts you modified when it comes time to send it to me.
28 // * Do NOT send me the whole project or file that you modified. Take out your modified code sections, and tell me where to put them. If people sent the whole thing, I would have many different versions, but no idea how to combine them all.
30 // Official Glide64 development channel: #Glide64 on EFnet
32 // Original author: Dave2001 (Dave2999@hotmail.com)
33 // Other authors: Gonetz, Gugaman
35 //****************************************************************
37 // CRC32 calculation functions
39 // Created by Gonetz, 2004
41 //****************************************************************
43 #if !defined(WIN32) && defined(GCC)
45 #define CRCTable _CRCTable
48 extern unsigned int CRCTable
[ 256 ];
50 void CRC_BuildTable();
52 inline unsigned int CRC_Calculate( unsigned int crc
, const void *buffer
, unsigned int count
)
55 unsigned int Crc32
=crc
;
63 mov bl
, byte ptr
[esi
]
68 mov ebx
, [CRCTable
+eax
*4]
78 unsigned int result
= crc
;
79 for (const char * p
= (const char*)buffer
; p
!= (const char*)buffer
+ count
; ++p
)
81 unsigned char al
= result
;
84 result
^= CRCTable
[al
];