mirror of
https://github.com/zeldaret/oot.git
synced 2025-04-08 07:36:47 +00:00
move asm to inline asm (consolidate gcc functions)
This commit is contained in:
parent
cbddf7146d
commit
82ba5da981
13 changed files with 153 additions and 150 deletions
2
Makefile
2
Makefile
|
@ -29,7 +29,7 @@ endif
|
|||
|
||||
# Set prefix to mips binutils binaries (mips-linux-gnu-ld => 'mips-linux-gnu-') - Change at your own risk!
|
||||
# In nearly all cases, not having 'mips-linux-gnu-*' binaries on the PATH is indicative of missing dependencies
|
||||
MIPS_BINUTILS_PREFIX ?= mips-linux-gnu-
|
||||
MIPS_BINUTILS_PREFIX ?= mips64-
|
||||
|
||||
ifeq ($(NON_MATCHING),1)
|
||||
CFLAGS += -DNON_MATCHING
|
||||
|
|
|
@ -1,103 +0,0 @@
|
|||
.include "macro.inc"
|
||||
|
||||
# assembler directives
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64 # allow use of 64-bit general purpose registers
|
||||
|
||||
.section .text
|
||||
|
||||
.balign 16
|
||||
|
||||
/* Copied from Super Mario 64 decomp project */
|
||||
|
||||
/* -------------------------------------------------------------------------------------- */
|
||||
/* need to asm these functions because lib32gcc-7-dev-mips-cross does not exist so we */
|
||||
/* cannot naturally link a libgcc variant for this target given this architecture and */
|
||||
/* compiler. Until we have a good workaround with a gcc target that doesn't involve */
|
||||
/* assuming a 32-bit to 64-bit change, we have to encode these functions as raw assembly */
|
||||
/* for it to compile. */
|
||||
/* -------------------------------------------------------------------------------------- */
|
||||
|
||||
/* TODO: Is there a non-insane way to fix this hack that doesn't involve the user compiling */
|
||||
/* a library themselves? */
|
||||
glabel __umoddi3
|
||||
sw $a0, ($sp)
|
||||
sw $a1, 4($sp)
|
||||
sw $a2, 8($sp)
|
||||
sw $a3, 0xc($sp)
|
||||
ld $t7, 8($sp)
|
||||
ld $t6, ($sp)
|
||||
ddivu $zero, $t6, $t7
|
||||
bnez $t7, .L80324144
|
||||
nop
|
||||
break 7
|
||||
.L80324144:
|
||||
mfhi $v0
|
||||
dsll32 $v1, $v0, 0
|
||||
dsra32 $v1, $v1, 0
|
||||
jr $ra
|
||||
dsra32 $v0, $v0, 0
|
||||
|
||||
glabel __udivdi3
|
||||
sw $a0, ($sp)
|
||||
sw $a1, 4($sp)
|
||||
sw $a2, 8($sp)
|
||||
sw $a3, 0xc($sp)
|
||||
ld $t7, 8($sp)
|
||||
ld $t6, ($sp)
|
||||
ddivu $zero, $t6, $t7
|
||||
bnez $t7, .L80324180
|
||||
nop
|
||||
break 7
|
||||
.L80324180:
|
||||
mflo $v0
|
||||
dsll32 $v1, $v0, 0
|
||||
dsra32 $v1, $v1, 0
|
||||
jr $ra
|
||||
dsra32 $v0, $v0, 0
|
||||
|
||||
glabel __moddi3
|
||||
sw $a0, ($sp)
|
||||
sw $a1, 4($sp)
|
||||
sw $a2, 8($sp)
|
||||
sw $a3, 0xc($sp)
|
||||
ld $t7, 8($sp)
|
||||
ld $t6, ($sp)
|
||||
ddivu $zero, $t6, $t7
|
||||
bnez $t7, .L803241E8
|
||||
nop
|
||||
break 7
|
||||
.L803241E8:
|
||||
mfhi $v0
|
||||
dsll32 $v1, $v0, 0
|
||||
dsra32 $v1, $v1, 0
|
||||
jr $ra
|
||||
dsra32 $v0, $v0, 0
|
||||
|
||||
glabel __divdi3
|
||||
sw $a0, ($sp)
|
||||
sw $a1, 4($sp)
|
||||
sw $a2, 8($sp)
|
||||
sw $a3, 0xc($sp)
|
||||
ld $t7, 8($sp)
|
||||
ld $t6, ($sp)
|
||||
ddiv $zero, $t6, $t7
|
||||
nop
|
||||
bnez $t7, .L80324228
|
||||
nop
|
||||
break 7
|
||||
.L80324228:
|
||||
daddiu $at, $zero, -1
|
||||
bne $t7, $at, .L80324244
|
||||
daddiu $at, $zero, 1
|
||||
dsll32 $at, $at, 0x1f
|
||||
bne $t6, $at, .L80324244
|
||||
nop
|
||||
break 6
|
||||
.L80324244:
|
||||
mflo $v0
|
||||
dsll32 $v1, $v0, 0
|
||||
dsra32 $v1, $v1, 0
|
||||
jr $ra
|
||||
dsra32 $v0, $v0, 0
|
1
spec
1
spec
|
@ -110,7 +110,6 @@ beginseg
|
|||
include "build/asm/__osSetWatchLo.o"
|
||||
include "build/data/rsp_boot.text.o"
|
||||
#ifdef COMPILER_GCC
|
||||
include "build/asm/llmuldiv_gcc.o"
|
||||
include "build/src/boot/missing_gcc_functions.o"
|
||||
#endif
|
||||
endseg
|
||||
|
|
|
@ -24,7 +24,6 @@ void bootproc(void) {
|
|||
Locale_Init();
|
||||
|
||||
StackCheck_Init(&sIdleThreadInfo, sIdleThreadStack, STACK_TOP(sIdleThreadStack), 0, 256, "idle");
|
||||
osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, NULL, STACK_TOP(sIdleThreadStack),
|
||||
Z_PRIORITY_MAIN);
|
||||
osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, NULL, STACK_TOP(sIdleThreadStack), Z_PRIORITY_MAIN);
|
||||
osStartThread(&sIdleThread);
|
||||
}
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
#ifdef __GNUC__
|
||||
|
||||
#include "global.h"
|
||||
|
||||
// Define functions needed for the GCC build here.
|
||||
|
||||
// Self-hosted memcmp.
|
||||
int memcmp(void *s1, const void *s2, size_t n) {
|
||||
u8 *m1 = (u8 *)s1;
|
||||
u8 *m2 = (u8 *)s2;
|
||||
int i;
|
||||
int memcmp(void* s1, const void* s2, size_t n) {
|
||||
u8* m1 = (u8*)s1;
|
||||
u8* m2 = (u8*)s2;
|
||||
u32 i;
|
||||
for (i = 0; i < n; i++) {
|
||||
if (m1[i] < m2[i]) {
|
||||
return -1;
|
||||
|
@ -17,10 +19,10 @@ int memcmp(void *s1, const void *s2, size_t n) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void *memset(void *str, int c, size_t n) {
|
||||
u8 *m1 = (u8 *)str;
|
||||
int i;
|
||||
for(i = 0; i < n; i++) {
|
||||
void* memset(void* str, s32 c, size_t n) {
|
||||
u8* m1 = (u8*)str;
|
||||
u32 i;
|
||||
for (i = 0; i < n; i++) {
|
||||
m1[i] = c;
|
||||
}
|
||||
return str;
|
||||
|
@ -29,14 +31,16 @@ void *memset(void *str, int c, size_t n) {
|
|||
// These functions convert c to an unsigned integer, rounding toward zero. Negative values
|
||||
// all become zero.
|
||||
u32 __fixunssfdi(f32 a) {
|
||||
if (a < 0.0f)
|
||||
if (a < 0.0f) {
|
||||
a = 0.0f;
|
||||
}
|
||||
return (u32)a;
|
||||
}
|
||||
|
||||
u32 __fixunsdfdi(f64 a) {
|
||||
if (a < 0.0)
|
||||
if (a < 0.0) {
|
||||
a = 0.0;
|
||||
}
|
||||
return (u32)a;
|
||||
}
|
||||
|
||||
|
@ -60,7 +64,7 @@ f64 __floatdidf(s32 c) {
|
|||
|
||||
// These functions convert c, an unsigned integer, to floating point.
|
||||
f32 __floatundisf(u32 c) {
|
||||
return (f32)c;
|
||||
return (f32)c;
|
||||
}
|
||||
|
||||
f64 __floatundidf(u32 c) {
|
||||
|
@ -84,5 +88,108 @@ f32 __powisf2(f32 a, s32 b) {
|
|||
|
||||
a *= a;
|
||||
}
|
||||
return recip ? 1/r : r;
|
||||
return recip ? 1 / r : r;
|
||||
}
|
||||
|
||||
unsigned long __umoddi3(unsigned long a, unsigned long b) {
|
||||
__asm__(".set push;"
|
||||
".set noat;"
|
||||
".set noreorder;"
|
||||
".set gp=64;"
|
||||
"sw $a0, ($sp);"
|
||||
"sw $a1, 4($sp);"
|
||||
"sw $a2, 8($sp);"
|
||||
"sw $a3, 0xc($sp);"
|
||||
"ld $t7, 8($sp);"
|
||||
"ld $t6, ($sp);"
|
||||
"ddivu $zero, $t6, $t7;"
|
||||
"bnez $t7, .L80324144;"
|
||||
" nop;"
|
||||
"break 7;"
|
||||
".L80324144:"
|
||||
"mfhi $v0;"
|
||||
"dsll32 $v1, $v0, 0;"
|
||||
"dsra32 $v1, $v1, 0;"
|
||||
"dsra32 $v0, $v0, 0;"
|
||||
".set pop;");
|
||||
}
|
||||
|
||||
unsigned long __udivdi3(unsigned long a, unsigned long b) {
|
||||
__asm__(".set push;"
|
||||
".set noat;"
|
||||
".set noreorder;"
|
||||
".set gp=64;"
|
||||
"sw $a0, ($sp);"
|
||||
"sw $a1, 4($sp);"
|
||||
"sw $a2, 8($sp);"
|
||||
"sw $a3, 0xc($sp);"
|
||||
"ld $t7, 8($sp);"
|
||||
"ld $t6, ($sp);"
|
||||
"ddivu $zero, $t6, $t7;"
|
||||
"bnez $t7, .L80324180;"
|
||||
" nop;"
|
||||
"break 7;"
|
||||
".L80324180:"
|
||||
"mflo $v0;"
|
||||
"dsll32 $v1, $v0, 0;"
|
||||
"dsra32 $v1, $v1, 0;"
|
||||
" dsra32 $v0, $v0, 0;"
|
||||
".set pop;");
|
||||
}
|
||||
|
||||
long __moddi3(long a, long b) {
|
||||
__asm__(".set push;"
|
||||
".set noat;"
|
||||
".set noreorder;"
|
||||
".set gp=64;"
|
||||
"sw $a0, ($sp);"
|
||||
"sw $a1, 4($sp);"
|
||||
"sw $a2, 8($sp);"
|
||||
"sw $a3, 0xc($sp);"
|
||||
"ld $t7, 8($sp);"
|
||||
"ld $t6, ($sp);"
|
||||
"ddivu $zero, $t6, $t7;"
|
||||
"bnez $t7, .L803241E8;"
|
||||
" nop;"
|
||||
"break 7;"
|
||||
".L803241E8:"
|
||||
"mfhi $v0;"
|
||||
"dsll32 $v1, $v0, 0;"
|
||||
"dsra32 $v1, $v1, 0;"
|
||||
" dsra32 $v0, $v0, 0;"
|
||||
".set pop;");
|
||||
}
|
||||
|
||||
long __divdi3(long a, long b) {
|
||||
__asm__(".set push;"
|
||||
".set noat;"
|
||||
".set noreorder;"
|
||||
".set gp=64;"
|
||||
"sw $a0, ($sp);"
|
||||
"sw $a1, 4($sp);"
|
||||
"sw $a2, 8($sp);"
|
||||
"sw $a3, 0xc($sp);"
|
||||
"ld $t7, 8($sp);"
|
||||
"ld $t6, ($sp);"
|
||||
"ddiv $zero, $t6, $t7;"
|
||||
"nop;"
|
||||
"bnez $t7, .L80324228;"
|
||||
" nop;"
|
||||
"break 7;"
|
||||
".L80324228:"
|
||||
"daddiu $at, $zero, -1;"
|
||||
"bne $t7, $at, .L80324244;"
|
||||
" daddiu $at, $zero, 1;"
|
||||
"dsll32 $at, $at, 0x1f;"
|
||||
"bne $t6, $at, .L80324244;"
|
||||
" nop;"
|
||||
"break 6;"
|
||||
".L80324244:"
|
||||
"mflo $v0;"
|
||||
"dsll32 $v1, $v0, 0;"
|
||||
"dsra32 $v1, $v1, 0;"
|
||||
" dsra32 $v0, $v0, 0;"
|
||||
".set pop;");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1265,8 +1265,7 @@ void Fault_Init(void) {
|
|||
gFaultMgr.faultHandlerEnabled = true;
|
||||
osCreateMesgQueue(&sFaultInstance->queue, &sFaultInstance->msg, 1);
|
||||
StackCheck_Init(&sFaultThreadInfo, &sFaultStack, STACK_TOP(sFaultStack), 0, 0x100, "fault");
|
||||
osCreateThread(&sFaultInstance->thread, 2, Fault_ThreadEntry, 0, STACK_TOP(sFaultStack),
|
||||
OS_PRIORITY_APPMAX);
|
||||
osCreateThread(&sFaultInstance->thread, 2, Fault_ThreadEntry, 0, STACK_TOP(sFaultStack), OS_PRIORITY_APPMAX);
|
||||
osStartThread(&sFaultInstance->thread);
|
||||
}
|
||||
|
||||
|
|
|
@ -470,7 +470,8 @@ void func_8002C7BC(TargetContext* targetCtx, Player* player, Actor* actorArg, Gl
|
|||
|
||||
if ((actorArg != NULL) && (targetCtx->unk_4B == 0)) {
|
||||
Actor_ProjectPos(globalCtx, &actorArg->focus.pos, &projectedFocusPos, &cappedInvWDest);
|
||||
if (((projectedFocusPos.z <= 0.0f) || (1.0f <= fabsf(projectedFocusPos.x * cappedInvWDest))) || (1.0f <= fabsf(projectedFocusPos.y * cappedInvWDest))) {
|
||||
if (((projectedFocusPos.z <= 0.0f) || (1.0f <= fabsf(projectedFocusPos.x * cappedInvWDest))) ||
|
||||
(1.0f <= fabsf(projectedFocusPos.y * cappedInvWDest))) {
|
||||
actorArg = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -728,23 +729,23 @@ void TitleCard_Draw(GlobalContext* globalCtx, TitleCardContext* titleCtx) {
|
|||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, (u8)titleCtx->intensity, (u8)titleCtx->intensity, (u8)titleCtx->intensity,
|
||||
(u8)titleCtx->alpha);
|
||||
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++, (s32)titleCtx->texture + textureLanguageOffset, G_IM_FMT_IA, G_IM_SIZ_8b, width, height, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++, (s32)titleCtx->texture + textureLanguageOffset, G_IM_FMT_IA, G_IM_SIZ_8b,
|
||||
width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
||||
gSPTextureRectangle(OVERLAY_DISP++, titleX, titleY, ((doubleWidth * 2) + titleX) - 4, titleY + (height * 4) - 1, G_TX_RENDERTILE,
|
||||
0, 0, 1 << 10, 1 << 10);
|
||||
gSPTextureRectangle(OVERLAY_DISP++, titleX, titleY, ((doubleWidth * 2) + titleX) - 4, titleY + (height * 4) - 1,
|
||||
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
|
||||
height = titleCtx->height - height;
|
||||
|
||||
// If texture is bigger than 0x1000, display the rest
|
||||
if (height > 0) {
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++, (s32)titleCtx->texture + textureLanguageOffset + 0x1000, G_IM_FMT_IA, G_IM_SIZ_8b, width,
|
||||
height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
|
||||
G_TX_NOLOD, G_TX_NOLOD);
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++, (s32)titleCtx->texture + textureLanguageOffset + 0x1000, G_IM_FMT_IA,
|
||||
G_IM_SIZ_8b, width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
||||
gSPTextureRectangle(OVERLAY_DISP++, titleX, titleSecondY, ((doubleWidth * 2) + titleX) - 4, titleSecondY + (height * 4) - 1,
|
||||
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
gSPTextureRectangle(OVERLAY_DISP++, titleX, titleSecondY, ((doubleWidth * 2) + titleX) - 4,
|
||||
titleSecondY + (height * 4) - 1, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_actor.c", 2880);
|
||||
|
|
|
@ -452,8 +452,10 @@ void HealthMeter_Draw(GlobalContext* globalCtx) {
|
|||
heartTexCoordPerPixel *= 1 << 10;
|
||||
halfHeartLength = 8.0f;
|
||||
halfHeartLength *= 0.68f;
|
||||
gSPTextureRectangle(OVERLAY_DISP++, (s32)((heartCenterX - halfHeartLength) * 4), (s32)((heartCenterY - halfHeartLength) * 4),
|
||||
(s32)((heartCenterX + halfHeartLength) * 4), (s32)((heartCenterY + halfHeartLength) * 4), G_TX_RENDERTILE, 0, 0,
|
||||
gSPTextureRectangle(OVERLAY_DISP++, (s32)((heartCenterX - halfHeartLength) * 4),
|
||||
(s32)((heartCenterY - halfHeartLength) * 4),
|
||||
(s32)((heartCenterX + halfHeartLength) * 4),
|
||||
(s32)((heartCenterY + halfHeartLength) * 4), G_TX_RENDERTILE, 0, 0,
|
||||
(s32)heartTexCoordPerPixel, (s32)heartTexCoordPerPixel);
|
||||
} else {
|
||||
if ((ddHeartCountMinusOne < 0) || (heartIndex > ddHeartCountMinusOne)) {
|
||||
|
@ -474,8 +476,9 @@ void HealthMeter_Draw(GlobalContext* globalCtx) {
|
|||
|
||||
{
|
||||
Mtx* matrix = Graph_Alloc(gfxCtx, sizeof(Mtx));
|
||||
Matrix_SetTranslateScaleMtx2(matrix, 1.0f - (0.32f * beatingHeartPulsingSize), 1.0f - (0.32f * beatingHeartPulsingSize), 1.0f - (0.32f * beatingHeartPulsingSize),
|
||||
-130.0f + offsetX, 94.5f - offsetY, 0.0f);
|
||||
Matrix_SetTranslateScaleMtx2(
|
||||
matrix, 1.0f - (0.32f * beatingHeartPulsingSize), 1.0f - (0.32f * beatingHeartPulsingSize),
|
||||
1.0f - (0.32f * beatingHeartPulsingSize), -130.0f + offsetX, 94.5f - offsetY, 0.0f);
|
||||
gSPMatrix(OVERLAY_DISP++, matrix, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPVertex(OVERLAY_DISP++, beatingHeartVtx, 4, 0);
|
||||
gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0);
|
||||
|
|
|
@ -63,10 +63,10 @@ void MapMark_Init(GlobalContext* globalCtx) {
|
|||
Overlay_Load(overlay->vromStart, overlay->vromEnd, overlay->vramStart, overlay->vramEnd, overlay->loadedRamAddr);
|
||||
|
||||
sLoadedMarkDataTable = gMapMarkDataTable;
|
||||
sLoadedMarkDataTable = (void*)(u32)((overlay->vramTable != NULL)
|
||||
? (void*)((u32)overlay->vramTable -
|
||||
(s32)((u32)overlay->vramStart - (u32)overlay->loadedRamAddr))
|
||||
: NULL);
|
||||
sLoadedMarkDataTable = (void*)(u32)(
|
||||
(overlay->vramTable != NULL)
|
||||
? (void*)((u32)overlay->vramTable - (s32)((u32)overlay->vramStart - (u32)overlay->loadedRamAddr))
|
||||
: NULL);
|
||||
}
|
||||
|
||||
void MapMark_ClearPointers(GlobalContext* globalCtx) {
|
||||
|
|
|
@ -155,7 +155,8 @@ void EnHeishi2_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||
// "Identification Completed!"
|
||||
osSyncPrintf(VT_FGCOL(YELLOW) " ☆☆☆☆☆ 識別完了! ☆☆☆☆☆ %d\n" VT_RST, this->type);
|
||||
// "Message completed!"
|
||||
osSyncPrintf(VT_FGCOL(MAGENTA) " ☆☆☆☆☆ メッセージ完了! ☆☆☆☆☆ %x\n\n" VT_RST, (this->actor.params >> 8) & 0xF);
|
||||
osSyncPrintf(VT_FGCOL(MAGENTA) " ☆☆☆☆☆ メッセージ完了! ☆☆☆☆☆ %x\n\n" VT_RST,
|
||||
(this->actor.params >> 8) & 0xF);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -61,12 +61,8 @@ static s16 sObjectIds[6] = {
|
|||
};
|
||||
|
||||
static FlexSkeletonHeader* sSkeletons[6] = {
|
||||
&object_ahg_Skel_0000F0,
|
||||
&object_boj_Skel_0000F0,
|
||||
&object_boj_Skel_0000F0,
|
||||
&object_boj_Skel_0000F0,
|
||||
&object_boj_Skel_0000F0,
|
||||
&object_boj_Skel_0000F0,
|
||||
&object_ahg_Skel_0000F0, &object_boj_Skel_0000F0, &object_boj_Skel_0000F0,
|
||||
&object_boj_Skel_0000F0, &object_boj_Skel_0000F0, &object_boj_Skel_0000F0,
|
||||
};
|
||||
|
||||
static AnimationHeader* sAnimations[6] = {
|
||||
|
|
|
@ -186,7 +186,8 @@ void func_80B3A3D4(EnWonderTalk2* this, GlobalContext* globalCtx) {
|
|||
if ((this->switchFlag >= 0) && (this->talkMode != 4)) {
|
||||
Flags_SetSwitch(globalCtx, this->switchFlag);
|
||||
// "(Forced) I saved it! All of it!"
|
||||
osSyncPrintf(VT_FGCOL(MAGENTA) "☆☆☆☆☆ (強制)セーブしたよ!おもいっきり! %x\n" VT_RST, this->switchFlag);
|
||||
osSyncPrintf(VT_FGCOL(MAGENTA) "☆☆☆☆☆ (強制)セーブしたよ!おもいっきり! %x\n" VT_RST,
|
||||
this->switchFlag);
|
||||
}
|
||||
|
||||
if (this->talkMode == 4) {
|
||||
|
|
|
@ -344,8 +344,8 @@ s16 ObjOshihiki_GetHighestFloor(ObjOshihiki* this) {
|
|||
for (i = 1; i < ARRAY_COUNT(this->floorHeights); i++) {
|
||||
if (this->floorHeights[i] > this->floorHeights[highestFloor]) {
|
||||
highestFloor = i;
|
||||
} else if ((this->floorBgIds[i] == BGCHECK_SCENE) &&
|
||||
((this->floorHeights[i] - this->floorHeights[highestFloor]) > -0.001f)) {
|
||||
} else if ((this->floorBgIds[i] == BGCHECK_SCENE) &&
|
||||
((this->floorHeights[i] - this->floorHeights[highestFloor]) > -0.001f)) {
|
||||
highestFloor = i;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue