diff --git a/ld/gamefiles.ntsc-beta.inc b/ld/gamefiles.ntsc-beta.inc index 1b9cb5476..c2b9d1301 100644 --- a/ld/gamefiles.ntsc-beta.inc +++ b/ld/gamefiles.ntsc-beta.inc @@ -143,7 +143,8 @@ build/ROMID/game/data/data_020df0.o (section); \ build/ROMID/game/game_11f000.o (section); \ build/ROMID/game/game_127910.o (section); \ - build/ROMID/game/game_128f30.o (section); \ + build/ROMID/game/crc.o (section); \ + build/ROMID/game/game_1291b0.o (section); \ build/ROMID/game/game_129210.o (section); \ build/ROMID/game/explosions/explosions.o (section); \ build/ROMID/game/smoke/smoke.o (section); \ diff --git a/ld/gamefiles.ntsc-final.inc b/ld/gamefiles.ntsc-final.inc index cd4ad0b6f..c98fad1af 100644 --- a/ld/gamefiles.ntsc-final.inc +++ b/ld/gamefiles.ntsc-final.inc @@ -142,7 +142,8 @@ build/ROMID/game/data/data_020df0.o (section); \ build/ROMID/game/game_11f000.o (section); \ build/ROMID/game/game_127910.o (section); \ - build/ROMID/game/game_128f30.o (section); \ + build/ROMID/game/crc.o (section); \ + build/ROMID/game/game_1291b0.o (section); \ build/ROMID/game/game_129210.o (section); \ build/ROMID/game/explosions/explosions.o (section); \ build/ROMID/game/smoke/smoke.o (section); \ diff --git a/ld/gamefiles.pal-final.inc b/ld/gamefiles.pal-final.inc index cd4ad0b6f..c98fad1af 100644 --- a/ld/gamefiles.pal-final.inc +++ b/ld/gamefiles.pal-final.inc @@ -142,7 +142,8 @@ build/ROMID/game/data/data_020df0.o (section); \ build/ROMID/game/game_11f000.o (section); \ build/ROMID/game/game_127910.o (section); \ - build/ROMID/game/game_128f30.o (section); \ + build/ROMID/game/crc.o (section); \ + build/ROMID/game/game_1291b0.o (section); \ build/ROMID/game/game_129210.o (section); \ build/ROMID/game/explosions/explosions.o (section); \ build/ROMID/game/smoke/smoke.o (section); \ diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 067441dbd..5d0da8a20 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -19,7 +19,7 @@ #include "game/game_0b69d0.h" #include "game/game_0c33f0.h" #include "game/game_127910.h" -#include "game/game_128f30.h" +#include "game/game_1291b0.h" #include "game/game_129210.h" #include "game/explosions/explosions.h" #include "game/smoke/smoke.h" diff --git a/src/game/crc.c b/src/game/crc.c new file mode 100644 index 000000000..d2ef792d8 --- /dev/null +++ b/src/game/crc.c @@ -0,0 +1,50 @@ +#include +#include "constants.h" +#include "bss.h" +#include "lib/rng.h" +#include "data.h" +#include "types.h" + +void crcCalculateU32Pair(u8 *start, u8 *end, u32 *checksum) +{ + u8 *ptr; + u32 salt = 0; + u64 seed = 0x8f809f473108b3c1; + u32 sum1 = 0; + u32 sum2 = 0; + + for (ptr = start; ptr < end; ptr++, salt += 7) { + seed += *ptr << (salt & 0x0f); + sum1 ^= rngRotateSeed(&seed); + } + + for (ptr = end - 1; ptr >= start; ptr--, salt += 3) { + seed += *ptr << (salt & 0x0f); + sum2 ^= rngRotateSeed(&seed); + } + + checksum[0] = sum1; + checksum[1] = sum2; +} + +void crcCalculateU16Pair(u8 *start, u8 *end, u16 *checksum) +{ + u8 *ptr; + u32 salt = 0; + u64 seed = 0x8f809f473108b3c1; + u32 sum1 = 0; + u32 sum2 = 0; + + for (ptr = start; ptr < end; ptr++, salt += 7) { + seed += *ptr << (salt & 0x0f); + sum1 ^= rngRotateSeed(&seed); + } + + for (ptr = end - 1; ptr >= start; ptr--, salt += 3) { + seed += *ptr << (salt & 0x0f); + sum2 ^= rngRotateSeed(&seed); + } + + checksum[0] = sum1 & 0xffff; + checksum[1] = sum2 & 0xffff; +} diff --git a/src/game/game_128f30.c b/src/game/game_1291b0.c similarity index 59% rename from src/game/game_128f30.c rename to src/game/game_1291b0.c index 38c7870cd..ac8631672 100644 --- a/src/game/game_128f30.c +++ b/src/game/game_1291b0.c @@ -8,50 +8,6 @@ u32 var8007e3c0 = 0xab8d9f77; u32 var8007e3c4 = 0x81280783; -void crcCalculateU32Pair(u8 *start, u8 *end, u32 *checksum) -{ - u8 *ptr; - u32 salt = 0; - u64 seed = 0x8f809f473108b3c1; - u32 sum1 = 0; - u32 sum2 = 0; - - for (ptr = start; ptr < end; ptr++, salt += 7) { - seed += *ptr << (salt & 0x0f); - sum1 ^= rngRotateSeed(&seed); - } - - for (ptr = end - 1; ptr >= start; ptr--, salt += 3) { - seed += *ptr << (salt & 0x0f); - sum2 ^= rngRotateSeed(&seed); - } - - checksum[0] = sum1; - checksum[1] = sum2; -} - -void crcCalculateU16Pair(u8 *start, u8 *end, u16 *checksum) -{ - u8 *ptr; - u32 salt = 0; - u64 seed = 0x8f809f473108b3c1; - u32 sum1 = 0; - u32 sum2 = 0; - - for (ptr = start; ptr < end; ptr++, salt += 7) { - seed += *ptr << (salt & 0x0f); - sum1 ^= rngRotateSeed(&seed); - } - - for (ptr = end - 1; ptr >= start; ptr--, salt += 3) { - seed += *ptr << (salt & 0x0f); - sum2 ^= rngRotateSeed(&seed); - } - - checksum[0] = sum1 & 0xffff; - checksum[1] = sum2 & 0xffff; -} - GLOBAL_ASM( glabel func0f1291b0 /* f1291b0: 3c048008 */ lui $a0,%hi(var8007e3c0) diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index 4755ca082..c917f7cf7 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -2,7 +2,7 @@ #include "constants.h" #include "game/camdraw.h" #include "game/game_0f09f0.h" -#include "game/game_128f30.h" +#include "game/crc.h" #include "game/gamefile.h" #include "game/pak/pak.h" #include "game/utils.h" diff --git a/src/game/propobj.c b/src/game/propobj.c index 4dabf8746..a9f5ba58f 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -33,7 +33,7 @@ #include "game/game_0f09f0.h" #include "game/inventory/inventory.h" #include "game/game_127910.h" -#include "game/game_128f30.h" +#include "game/game_1291b0.h" #include "game/game_129210.h" #include "game/explosions/explosions.h" #include "game/smoke/smoke.h" diff --git a/src/include/game/game_128f30.h b/src/include/game/crc.h similarity index 63% rename from src/include/game/game_128f30.h rename to src/include/game/crc.h index d63393c23..ebd786436 100644 --- a/src/include/game/game_128f30.h +++ b/src/include/game/crc.h @@ -1,12 +1,10 @@ -#ifndef IN_GAME_GAME_128F30_H -#define IN_GAME_GAME_128F30_H +#ifndef IN_GAME_CRC_H +#define IN_GAME_CRC_H #include #include "data.h" #include "types.h" void crcCalculateU32Pair(u8 *start, u8 *end, u32 *checksum); void crcCalculateU16Pair(u8 *start, u8 *end, u16 *checksum); -u32 func0f1291b0(void); -u32 func0f1291f8(void); #endif diff --git a/src/include/game/game_1291b0.h b/src/include/game/game_1291b0.h new file mode 100644 index 000000000..1a5787aa9 --- /dev/null +++ b/src/include/game/game_1291b0.h @@ -0,0 +1,10 @@ +#ifndef IN_GAME_GAME_1291B0_H +#define IN_GAME_GAME_1291B0_H +#include +#include "data.h" +#include "types.h" + +u32 func0f1291b0(void); +u32 func0f1291f8(void); + +#endif