Create functionally equivalent C for handwritten RNG2 functions

This commit is contained in:
Ryan Dwyer 2022-11-18 22:42:04 +10:00
parent 1b0e512e2a
commit 9c7ba4da9d
12 changed files with 49 additions and 20 deletions

View File

@ -168,7 +168,7 @@
build/ROMID/game/sky.o (section); \ build/ROMID/game/sky.o (section); \
build/ROMID/game/playermgr.o (section); \ build/ROMID/game/playermgr.o (section); \
build/ROMID/game/crc.o (section); \ build/ROMID/game/crc.o (section); \
build/ROMID/game/rng2.o (section); \ build/ROMID/game/rng2asm.o (section); \
build/ROMID/game/vtxstore.o (section); \ build/ROMID/game/vtxstore.o (section); \
build/ROMID/game/explosions.o (section); \ build/ROMID/game/explosions.o (section); \
build/ROMID/game/smoke.o (section); \ build/ROMID/game/smoke.o (section); \

View File

@ -169,7 +169,7 @@
build/ROMID/game/sky.o (section); \ build/ROMID/game/sky.o (section); \
build/ROMID/game/playermgr.o (section); \ build/ROMID/game/playermgr.o (section); \
build/ROMID/game/crc.o (section); \ build/ROMID/game/crc.o (section); \
build/ROMID/game/rng2.o (section); \ build/ROMID/game/rng2asm.o (section); \
build/ROMID/game/vtxstore.o (section); \ build/ROMID/game/vtxstore.o (section); \
build/ROMID/game/explosions.o (section); \ build/ROMID/game/explosions.o (section); \
build/ROMID/game/smoke.o (section); \ build/ROMID/game/smoke.o (section); \

View File

@ -168,7 +168,7 @@
build/ROMID/game/sky.o (section); \ build/ROMID/game/sky.o (section); \
build/ROMID/game/playermgr.o (section); \ build/ROMID/game/playermgr.o (section); \
build/ROMID/game/crc.o (section); \ build/ROMID/game/crc.o (section); \
build/ROMID/game/rng2.o (section); \ build/ROMID/game/rng2asm.o (section); \
build/ROMID/game/vtxstore.o (section); \ build/ROMID/game/vtxstore.o (section); \
build/ROMID/game/explosions.o (section); \ build/ROMID/game/explosions.o (section); \
build/ROMID/game/smoke.o (section); \ build/ROMID/game/smoke.o (section); \

View File

@ -169,7 +169,7 @@
build/ROMID/game/sky.o (section); \ build/ROMID/game/sky.o (section); \
build/ROMID/game/playermgr.o (section); \ build/ROMID/game/playermgr.o (section); \
build/ROMID/game/crc.o (section); \ build/ROMID/game/crc.o (section); \
build/ROMID/game/rng2.o (section); \ build/ROMID/game/rng2asm.o (section); \
build/ROMID/game/vtxstore.o (section); \ build/ROMID/game/vtxstore.o (section); \
build/ROMID/game/explosions.o (section); \ build/ROMID/game/explosions.o (section); \
build/ROMID/game/smoke.o (section); \ build/ROMID/game/smoke.o (section); \

View File

@ -168,7 +168,7 @@
build/ROMID/game/sky.o (section); \ build/ROMID/game/sky.o (section); \
build/ROMID/game/playermgr.o (section); \ build/ROMID/game/playermgr.o (section); \
build/ROMID/game/crc.o (section); \ build/ROMID/game/crc.o (section); \
build/ROMID/game/rng2.o (section); \ build/ROMID/game/rng2asm.o (section); \
build/ROMID/game/vtxstore.o (section); \ build/ROMID/game/vtxstore.o (section); \
build/ROMID/game/explosions.o (section); \ build/ROMID/game/explosions.o (section); \
build/ROMID/game/smoke.o (section); \ build/ROMID/game/smoke.o (section); \

View File

@ -20,7 +20,7 @@
#include "game/player.h" #include "game/player.h"
#include "game/game_0c33f0.h" #include "game/game_0c33f0.h"
#include "game/playermgr.h" #include "game/playermgr.h"
#include "game/game_1291b0.h" #include "game/rng2.h"
#include "game/vtxstore.h" #include "game/vtxstore.h"
#include "game/gfxmemory.h" #include "game/gfxmemory.h"
#include "game/explosions.h" #include "game/explosions.h"
@ -48,6 +48,8 @@
#include "gbiex.h" #include "gbiex.h"
#include "types.h" #include "types.h"
void rng2SetSeed(u32 seed);
void *var8009ccc0[20]; void *var8009ccc0[20];
s32 g_NumChrs; s32 g_NumChrs;
s16 *g_Chrnums; s16 *g_Chrnums;

View File

@ -33,7 +33,7 @@
#include "game/menu.h" #include "game/menu.h"
#include "game/inv.h" #include "game/inv.h"
#include "game/playermgr.h" #include "game/playermgr.h"
#include "game/game_1291b0.h" #include "game/rng2.h"
#include "game/vtxstore.h" #include "game/vtxstore.h"
#include "game/explosions.h" #include "game/explosions.h"
#include "game/smoke.h" #include "game/smoke.h"
@ -78,6 +78,8 @@
#include "types.h" #include "types.h"
#include "string.h" #include "string.h"
void rng2SetSeed(u32 seed);
struct weaponobj *g_Proxies[30]; struct weaponobj *g_Proxies[30];
f32 g_GasReleaseTimerMax240; f32 g_GasReleaseTimerMax240;
bool g_GasEnableDamage; bool g_GasEnableDamage;

View File

@ -19,7 +19,6 @@
#include "game/player.h" #include "game/player.h"
#include "game/game_0c33f0.h" #include "game/game_0c33f0.h"
#include "game/playermgr.h" #include "game/playermgr.h"
#include "game/game_1291b0.h"
#include "game/vtxstore.h" #include "game/vtxstore.h"
#include "game/gfxmemory.h" #include "game/gfxmemory.h"
#include "game/explosions.h" #include "game/explosions.h"

27
src/game/rng2.c Normal file
View File

@ -0,0 +1,27 @@
#include <ultra64.h>
#include "constants.h"
#include "bss.h"
#include "lib/rng.h"
#include "data.h"
#include "types.h"
u64 g_Rng2Seed = 0xab8d9f7781280783;
/**
* Generate a random number between 0 and 4294967295.
*/
u32 random2(void)
{
g_Rng2Seed = ((g_Rng2Seed << 63) >> 31 | (g_Rng2Seed << 31) >> 32) ^ (g_Rng2Seed << 44) >> 32;
g_Rng2Seed = ((g_Rng2Seed >> 20) & 0xfff) ^ g_Rng2Seed;
return g_Rng2Seed;
}
/**
* Set the given seed as the RNG seed. Add 1 to make sure it isn't 0.
*/
void rng2SetSeed(u64 seed)
{
g_Rng2Seed = seed + 1;
}

View File

@ -11,7 +11,7 @@ glabel g_Rng2Seed
.text .text
/** /**
* u32 random(void) * u32 random2(void)
* *
* Generate a random number between 0 and 4294967295. * Generate a random number between 0 and 4294967295.
*/ */
@ -36,7 +36,7 @@ glabel random2
dsra32 $v0, $v0, 0 dsra32 $v0, $v0, 0
/** /**
* void rngSetSeed(u32 seed) * void rng2SetSeed(u64 seed)
* *
* Set the given seed as the RNG seed. Add 1 to make sure it isn't 0. * Set the given seed as the RNG seed. Add 1 to make sure it isn't 0.
*/ */

View File

@ -1,10 +0,0 @@
#ifndef IN_GAME_GAME_1291B0_H
#define IN_GAME_GAME_1291B0_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
u32 random2(void);
void rng2SetSeed(u32 seed);
#endif

9
src/include/game/rng2.h Normal file
View File

@ -0,0 +1,9 @@
#ifndef IN_GAME_RNG2_H
#define IN_GAME_RNG2_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
u32 random2(void);
#endif