TGC Codebase Backup



CRC32 Builder by Cryptoman

17th Feb 2004 18:21
Summary

Quick crc32 check system to help prevent hacking or modified files



Description



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    `CRC32 builder
`by TRS80Model1
`2-17-2004 (6hrs)
`OpenSource-Just remember who contributed
`Use to check to see if any of your media or Readme files
`have been changed.  If files have been modified then do not allow your
`program to run.  This will help to prevent non-coding jerks from taking your credit
`Sorry I could not get the program to compile under funtions so these are gosubs instead
dim malngCRC32(256)
Global CRC32 = 0xFFFFFFFF
`Build Lookup Table
   gosub ConstructCRCTable
`InputFileName$=the file you wish to check.
InputFileName$="upgrade5_1.txt"
`Load file into memblock
   gosub loadfile
`Calculate CRC32
   gosub GetCRCFromMemblock
do
`Print Calculated CRC32
   print GetCrc
   sync
loop
end
loadfile:
    open to read 1,InputFileName$
    make memblock from file 1,1
    close file 1
    InputLength =  get memblock size (1)
return

GetCRCFromMemblock:
    ` Comments  : This procedure generates a CRC for the memblock specified
    ` Returns   : The calculated CRC value
    `' Construct the CRC table

    For Counter = 0 To InputLength-1
     ` Update the CRC
       gosub UpdateCRC32

    Next Counter

    `' The memblock is done being processed
    `' Delete memblock and Return the CRC
    delete memblock 1
    GetCRC = --CRC32

Return

UpdateCRC32:
    ` Comments  : This procedure calculates the new CRC based on the current CRC
    `             and the byte value
    ` Returns   : The calculated cumulative CRC value
    ` Calculate the lookup value

    Lookup = (CRC32 ~~ memblock byte(1,Counter)) And 255
    ` Calculate and return the new CRC value
    CRC32 = (Int(CRC32 / 256) And 0xFFFFFF) ~~ malngCRC32(Lookup)

return

ConstructCRCTable:
    ` Comments  : This procedure fills the CRC table with precalculated Values.
    `             This is more efficient than calculating CRC's on the fly
    ` Returns   : Nothing
    `
    ` Fill the table with the precalculate CRC Values.
    malngCRC32(0) = 0x0
    malngCRC32(1) = 0x77073096
    malngCRC32(2) = 0xEE0E612C
    malngCRC32(3) = 0x990951BA
    malngCRC32(4) = 0x76DC419
    malngCRC32(5) = 0x706AF48F
    malngCRC32(6) = 0xE963A535
    malngCRC32(7) = 0x9E6495A3
    malngCRC32(8) = 0xEDB8832
    malngCRC32(9) = 0x79DCB8A4
    malngCRC32(10) = 0xE0D5E91E
    malngCRC32(11) = 0x97D2D988
    malngCRC32(12) = 0x9B64C2B
    malngCRC32(13) = 0x7EB17CBD
    malngCRC32(14) = 0xE7B82D07
    malngCRC32(15) = 0x90BF1D91
    malngCRC32(16) = 0x1DB71064
    malngCRC32(17) = 0x6AB020F2
    malngCRC32(18) = 0xF3B97148
    malngCRC32(19) = 0x84BE41DE
    malngCRC32(20) = 0x1ADAD47D
    malngCRC32(21) = 0x6DDDE4EB
    malngCRC32(22) = 0xF4D4B551
    malngCRC32(23) = 0x83D385C7
    malngCRC32(24) = 0x136C9856
    malngCRC32(25) = 0x646BA8C0
    malngCRC32(26) = 0xFD62F97A
    malngCRC32(27) = 0x8A65C9EC
    malngCRC32(28) = 0x14015C4F
    malngCRC32(29) = 0x63066CD9
    malngCRC32(30) = 0xFA0F3D63
    malngCRC32(31) = 0x8D080DF5
    malngCRC32(32) = 0x3B6E20C8
    malngCRC32(33) = 0x4C69105E
    malngCRC32(34) = 0xD56041E4
    malngCRC32(35) = 0xA2677172
    malngCRC32(36) = 0x3C03E4D1
    malngCRC32(37) = 0x4B04D447
    malngCRC32(38) = 0xD20D85FD
    malngCRC32(39) = 0xA50AB56B
    malngCRC32(40) = 0x35B5A8FA
    malngCRC32(41) = 0x42B2986C
    malngCRC32(42) = 0xDBBBC9D6
    malngCRC32(43) = 0xACBCF940
    malngCRC32(44) = 0x32D86CE3
    malngCRC32(45) = 0x45DF5C75
    malngCRC32(46) = 0xDCD60DCF
    malngCRC32(47) = 0xABD13D59
    malngCRC32(48) = 0x26D930AC
    malngCRC32(49) = 0x51DE003A
    malngCRC32(50) = 0xC8D75180
    malngCRC32(51) = 0xBFD06116
    malngCRC32(52) = 0x21B4F4B5
    malngCRC32(53) = 0x56B3C423
    malngCRC32(54) = 0xCFBA9599
    malngCRC32(55) = 0xB8BDA50F
    malngCRC32(56) = 0x2802B89E
    malngCRC32(57) = 0x5F058808
    malngCRC32(58) = 0xC60CD9B2
    malngCRC32(59) = 0xB10BE924
    malngCRC32(60) = 0x2F6F7C87
    malngCRC32(61) = 0x58684C11
    malngCRC32(62) = 0xC1611DAB
    malngCRC32(63) = 0xB6662D3D
    malngCRC32(64) = 0x76DC4190
    malngCRC32(65) = 0x1DB7106
    malngCRC32(66) = 0x98D220BC
    malngCRC32(67) = 0xEFD5102A
    malngCRC32(68) = 0x71B18589
    malngCRC32(69) = 0x6B6B51F
    malngCRC32(70) = 0x9FBFE4A5
    malngCRC32(71) = 0xE8B8D433
    malngCRC32(72) = 0x7807C9A2
    malngCRC32(73) = 0xF00F934
    malngCRC32(74) = 0x9609A88E
    malngCRC32(75) = 0xE10E9818
    malngCRC32(76) = 0x7F6A0DBB
    malngCRC32(77) = 0x86D3D2D
    malngCRC32(78) = 0x91646C97
    malngCRC32(79) = 0xE6635C01
    malngCRC32(80) = 0x6B6B51F4
    malngCRC32(81) = 0x1C6C6162
    malngCRC32(82) = 0x856530D8
    malngCRC32(83) = 0xF262004E
    malngCRC32(84) = 0x6C0695ED
    malngCRC32(85) = 0x1B01A57B
    malngCRC32(86) = 0x8208F4C1
    malngCRC32(87) = 0xF50FC457
    malngCRC32(88) = 0x65B0D9C6
    malngCRC32(89) = 0x12B7E950
    malngCRC32(90) = 0x8BBEB8EA
    malngCRC32(91) = 0xFCB9887C
    malngCRC32(92) = 0x62DD1DDF
    malngCRC32(93) = 0x15DA2D49
    malngCRC32(94) = 0x8CD37CF3
    malngCRC32(95) = 0xFBD44C65
    malngCRC32(96) = 0x4DB26158
    malngCRC32(97) = 0x3AB551CE
    malngCRC32(98) = 0xA3BC0074
    malngCRC32(99) = 0xD4BB30E2
    malngCRC32(100) = 0x4ADFA541
    malngCRC32(101) = 0x3DD895D7
    malngCRC32(102) = 0xA4D1C46D
    malngCRC32(103) = 0xD3D6F4FB
    malngCRC32(104) = 0x4369E96A
    malngCRC32(105) = 0x346ED9FC
    malngCRC32(106) = 0xAD678846
    malngCRC32(107) = 0xDA60B8D0
    malngCRC32(108) = 0x44042D73
    malngCRC32(109) = 0x33031DE5
    malngCRC32(110) = 0xAA0A4C5F
    malngCRC32(111) = 0xDD0D7CC9
    malngCRC32(112) = 0x5005713C
    malngCRC32(113) = 0x270241AA
    malngCRC32(114) = 0xBE0B1010
    malngCRC32(115) = 0xC90C2086
    malngCRC32(116) = 0x5768B525
    malngCRC32(117) = 0x206F85B3
    malngCRC32(118) = 0xB966D409
    malngCRC32(119) = 0xCE61E49F
    malngCRC32(120) = 0x5EDEF90E
    malngCRC32(121) = 0x29D9C998
    malngCRC32(122) = 0xB0D09822
    malngCRC32(123) = 0xC7D7A8B4
    malngCRC32(124) = 0x59B33D17
    malngCRC32(125) = 0x2EB40D81
    malngCRC32(126) = 0xB7BD5C3B
    malngCRC32(127) = 0xC0BA6CAD
    malngCRC32(128) = 0xEDB88320
    malngCRC32(129) = 0x9ABFB3B6
    malngCRC32(130) = 0x3B6E20C
    malngCRC32(131) = 0x74B1D29A
    malngCRC32(132) = 0xEAD54739
    malngCRC32(133) = 0x9DD277AF
    malngCRC32(134) = 0x4DB2615
    malngCRC32(135) = 0x73DC1683
    malngCRC32(136) = 0xE3630B12
    malngCRC32(137) = 0x94643B84
    malngCRC32(138) = 0xD6D6A3E
    malngCRC32(139) = 0x7A6A5AA8
    malngCRC32(140) = 0xE40ECF0B
    malngCRC32(141) = 0x9309FF9D
    malngCRC32(142) = 0xA00AE27
    malngCRC32(143) = 0x7D079EB1
    malngCRC32(144) = 0xF00F9344
    malngCRC32(145) = 0x8708A3D2
    malngCRC32(146) = 0x1E01F268
    malngCRC32(147) = 0x6906C2FE
    malngCRC32(148) = 0xF762575D
    malngCRC32(149) = 0x806567CB
    malngCRC32(150) = 0x196C3671
    malngCRC32(151) = 0x6E6B06E7
    malngCRC32(152) = 0xFED41B76
    malngCRC32(153) = 0x89D32BE0
    malngCRC32(154) = 0x10DA7A5A
    malngCRC32(155) = 0x67DD4ACC
    malngCRC32(156) = 0xF9B9DF6F
    malngCRC32(157) = 0x8EBEEFF9
    malngCRC32(158) = 0x17B7BE43
    malngCRC32(159) = 0x60B08ED5
    malngCRC32(160) = 0xD6D6A3E8
    malngCRC32(161) = 0xA1D1937E
    malngCRC32(162) = 0x38D8C2C4
    malngCRC32(163) = 0x4FDFF252
    malngCRC32(164) = 0xD1BB67F1
    malngCRC32(165) = 0xA6BC5767
    malngCRC32(166) = 0x3FB506DD
    malngCRC32(167) = 0x48B2364B
    malngCRC32(168) = 0xD80D2BDA
    malngCRC32(169) = 0xAF0A1B4C
    malngCRC32(170) = 0x36034AF6
    malngCRC32(171) = 0x41047A60
    malngCRC32(172) = 0xDF60EFC3
    malngCRC32(173) = 0xA867DF55
    malngCRC32(174) = 0x316E8EEF
    malngCRC32(175) = 0x4669BE79
    malngCRC32(176) = 0xCB61B38C
    malngCRC32(177) = 0xBC66831A
    malngCRC32(178) = 0x256FD2A0
    malngCRC32(179) = 0x5268E236
    malngCRC32(180) = 0xCC0C7795
    malngCRC32(181) = 0xBB0B4703
    malngCRC32(182) = 0x220216B9
    malngCRC32(183) = 0x5505262F
    malngCRC32(184) = 0xC5BA3BBE
    malngCRC32(185) = 0xB2BD0B28
    malngCRC32(186) = 0x2BB45A92
    malngCRC32(187) = 0x5CB36A04
    malngCRC32(188) = 0xC2D7FFA7
    malngCRC32(189) = 0xB5D0CF31
    malngCRC32(190) = 0x2CD99E8B
    malngCRC32(191) = 0x5BDEAE1D
    malngCRC32(192) = 0x9B64C2B0
    malngCRC32(193) = 0xEC63F226
    malngCRC32(194) = 0x756AA39C
    malngCRC32(195) = 0x26D930A
    malngCRC32(196) = 0x9C0906A9
    malngCRC32(197) = 0xEB0E363F
    malngCRC32(198) = 0x72076785
    malngCRC32(199) = 0x5005713
    malngCRC32(200) = 0x95BF4A82
    malngCRC32(201) = 0xE2B87A14
    malngCRC32(202) = 0x7BB12BAE
    malngCRC32(203) = 0xCB61B38
    malngCRC32(204) = 0x92D28E9B
    malngCRC32(205) = 0xE5D5BE0D
    malngCRC32(206) = 0x7CDCEFB7
    malngCRC32(207) = 0xBDBDF21
    malngCRC32(208) = 0x86D3D2D4
    malngCRC32(209) = 0xF1D4E242
    malngCRC32(210) = 0x68DDB3F8
    malngCRC32(211) = 0x1FDA836E
    malngCRC32(212) = 0x81BE16CD
    malngCRC32(213) = 0xF6B9265B
    malngCRC32(214) = 0x6FB077E1
    malngCRC32(215) = 0x18B74777
    malngCRC32(216) = 0x88085AE6
    malngCRC32(217) = 0xFF0F6A70
    malngCRC32(218) = 0x66063BCA
    malngCRC32(219) = 0x11010B5C
    malngCRC32(220) = 0x8F659EFF
    malngCRC32(221) = 0xF862AE69
    malngCRC32(222) = 0x616BFFD3
    malngCRC32(223) = 0x166CCF45
    malngCRC32(224) = 0xA00AE278
    malngCRC32(225) = 0xD70DD2EE
    malngCRC32(226) = 0x4E048354
    malngCRC32(227) = 0x3903B3C2
    malngCRC32(228) = 0xA7672661
    malngCRC32(229) = 0xD06016F7
    malngCRC32(230) = 0x4969474D
    malngCRC32(231) = 0x3E6E77DB
    malngCRC32(232) = 0xAED16A4A
    malngCRC32(233) = 0xD9D65ADC
    malngCRC32(234) = 0x40DF0B66
    malngCRC32(235) = 0x37D83BF0
    malngCRC32(236) = 0xA9BCAE53
    malngCRC32(237) = 0xDEBB9EC5
    malngCRC32(238) = 0x47B2CF7F
    malngCRC32(239) = 0x30B5FFE9
    malngCRC32(240) = 0xBDBDF21C
    malngCRC32(241) = 0xCABAC28A
    malngCRC32(242) = 0x53B39330
    malngCRC32(243) = 0x24B4A3A6
    malngCRC32(244) = 0xBAD03605
    malngCRC32(245) = 0xCDD70693
    malngCRC32(246) = 0x54DE5729
    malngCRC32(247) = 0x23D967BF
    malngCRC32(248) = 0xB3667A2E
    malngCRC32(249) = 0xC4614AB8
    malngCRC32(250) = 0x5D681B02
    malngCRC32(251) = 0x2A6F2B94
    malngCRC32(252) = 0xB40BBE37
    malngCRC32(253) = 0xC30C8EA1
    malngCRC32(254) = 0x5A05DF1B
    malngCRC32(255) = 0x2D02EF8D

return