flycast/core/hw/sh4/sh4_rom.cpp

30 lines
571 B
C++

#include "types.h"
#include "sh4_rom.h"
u32 sin_coefs[0x8000]=
{
#include "fsca-table.h"
};
f32_x2 sin_table[0x10000];
void sh4rom_init()
{
for (int i=0x0000;i<0x10000;i++)
{
if (i<0x8000)
sin_table[i].u[0]=(f32&)sin_coefs[i];
else
sin_table[i].u[0]=-(f32&)sin_coefs[i-0x8000];
}
verify(sin_table[0x8000].u[0]==0);//this is required by Ikaruga, for the bullets to behave normally
for (int i=0x0000;i<0x10000;i++)
{
sin_table[i].u[1]=sin_table[(i+0x4000)&0xFFFF].u[0];//fill in [1] (interleave sin/cos)
}
}
static OnLoad ol_sh4rom(&sh4rom_init);