Last change
on this file was
585,
checked in by Sam Hocevar, 11 years ago
|
tool: compute and display SPEC item CRCs.
|
File size:
1.1 KB
|
Rev | Line | |
---|
[56] | 1 | /* |
---|
| 2 | * Abuse - dark 2D side-scrolling platform game |
---|
| 3 | * Copyright (c) 1995 Crack dot Com |
---|
[494] | 4 | * Copyright (c) 2005-2011 Sam Hocevar <sam@hocevar.net> |
---|
[56] | 5 | * |
---|
| 6 | * This software was released into the Public Domain. As with most public |
---|
[555] | 7 | * domain software, no warranty is made or implied by Crack dot Com, by |
---|
| 8 | * Jonathan Clark, or by Sam Hocevar. |
---|
[56] | 9 | */ |
---|
| 10 | |
---|
[555] | 11 | #if defined HAVE_CONFIG_H |
---|
| 12 | # include "config.h" |
---|
| 13 | #endif |
---|
[56] | 14 | |
---|
[481] | 15 | #include "crc.h" |
---|
[2] | 16 | |
---|
[585] | 17 | uint16_t calc_crc(void *buf, size_t len) |
---|
[2] | 18 | { |
---|
[585] | 19 | uint8_t *data = (uint8_t *)buf; |
---|
| 20 | uint8_t c1 = 0, c2 = 0; |
---|
| 21 | |
---|
| 22 | while (len--) |
---|
| 23 | c2 += (c1 += *data++); |
---|
| 24 | |
---|
| 25 | return (c2 << 8) | c1; |
---|
[2] | 26 | } |
---|
| 27 | |
---|
| 28 | |
---|
[124] | 29 | |
---|
[17] | 30 | uint32_t crc_file(bFILE *fp) |
---|
[2] | 31 | { |
---|
[17] | 32 | uint8_t crc1=0,crc2=0,crc3=0,crc4=0; |
---|
[2] | 33 | |
---|
| 34 | int size=0x1000; |
---|
[129] | 35 | uint8_t *buffer=(uint8_t *)malloc(size),*c; |
---|
[2] | 36 | long l=fp->file_size(); |
---|
| 37 | long cur_pos=fp->tell(); |
---|
| 38 | fp->seek(0,0); |
---|
| 39 | while (l) |
---|
| 40 | { |
---|
| 41 | int nr=fp->read(buffer,size); |
---|
| 42 | if (nr==0) l=0; |
---|
| 43 | else |
---|
| 44 | { |
---|
| 45 | l-=nr; |
---|
[494] | 46 | for (c=buffer; nr; nr--,c++) |
---|
[124] | 47 | { |
---|
| 48 | crc1+=*c; |
---|
| 49 | crc2+=crc1; |
---|
| 50 | crc3+=crc2; |
---|
| 51 | crc4+=crc3; |
---|
[2] | 52 | } |
---|
| 53 | } |
---|
| 54 | } |
---|
| 55 | fp->seek(cur_pos,0); |
---|
[129] | 56 | free(buffer); |
---|
[2] | 57 | return (crc1|(crc2<<8)|(crc3<<16)|(crc4<<24)); |
---|
| 58 | } |
---|
Note: See
TracBrowser
for help on using the repository browser.