569 lines
15 KiB
C
569 lines
15 KiB
C
#include "ext_math.h"
|
|
#include "game/audio.h"
|
|
#include "game/chrman.h"
|
|
#include "game/flag.h"
|
|
#include "game/frand.h"
|
|
#include "game/gamework_data.h"
|
|
#include "game/hsfanim.h"
|
|
#include "game/hsfdraw.h"
|
|
#include "game/hsfman.h"
|
|
#include "game/hsfmotion.h"
|
|
#include "game/memory.h"
|
|
#include "game/minigame_seq.h"
|
|
#include "game/object.h"
|
|
#include "game/objsub.h"
|
|
#include "game/pad.h"
|
|
#include "game/printfunc.h"
|
|
#include "game/sprite.h"
|
|
#include "game/window.h"
|
|
#include "game/wipe.h"
|
|
#include "string.h"
|
|
|
|
#include "REL/m430Dll.h"
|
|
|
|
#ifndef __MWERKS__
|
|
#include "game/esprite.h"
|
|
#endif
|
|
|
|
typedef struct M430DllMainWork {
|
|
u32 unk_00;
|
|
s32 unk_04;
|
|
s32 unk_08;
|
|
u32 unk_0C;
|
|
s32 unk_10;
|
|
u32 unk_14;
|
|
s32 unk_18;
|
|
s32 unk_1C;
|
|
s32 unk_20;
|
|
u32 unk_24;
|
|
u32 unk_28;
|
|
s32 unk_2C;
|
|
u32 unk_30;
|
|
s32 unk_34;
|
|
} M430DllMainWork; /* size = 0x38 */
|
|
|
|
void fn_1_10FC(omObjData *object);
|
|
void fn_1_168C(omObjData *object);
|
|
void fn_1_1B04(omObjData *object);
|
|
void fn_1_21E4(omObjData *object);
|
|
void fn_1_2710(omObjData *object);
|
|
omObjFunc fn_1_2D48(Process *process, omObjData *object);
|
|
void fn_1_2E80(omObjData *object);
|
|
omObjFunc fn_1_369C(Process *arg1, omObjData *object);
|
|
void fn_1_3768(omObjData *object);
|
|
s32 fn_1_4030(void);
|
|
void fn_1_65C(omObjData *object);
|
|
void fn_1_A54(omObjData *arg0);
|
|
void fn_1_B98(omObjData *object);
|
|
|
|
Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f };
|
|
Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f };
|
|
Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f };
|
|
GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF };
|
|
Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f };
|
|
Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f };
|
|
Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f };
|
|
|
|
Process *lbl_1_bss_38;
|
|
omObjData *lbl_1_bss_34;
|
|
omObjData *lbl_1_bss_30;
|
|
s16 lbl_1_bss_2C;
|
|
char lbl_1_bss_28[4];
|
|
s16 lbl_1_bss_26;
|
|
s16 lbl_1_bss_24;
|
|
s16 lbl_1_bss_22;
|
|
s16 lbl_1_bss_20;
|
|
s32 lbl_1_bss_1C;
|
|
s32 lbl_1_bss_18;
|
|
s32 lbl_1_bss_14;
|
|
s16 lbl_1_bss_10;
|
|
s32 lbl_1_bss_C;
|
|
s32 lbl_1_bss_8;
|
|
s32 lbl_1_bss_4;
|
|
s32 lbl_1_bss_0;
|
|
|
|
void ObjectSetup(void)
|
|
{
|
|
Mtx sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
Process *var_r31;
|
|
LightData *var_r30;
|
|
|
|
HuAudSndGrpSet(0x37);
|
|
lbl_1_bss_C = lbl_1_bss_8 = -1;
|
|
lbl_1_bss_4 = lbl_1_bss_0 = -1;
|
|
lbl_1_bss_2C = -1;
|
|
lbl_1_bss_14 = 1;
|
|
lbl_1_data_28.x = 200.0f;
|
|
lbl_1_data_28.y = 1200.0f;
|
|
lbl_1_data_28.z = 160.0f;
|
|
lbl_1_data_34.x = 0.0f;
|
|
lbl_1_data_34.y = 1.0f;
|
|
lbl_1_data_34.z = 0.0f;
|
|
lbl_1_data_40.x = 0.0f;
|
|
lbl_1_data_40.y = 0.0f;
|
|
lbl_1_data_40.z = 0.0f;
|
|
Hu3DShadowCreate(30.0f, 20.0f, 25000.0f);
|
|
Hu3DShadowTPLvlSet(0.625f);
|
|
Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40);
|
|
lbl_1_bss_26 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24);
|
|
Hu3DGLightInfinitytSet(lbl_1_bss_26);
|
|
var_r30 = &Hu3DGlobalLight[lbl_1_bss_26];
|
|
var_r30->unk_00 |= 0x8000;
|
|
lbl_1_data_18.x = 34.75f;
|
|
lbl_1_data_18.y = -24.75f;
|
|
lbl_1_data_18.z = 3500.0f;
|
|
sp14.x = sp14.y = sp14.z = 0.0f;
|
|
sp8.x = sp8.z = 0.0f;
|
|
sp8.y = lbl_1_data_18.z;
|
|
mtxRot(sp20, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f);
|
|
PSMTXMultVec(sp20, &sp8, &sp8);
|
|
Hu3DGLightPosAimSetV(lbl_1_bss_26, &sp8, &sp14);
|
|
Hu3DShadowPosSet(&sp8, &lbl_1_data_34, &sp14);
|
|
lbl_1_bss_24 = lbl_1_bss_22 = lbl_1_bss_20 = -1;
|
|
lbl_1_bss_1C = 1;
|
|
lbl_1_bss_18 = 1;
|
|
var_r31 = omInitObjMan(0x32, 0x2000);
|
|
lbl_1_bss_38 = var_r31;
|
|
omGameSysInit(var_r31);
|
|
Hu3DCameraCreate(3);
|
|
Hu3DCameraPerspectiveSet(1, -1.0f, 5.0f, 25000.0f, 0.6f);
|
|
Hu3DCameraPerspectiveSet(2, -1.0f, 5.0f, 25000.0f, 0.6f);
|
|
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f);
|
|
Hu3DCameraViewportSet(2, 320.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f);
|
|
Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0);
|
|
Hu3DCameraScissorSet(2, 0x140, 0, 0x140, 0x1E0);
|
|
lbl_1_bss_30 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutViewMulti);
|
|
lbl_1_bss_30->work[0] = 2;
|
|
lbl_1_bss_34 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_65C);
|
|
fn_1_4A80(var_r31);
|
|
fn_1_BBC4(var_r31);
|
|
lbl_1_bss_10 = espEntry(0x3D001B, 0x64, 0);
|
|
espPosSet(lbl_1_bss_10, 288.0, 240.0);
|
|
espScaleSet(lbl_1_bss_10, 0.22499999403953552, 60.0);
|
|
espDispOff(lbl_1_bss_10);
|
|
}
|
|
|
|
void fn_1_65C(omObjData *object)
|
|
{
|
|
M430DllMainWork *work;
|
|
|
|
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M430DllMainWork), MEMORY_DEFAULT_NUM);
|
|
work = object->data;
|
|
memset(work, 0, sizeof(M430DllMainWork));
|
|
work->unk_00 = 0;
|
|
work->unk_04 = 0;
|
|
work->unk_0C = 0;
|
|
work->unk_10 = 0;
|
|
work->unk_14 = 0;
|
|
work->unk_18 = 0;
|
|
work->unk_24 = 0;
|
|
work->unk_28 = 0;
|
|
work->unk_08 = 0;
|
|
work->unk_2C = 0;
|
|
work->unk_30 = 0;
|
|
work->unk_34 = 0;
|
|
object->func = fn_1_B98;
|
|
}
|
|
|
|
void fn_1_720(omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
work->unk_04++;
|
|
work->unk_10++;
|
|
work->unk_18++;
|
|
work->unk_28++;
|
|
if ((omSysExitReq != 0) && (work->unk_00 != 5)) {
|
|
work->unk_00 = 4;
|
|
fn_1_A54(object);
|
|
}
|
|
if (lbl_1_bss_18 == 0) {
|
|
if (fn_1_4030() != 0) {
|
|
if ((Hu3DCamera->fov < 0.0f) || (Hu3DCamera[1].fov < 0.0f)) {
|
|
Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 25000.0f, 0.6f);
|
|
Hu3DCameraPerspectiveSet(2, 41.5f, 5.0f, 25000.0f, 0.6f);
|
|
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f);
|
|
Hu3DCameraViewportSet(2, 320.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f);
|
|
Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0);
|
|
Hu3DCameraScissorSet(2, 0x140, 0, 0x140, 0x1E0);
|
|
}
|
|
}
|
|
else if ((Hu3DCamera->fov < 0.0f) || (Hu3DCamera[1].fov >= 0.0f)) {
|
|
Hu3DCamera[1].fov = -1.0f;
|
|
Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 25000.0f, 1.2f);
|
|
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
|
Hu3DCameraScissorSet(1, 0, 0, 0x280, 0x1E0);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_A54(omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
if (work->unk_08 == 0) {
|
|
switch (work->unk_00) {
|
|
case 0:
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
|
|
lbl_1_bss_18 = 0;
|
|
work->unk_00 = 1;
|
|
work->unk_10 = 0;
|
|
object->func = fn_1_2D48(lbl_1_bss_38, object);
|
|
break;
|
|
case 1:
|
|
work->unk_00 = 2;
|
|
work->unk_18 = 0;
|
|
object->func = fn_1_1B04;
|
|
break;
|
|
case 2:
|
|
work->unk_00 = 3;
|
|
work->unk_28 = 0;
|
|
object->func = fn_1_369C(lbl_1_bss_38, object);
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
work->unk_08 = 1;
|
|
work->unk_00 = 5;
|
|
object->func = fn_1_10FC;
|
|
break;
|
|
case 5:
|
|
default:
|
|
work->unk_00 = 5;
|
|
object->func = fn_1_168C;
|
|
break;
|
|
}
|
|
work->unk_04 = 0;
|
|
}
|
|
}
|
|
|
|
void fn_1_B98(omObjData *object)
|
|
{
|
|
fn_1_720(object);
|
|
fn_1_A54(object);
|
|
}
|
|
|
|
void fn_1_10FC(omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
fn_1_720(object);
|
|
|
|
if (WipeStatGet() == 0) {
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
|
lbl_1_bss_14 = 1;
|
|
work->unk_08 = 0;
|
|
fn_1_A54(object);
|
|
}
|
|
}
|
|
|
|
void fn_1_168C(omObjData *object)
|
|
{
|
|
fn_1_720(object);
|
|
if (WipeStatGet() == 0) {
|
|
fn_1_C00C();
|
|
fn_1_4C48();
|
|
MGSeqKillAll();
|
|
HuAudFadeOut(1);
|
|
omOvlReturnEx(1, 1);
|
|
}
|
|
}
|
|
|
|
void fn_1_1B04(omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
fn_1_720(object);
|
|
switch (work->unk_14) {
|
|
case 0:
|
|
lbl_1_bss_1C = 1;
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
|
|
lbl_1_bss_14 = 0;
|
|
espDispOn(lbl_1_bss_10);
|
|
work->unk_1C = 0x2D;
|
|
work->unk_20 = 0x3C;
|
|
CenterM->x = -450.0f;
|
|
CenterM[1].x = 450.0f;
|
|
CenterM->y = CenterM[1].y = 300.0f;
|
|
CenterM->z = CenterM[1].z = 950.0f;
|
|
CRotM->x = CRotM[1].x = -5.0f;
|
|
CRotM->y = CRotM[1].y = 0.0f;
|
|
CZoomM[0] = CZoomM[1] = 700.0f;
|
|
work->unk_14 = 1;
|
|
work->unk_18 = 0;
|
|
object->work[0] = 0;
|
|
return;
|
|
case 1:
|
|
if (object->work[0] == 0) {
|
|
if (WipeStatGet() == 0) {
|
|
lbl_1_bss_24 = MGSeqCreate(3, 0);
|
|
MGSeqPosSet(lbl_1_bss_24, 320.0f, 240.0f);
|
|
object->work[0]++;
|
|
}
|
|
}
|
|
else {
|
|
if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_24) & 0x10) != 0)) {
|
|
lbl_1_bss_4 = HuAudSeqPlay(0x4A);
|
|
}
|
|
if ((MGSeqStatGet(lbl_1_bss_24) == 0) && (work->unk_08 == 0)) {
|
|
lbl_1_bss_2C = MGSeqCreate(1, work->unk_1C, -1, -1);
|
|
work->unk_14 = 2;
|
|
work->unk_18 = 0;
|
|
object->func = fn_1_21E4;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
void fn_1_21E4(omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
s32 var_r27 = 0;
|
|
fn_1_720(object);
|
|
if (--work->unk_20 == 0) {
|
|
work->unk_20 = 0x3C;
|
|
work->unk_1C--;
|
|
if (work->unk_1C <= 0) {
|
|
var_r27 = 1;
|
|
}
|
|
}
|
|
if (var_r27 != 0) {
|
|
lbl_1_bss_22 = MGSeqCreate(3, 1);
|
|
MGSeqPosSet(lbl_1_bss_22, 320.0f, 240.0f);
|
|
HuAudSeqFadeOut(lbl_1_bss_4, 0x64);
|
|
object->work[1] = 0;
|
|
work->unk_14 = 3;
|
|
work->unk_18 = 0;
|
|
if (work->unk_08 == 0) {
|
|
object->func = fn_1_2710;
|
|
}
|
|
}
|
|
MGSeqParamSet(lbl_1_bss_2C, 1, work->unk_1C);
|
|
}
|
|
|
|
void fn_1_2710(omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
if (lbl_1_bss_2C >= 0) {
|
|
MGSeqParamSet(lbl_1_bss_2C, 2, -1);
|
|
lbl_1_bss_2C = -1;
|
|
}
|
|
fn_1_720(object);
|
|
if (object->work[1] == 0) {
|
|
if (MGSeqStatGet(lbl_1_bss_22) == 0) {
|
|
if (work->unk_08 == 0) {
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
|
|
lbl_1_bss_14 = 1;
|
|
}
|
|
object->work[1]++;
|
|
HuAudFXFadeOut(lbl_1_bss_C, 0x1E);
|
|
}
|
|
}
|
|
else if ((WipeStatGet() == 0) && (work->unk_30 == 0x1111)) {
|
|
work->unk_14 = 4;
|
|
work->unk_18 = 0;
|
|
fn_1_A54(object);
|
|
}
|
|
}
|
|
|
|
omObjFunc fn_1_2D48(Process *process, omObjData *object)
|
|
{
|
|
CenterM->x = CenterM[1].x = 0.0f;
|
|
CenterM->y = CenterM[1].y = 300.0f;
|
|
CenterM->z = CenterM[1].z = 950.0f;
|
|
CRotM->x = CRotM[1].x = -5.0f;
|
|
CRotM->y = CRotM[1].y = 0.0f;
|
|
CZoomM[0] = CZoomM[1] = 700.0f;
|
|
object->work[0] = object->work[1] = 0;
|
|
lbl_1_bss_1C = 0;
|
|
lbl_1_bss_C = HuAudFXPlay(0x674);
|
|
return fn_1_2E80;
|
|
}
|
|
|
|
void fn_1_2E80(omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
fn_1_720(object);
|
|
work->unk_0C = 1;
|
|
object->work[0]++;
|
|
switch (object->work[1]) {
|
|
case 0:
|
|
if (object->work[0] > 180.0f) {
|
|
if (work->unk_08 == 0) {
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
|
|
lbl_1_bss_14 = 1;
|
|
}
|
|
object->work[1]++;
|
|
object->work[0] = 0;
|
|
}
|
|
break;
|
|
case 1:
|
|
if (WipeStatGet() == 0) {
|
|
object->work[0] = 0;
|
|
work->unk_0C = 2;
|
|
fn_1_A54(object);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
omObjFunc fn_1_369C(Process *arg0, omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
s32 spC = 0;
|
|
s32 sp8 = 1;
|
|
lbl_1_bss_1C = 0;
|
|
espDispOff(lbl_1_bss_10);
|
|
fn_1_BB98(1);
|
|
if (work->unk_08 == 0) {
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
|
|
lbl_1_bss_14 = 0;
|
|
}
|
|
CenterM->x = 0.0f;
|
|
lbl_1_bss_8 = HuAudFXPlay(0x679);
|
|
return fn_1_3768;
|
|
}
|
|
|
|
void fn_1_3768(omObjData *object)
|
|
{
|
|
M430DllMainWork *work = object->data;
|
|
|
|
fn_1_720(object);
|
|
if (WipeStatGet() == 0) {
|
|
work->unk_24 = 1;
|
|
if (work->unk_28 >= 210.0f) {
|
|
work->unk_24 = 2;
|
|
fn_1_A54(object);
|
|
}
|
|
}
|
|
else {
|
|
work->unk_28 = 0;
|
|
}
|
|
}
|
|
|
|
s32 fn_1_4030(void)
|
|
{
|
|
return lbl_1_bss_1C;
|
|
}
|
|
|
|
u32 fn_1_4040(void)
|
|
{
|
|
return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_00;
|
|
}
|
|
|
|
u32 fn_1_4058(void)
|
|
{
|
|
return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_0C;
|
|
}
|
|
|
|
u32 fn_1_4070(void)
|
|
{
|
|
return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_14;
|
|
}
|
|
|
|
u32 fn_1_4088(void)
|
|
{
|
|
return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_24;
|
|
}
|
|
|
|
void fn_1_40A0(s32 arg0)
|
|
{
|
|
OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_2C = arg0;
|
|
}
|
|
|
|
s32 fn_1_40B8(void)
|
|
{
|
|
return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_2C;
|
|
}
|
|
|
|
void fn_1_40D0(s32 arg0)
|
|
{
|
|
|
|
OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_30 |= (1 << ((arg0 & 3) * 4));
|
|
}
|
|
|
|
void fn_1_4100(s32 arg0)
|
|
{
|
|
OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_34 |= (1 << ((arg0 & 3) * 4));
|
|
}
|
|
|
|
float fn_1_4130(void)
|
|
{
|
|
M430DllMainWork *work = lbl_1_bss_34->data;
|
|
float var_f31 = work->unk_1C - 1;
|
|
if (var_f31 < 0.0f) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
var_f31 += 0.016666668f * work->unk_20;
|
|
return var_f31;
|
|
}
|
|
|
|
void fn_1_41F0(Vec *arg0, Vec *arg1)
|
|
{
|
|
Vec sp10;
|
|
float var_f29;
|
|
float var_f28;
|
|
float var_f27;
|
|
float var_f26;
|
|
|
|
sp10.x = arg1->x - arg0->x;
|
|
sp10.y = arg1->y - arg0->y;
|
|
sp10.z = arg1->z - arg0->z;
|
|
Center.x = arg1->x;
|
|
Center.y = arg1->y;
|
|
Center.z = arg1->z;
|
|
CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z)));
|
|
CRot.y = atan2d(-sp10.x, -sp10.z);
|
|
CRot.z = 0.0f;
|
|
CZoom = sqrtf((sp10.z * sp10.z) + ((sp10.x * sp10.x) + (sp10.y * sp10.y)));
|
|
}
|
|
|
|
void fn_1_4538(float sp8, float spC, float sp10, float sp14, float sp18, float sp1C)
|
|
{
|
|
Vec sp40;
|
|
Vec sp34;
|
|
sp40.x = sp8;
|
|
sp40.y = spC;
|
|
sp40.z = sp10;
|
|
|
|
sp34.x = sp14;
|
|
sp34.y = sp18;
|
|
sp34.z = sp1C;
|
|
fn_1_41F0(&sp40, &sp34);
|
|
}
|
|
|
|
float fn_1_48B0(float arg8, float arg9, float argA)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
|
|
var_f30 = fmod(arg9 - arg8, 360.0);
|
|
var_f31 = var_f30;
|
|
if (var_f31 < 0.0f) {
|
|
var_f31 += 360.0f;
|
|
}
|
|
if (var_f31 > 180.0f) {
|
|
var_f31 -= 360.0f;
|
|
}
|
|
var_f29 = fmod(arg8 + (argA * var_f31), 360.0);
|
|
var_f31 = var_f29;
|
|
if (var_f31 < 0.0f) {
|
|
var_f31 += 360.0f;
|
|
}
|
|
return var_f31;
|
|
}
|
|
|
|
float fn_1_49CC(float arg0, float arg1)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
|
|
var_f30 = fmod(arg1 - arg0, 360.0);
|
|
var_f31 = var_f30;
|
|
if (var_f31 < 0.0f) {
|
|
var_f31 += 360.0f;
|
|
}
|
|
if (var_f31 > 180.0f) {
|
|
var_f31 -= 360.0f;
|
|
}
|
|
return var_f31;
|
|
}
|