Starship/src/main/fox_radio.c

815 lines
22 KiB
C
Raw Normal View History

#include "global.h"
extern f32 D_80177D38;
extern s32 D_801782AC;
extern s32 D_801782B4;
extern s32 D_80178744;
extern s32 D_80178748;
s32 D_800D4A70 = 0;
void func_800BA760(void) {
func_800B9358();
if (D_80177D50 == 1.3f) {
D_801782F8 = Message_NotWhitespace(D_80178308, D_801782D8);
}
}
s32 func_800BA7BC(u16* arg0, s32 arg1) {
s32 var_v0 = D_800D4A70;
if (arg1 == var_v0) {
return 0;
}
if (arg1 < var_v0) {
return 1;
}
if (var_v0 < arg1) {
D_800D4A70 = arg1;
return 2;
}
}
void func_800BA808(u16* arg0, s32 arg1) {
s32 var_v1;
s32 temp_v0;
s32 var_a1;
switch (*arg0) {
default:
case 0x08:
var_a1 = 0;
break;
case 0x09:
var_a1 = 1;
break;
case 0x0a:
var_a1 = 2;
break;
case 0x0b:
var_a1 = 3;
break;
}
if (D_80177834 == 7) {
if ((arg1 == 10) || (arg1 == 20) || (arg1 == 30)) {
if (arg1 == 10) {
var_v1 = 1;
}
if (arg1 == 20) {
var_v1 = 2;
}
if (arg1 == 30) {
var_v1 = 3;
}
if ((D_801778B0[var_v1] <= 0) && (D_801778B0[var_v1] != -2)) {
return;
}
}
}
if (D_8017829C != 0) {
temp_v0 = func_800BA7BC(arg0, var_a1);
if (temp_v0 == 1) {
return;
}
}
D_800D4A70 = var_a1;
D_80177D68 = arg1;
if ((D_801779F8 != 0) && ((arg1 == 0) || (arg1 == 5))) {
D_80177D68 = 400;
}
if (D_80178234 == 19) {
switch (arg1) {
case 200:
D_80177D68 = 240;
break;
case 210:
D_80177D68 = 250;
break;
case 220:
D_80177D68 = 260;
break;
case 230:
D_80177D68 = 270;
break;
}
}
D_80178308 = arg0;
D_8017829C = 100;
switch (D_80177834) {
case 2:
case 8:
D_8017872C = 176;
D_80178728 = 85;
D_80178730 = 80.0f;
D_80178734 = 174.0f;
D_80178738 = 4.63f;
D_8017873C = 32.0f;
D_80178740 = 174.0f;
break;
case 7:
D_8017872C = 180;
D_80178728 = 79;
D_80178730 = 74.0f;
D_80178734 = 178.0f;
D_80178738 = 4.53f;
D_8017873C = 26.0f;
D_80178740 = 178.0f;
break;
}
D_801782E8 = Message_IdFromPtr(arg0);
func_8001ACDC(D_801782E8);
}
void func_800BAAE8(void) {
static f32 D_800D4A74 = -1.0f;
u16* sp44;
s32 var_s0;
s32 i;
f32 sp38;
f32 temp_fa0;
s32 j;
D_80178744 = 0;
var_s0 = 0;
switch (D_801782A4) {
case 0x5:
D_80178744 = 1;
/* fallthrough */
case 0x0:
sp44 = D_10050E0;
break;
case 0x6:
D_80178744 = 1;
/* fallthrough */
case 0x1:
sp44 = D_1006000;
break;
case 0x190:
sp44 = D_1006F20;
break;
case 0x191:
sp44 = D_1007E40;
break;
case 0xF:
D_80178744 = 1;
/* fallthrough */
case 0xA:
sp44 = D_10032A0;
break;
case 0x10:
D_80178744 = 1;
/* fallthrough */
case 0xB:
sp44 = D_10041C0;
break;
case 0x19:
D_80178744 = 1;
/* fallthrough */
case 0x14:
sp44 = D_100D900;
break;
case 0x1A:
D_80178744 = 1;
/* fallthrough */
case 0x15:
sp44 = D_100E820;
break;
case 0x23:
D_80178744 = 1;
/* fallthrough */
case 0x1E:
sp44 = D_100BAC0;
break;
case 0x24:
D_80178744 = 1;
/* fallthrough */
case 0x1F:
sp44 = D_100C9E0;
break;
case 0xC8:
sp44 = D_F00B580;
break;
case 0xC9:
sp44 = D_F00C4A0;
break;
case 0xD2:
sp44 = D_F003C80;
break;
case 0xD3:
sp44 = D_F004BA0;
break;
case 0xDC:
sp44 = D_F007900;
break;
case 0xDD:
sp44 = D_F008820;
break;
case 0xE6:
sp44 = D_F000000;
break;
case 0xE7:
sp44 = D_F000F20;
break;
case 0xF0:
sp44 = D_F00D3C0;
break;
case 0xF1:
sp44 = D_F00E2E0;
break;
case 0xFA:
sp44 = D_F005AC0;
break;
case 0xFB:
sp44 = D_F0069E0;
break;
case 0x104:
sp44 = D_F009740;
break;
case 0x105:
sp44 = D_F00A660;
break;
case 0x10E:
sp44 = D_F001E40;
break;
case 0x10F:
sp44 = D_F002D60;
break;
case 0x50:
sp44 = D_6026420;
break;
case 0x51:
sp44 = D_6027340;
break;
case 0x6E:
sp44 = D_60245E0;
break;
case 0x6F:
sp44 = D_6025500;
break;
case 0x64:
sp44 = D_601C8E0;
break;
case 0x65:
sp44 = D_601D800;
break;
case 0x78:
sp44 = D_60047E0;
break;
case 0x79:
sp44 = D_6005700;
break;
case 0xB4:
sp44 = D_60029A0;
break;
case 0xB5:
sp44 = D_60038C0;
break;
case 0x82:
sp44 = D_6014510;
break;
case 0x83:
sp44 = D_6015430;
break;
case 0x96:
sp44 = D_6020FB0;
break;
case 0x97:
sp44 = D_6021ED0;
break;
case 0xA0:
sp44 = D_6018F30;
break;
case 0xA1:
sp44 = D_6019E50;
break;
case 0xBE:
sp44 = D_6010C20;
break;
case 0xBF:
sp44 = D_6011B40;
break;
case 0x5F:
D_80178744 = 1;
/* fallthrough */
case 0x5A:
case 0x8C:
sp44 = D_1009C80;
break;
case 0x60:
D_80178744 = 1;
/* fallthrough */
case 0x5B:
case 0x8D:
sp44 = D_100ABA0;
break;
case 0x28:
sp44 = D_D003DF0;
break;
case 0x29:
sp44 = D_D004D10;
break;
case 0x32:
case 0x37:
sp44 = D_D000170;
if ((D_80177834 == 7) && (D_80178234 == 3)) {
sp44 = D_6000B60;
}
D_80178744 = 1;
break;
case 0x33:
case 0x38:
sp44 = D_D001090;
if ((D_80177834 == 7) && (D_80178234 == 3)) {
sp44 = D_6001A80;
}
D_80178744 = 1;
break;
case 0x3C:
sp44 = D_D005C30;
break;
case 0x3D:
sp44 = D_D006B50;
break;
case 0xAA:
sp44 = D_D001FB0;
break;
case 0xAB:
sp44 = D_D002ED0;
break;
case 0x46:
sp44 = D_D007A70;
break;
case 0x47:
sp44 = D_D008990;
break;
case 0x12C:
sp44 = D_E00E100;
break;
case 0x12D:
sp44 = D_E00F020;
break;
case 0x136:
sp44 = D_E00FF40;
break;
case 0x137:
sp44 = D_E010E60;
break;
case 0x15E:
sp44 = D_6000900;
break;
case 0x15F:
sp44 = D_6001820;
break;
case 0x3:
var_s0 = 1;
/* fallthrough */
case 0x2:
switch (D_80177834) {
default:
sp44 = NULL;
break;
case 7:
sp44 = D_1008D60;
break;
case 2:
case 8:
sp44 = D_600C6A0;
break;
}
if (((s32) D_80177D68 == 50) || ((s32) D_80177D68 == 55)) {
D_80178744 = 1;
}
break;
}
if ((sp44 != NULL) && (D_80177D38 != 0.0f)) {
temp_fa0 = (2.0f * D_80177D38) + D_80178740;
if ((D_80178740 + 20.0f) <= temp_fa0) {
D_800D4A74 = 1.0f;
}
if (temp_fa0 <= D_80178740) {
D_800D4A74 = -1.0f;
}
sp38 = D_80177D38 * 20.0f * D_800D4A74;
func_800BA490();
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255);
if (var_s0 != 0) {
for (i = 0, j = 0; i < 2; i++, j += 880) {
TextureRect_16bRGBA_MirX(&gMasterDisp, &sp44[j], 44, 20, D_8017873C,
D_80178740 + 20.0f + sp38 + (i * 20.0f * D_80177D38), 1.0f, D_80177D38);
}
TextureRect_16bRGBA_MirX(&gMasterDisp, &sp44[2 * 880], 44, 4, D_8017873C,
D_80178740 + 20.0f + sp38 + (40.0f * D_80177D38), 1.0f, D_80177D38);
} else {
for (i = 0, j = 0; i < 2; i++, j += 880) {
TextureRect_16bRGBA(&gMasterDisp, &sp44[j], 44, 20, D_8017873C,
D_80178740 + 20.0f + sp38 + (i * 20.0f * D_80177D38), 1.0f, D_80177D38);
}
TextureRect_16bRGBA(&gMasterDisp, &sp44[2 * 880], 44, 4, D_8017873C,
D_80178740 + 20.0f + sp38 + (40.0f * D_80177D38), 1.0f, D_80177D38);
}
}
}
void func_800BB388(void) {
static f32 D_800D4A78 = -1.0f;
f32 temp_fa0;
u8* sp38;
u16* sp34;
f32 sp30;
if ((D_80177834 != 4) && (D_80177D50 != 0.0f)) {
temp_fa0 = (D_80177D50 / 0.26f) * 3.0f;
if ((D_80178734 + 16.0f) <= temp_fa0 + D_80178734) {
D_800D4A78 = 1.0f;
}
if (temp_fa0 + D_80178734 <= D_80178734) {
D_800D4A78 = -1.0f;
}
sp30 = temp_fa0 * D_800D4A78;
func_800B8DD0(&gMasterDisp, 0x55);
switch (D_80177834) {
case 2:
case 8:
sp38 = D_601D750;
sp34 = D_601DB50;
break;
case 7:
sp38 = D_1013170;
sp34 = D_1013570;
break;
}
if (D_80178744 == 1) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 25, 25, 170);
} else {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 60, 60, 255, 170);
}
TextureRect_8bCI(&gMasterDisp, sp38, sp34, 0x20U, 0x20U, D_80178730, D_80178734 + 16.0f + sp30, D_80178738,
D_80177D50);
}
if (D_80177D50 == 1.3f) {
func_800B8DD0(&gMasterDisp, 0x55);
D_801782F8 = Message_DisplayText(&gMasterDisp, D_80178308, D_80178728, D_8017872C, D_801782D8);
}
}
#ifdef NON_MATCHING
void func_800BB5D0(void) {
static s32 D_8017874C;
s32 var_v1;
s32 temp_ft0;
u32 temp_v0;
if ((D_80177854 == 100) && (D_80177834 != 8)) {
return;
}
if (D_801782AC > 0) {
D_801782AC--;
}
if (D_801782B4 > 0) {
D_801782B4--;
}
switch (D_8017829C) {
case 0x64:
D_80178748 = 1;
D_801782A4 = 1000;
D_8017829C = 1;
D_801782D8 = 0;
D_80177D38 = 0.0f;
D_80177D50 = 0.0f;
D_8017874C = 0;
if (D_801778A8 != 1) {
D_8017829C = 0;
}
break;
case 0x1:
D_80177D38 += 0.25f;
if (D_80177D38 == 1.0f) {
D_8017829C++;
D_801782AC = 10;
}
D_801782A4 = 2;
if (D_80177DB0 & 1) {
D_801782A4 = 3;
}
break;
case 0x2:
if (D_801782AC == 0) {
D_8017829C++;
D_801782AC = 10;
}
D_801782A4 = 2;
if (D_80177DB0 & 1) {
D_801782A4 = 3;
}
break;
case 0x3:
if (D_801782AC == 0) {
D_8017829C++;
temp_v0 = Message_GetWidth(D_80178308);
if (D_80137E78 == 3) {
D_801782AC = temp_v0 + 0x10;
} else {
D_801782AC = 2 * temp_v0 + 0x10;
}
if ((D_80177834 == 2) || (D_80177834 == 8)) {
D_801782AC = temp_v0 * 2;
}
}
D_801782A4 = (s32) D_80177D68;
D_80177D50 += 0.26f;
if (D_80177D50 > 1.3f) {
D_80177D50 = 1.3f;
}
break;
case 0x1F:
D_8017829C++;
D_801782AC = 0x50 - D_801782AC;
break;
case 0x20:
if (func_8001AE78() == 0) {
D_80178724++;
D_80178308 = D_80178720[D_80178724];
func_8001ACDC(Message_IdFromPtr(D_80178308));
D_801782D8 = 0;
D_8017874C = 0;
D_801782AC = 0x50;
D_801782AC = Message_GetWidth(D_80178308) * 2;
D_8017829C = 4;
}
break;
case 0x4:
if ((func_8001AE78() == 0) && (D_801782AC == 0)) {
D_801782AC = 10;
D_801782A4 = (s32) D_80177D68;
D_8017829C = 6;
}
D_801782A4 = (s32) D_80177D68;
if (D_801782B4 > 0) {
D_801782A4++;
}
temp_v0 = func_8001AED4();
if (D_801782D8 < 60) {
if (D_80178308[D_801782D8 + 1] == 0xF) {
if (temp_v0 == 0) {
D_8017829C = 0x1F;
}
} else {
D_801782D8++;
}
}
if (D_8017874C != 0) {
if ((D_801782E8 >= 23000) && (D_801782E8 < 23033)) {
if (D_801782F8 != 0) {
D_801782B4 = 2;
func_80019218(0x49000017, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
}
} else if (temp_v0 == 1) {
D_801782B4 = 2;
} else {
D_801782B4 = 0;
}
}
D_8017874C ^= 1;
break;
case 0x5:
if (D_801782AC == 0) {
D_8017829C++;
D_801782AC = 10;
}
D_801782A4 = (s32) D_80177D68;
break;
case 0x6:
if (D_801782AC == 0) {
if (!D_801782A4) {}
if (D_80177834 == 8) {
func_8001AE58();
} else {
func_8001ACDC(0);
}
D_8017829C++;
}
D_801782A4 = 2;
if (D_80177DB0 & 1) {
D_801782A4 = 3;
}
D_80177D50 -= 0.26f;
if (D_80177D50 < 0.0f) {
D_80177D50 = 0.0f;
}
break;
case 0x7:
D_80177D38 -= 0.25f;
if (D_80177D38 == 0) {
D_80178300 = 0;
D_800D4A70 = 0;
D_8017829C = 0;
}
D_801782A4 = 2;
if (D_80177DB0 & 1) {
D_801782A4 = 3;
}
break;
case 0x8:
D_801782A4 = (s32) D_80177D68;
D_80177D50 = 1.3f;
D_80177D38 = 1.0f;
break;
case 0:
break;
}
if ((D_8017829C > 0) && (D_8017829C != 100) && (D_80178300 == 0)) {
func_800BAAE8();
func_800BB388();
temp_ft0 = (s32) D_80177D68;
if ((temp_ft0 == 0xA) || (temp_ft0 == 0x14) || (temp_ft0 == 0x1E)) {
if (temp_ft0 == 0xA) {
var_v1 = 1;
}
if (temp_ft0 == 0x14) {
var_v1 = 2;
}
if (temp_ft0 == 0x1E) {
var_v1 = 3;
}
if ((D_801778B0[var_v1] <= 0) && (D_80177DB0 & 4) && (D_801778B0[var_v1] != -2) && (D_801782A4 != 2) &&
(D_801782A4 != 3) && (D_801782A4 != 1000)) {
func_800B8DD0(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
Graphics_DisplaySmallText(0x1F, 0xA7, 1.0f, 1.0f, "DOWN");
func_80084B94(1);
}
if ((D_801782A4 != 2) && (D_801782A4 != 3) && (D_801782A4 != 1000)) {
func_80086110(22.0f, 165.0f, D_801778B0[var_v1]);
}
}
temp_ft0 = (s32) D_80177D68;
if ((temp_ft0 == 0xC8) || (temp_ft0 == 0xD2) || (temp_ft0 == 0xDC) || (temp_ft0 == 0xE6) ||
(temp_ft0 == 0xF0) || (temp_ft0 == 0xFA) || (temp_ft0 == 0x104) || (temp_ft0 == 0x10E)) {
switch (temp_ft0) {
case 0xC8:
case 0xF0:
var_v1 = 4;
break;
case 0xDC:
case 0x104:
var_v1 = 5;
break;
case 0xD2:
case 0xFA:
var_v1 = 6;
break;
case 0xE6:
case 0x10E:
var_v1 = 7;
break;
default:
var_v1 = 0;
break;
}
if ((D_80163FE0[var_v1].obj.status != 2) && (D_80177DB0 & 4) && (D_80178280[0].unk_1C8 == 3) &&
(D_801782A4 != 2) && (D_801782A4 != 3) && (D_801782A4 != 1000)) {
func_800B8DD0(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
Graphics_DisplaySmallText(0x1F, 0xA7, 1.0f, 1.0f, "DOWN");
}
if ((D_801782A4 != 2) && (D_801782A4 != 3) && (D_801782A4 != 1000)) {
func_80086110(22.0f, 165.0f, D_80163FE0[var_v1].unk_0CE * 2.55f);
}
}
if ((D_801782A4 != 2) && (D_801782A4 != 3) && (D_801782A4 != 1000)) {
func_8008AD94();
}
}
if (D_80178300 == 1) {
func_800BA760();
}
}
#else
extern s32 D_8017874C;
void func_800BB5D0(void);
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/fox_radio/func_800BB5D0.s")
#endif
void func_800BC040(void) {
if (D_80177854 != 100) {
if (D_801782AC > 0) {
D_801782AC--;
}
if (D_801782B4 > 0) {
D_801782B4--;
}
switch (D_8017829C) {
case 0x64:
D_801782A4 = 0x3E8;
D_8017829C = 1;
D_80177D38 = 0.0f;
D_80177D50 = 0.0f;
D_801782D8 = Message_GetWidth(D_80178308);
if (D_801778A8 != 1) {
D_8017829C = 0;
}
break;
case 0x1:
D_80177D38 += 0.02f;
if (D_80177D38 == 0.04f) {
D_8017829C++;
D_801782AC = 5;
}
break;
case 0x2:
if (D_801782AC == 0) {
D_8017829C++;
D_801782AC = 5;
}
D_801782A4 = 2;
if (D_80177DB0 & 1) {
D_801782A4 = 3;
}
break;
case 0x3:
if (D_801782AC == 0) {
D_8017829C++;
D_801782AC = 5;
if (D_80177834 == 2) {
D_801782AC = 0x1E;
}
}
D_801782A4 = (s32) D_80177D68;
D_80177D50 += 0.015f;
if (D_80177D50 > 0.07f) {
D_80177D50 = 0.07f;
}
break;
case 0x4:
if (D_801782AC == 0) {
D_8017829C++;
D_801782AC = 10;
}
break;
case 0x5:
if (D_801782AC == 0) {
D_8017829C++;
D_801782AC = 5;
}
D_801782A4 = (s32) D_80177D68;
break;
case 0x6:
if (D_801782AC == 0) {
func_8001ACDC(0);
D_8017829C++;
}
D_801782A4 = 2;
if (D_80177DB0 & 1) {
D_801782A4 = 3;
}
D_80177D50 -= 0.015f;
if (D_80177D50 < 0.0f) {
D_80177D50 = 0.0f;
}
break;
case 0x7:
D_80177D38 -= 0.02f;
if (D_80177D38 == 0) {
D_8017829C = 0;
D_801782AC = 5;
}
D_801782A4 = 2;
if (D_80177DB0 & 1) {
D_801782A4 = 3;
}
break;
case 0:
break;
}
if ((D_8017829C > 0) && (D_8017829C != 100)) {
func_800BAAE8();
func_800BB388();
if (((s32) D_80177D68 == 10) || ((s32) D_80177D68 == 20) || ((s32) D_80177D68 == 30)) {
Matrix_Push(&gGfxMatrix);
func_800B9358();
Matrix_Translate(gGfxMatrix, -150.0f, -115.0f, -443.0f, 1);
Matrix_Scale(gGfxMatrix, 0.068f, 0.068f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
D_801778A0 = 0;
Matrix_Pop(&gGfxMatrix);
}
}
}
}