mirror of
https://github.com/classilla/stbtools.git
synced 2024-11-24 10:31:03 +00:00
22 lines
715 B
Perl
Executable File
22 lines
715 B
Perl
Executable File
#!/usr/bin/perl
|
|
#
|
|
# Compute Mac checksum for a ROM and compares it with the existing one.
|
|
# Provide the ROM as an argument or on standard input.
|
|
#
|
|
# Copyright (C) 2023 Cameron Kaiser. All rights reserved.
|
|
# BSD license.
|
|
# oldvcr.blogspot.com
|
|
|
|
eval "use bytes";
|
|
$/ = \4; $actual = unpack("N", <>); printf("expected = 0x%08x\n", $actual);
|
|
|
|
read(ARGV, $buf, 8388608);
|
|
die("length of buffer is not even: @{[ length($buf) ]} bytes\n")
|
|
if (length($buf) & 1);
|
|
print "bytes read = @{[ length($buf) + 4 ]}\n";
|
|
$checksum = 0;
|
|
map { $checksum += $_ } unpack("n*", $buf); # map is faster than grep
|
|
$checksum &= 4294967295;
|
|
printf("computed = 0x%08x (%s)\n", $checksum,
|
|
($checksum == $actual) ? "matches" : "DOES NOT MATCH");
|