mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-17 21:35:11 +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!
|
# 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
|
# 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)
|
ifeq ($(NON_MATCHING),1)
|
||||||
CFLAGS += -DNON_MATCHING
|
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/asm/__osSetWatchLo.o"
|
||||||
include "build/data/rsp_boot.text.o"
|
include "build/data/rsp_boot.text.o"
|
||||||
#ifdef COMPILER_GCC
|
#ifdef COMPILER_GCC
|
||||||
include "build/asm/llmuldiv_gcc.o"
|
|
||||||
include "build/src/boot/missing_gcc_functions.o"
|
include "build/src/boot/missing_gcc_functions.o"
|
||||||
#endif
|
#endif
|
||||||
endseg
|
endseg
|
||||||
|
|
|
@ -24,7 +24,6 @@ void bootproc(void) {
|
||||||
Locale_Init();
|
Locale_Init();
|
||||||
|
|
||||||
StackCheck_Init(&sIdleThreadInfo, sIdleThreadStack, STACK_TOP(sIdleThreadStack), 0, 256, "idle");
|
StackCheck_Init(&sIdleThreadInfo, sIdleThreadStack, STACK_TOP(sIdleThreadStack), 0, 256, "idle");
|
||||||
osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, NULL, STACK_TOP(sIdleThreadStack),
|
osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, NULL, STACK_TOP(sIdleThreadStack), Z_PRIORITY_MAIN);
|
||||||
Z_PRIORITY_MAIN);
|
|
||||||
osStartThread(&sIdleThread);
|
osStartThread(&sIdleThread);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
|
#ifdef __GNUC__
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
|
||||||
// Define functions needed for the GCC build here.
|
// Define functions needed for the GCC build here.
|
||||||
|
|
||||||
// Self-hosted memcmp.
|
// Self-hosted memcmp.
|
||||||
int memcmp(void *s1, const void *s2, size_t n) {
|
int memcmp(void* s1, const void* s2, size_t n) {
|
||||||
u8 *m1 = (u8 *)s1;
|
u8* m1 = (u8*)s1;
|
||||||
u8 *m2 = (u8 *)s2;
|
u8* m2 = (u8*)s2;
|
||||||
int i;
|
u32 i;
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
if (m1[i] < m2[i]) {
|
if (m1[i] < m2[i]) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -17,10 +19,10 @@ int memcmp(void *s1, const void *s2, size_t n) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *memset(void *str, int c, size_t n) {
|
void* memset(void* str, s32 c, size_t n) {
|
||||||
u8 *m1 = (u8 *)str;
|
u8* m1 = (u8*)str;
|
||||||
int i;
|
u32 i;
|
||||||
for(i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
m1[i] = c;
|
m1[i] = c;
|
||||||
}
|
}
|
||||||
return str;
|
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
|
// These functions convert c to an unsigned integer, rounding toward zero. Negative values
|
||||||
// all become zero.
|
// all become zero.
|
||||||
u32 __fixunssfdi(f32 a) {
|
u32 __fixunssfdi(f32 a) {
|
||||||
if (a < 0.0f)
|
if (a < 0.0f) {
|
||||||
a = 0.0f;
|
a = 0.0f;
|
||||||
|
}
|
||||||
return (u32)a;
|
return (u32)a;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 __fixunsdfdi(f64 a) {
|
u32 __fixunsdfdi(f64 a) {
|
||||||
if (a < 0.0)
|
if (a < 0.0) {
|
||||||
a = 0.0;
|
a = 0.0;
|
||||||
|
}
|
||||||
return (u32)a;
|
return (u32)a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +64,7 @@ f64 __floatdidf(s32 c) {
|
||||||
|
|
||||||
// These functions convert c, an unsigned integer, to floating point.
|
// These functions convert c, an unsigned integer, to floating point.
|
||||||
f32 __floatundisf(u32 c) {
|
f32 __floatundisf(u32 c) {
|
||||||
return (f32)c;
|
return (f32)c;
|
||||||
}
|
}
|
||||||
|
|
||||||
f64 __floatundidf(u32 c) {
|
f64 __floatundidf(u32 c) {
|
||||||
|
@ -84,5 +88,108 @@ f32 __powisf2(f32 a, s32 b) {
|
||||||
|
|
||||||
a *= a;
|
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;
|
gFaultMgr.faultHandlerEnabled = true;
|
||||||
osCreateMesgQueue(&sFaultInstance->queue, &sFaultInstance->msg, 1);
|
osCreateMesgQueue(&sFaultInstance->queue, &sFaultInstance->msg, 1);
|
||||||
StackCheck_Init(&sFaultThreadInfo, &sFaultStack, STACK_TOP(sFaultStack), 0, 0x100, "fault");
|
StackCheck_Init(&sFaultThreadInfo, &sFaultStack, STACK_TOP(sFaultStack), 0, 0x100, "fault");
|
||||||
osCreateThread(&sFaultInstance->thread, 2, Fault_ThreadEntry, 0, STACK_TOP(sFaultStack),
|
osCreateThread(&sFaultInstance->thread, 2, Fault_ThreadEntry, 0, STACK_TOP(sFaultStack), OS_PRIORITY_APPMAX);
|
||||||
OS_PRIORITY_APPMAX);
|
|
||||||
osStartThread(&sFaultInstance->thread);
|
osStartThread(&sFaultInstance->thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -470,7 +470,8 @@ void func_8002C7BC(TargetContext* targetCtx, Player* player, Actor* actorArg, Gl
|
||||||
|
|
||||||
if ((actorArg != NULL) && (targetCtx->unk_4B == 0)) {
|
if ((actorArg != NULL) && (targetCtx->unk_4B == 0)) {
|
||||||
Actor_ProjectPos(globalCtx, &actorArg->focus.pos, &projectedFocusPos, &cappedInvWDest);
|
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;
|
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,
|
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, (u8)titleCtx->intensity, (u8)titleCtx->intensity, (u8)titleCtx->intensity,
|
||||||
(u8)titleCtx->alpha);
|
(u8)titleCtx->alpha);
|
||||||
|
|
||||||
gDPLoadTextureBlock(OVERLAY_DISP++, (s32)titleCtx->texture + textureLanguageOffset, G_IM_FMT_IA, G_IM_SIZ_8b, width, height, 0,
|
gDPLoadTextureBlock(OVERLAY_DISP++, (s32)titleCtx->texture + textureLanguageOffset, G_IM_FMT_IA, G_IM_SIZ_8b,
|
||||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||||
G_TX_NOLOD);
|
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,
|
gSPTextureRectangle(OVERLAY_DISP++, titleX, titleY, ((doubleWidth * 2) + titleX) - 4, titleY + (height * 4) - 1,
|
||||||
0, 0, 1 << 10, 1 << 10);
|
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||||
|
|
||||||
height = titleCtx->height - height;
|
height = titleCtx->height - height;
|
||||||
|
|
||||||
// If texture is bigger than 0x1000, display the rest
|
// If texture is bigger than 0x1000, display the rest
|
||||||
if (height > 0) {
|
if (height > 0) {
|
||||||
gDPLoadTextureBlock(OVERLAY_DISP++, (s32)titleCtx->texture + textureLanguageOffset + 0x1000, G_IM_FMT_IA, G_IM_SIZ_8b, width,
|
gDPLoadTextureBlock(OVERLAY_DISP++, (s32)titleCtx->texture + textureLanguageOffset + 0x1000, G_IM_FMT_IA,
|
||||||
height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
|
G_IM_SIZ_8b, width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
|
||||||
G_TX_NOLOD, G_TX_NOLOD);
|
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,
|
gSPTextureRectangle(OVERLAY_DISP++, titleX, titleSecondY, ((doubleWidth * 2) + titleX) - 4,
|
||||||
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
titleSecondY + (height * 4) - 1, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_actor.c", 2880);
|
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_actor.c", 2880);
|
||||||
|
|
|
@ -452,8 +452,10 @@ void HealthMeter_Draw(GlobalContext* globalCtx) {
|
||||||
heartTexCoordPerPixel *= 1 << 10;
|
heartTexCoordPerPixel *= 1 << 10;
|
||||||
halfHeartLength = 8.0f;
|
halfHeartLength = 8.0f;
|
||||||
halfHeartLength *= 0.68f;
|
halfHeartLength *= 0.68f;
|
||||||
gSPTextureRectangle(OVERLAY_DISP++, (s32)((heartCenterX - halfHeartLength) * 4), (s32)((heartCenterY - halfHeartLength) * 4),
|
gSPTextureRectangle(OVERLAY_DISP++, (s32)((heartCenterX - halfHeartLength) * 4),
|
||||||
(s32)((heartCenterX + halfHeartLength) * 4), (s32)((heartCenterY + halfHeartLength) * 4), G_TX_RENDERTILE, 0, 0,
|
(s32)((heartCenterY - halfHeartLength) * 4),
|
||||||
|
(s32)((heartCenterX + halfHeartLength) * 4),
|
||||||
|
(s32)((heartCenterY + halfHeartLength) * 4), G_TX_RENDERTILE, 0, 0,
|
||||||
(s32)heartTexCoordPerPixel, (s32)heartTexCoordPerPixel);
|
(s32)heartTexCoordPerPixel, (s32)heartTexCoordPerPixel);
|
||||||
} else {
|
} else {
|
||||||
if ((ddHeartCountMinusOne < 0) || (heartIndex > ddHeartCountMinusOne)) {
|
if ((ddHeartCountMinusOne < 0) || (heartIndex > ddHeartCountMinusOne)) {
|
||||||
|
@ -474,8 +476,9 @@ void HealthMeter_Draw(GlobalContext* globalCtx) {
|
||||||
|
|
||||||
{
|
{
|
||||||
Mtx* matrix = Graph_Alloc(gfxCtx, sizeof(Mtx));
|
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),
|
Matrix_SetTranslateScaleMtx2(
|
||||||
-130.0f + offsetX, 94.5f - offsetY, 0.0f);
|
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);
|
gSPMatrix(OVERLAY_DISP++, matrix, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||||
gSPVertex(OVERLAY_DISP++, beatingHeartVtx, 4, 0);
|
gSPVertex(OVERLAY_DISP++, beatingHeartVtx, 4, 0);
|
||||||
gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 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);
|
Overlay_Load(overlay->vromStart, overlay->vromEnd, overlay->vramStart, overlay->vramEnd, overlay->loadedRamAddr);
|
||||||
|
|
||||||
sLoadedMarkDataTable = gMapMarkDataTable;
|
sLoadedMarkDataTable = gMapMarkDataTable;
|
||||||
sLoadedMarkDataTable = (void*)(u32)((overlay->vramTable != NULL)
|
sLoadedMarkDataTable = (void*)(u32)(
|
||||||
? (void*)((u32)overlay->vramTable -
|
(overlay->vramTable != NULL)
|
||||||
(s32)((u32)overlay->vramStart - (u32)overlay->loadedRamAddr))
|
? (void*)((u32)overlay->vramTable - (s32)((u32)overlay->vramStart - (u32)overlay->loadedRamAddr))
|
||||||
: NULL);
|
: NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MapMark_ClearPointers(GlobalContext* globalCtx) {
|
void MapMark_ClearPointers(GlobalContext* globalCtx) {
|
||||||
|
|
|
@ -155,7 +155,8 @@ void EnHeishi2_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
// "Identification Completed!"
|
// "Identification Completed!"
|
||||||
osSyncPrintf(VT_FGCOL(YELLOW) " ☆☆☆☆☆ 識別完了! ☆☆☆☆☆ %d\n" VT_RST, this->type);
|
osSyncPrintf(VT_FGCOL(YELLOW) " ☆☆☆☆☆ 識別完了! ☆☆☆☆☆ %d\n" VT_RST, this->type);
|
||||||
// "Message completed!"
|
// "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] = {
|
static FlexSkeletonHeader* sSkeletons[6] = {
|
||||||
&object_ahg_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, &object_boj_Skel_0000F0,
|
||||||
&object_boj_Skel_0000F0,
|
|
||||||
&object_boj_Skel_0000F0,
|
|
||||||
&object_boj_Skel_0000F0,
|
|
||||||
&object_boj_Skel_0000F0,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static AnimationHeader* sAnimations[6] = {
|
static AnimationHeader* sAnimations[6] = {
|
||||||
|
|
|
@ -186,7 +186,8 @@ void func_80B3A3D4(EnWonderTalk2* this, GlobalContext* globalCtx) {
|
||||||
if ((this->switchFlag >= 0) && (this->talkMode != 4)) {
|
if ((this->switchFlag >= 0) && (this->talkMode != 4)) {
|
||||||
Flags_SetSwitch(globalCtx, this->switchFlag);
|
Flags_SetSwitch(globalCtx, this->switchFlag);
|
||||||
// "(Forced) I saved it! All of it!"
|
// "(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) {
|
if (this->talkMode == 4) {
|
||||||
|
|
|
@ -344,8 +344,8 @@ s16 ObjOshihiki_GetHighestFloor(ObjOshihiki* this) {
|
||||||
for (i = 1; i < ARRAY_COUNT(this->floorHeights); i++) {
|
for (i = 1; i < ARRAY_COUNT(this->floorHeights); i++) {
|
||||||
if (this->floorHeights[i] > this->floorHeights[highestFloor]) {
|
if (this->floorHeights[i] > this->floorHeights[highestFloor]) {
|
||||||
highestFloor = i;
|
highestFloor = i;
|
||||||
} else if ((this->floorBgIds[i] == BGCHECK_SCENE) &&
|
} else if ((this->floorBgIds[i] == BGCHECK_SCENE) &&
|
||||||
((this->floorHeights[i] - this->floorHeights[highestFloor]) > -0.001f)) {
|
((this->floorHeights[i] - this->floorHeights[highestFloor]) > -0.001f)) {
|
||||||
highestFloor = i;
|
highestFloor = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue