mirror of
https://github.com/pmret/papermario.git
synced 2024-11-08 12:02:30 +01:00
More libultra and appendGfx_player_actor (#829)
* libultra stuff * vi stuff * initialize.c * bss stuff * appendGfx_player_actor
This commit is contained in:
parent
342887a94c
commit
77ee6c819b
@ -6,7 +6,7 @@
|
||||
#include "map.h"
|
||||
#include "enums.h"
|
||||
#include "stdlib/stdarg.h"
|
||||
#include "xstdio.h"
|
||||
#include "libc/xstdio.h"
|
||||
|
||||
f32 fabsf(f32 f);
|
||||
f64 fabs(f64 f);
|
||||
|
121
include/gcc/stdarg.h
Normal file
121
include/gcc/stdarg.h
Normal file
@ -0,0 +1,121 @@
|
||||
#ifndef _STDARG_H
|
||||
#define _STDARG_H
|
||||
/* ---------------------------------------- */
|
||||
/* VARARGS for MIPS/GNU CC */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* ---------------------------------------- */
|
||||
|
||||
/* These macros implement varargs for GNU C--either traditional or ANSU. */
|
||||
|
||||
/* Define __gnuc_va_list. */
|
||||
|
||||
#ifndef __GNUC_VA_LIST
|
||||
#define __GNUC_VA_LIST
|
||||
typedef char * __gnuc_va_list;
|
||||
#endif /* not __GNUC_VA_LIST */
|
||||
|
||||
/* If this is for internal libc use, don't define anything but
|
||||
__gnuc_va_list. */
|
||||
#if defined (_STDARG_H) || defined (_VARARGS_H)
|
||||
|
||||
/* In GCC version 2, we want an ellipsis at the end of the declaration
|
||||
of the argument list. GCC version 1 can't parse it. */
|
||||
|
||||
#if __GNUC__ > 1
|
||||
#define __va_ellipsis ...
|
||||
#else
|
||||
#define __va_ellipsis
|
||||
#endif
|
||||
|
||||
#if __mips>=3
|
||||
#define __va_rounded_size(__TYPE) \
|
||||
(((sizeof (__TYPE) + 8 - 1) / 8) * 8)
|
||||
#else
|
||||
#define __va_rounded_size(__TYPE) \
|
||||
(((sizeof (__TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
|
||||
#endif
|
||||
|
||||
/* Get definitions for _MIPS_SIM_ABI64 etc. */
|
||||
#ifdef _MIPS_SIM
|
||||
#include <sgidefs.h>
|
||||
#endif
|
||||
|
||||
#ifdef _STDARG_H
|
||||
#if defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64)
|
||||
#define va_start(__AP, __LASTARG) \
|
||||
(__AP = __builtin_next_arg (__LASTARG) - 64 \
|
||||
+ (__builtin_args_info (2) > 8 ? 64 : __builtin_args_info(2) * 8))
|
||||
#else
|
||||
#define va_start(__AP, __LASTARG) \
|
||||
(__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG))
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define va_alist __builtin_va_alist
|
||||
#if __mips>=3
|
||||
/* This assumes that `long long int' is always a 64 bit type. */
|
||||
#define va_dcl long long int __builtin_va_alist; __va_ellipsis
|
||||
#else
|
||||
#define va_dcl int __builtin_va_alist; __va_ellipsis
|
||||
#endif
|
||||
/* Need alternate code for _MIPS_SIM_ABI64, but don't use that symbol
|
||||
because it may not be defined. */
|
||||
#if defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64)
|
||||
#define va_start(__AP) \
|
||||
(__AP = __builtin_next_arg () - 64 \
|
||||
+ (__builtin_args_info (2) > 8 ? 64 : __builtin_args_info(2) * 8))
|
||||
#else
|
||||
#define va_start(__AP) __AP = (char *) &__builtin_va_alist
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef va_end
|
||||
void va_end (__gnuc_va_list); /* Defined in libgcc.a */
|
||||
#endif
|
||||
#define va_end(__AP) ((void)0)
|
||||
|
||||
/* We cast to void * and then to TYPE * because this avoids
|
||||
a warning about increasing the alignment requirement. */
|
||||
/* The __mips>=3 cases are reversed from the 32 bit cases, because the standard
|
||||
32 bit calling convention left-aligns all parameters smaller than a word,
|
||||
whereas the __mips>=3 calling convention does not (and hence they are
|
||||
right aligned). */
|
||||
#if __mips>=3
|
||||
#ifdef __MIPSEB__
|
||||
#define va_arg(__AP, __type) \
|
||||
((__type *) (void *) (__AP = (char *) ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) \
|
||||
+ __va_rounded_size (__type))))[-1]
|
||||
#else
|
||||
#define va_arg(__AP, __type) \
|
||||
((__AP = (char *) ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) \
|
||||
+ __va_rounded_size (__type))), \
|
||||
*(__type *) (void *) (__AP - __va_rounded_size (__type)))
|
||||
#endif
|
||||
|
||||
#else /* not __mips>=3 */
|
||||
|
||||
#ifdef __MIPSEB__
|
||||
/* For big-endian machines. */
|
||||
#define va_arg(__AP, __type) \
|
||||
((__AP = (char *) ((__alignof__ (__type) > 4 \
|
||||
? ((int)__AP + 8 - 1) & -8 \
|
||||
: ((int)__AP + 4 - 1) & -4) \
|
||||
+ __va_rounded_size (__type))), \
|
||||
*(__type *) (void *) (__AP - __va_rounded_size (__type)))
|
||||
#else
|
||||
/* For little-endian machines. */
|
||||
#define va_arg(__AP, __type) \
|
||||
((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4 \
|
||||
? ((int)__AP + 8 - 1) & -8 \
|
||||
: ((int)__AP + 4 - 1) & -4) \
|
||||
+ __va_rounded_size(__type))))[-1]
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef __gnuc_va_list va_list;
|
||||
|
||||
#endif /* defined (_STDARG_H) || defined (_VARARGS_H) */
|
||||
#endif
|
@ -1,7 +1,8 @@
|
||||
#ifndef _XSTDIO_H
|
||||
#define _XSTDIO_H
|
||||
#include "PR/ultratypes.h"
|
||||
#include "stdlib/stdarg.h"
|
||||
#include "gcc/stdlib.h"
|
||||
#include "gcc/stdarg.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ union {
|
317
src/182B30.c
317
src/182B30.c
@ -13,6 +13,22 @@ extern s16 D_80284134[];
|
||||
void update_player_actor_shadow(void);
|
||||
void appendGfx_npc_actor(s32 isPartner, s32 actorIndex);
|
||||
|
||||
void create_status_chill_out(s32 iconID);
|
||||
void enable_status_2(s32 iconID);
|
||||
void enable_status_chill_out(s32 iconID);
|
||||
void enable_status_debuff(s16);
|
||||
void enable_status_transparent(s16);
|
||||
void enable_status_icon_boost_jump(s32 iconID);
|
||||
void enable_status_icon_boost_hammer(s32 iconID);
|
||||
s32 func_80265CE8(u32*, s32);
|
||||
void func_80266DAC(Actor* actor, s32 arg1);
|
||||
void create_status_icon_boost_hammer(s32 iconID);
|
||||
void create_status_icon_boost_jump(s32 iconID);
|
||||
void create_status_icon_peril(s32 iconID);
|
||||
void create_status_icon_danger(s32 iconID);
|
||||
void set_status_icons_offset(s32 iconID, s32 offsetY, s32 arg2);
|
||||
void set_status_icons_properties(s32 iconID, f32 x, f32 y, f32 z, s32 arg, s32 arg2, s32 radius, s32 offsetY);
|
||||
|
||||
void func_802571F0(s32, Actor*);
|
||||
void func_80259494(ActorPart*);
|
||||
void func_8025950C(ActorPart*, s32, Matrix4f);
|
||||
@ -707,16 +723,6 @@ void update_hero_shadows(void) {
|
||||
void func_80255FD8(void) {
|
||||
}
|
||||
|
||||
void create_status_chill_out(s32 iconID);
|
||||
void enable_status_2(s32 iconID);
|
||||
void enable_status_chill_out(s32 iconID);
|
||||
void enable_status_debuff(s16);
|
||||
void enable_status_transparent(s16);
|
||||
s32 func_80265CE8(u32*, s32);
|
||||
void func_80266DAC(Actor* actor, s32 arg1);
|
||||
void set_status_icons_offset(s32 iconID, s32 offsetY, s32 arg2);
|
||||
void set_status_icons_properties(s32 iconID, f32 x, f32 y, f32 z, s32 arg, s32 arg2, s32 radius, s32 offsetY);
|
||||
|
||||
void appendGfx_npc_actor(s32 isPartner, s32 actorIndex) {
|
||||
BattleStatus* battleStatus = &gBattleStatus;
|
||||
Matrix4f mtxRotX, mtxRotY, mtxRotZ, mtxRotation;
|
||||
@ -900,15 +906,15 @@ void appendGfx_npc_actor(s32 isPartner, s32 actorIndex) {
|
||||
}
|
||||
} while (0); // required to match
|
||||
func_80266DAC(actor, 0xC);
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
func_80266EE8(actor, 0);
|
||||
decorChanged = TRUE;
|
||||
}
|
||||
if (isPartner && (gPlayerData.currentPartner == PARTNER_WATT)) {
|
||||
if (cond2 == 0) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(actor, 9);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
}
|
||||
if (actor->isGlowing) {
|
||||
@ -918,30 +924,30 @@ void appendGfx_npc_actor(s32 isPartner, s32 actorIndex) {
|
||||
decorChanged = TRUE;
|
||||
}
|
||||
if (actor->debuff == STATUS_POISON) {
|
||||
if (cond2 == 0) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(actor, 6);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if (actor->debuff == STATUS_PARALYZE) {
|
||||
if (cond2 == 0) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(actor, 7);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if (actor->debuff == STATUS_FEAR) {
|
||||
if (cond2 == 0) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(actor, 5);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if (actor->staticStatus == STATUS_STATIC) {
|
||||
if (cond2 == 0) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(actor, 4);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if ((cond2 == 0) && !(part->flags & ACTOR_PART_FLAG_1000000)) {
|
||||
if ((!cond2) && !(part->flags & ACTOR_PART_FLAG_1000000)) {
|
||||
func_80266DAC(actor, 0);
|
||||
}
|
||||
if ((!decorChanged) && !(part->flags & ACTOR_PART_FLAG_1000000)) {
|
||||
@ -1331,7 +1337,6 @@ void update_player_actor_shadow(void) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
void appendGfx_player_actor(void* arg0) {
|
||||
BattleStatus* battleStatus = &gBattleStatus;
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
@ -1345,26 +1350,26 @@ void appendGfx_player_actor(void* arg0) {
|
||||
ActorPart* playerParts;
|
||||
EffectInstance* effect;
|
||||
f32 playerPosX, playerPosY, playerPosZ, playerYaw;
|
||||
f32 dx, dy, dz;
|
||||
s32 cond1, cond2, cond3, cond4;
|
||||
u32 lastAnim;
|
||||
|
||||
player = gBattleStatus.playerActor;
|
||||
partner = gBattleStatus.partnerActor;
|
||||
player = battleStatus->playerActor;
|
||||
partner = battleStatus->partnerActor;
|
||||
playerParts = player->partsTable;
|
||||
|
||||
playerPosX = player->currentPos.x + player->headOffset.x;
|
||||
playerPosY = player->currentPos.y + player->headOffset.y + player->unk_19A;
|
||||
playerPosZ = player->currentPos.z + player->headOffset.z;
|
||||
|
||||
playerYaw = player->yaw;
|
||||
playerParts->yaw = playerYaw;
|
||||
playerYaw = playerParts->yaw = player->yaw;
|
||||
|
||||
player->disableEffect->data.disableX->pos.x = playerPosX + ((player->actorBlueprint->statusIconOffset.x + player->unk_194) * player->scalingFactor);
|
||||
player->disableEffect->data.disableX->pos.y = playerPosY + ((player->actorBlueprint->statusIconOffset.y + player->unk_195) * player->scalingFactor);
|
||||
player->disableEffect->data.disableX->pos.x = playerPosX +
|
||||
((player->actorBlueprint->statusIconOffset.x + player->unk_194) * player->scalingFactor);
|
||||
player->disableEffect->data.disableX->pos.y = playerPosY +
|
||||
((player->actorBlueprint->statusIconOffset.y + player->unk_195) * player->scalingFactor);
|
||||
player->disableEffect->data.disableX->pos.z = playerPosZ;
|
||||
|
||||
if (!(gBattleStatus.flags1 & 4) && (player->flags & 0x08000000)) {
|
||||
if (!(gBattleStatus.flags1 & BS_FLAGS1_4) && (player->flags & ACTOR_FLAG_8000000)) {
|
||||
if (player->disableDismissTimer != 0) {
|
||||
player->disableDismissTimer--;
|
||||
player->disableEffect->data.disableX->pos.y = -1000.0f;
|
||||
@ -1375,8 +1380,11 @@ void appendGfx_player_actor(void* arg0) {
|
||||
player->disableEffect->data.disableX->pos.y = -1000.0f;
|
||||
player->disableDismissTimer = 10;
|
||||
}
|
||||
|
||||
if (battleStatus->waterBlockTurnsLeft != 0) {
|
||||
if ((gBattleStatus.flags1 & 8) || (!(gBattleStatus.flags1 & 4) && (player->flags & 0x08000000))) {
|
||||
if ((gBattleStatus.flags1 & BS_FLAGS1_8) ||
|
||||
(!(gBattleStatus.flags1 & BS_FLAGS1_4) && (player->flags & ACTOR_FLAG_8000000)))
|
||||
{
|
||||
effect = battleStatus->waterBlockEffect;
|
||||
effect->data.waterBlock->pos.x = playerPosX;
|
||||
effect->data.waterBlock->pos.y = playerPosY;
|
||||
@ -1389,7 +1397,9 @@ void appendGfx_player_actor(void* arg0) {
|
||||
}
|
||||
}
|
||||
if (battleStatus->cloudNineTurnsLeft != 0) {
|
||||
if ((gBattleStatus.flags1 & 8) || (!(gBattleStatus.flags1 & 4) && (player->flags & 0x08000000))) {
|
||||
if ((gBattleStatus.flags1 & BS_FLAGS1_8) ||
|
||||
(!(gBattleStatus.flags1 & BS_FLAGS1_4) && (player->flags & ACTOR_FLAG_8000000)))
|
||||
{
|
||||
effect = battleStatus->cloudNineEffect;
|
||||
effect->data.endingDecals->pos.x = playerPosX;
|
||||
effect->data.endingDecals->pos.y = playerPosY;
|
||||
@ -1402,11 +1412,13 @@ void appendGfx_player_actor(void* arg0) {
|
||||
effect->data.endingDecals->pos.z = playerPosZ;
|
||||
}
|
||||
}
|
||||
if (player->debuff == 7) {
|
||||
if (player->debuff == STATUS_FROZEN) {
|
||||
effect = player->icePillarEffect;
|
||||
if (player->icePillarEffect != NULL) {
|
||||
if ((gBattleStatus.flags1 & 8) || (!(gBattleStatus.flags1 & 4) && (player->flags & 0x08000000))) {
|
||||
effect->data.icePillar->pos.x = (f32) (playerPosX - 8.0f);
|
||||
if ((gBattleStatus.flags1 & BS_FLAGS1_8) ||
|
||||
(!(gBattleStatus.flags1 & BS_FLAGS1_4) && (player->flags & ACTOR_FLAG_8000000)))
|
||||
{
|
||||
effect->data.icePillar->pos.x = playerPosX - 8.0f;
|
||||
effect->data.icePillar->pos.y = playerPosY;
|
||||
effect->data.icePillar->pos.z = playerPosZ;
|
||||
effect->data.icePillar->unk_20 = player->size.y / 24.0;
|
||||
@ -1415,6 +1427,10 @@ void appendGfx_player_actor(void* arg0) {
|
||||
effect->data.icePillar->pos.y = -1000.0f;
|
||||
effect->data.icePillar->pos.z = 0.0f;
|
||||
}
|
||||
} else {
|
||||
effect->data.icePillar->pos.x = 0.0f;
|
||||
effect->data.icePillar->pos.y = -1000.0f;
|
||||
effect->data.icePillar->pos.z = 0.0f;
|
||||
}
|
||||
} else {
|
||||
effect = player->icePillarEffect;
|
||||
@ -1423,20 +1439,22 @@ void appendGfx_player_actor(void* arg0) {
|
||||
player->icePillarEffect = NULL;
|
||||
}
|
||||
}
|
||||
if (!(gBattleStatus.flags2 & 0x10000) && !(gBattleStatus.flags1 & 4) && (player->flags & 0x08000000)) {
|
||||
|
||||
if (!(gBattleStatus.flags2 & BS_FLAGS2_10000) && !(gBattleStatus.flags1 & BS_FLAGS1_4) && (player->flags & ACTOR_FLAG_8000000)) {
|
||||
battleStatus->buffEffect->data.partnerBuff->unk_02 = 1;
|
||||
} else {
|
||||
battleStatus->buffEffect->data.partnerBuff->unk_02 = 0;
|
||||
}
|
||||
|
||||
do {
|
||||
if (player->debuff == 0xA) {
|
||||
player->scalingFactor += ((0.4 - player->scalingFactor) / 6.0);
|
||||
if (player->debuff == STATUS_SHRINK) {
|
||||
player->scalingFactor += (0.4 - player->scalingFactor) / 6.0;
|
||||
} else {
|
||||
player->scalingFactor += ((1.0 - player->scalingFactor) / 6.0);
|
||||
player->scalingFactor += (1.0 - player->scalingFactor) / 6.0;
|
||||
}
|
||||
} while (0); // required to match
|
||||
|
||||
if (player->flags & 0x08000000) {
|
||||
if (player->flags & ACTOR_FLAG_8000000) {
|
||||
if (battleStatus->hammerCharge > 0) {
|
||||
create_status_icon_boost_hammer(player->hudElementDataIndex);
|
||||
remove_status_icon_boost_jump(player->hudElementDataIndex);
|
||||
@ -1454,15 +1472,17 @@ void appendGfx_player_actor(void* arg0) {
|
||||
enable_status_icon_boost_hammer(player->hudElementDataIndex);
|
||||
}
|
||||
|
||||
if ((player->flags & 0x08000000) && !(gBattleStatus.flags2 & 0x40)) {
|
||||
if ((player->flags & ACTOR_FLAG_8000000) && !(gBattleStatus.flags2 & BS_FLAGS2_40)) {
|
||||
if (playerData->curHP > 1) {
|
||||
remove_status_icon_peril(player->hudElementDataIndex);
|
||||
if (playerData->curHP > 5) {
|
||||
remove_status_icon_danger(player->hudElementDataIndex);
|
||||
} else {
|
||||
create_status_icon_danger(player->hudElementDataIndex);
|
||||
remove_status_icon_peril(player->hudElementDataIndex);
|
||||
}
|
||||
do {
|
||||
if (playerData->curHP <= 5) {
|
||||
create_status_icon_danger(player->hudElementDataIndex);
|
||||
remove_status_icon_peril(player->hudElementDataIndex);
|
||||
} else {
|
||||
remove_status_icon_danger(player->hudElementDataIndex);
|
||||
}
|
||||
} while (0); // required to match
|
||||
} else {
|
||||
create_status_icon_peril(player->hudElementDataIndex);
|
||||
remove_status_icon_danger(player->hudElementDataIndex);
|
||||
@ -1473,9 +1493,16 @@ void appendGfx_player_actor(void* arg0) {
|
||||
}
|
||||
|
||||
if (player->transparentStatus == 0xE) {
|
||||
playerParts->flags |= 0x100;
|
||||
playerParts->flags |= ACTOR_PART_FLAG_100;
|
||||
|
||||
if (FALSE) { // TODO required to match - also whyyyyyy compiler, whyyyyy
|
||||
back:
|
||||
playerParts->currentAnimation = func_80265D44(8);
|
||||
create_status_debuff(player->hudElementDataIndex, 8);
|
||||
goto end;
|
||||
}
|
||||
} else {
|
||||
playerParts->flags &= ~0x100;
|
||||
playerParts->flags &= ~ACTOR_PART_FLAG_100;
|
||||
}
|
||||
|
||||
do {
|
||||
@ -1486,10 +1513,20 @@ void appendGfx_player_actor(void* arg0) {
|
||||
lastAnim = playerParts->currentAnimation;
|
||||
} while (0); // required to match
|
||||
|
||||
if (((((gBattleStatus.flags2 & 0xA) == 2) && (partner != NULL)) || (gBattleStatus.outtaSightActive > 0)) && !(player->flags & 0x20000000) && ((partner == NULL) || !(partner->flags & 0x200000))) {
|
||||
if (!(gBattleStatus.flags2 & 0x100000)) {
|
||||
if ((player->debuff != 3) && (player->debuff != 5) && (player->debuff != 7) && (player->debuff != 8)) {
|
||||
if ((player->transparentStatus != 0xE) && (player->stoneStatus != 0xC) && ((gBattleStatus.outtaSightActive > 0) || (gBattleStatus.flags2 & 2))) {
|
||||
if (((((gBattleStatus.flags2 & (BS_FLAGS2_8 | BS_FLAGS2_2)) == BS_FLAGS2_2) && (partner != NULL)) || (battleStatus->outtaSightActive > 0)) &&
|
||||
!(player->flags & ACTOR_FLAG_20000000) &&
|
||||
((partner == NULL) || !(partner->flags & ACTOR_FLAG_NO_ATTACK)))
|
||||
{
|
||||
if (!(gBattleStatus.flags2 & BS_FLAGS2_100000)) {
|
||||
if ((player->debuff != STATUS_FEAR) &&
|
||||
(player->debuff != STATUS_PARALYZE) &&
|
||||
(player->debuff != STATUS_FROZEN) &&
|
||||
(player->debuff != STATUS_STOP))
|
||||
{
|
||||
if ((player->transparentStatus != STATUS_TRANSPARENT) &&
|
||||
(player->stoneStatus != STATUS_STONE) &&
|
||||
((battleStatus->outtaSightActive > 0) || (gBattleStatus.flags2 & BS_FLAGS2_2)))
|
||||
{
|
||||
if (is_ability_active(0x15)) {
|
||||
playerParts->currentAnimation = func_80265D44(0x13);
|
||||
} else if (player->debuff == 6) {
|
||||
@ -1499,12 +1536,12 @@ void appendGfx_player_actor(void* arg0) {
|
||||
} else {
|
||||
playerParts->currentAnimation = func_80265D44(0x12);
|
||||
}
|
||||
spr_update_player_sprite(0, (s32) playerParts->currentAnimation, playerParts->animationRate);
|
||||
spr_update_player_sprite(0, playerParts->currentAnimation, playerParts->animationRate);
|
||||
cond1 = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (player->debuff != 9) {
|
||||
if (player->debuff != STATUS_POISON) {
|
||||
func_80266DAC(player, 0xC);
|
||||
} else {
|
||||
func_80266DAC(player, 0xD);
|
||||
@ -1515,79 +1552,80 @@ void appendGfx_player_actor(void* arg0) {
|
||||
cond3 = TRUE;
|
||||
}
|
||||
}
|
||||
if (player->stoneStatus == 0xC) {
|
||||
|
||||
if (player->stoneStatus == STATUS_STONE) {
|
||||
playerParts->currentAnimation = func_80265D44(0xC);
|
||||
spr_update_player_sprite(0, playerParts->currentAnimation, playerParts->animationRate);
|
||||
cond1 = TRUE;
|
||||
|
||||
if (cond2 == 0) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(player, 0);
|
||||
}
|
||||
func_80266EE8(player, 0);
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
enable_status_debuff(player->hudElementDataIndex);
|
||||
cond3 = 1;
|
||||
cond3 = TRUE;
|
||||
enable_status_2(player->hudElementDataIndex);
|
||||
cond4 = 1;
|
||||
cond4 = TRUE;
|
||||
|
||||
enable_status_transparent(player->hudElementDataIndex);
|
||||
enable_status_chill_out(player->hudElementDataIndex);
|
||||
}
|
||||
|
||||
if ((player->flags & 0x04000000) && (cond1 == 0)) {
|
||||
if ((player->flags & ACTOR_FLAG_4000000) && !cond1) {
|
||||
s32 temp = playerParts->currentAnimation;
|
||||
if (temp == func_80265D44(0xC)) {
|
||||
playerParts->currentAnimation = func_80265D44(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (is_ability_active(0x15) != 0) {
|
||||
if (cond2 == 0) {
|
||||
if (is_ability_active(ABILITY_BERSERKER)) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(player, 8);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if (player->debuff == 9) {
|
||||
if (cond2 == 0) {
|
||||
if (player->debuff == STATUS_POISON) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(player, 6);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if (player->debuff == 5) {
|
||||
if (cond2 == 0) {
|
||||
if (player->debuff == STATUS_PARALYZE) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(player, 7);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if (player->staticStatus == 0xB) {
|
||||
if (cond2 == 0) {
|
||||
if (player->staticStatus == STATUS_STATIC) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(player, 4);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if (battleStatus->turboChargeTurnsLeft != 0) {
|
||||
if (cond3 == 0) {
|
||||
if (!cond3) {
|
||||
func_80266EE8(player, 0xB);
|
||||
}
|
||||
cond3 = 1;
|
||||
cond3 = TRUE;
|
||||
}
|
||||
if (is_ability_active(0x13) != 0) {
|
||||
if (cond2 == 0) {
|
||||
if (is_ability_active(ABILITY_ZAP_TAP)) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(player, 4);
|
||||
}
|
||||
cond2 = 1;
|
||||
cond2 = TRUE;
|
||||
}
|
||||
if (cond2 == 0) {
|
||||
if (!cond2) {
|
||||
func_80266DAC(player, 0);
|
||||
}
|
||||
if (cond3 == 0) {
|
||||
if (!cond3) {
|
||||
func_80266EE8(player, 0);
|
||||
}
|
||||
if (player->flags & 0x04000000) {
|
||||
if (player->flags & ACTOR_FLAG_4000000) {
|
||||
if (battleStatus->hustleTurns != 0) {
|
||||
playerParts->currentAnimation = func_80265D44(0x19);
|
||||
cond1 = 1;
|
||||
} else if (cond1 == 0) {
|
||||
cond1 = TRUE;
|
||||
} else if (!cond1) {
|
||||
s32 temp = func_80265D44(1);
|
||||
do {
|
||||
if (temp == func_80265D44(0x19)) {
|
||||
@ -1597,87 +1635,88 @@ void appendGfx_player_actor(void* arg0) {
|
||||
}
|
||||
|
||||
do {
|
||||
if (player->debuff == 7) {
|
||||
if (player->debuff == STATUS_FROZEN) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(7);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
} else if (player->debuff != STATUS_SHRINK) {
|
||||
if (player->debuff == 9) {
|
||||
if (player->debuff == STATUS_POISON) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(9);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
} else if (player->debuff == 4) {
|
||||
} else if (player->debuff == STATUS_DIZZY) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(4);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
} else if (player->debuff == 6) {
|
||||
} else if (player->debuff == STATUS_SLEEP) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(6);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
} else if (player->debuff == 5) {
|
||||
} else if (player->debuff == STATUS_PARALYZE) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(5);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
} else {
|
||||
if (player_team_is_ability_active(player, 0x15) != 0) {
|
||||
if (cond1 == 0) {
|
||||
if (player_team_is_ability_active(player, ABILITY_BERSERKER)) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(0x10);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (is_ability_active(0x13) != 0) {
|
||||
if (cond1 == 0) {
|
||||
if (is_ability_active(ABILITY_ZAP_TAP)) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(0xB);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
player->staticStatus = 0xB;
|
||||
player->staticDuration = 0x7F;
|
||||
} else if ((player->staticStatus == (s8) 0xB) && (cond1 == 0)) {
|
||||
player->staticStatus = STATUS_STATIC;
|
||||
player->staticDuration = 127;
|
||||
} else if ((player->staticStatus == STATUS_STATIC) && !cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(0xB);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
if ((player->transparentStatus == 0xE) || (playerParts->flags & 0x100)) {
|
||||
if (cond1 == 0) {
|
||||
if ((player->transparentStatus == STATUS_TRANSPARENT) || (playerParts->flags & ACTOR_PART_FLAG_100)) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(0xE);
|
||||
cond1 = 1;
|
||||
cond1 = TRUE;
|
||||
}
|
||||
create_status_transparent((s32) player->hudElementDataIndex, 0xE);
|
||||
create_status_transparent(player->hudElementDataIndex, 0xE);
|
||||
}
|
||||
if (cond1 == 0) {
|
||||
if (!cond1) {
|
||||
playerParts->currentAnimation = func_80265D44(1);
|
||||
}
|
||||
} while(0); // needed to match
|
||||
}
|
||||
if (!(gBattleStatus.flags1 & 4) && (player->flags & 0x08000000)) {
|
||||
if (cond4 == 0) {
|
||||
|
||||
if (!(gBattleStatus.flags1 & BS_FLAGS1_4) && (player->flags & ACTOR_FLAG_8000000)) {
|
||||
if (!cond4) {
|
||||
do {
|
||||
if (player->debuff == 0x9) {
|
||||
if (player->debuff == STATUS_POISON) {
|
||||
create_status_debuff(player->hudElementDataIndex, player->debuff);
|
||||
} else if (player->debuff == 6) {
|
||||
} else if (player->debuff == STATUS_SLEEP) {
|
||||
create_status_debuff(player->hudElementDataIndex, player->debuff);
|
||||
} else if (player->debuff == 5) {
|
||||
} else if (player->debuff == STATUS_PARALYZE) {
|
||||
create_status_debuff(player->hudElementDataIndex, player->debuff);
|
||||
} else if (player->debuff == 4) {
|
||||
} else if (player->debuff == STATUS_DIZZY) {
|
||||
create_status_debuff(player->hudElementDataIndex, player->debuff);
|
||||
} else if (player->debuff == 10) {
|
||||
} else if (player->debuff == STATUS_SHRINK) {
|
||||
create_status_debuff(player->hudElementDataIndex, player->debuff);
|
||||
} else if (player->debuff == 7) {
|
||||
} else if (player->debuff == STATUS_FROZEN) {
|
||||
create_status_debuff(player->hudElementDataIndex, player->debuff);
|
||||
}
|
||||
} while (0); // required to match
|
||||
if ((cond4 == 0) && ((is_ability_active(0x13) != 0) || (player->staticStatus == 0xB))) {
|
||||
create_status_static((s32) player->hudElementDataIndex, 0xB);
|
||||
if (!cond4 && (is_ability_active(ABILITY_ZAP_TAP) || (player->staticStatus == STATUS_STATIC))) {
|
||||
create_status_static(player->hudElementDataIndex, 0xB);
|
||||
}
|
||||
}
|
||||
if ((player->transparentStatus == 0xE) || (playerParts->flags & 0x100)) {
|
||||
create_status_transparent((s32) player->hudElementDataIndex, 0xE);
|
||||
if ((player->transparentStatus == STATUS_TRANSPARENT) || (playerParts->flags & ACTOR_PART_FLAG_100)) {
|
||||
create_status_transparent(player->hudElementDataIndex, 0xE);
|
||||
}
|
||||
} else {
|
||||
enable_status_debuff(player->hudElementDataIndex);
|
||||
@ -1686,18 +1725,18 @@ void appendGfx_player_actor(void* arg0) {
|
||||
enable_status_chill_out(player->hudElementDataIndex);
|
||||
}
|
||||
|
||||
if (player->debuff != 8) {
|
||||
if (cond1 == 0) {
|
||||
if (player->debuff != STATUS_STOP) {
|
||||
if (!cond1) {
|
||||
s32 temp = playerParts->currentAnimation;
|
||||
if (temp == func_80265D44(8)) {
|
||||
playerParts->currentAnimation = func_80265D44(1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
playerParts->currentAnimation = func_80265D44(8);
|
||||
create_status_debuff(player->hudElementDataIndex, 8);
|
||||
goto back;
|
||||
}
|
||||
|
||||
|
||||
end:
|
||||
set_status_icons_properties(player->hudElementDataIndex,
|
||||
playerPosX, playerPosY, playerPosZ,
|
||||
player->actorBlueprint->statusIconOffset.x * player->scalingFactor,
|
||||
@ -1708,13 +1747,13 @@ void appendGfx_player_actor(void* arg0) {
|
||||
player->size.y * player->scalingFactor,
|
||||
player->size.x * player->scalingFactor);
|
||||
|
||||
dx = playerPosX + playerParts->unkOffset[0];
|
||||
dy = playerPosY + playerParts->unkOffset[1];
|
||||
dz = playerPosZ;
|
||||
playerParts->currentPos.x = dx;
|
||||
playerParts->currentPos.y = dy;
|
||||
playerParts->currentPos.z = dz;
|
||||
guTranslateF(mtxTranslate, dx, dy, dz);
|
||||
playerPosX += playerParts->unkOffset[0];
|
||||
playerPosY += playerParts->unkOffset[1];
|
||||
|
||||
playerParts->currentPos.x = playerPosX;
|
||||
playerParts->currentPos.y = playerPosY;
|
||||
playerParts->currentPos.z = playerPosZ;
|
||||
guTranslateF(mtxTranslate, playerPosX, playerPosY, playerPosZ);
|
||||
|
||||
guTranslateF(mtxPivotOn,
|
||||
-player->rotationPivotOffset.x * player->scalingFactor,
|
||||
@ -1749,9 +1788,6 @@ void appendGfx_player_actor(void* arg0) {
|
||||
func_802591EC(0, playerParts, clamp_angle(playerYaw + 180.0f), mtxTransform, 0);
|
||||
_add_part_decoration(playerParts);
|
||||
}
|
||||
#else
|
||||
INCLUDE_ASM(void, "182B30", appendGfx_player_actor);
|
||||
#endif
|
||||
|
||||
void func_80258E14(void* arg0) {
|
||||
Matrix4f mtxRotX, mtxRotY, mtxRotZ, mtxRotation, mtxScale;
|
||||
@ -1924,7 +1960,7 @@ void func_8025950C(ActorPart* part, s32 yaw, Matrix4f mtx) {
|
||||
if (decor->unk_768 != 0) {
|
||||
decor->spritePalettes = spr_get_npc_palettes(part->currentAnimation >> 0x10);
|
||||
decor->numSpritePalettes = 0;
|
||||
while ((s32) decor->spritePalettes[decor->numSpritePalettes] != -1) {
|
||||
while (decor->spritePalettes[decor->numSpritePalettes] != (PAL_PTR) -1) {
|
||||
decor->numSpritePalettes++;
|
||||
}
|
||||
|
||||
@ -1994,7 +2030,7 @@ void func_802597B0(ActorPart* part, s32 yaw, Matrix4f mtx) {
|
||||
decor->spritePalettes = spr_get_player_palettes(part->currentAnimation >> 16);
|
||||
decor->numSpritePalettes = 0;
|
||||
|
||||
while ((s32) decor->spritePalettes[decor->numSpritePalettes] != -1) {
|
||||
while (decor->spritePalettes[decor->numSpritePalettes] != (PAL_PTR) -1) {
|
||||
decor->numSpritePalettes++;
|
||||
}
|
||||
|
||||
@ -3002,7 +3038,6 @@ void func_8025BAA0(s32 arg0, ActorPart* part, s32 yaw, s32 arg3, Matrix4f mtx, s
|
||||
}
|
||||
|
||||
void func_8025C120(s32 arg0, ActorPart* part, s32 yaw, Matrix4f mtx, s32 arg4) {
|
||||
|
||||
DecorationTable* decor = part->decorationTable;
|
||||
PAL_PTR color1;
|
||||
PAL_PTR color2;
|
||||
@ -3016,13 +3051,13 @@ void func_8025C120(s32 arg0, ActorPart* part, s32 yaw, Matrix4f mtx, s32 arg4) {
|
||||
if (arg0 == 0) {
|
||||
decor->spritePalettes = spr_get_player_palettes(part->currentAnimation >> 16);
|
||||
decor->numSpritePalettes = 0;
|
||||
while ((s32) decor->spritePalettes[decor->numSpritePalettes] != -1) {
|
||||
while (decor->spritePalettes[decor->numSpritePalettes] != (PAL_PTR) -1) {
|
||||
decor->numSpritePalettes++;
|
||||
}
|
||||
} else {
|
||||
decor->spritePalettes = spr_get_npc_palettes(part->currentAnimation >> 16);
|
||||
decor->numSpritePalettes = 0;
|
||||
while ((s32) decor->spritePalettes[decor->numSpritePalettes] != -1) {
|
||||
while (decor->spritePalettes[decor->numSpritePalettes] != (PAL_PTR) -1) {
|
||||
decor->numSpritePalettes++;
|
||||
}
|
||||
decor->spriteColorVariations = spr_get_npc_color_variations(part->currentAnimation >> 16);
|
||||
|
@ -25,14 +25,12 @@ extern s16 D_80073E08;
|
||||
extern s16 D_80073E0A;
|
||||
extern s32 D_80073E10[];
|
||||
extern u16* D_8009A680;
|
||||
extern OSViMode _osViModeNtscLan1;
|
||||
extern OSViMode _osViModeMPalLan1;
|
||||
|
||||
void boot_main(void) {
|
||||
#ifdef VERSION_JP
|
||||
if (osTvType == OS_TV_NTSC) {
|
||||
nuGfxDisplayOff();
|
||||
osViSetMode(&_osViModeNtscLan1);
|
||||
osViSetMode(&osViModeNtscLan1);
|
||||
osViSetSpecialFeatures(OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF | OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON);
|
||||
nuGfxDisplayOff();
|
||||
} else {
|
||||
@ -40,10 +38,10 @@ void boot_main(void) {
|
||||
}
|
||||
#else // VERSION_JP
|
||||
if (osTvType == OS_TV_NTSC) {
|
||||
osViSetMode(&_osViModeNtscLan1);
|
||||
osViSetMode(&osViModeNtscLan1);
|
||||
osViSetSpecialFeatures(OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF | OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON);
|
||||
} else if (osTvType == OS_TV_MPAL) {
|
||||
osViSetMode(&_osViModeMPalLan1);
|
||||
osViSetMode(&osViModeMpalLan1);
|
||||
osViSetSpecialFeatures(OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF | OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON);
|
||||
} else {
|
||||
PANIC();
|
||||
|
@ -1,9 +1,9 @@
|
||||
#include "PR/controller.h"
|
||||
#include "macros.h"
|
||||
|
||||
extern u8 __osPfsInodeCacheBank;
|
||||
extern int __osPfsInodeCacheChannel;
|
||||
extern __OSInode __osPfsInodeCache;
|
||||
s32 __osPfsInodeCacheChannel = -1;
|
||||
u8 __osPfsInodeCacheBank = 250;
|
||||
|
||||
u16 __osSumcalc(u8 *ptr, int length) {
|
||||
int i;
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include "PR/osint.h"
|
||||
#include "PR/siint.h"
|
||||
|
||||
extern int __osPfsLastChannel;
|
||||
s32 __osPfsLastChannel = -1;
|
||||
|
||||
s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer) {
|
||||
s32 ret;
|
||||
|
@ -3,8 +3,6 @@
|
||||
f32 sin_rad(f32 x);
|
||||
f32 cos_rad(f32 x);
|
||||
|
||||
extern float D_800958C0;
|
||||
|
||||
void guRotateF(float mf[4][4], float a, float x, float y, float z) {
|
||||
static float dtor = 3.1415926 / 180.0;
|
||||
float sine;
|
||||
@ -13,7 +11,7 @@ void guRotateF(float mf[4][4], float a, float x, float y, float z) {
|
||||
float xs, ys, zs;
|
||||
|
||||
guNormalize(&x, &y, &z);
|
||||
a *= D_800958C0; // change to dtor later?
|
||||
a *= dtor;
|
||||
sine = sin_rad(a);
|
||||
cosine = cos_rad(a);
|
||||
t = 1.0f - cosine;
|
||||
|
@ -1,9 +1,108 @@
|
||||
#include "ultra64.h"
|
||||
#include "include_asm.h"
|
||||
#include "PR/os_internal.h"
|
||||
#include "PR/rcp.h"
|
||||
|
||||
INCLUDE_ASM(s32, "os/initialize", __createSpeedParam)
|
||||
typedef struct
|
||||
{
|
||||
/* 0x0 */ unsigned int inst1;
|
||||
/* 0x4 */ unsigned int inst2;
|
||||
/* 0x8 */ unsigned int inst3;
|
||||
/* 0xC */ unsigned int inst4;
|
||||
} __osExceptionVector;
|
||||
extern __osExceptionVector __osExceptionPreamble;
|
||||
|
||||
INCLUDE_ASM(void, "os/initialize", __osInitialize_common, void);
|
||||
extern OSPiHandle __Dom1SpeedParam;
|
||||
extern OSPiHandle __Dom2SpeedParam;
|
||||
|
||||
OSTime osClockRate = OS_CLOCK_RATE;
|
||||
s32 osViClock = VI_NTSC_CLOCK;
|
||||
u32 __osShutdown = 0;
|
||||
u32 __OSGlobalIntMask = OS_IM_ALL;
|
||||
#ifdef _FINALROM
|
||||
extern u32 __osFinalrom;
|
||||
#else
|
||||
void* __printfunc = NULL;
|
||||
u32 __kmc_pt_mode;
|
||||
#endif
|
||||
|
||||
s32 paddingmeowplol[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
void __createSpeedParam(void) {
|
||||
__Dom1SpeedParam.type = DEVICE_TYPE_INIT;
|
||||
__Dom1SpeedParam.latency = IO_READ(PI_BSD_DOM1_LAT_REG);
|
||||
__Dom1SpeedParam.pulse = IO_READ(PI_BSD_DOM1_PWD_REG);
|
||||
__Dom1SpeedParam.pageSize = IO_READ(PI_BSD_DOM1_PGS_REG);
|
||||
__Dom1SpeedParam.relDuration = IO_READ(PI_BSD_DOM1_RLS_REG);
|
||||
|
||||
__Dom2SpeedParam.type = DEVICE_TYPE_INIT;
|
||||
__Dom2SpeedParam.latency = IO_READ(PI_BSD_DOM2_LAT_REG);
|
||||
__Dom2SpeedParam.pulse = IO_READ(PI_BSD_DOM2_PWD_REG);
|
||||
__Dom2SpeedParam.pageSize = IO_READ(PI_BSD_DOM2_PGS_REG);
|
||||
__Dom2SpeedParam.relDuration = IO_READ(PI_BSD_DOM2_RLS_REG);
|
||||
}
|
||||
|
||||
void __osInitialize_common() {
|
||||
u32 pifdata;
|
||||
|
||||
#ifdef _FINALROM
|
||||
__osFinalrom = TRUE;
|
||||
#endif
|
||||
|
||||
__osSetSR(__osGetSR() | SR_CU1); //enable fpu
|
||||
__osSetFpcCsr(FPCSR_FS | FPCSR_EV); //flush denorm to zero, enable invalid operation
|
||||
__osSetWatchLo(0x4900000);
|
||||
|
||||
while (__osSiRawReadIo(PIF_RAM_END - 3, &pifdata)) { //last byte of joychannel ram
|
||||
;
|
||||
}
|
||||
while (__osSiRawWriteIo(PIF_RAM_END - 3, pifdata | 8)) {
|
||||
; //todo: magic contant
|
||||
}
|
||||
*(__osExceptionVector *)UT_VEC = __osExceptionPreamble;
|
||||
*(__osExceptionVector *)XUT_VEC = __osExceptionPreamble;
|
||||
*(__osExceptionVector *)ECC_VEC = __osExceptionPreamble;
|
||||
*(__osExceptionVector *)E_VEC = __osExceptionPreamble;
|
||||
osWritebackDCache((void *)UT_VEC, E_VEC - UT_VEC + sizeof(__osExceptionVector));
|
||||
osInvalICache((void *)UT_VEC, E_VEC - UT_VEC + sizeof(__osExceptionVector));
|
||||
__createSpeedParam();
|
||||
osUnmapTLBAll();
|
||||
osMapTLBRdb();
|
||||
osClockRate = osClockRate * 3 / 4;
|
||||
|
||||
if (osResetType == 0 ) { // cold reset
|
||||
bzero(osAppNMIBuffer, OS_APP_NMI_BUFSIZE);
|
||||
}
|
||||
|
||||
if (osTvType == OS_TV_PAL) {
|
||||
osViClock = VI_PAL_CLOCK;
|
||||
} else if (osTvType == OS_TV_MPAL) {
|
||||
osViClock = VI_MPAL_CLOCK;
|
||||
} else {
|
||||
osViClock = VI_NTSC_CLOCK;
|
||||
}
|
||||
|
||||
// Wait until there are no RCP interrupts
|
||||
if (__osGetCause() & CAUSE_IP5) {
|
||||
while (TRUE) {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
IO_WRITE(AI_CONTROL_REG, AI_CONTROL_DMA_ON);
|
||||
IO_WRITE(AI_DACRATE_REG, AI_MAX_DAC_RATE - 1);
|
||||
IO_WRITE(AI_BITRATE_REG, AI_MAX_BIT_RATE - 1);
|
||||
}
|
||||
|
||||
void __osInitialize_autodetect(void) {
|
||||
#ifndef _FINALROM
|
||||
if (__checkHardware_msp()) {
|
||||
__osInitialize_msp();
|
||||
} else if (__checkHardware_kmc()) {
|
||||
__osInitialize_kmc();
|
||||
} else if (__checkHardware_isv()) {
|
||||
__osInitialize_isv();
|
||||
} else {
|
||||
__osInitialize_emu();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -24,10 +24,9 @@ NUCallBackList nuContCallBack = {
|
||||
0,
|
||||
};
|
||||
|
||||
// BSS
|
||||
extern OSMesg nuContWaitMesgBuf;
|
||||
extern OSMesg nuContDataMutexBuf;
|
||||
extern OSMesgQueue nuContDataMutexQ;
|
||||
OSMesg nuContWaitMesgBuf;
|
||||
OSMesg nuContDataMutexBuf;
|
||||
OSMesgQueue nuContDataMutexQ;
|
||||
|
||||
u8 nuContMgrInit(void) {
|
||||
s32 i;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "ultra64.h"
|
||||
#include "xstdio.h"
|
||||
#include "libc/xstdio.h"
|
||||
|
||||
static char *proutSprintf(char *dst, const char *src, size_t count);
|
||||
|
||||
|
47
src/os/vi.c
47
src/os/vi.c
@ -1,4 +1,49 @@
|
||||
#include "ultra64.h"
|
||||
#include "include_asm.h"
|
||||
#include "macros.h"
|
||||
#include "PR/os_internal.h"
|
||||
#include "PR/R4300.h"
|
||||
#include "PR/rcp.h"
|
||||
#include "PR/viint.h"
|
||||
|
||||
INCLUDE_ASM(s32, "os/vi", __osViInit);
|
||||
static __OSViContext vi[2] ALIGNED(8) = {{0}, {0}};
|
||||
__OSViContext *__osViCurr = &vi[0];
|
||||
__OSViContext *__osViNext = &vi[1];
|
||||
|
||||
s32 meowp12345[] = {0, 0};
|
||||
|
||||
OSViMode osViModePalLan1 = {
|
||||
0x10,
|
||||
{ 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000 },
|
||||
{
|
||||
{ 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002 },
|
||||
{ 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002 }
|
||||
}
|
||||
};
|
||||
|
||||
void __osViInit(void) {
|
||||
bzero(vi, sizeof(vi));
|
||||
__osViCurr = &vi[0];
|
||||
__osViNext = &vi[1];
|
||||
__osViNext->retraceCount = 1;
|
||||
__osViCurr->retraceCount = 1;
|
||||
__osViNext->framep = (void*)K0BASE;
|
||||
__osViCurr->framep = (void*)K0BASE;
|
||||
|
||||
if (osTvType == OS_TV_TYPE_PAL) {
|
||||
__osViNext->modep = &osViModePalLan1;
|
||||
} else if (osTvType == OS_TV_TYPE_MPAL) {
|
||||
__osViNext->modep = &osViModeMpalLan1;
|
||||
} else {
|
||||
__osViNext->modep = &osViModeNtscLan1;
|
||||
}
|
||||
|
||||
__osViNext->state = VI_STATE_BLACK;
|
||||
__osViNext->control = __osViNext->modep->comRegs.ctrl;
|
||||
|
||||
while (IO_READ(VI_CURRENT_REG) > 10) { //wait for vsync?
|
||||
}
|
||||
|
||||
IO_WRITE(VI_CONTROL_REG, 0); //pixel size blank (no data, no sync)
|
||||
__osViSwapContext();
|
||||
}
|
||||
|
@ -1740,3 +1740,9 @@ OSViMode osViModeTable[56] = {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// TODO move into separate files and define properly
|
||||
|
||||
OSViMode osViModeNtscLan1 = { 0x02, { 0x0000311E, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000 }, { { 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002 }, { 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002 } } };
|
||||
|
||||
OSViMode osViModeMpalLan1 = { 0x1E, { 0x0000311E, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000 }, { { 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002 }, { 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002 } } };
|
||||
|
307
src/os/xldtob.c
307
src/os/xldtob.c
@ -1,8 +1,305 @@
|
||||
#include "ultra64.h"
|
||||
#include "include_asm.h"
|
||||
#include "gcc/stdlib.h"
|
||||
#include "gcc/string.h"
|
||||
#include "libc/xstdio.h"
|
||||
|
||||
INCLUDE_ASM(s32, "os/xldtob", _Ldtob);
|
||||
#define BUFF_LEN 0x20
|
||||
|
||||
INCLUDE_ASM(s32, "os/xldtob", _Ldunscale);
|
||||
static s16 _Ldunscale(s16* pex, _Pft* px);
|
||||
static void _Genld(_Pft* px, char code, u8* p, s16 nsig, s16 xexp);
|
||||
|
||||
INCLUDE_ASM(s32, "os/xldtob", _Genld);
|
||||
static const double pows[] = {10e0L, 10e1L, 10e3L, 10e7L, 10e15L, 10e31L, 10e63L, 10e127L, 10e255L};
|
||||
|
||||
// float properties
|
||||
#define _D0 0
|
||||
#define _DBIAS 0x3ff
|
||||
#define _DLONG 1
|
||||
#define _DOFF 4
|
||||
#define _FBIAS 0x7e
|
||||
#define _FOFF 7
|
||||
#define _FRND 1
|
||||
#define _LBIAS 0x3ffe
|
||||
#define _LOFF 15
|
||||
// integer properties
|
||||
#define _C2 1
|
||||
#define _CSIGN 1
|
||||
#define _ILONG 0
|
||||
#define _MBMAX 8
|
||||
#define NAN 2
|
||||
#define INF 1
|
||||
#define FINITE -1
|
||||
#define _DFRAC ((1 << _DOFF) - 1)
|
||||
#define _DMASK (0x7fff & ~_DFRAC)
|
||||
#define _DMAX ((1 << (15 - _DOFF)) - 1)
|
||||
#define _DNAN (0x8000 | _DMAX << _DOFF | 1 << (_DOFF - 1))
|
||||
#define _DSIGN 0x8000
|
||||
#define _D1 1 // big-endian order
|
||||
#define _D2 2
|
||||
#define _D3 3
|
||||
|
||||
#define ALIGN(s, align) (((u32)(s) + ((align)-1)) & ~((align)-1))
|
||||
|
||||
void _Ldtob(_Pft* px, char code) {
|
||||
char buff[BUFF_LEN];
|
||||
char *p;
|
||||
f64 ldval;
|
||||
s16 err;
|
||||
s16 nsig;
|
||||
s16 xexp;
|
||||
|
||||
// char unused[0x4];
|
||||
p = buff;
|
||||
ldval = px->v.ld;
|
||||
|
||||
if (px->prec < 0) {
|
||||
px->prec = 6;
|
||||
} else if (px->prec == 0 && (code == 'g' || code == 'G')) {
|
||||
px->prec = 1;
|
||||
}
|
||||
|
||||
err = _Ldunscale(&xexp, px);
|
||||
if (err > 0) {
|
||||
memcpy(px->s, err == 2 ? "NaN" : "Inf", px->n1 = 3);
|
||||
return;
|
||||
} else if (err == 0) {
|
||||
nsig = 0;
|
||||
xexp = 0;
|
||||
} else {
|
||||
int i;
|
||||
int n;
|
||||
|
||||
if (ldval < 0) {
|
||||
ldval = -ldval;
|
||||
}
|
||||
|
||||
// what
|
||||
if ((xexp = xexp * 30103 / 100000 - 4) < 0) {
|
||||
n = ALIGN(-xexp, 4), xexp = -n;
|
||||
|
||||
for (i = 0; n > 0; n >>= 1, i++) {
|
||||
if (n & 1) {
|
||||
ldval *= pows[i];
|
||||
}
|
||||
}
|
||||
} else if (xexp > 0) {
|
||||
f64 factor = 1;
|
||||
|
||||
xexp &= ~3;
|
||||
|
||||
for (n = xexp, i = 0; n > 0; n >>= 1, i++) {
|
||||
if (n & 1) {
|
||||
factor *= pows[i];
|
||||
}
|
||||
}
|
||||
|
||||
ldval /= factor;
|
||||
}
|
||||
{
|
||||
int gen = px->prec + ((code == 'f') ? 10 + xexp : 6);
|
||||
|
||||
if (gen > 0x13) {
|
||||
gen = 0x13;
|
||||
}
|
||||
|
||||
for (*p++ = '0'; gen > 0 && 0 < ldval; p += 8) {
|
||||
int j;
|
||||
int lo = ldval;
|
||||
|
||||
if ((gen -= 8) > 0) {
|
||||
ldval = (ldval - lo) * 1e8;
|
||||
}
|
||||
|
||||
for (p += 8, j = 8; lo > 0 && --j >= 0;) {
|
||||
ldiv_t qr = ldiv(lo, 10);
|
||||
*--p = qr.rem + '0', lo = qr.quot;
|
||||
}
|
||||
|
||||
while (--j >= 0) {
|
||||
*--p = '0';
|
||||
}
|
||||
}
|
||||
|
||||
gen = p - &buff[1];
|
||||
|
||||
for (p = &buff[1], xexp += 7; *p == '0'; p++) {
|
||||
--gen, --xexp;
|
||||
}
|
||||
|
||||
nsig = px->prec + ((code == 'f') ? xexp + 1 : ((code == 'e' || code == 'E') ? 1 : 0));
|
||||
|
||||
if (gen < nsig) {
|
||||
nsig = gen;
|
||||
}
|
||||
|
||||
if (nsig > 0) {
|
||||
char drop = nsig < gen && '5' <= p[nsig] ? '9' : '0';
|
||||
int n;
|
||||
|
||||
for (n = nsig; p[--n] == drop;) {
|
||||
--nsig;
|
||||
}
|
||||
|
||||
if (drop == '9') {
|
||||
++p[n];
|
||||
}
|
||||
|
||||
if (n < 0) {
|
||||
--p, ++nsig, ++xexp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_Genld(px, code, p, nsig, xexp);
|
||||
}
|
||||
|
||||
s16 _Ldunscale(s16* pex, _Pft* px) {
|
||||
u16* ps = (u16*) px;
|
||||
s16 xchar = (ps[_D0] & _DMASK) >> _DOFF;
|
||||
|
||||
|
||||
if (xchar == _DMAX) {
|
||||
*pex = 0;
|
||||
|
||||
return (ps[_D0] & _DFRAC) || ps[_D1] || ps[_D2] || ps[_D3] ? 2 : 1;
|
||||
} else if (xchar > 0) {
|
||||
ps[_D0] = (ps[_D0] & ~_DMASK) | 0x3FF0;
|
||||
*pex = xchar - 0x3FE;
|
||||
return -1;
|
||||
} else if (xchar < 0) {
|
||||
return 2;
|
||||
} else {
|
||||
*pex = 0;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void _Genld(_Pft* px, char code, u8* p, s16 nsig, s16 xexp) {
|
||||
const unsigned char point = '.';
|
||||
|
||||
if (nsig <= 0) {
|
||||
nsig = 1, p = "0"; // memes
|
||||
}
|
||||
|
||||
if (code == 'f' || (code == 'g' || code == 'G') && xexp >= -4 && xexp < px->prec) {
|
||||
xexp += 1;
|
||||
if (code != 'f') {
|
||||
if (((px->flags & 8) == 0) && nsig < px->prec) {
|
||||
px->prec = nsig;
|
||||
}
|
||||
|
||||
px->prec -= xexp;
|
||||
if (px->prec < 0) {
|
||||
px->prec = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (xexp <= 0) {
|
||||
px->s[px->n1++] = '0';
|
||||
|
||||
if (px->prec > 0 || (px->flags & 8)) {
|
||||
px->s[px->n1++] = point;
|
||||
}
|
||||
|
||||
if (px->prec < -xexp) {
|
||||
xexp = -px->prec;
|
||||
}
|
||||
|
||||
px->nz1 = -xexp;
|
||||
px->prec += xexp;
|
||||
|
||||
if (px->prec < nsig) {
|
||||
nsig = px->prec;
|
||||
}
|
||||
|
||||
memcpy(&px->s[px->n1], p, px->n2 = nsig); // , memes (this one is insane)
|
||||
px->nz2 = px->prec - nsig;
|
||||
} else if (nsig < xexp) {
|
||||
memcpy(&px->s[px->n1], p, nsig);
|
||||
px->n1 += nsig;
|
||||
px->nz1 = xexp - nsig;
|
||||
if (px->prec > 0 || (px->flags & 8)) {
|
||||
px->s[px->n1] = point;
|
||||
px->n2 += 1;
|
||||
}
|
||||
|
||||
px->nz2 = px->prec;
|
||||
} else {
|
||||
memcpy(&px->s[px->n1], p, xexp);
|
||||
px->n1 += xexp;
|
||||
nsig -= xexp;
|
||||
|
||||
if (px->prec > 0 || (px->flags & 8)) {
|
||||
px->s[px->n1++] = point;
|
||||
}
|
||||
|
||||
if (px->prec < nsig) {
|
||||
nsig = px->prec;
|
||||
}
|
||||
|
||||
memcpy(&px->s[px->n1], &p[xexp], nsig);
|
||||
px->n1 += nsig;
|
||||
px->nz1 = px->prec - nsig;
|
||||
}
|
||||
} else {
|
||||
if (code == 'g' || code == 'G') {
|
||||
if (nsig < px->prec) {
|
||||
px->prec = nsig;
|
||||
}
|
||||
|
||||
if (--px->prec < 0) {
|
||||
px->prec = 0;
|
||||
}
|
||||
|
||||
if (code == 'g') {
|
||||
code = 'e';
|
||||
} else {
|
||||
code = 'E';
|
||||
}
|
||||
}
|
||||
|
||||
px->s[px->n1++] = *p++;
|
||||
|
||||
if (px->prec > 0 || (px->flags & 8)) {
|
||||
px->s[px->n1++] = point;
|
||||
}
|
||||
|
||||
if (px->prec > 0) {
|
||||
if (px->prec < --nsig) {
|
||||
nsig = px->prec;
|
||||
}
|
||||
|
||||
memcpy(&px->s[px->n1], p, nsig);
|
||||
px->n1 += nsig;
|
||||
px->nz1 = px->prec - nsig;
|
||||
}
|
||||
|
||||
p = &px->s[px->n1];
|
||||
*p++ = code;
|
||||
|
||||
if (xexp >= 0) {
|
||||
*p++ = '+';
|
||||
} else {
|
||||
*p++ = '-';
|
||||
xexp = -xexp;
|
||||
}
|
||||
|
||||
if (xexp >= 100) {
|
||||
if (xexp >= 1000) {
|
||||
*p++ = (xexp / 1000) + '0', xexp %= 1000; // , memes
|
||||
}
|
||||
*p++ = (xexp / 100) + '0', xexp %= 100; // , memes
|
||||
}
|
||||
*p++ = (xexp / 10) + '0', xexp %= 10; // , memes
|
||||
|
||||
*p++ = xexp + '0';
|
||||
px->n2 = (size_t)p - ((size_t)px->s + px->n1);
|
||||
}
|
||||
|
||||
if ((px->flags & 0x14) == 0x10) {
|
||||
s32 n = px->n0 + px->n1 + px->nz1 + px->n2 + px->nz2;
|
||||
|
||||
if (n < px->width) {
|
||||
px->nz0 = px->width - n;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,59 @@
|
||||
#include "ultra64.h"
|
||||
#include "include_asm.h"
|
||||
#include "gcc/stdlib.h"
|
||||
#include "gcc/string.h"
|
||||
#include "libc/xstdio.h"
|
||||
|
||||
INCLUDE_ASM(s32, "os/xlitob", _Litob);
|
||||
#define BUFF_LEN 0x18
|
||||
|
||||
static char ldigs[] = "0123456789abcdef";
|
||||
static char udigs[] = "0123456789ABCDEF";
|
||||
|
||||
void _Litob(_Pft *args, char type) {
|
||||
char buff[BUFF_LEN];
|
||||
const char *digs;
|
||||
s32 base;
|
||||
s32 i;
|
||||
unsigned long long ullval;
|
||||
|
||||
if (type == 'X') {
|
||||
digs = udigs;
|
||||
} else {
|
||||
digs = ldigs;
|
||||
}
|
||||
|
||||
base = (type == 'o') ? 8 : ((type != 'x' && type != 'X') ? 10 : 16);
|
||||
i = BUFF_LEN;
|
||||
ullval = args->v.ll;
|
||||
|
||||
if ((type == 'd' || type == 'i') && args->v.ll < 0) {
|
||||
ullval = -ullval;
|
||||
}
|
||||
|
||||
if (ullval != 0 || args->prec != 0) {
|
||||
buff[--i] = digs[ullval % base];
|
||||
}
|
||||
|
||||
args->v.ll = ullval / base;
|
||||
|
||||
while (args->v.ll > 0 && i > 0) {
|
||||
lldiv_t qr = lldiv(args->v.ll, base);
|
||||
|
||||
args->v.ll = qr.quot;
|
||||
buff[--i] = digs[qr.rem];
|
||||
}
|
||||
|
||||
args->n1 = BUFF_LEN - i;
|
||||
|
||||
memcpy(args->s, buff + i, args->n1);
|
||||
|
||||
if (args->n1 < args->prec) {
|
||||
args->nz0 = args->prec - args->n1;
|
||||
}
|
||||
|
||||
if (args->prec < 0 && (args->flags & (FLAGS_ZERO | FLAGS_MINUS)) == FLAGS_ZERO) {
|
||||
i = args->width - args->n0 - args->nz0 - args->n1;
|
||||
|
||||
if (i > 0) {
|
||||
args->nz0 += i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "stdlib/stdarg.h"
|
||||
#include "xstdio.h"
|
||||
#include "libc/xstdio.h"
|
||||
#include "gcc/string.h"
|
||||
|
||||
#define isdigit(x) ((x >= '0' && x <= '9'))
|
||||
@ -31,13 +31,8 @@
|
||||
else \
|
||||
return x.nchar; \
|
||||
}
|
||||
|
||||
char spaces[] = " ";
|
||||
char zeroes[] = "00000000000000000000000000000000";
|
||||
|
||||
// INCLUDE_ASM(s32, "os/3FEA0", _Printf);
|
||||
|
||||
// INCLUDE_ASM(s32, "os/3FEA0", _Putfld);
|
||||
static char spaces[] = " ";
|
||||
static char zeroes[] = "00000000000000000000000000000000";
|
||||
|
||||
static void _Putfld(_Pft *pf, va_list *pap, char code, char *ac);
|
||||
|
||||
@ -49,7 +44,7 @@ int _Printf(outfun prout, char *arg, const char *fmt, va_list args) {
|
||||
static const char fchar[] = {' ', '+', '-', '#', '0', '\0'};
|
||||
static const int fbit[] = {FLAGS_SPACE, FLAGS_PLUS, FLAGS_MINUS, FLAGS_HASH, FLAGS_ZERO, 0};
|
||||
char ac[32];
|
||||
|
||||
|
||||
x.nchar = 0;
|
||||
|
||||
for (;;) {
|
||||
@ -58,15 +53,15 @@ int _Printf(outfun prout, char *arg, const char *fmt, va_list args) {
|
||||
for (c = *s; c != 0 && c != '%';) {
|
||||
c = *++s;
|
||||
}
|
||||
|
||||
|
||||
PUT(fmt, s - fmt);
|
||||
|
||||
|
||||
if (c == 0) {
|
||||
return x.nchar;
|
||||
}
|
||||
|
||||
|
||||
fmt = ++s;
|
||||
|
||||
|
||||
for (x.flags = 0; (t = strchr(fchar, *s)) != NULL; s++) {
|
||||
x.flags |= fbit[t - fchar];
|
||||
}
|
||||
@ -93,7 +88,7 @@ int _Printf(outfun prout, char *arg, const char *fmt, va_list args) {
|
||||
}
|
||||
|
||||
x.qual = strchr("hlL", *s) ? *s++ : '\0';
|
||||
|
||||
|
||||
if (x.qual == 'l' && *s == 'l') {
|
||||
x.qual = 'L';
|
||||
++s;
|
||||
@ -101,22 +96,22 @@ int _Printf(outfun prout, char *arg, const char *fmt, va_list args) {
|
||||
|
||||
_Putfld(&x, &args, *s, ac);
|
||||
x.width -= x.n0 + x.nz0 + x.n1 + x.nz1 + x.n2 + x.nz2;
|
||||
|
||||
|
||||
if (!(x.flags & FLAGS_MINUS)) {
|
||||
PAD(spaces, x.width);
|
||||
}
|
||||
|
||||
|
||||
PUT(ac, x.n0);
|
||||
PAD(zeroes, x.nz0);
|
||||
PUT(x.s, x.n1);
|
||||
PAD(zeroes, x.nz1);
|
||||
PUT(x.s + x.n1, x.n2);
|
||||
PAD(zeroes, x.nz2);
|
||||
|
||||
|
||||
if (x.flags & FLAGS_MINUS) {
|
||||
PAD(spaces, x.width);
|
||||
}
|
||||
|
||||
|
||||
fmt = s + 1;
|
||||
}
|
||||
return 0;
|
||||
@ -224,11 +219,11 @@ static void _Putfld(_Pft *x, va_list *args, char type, char *buff) {
|
||||
case 's':
|
||||
x->s = va_arg(*args, char *);
|
||||
x->n1 = strlen(x->s);
|
||||
|
||||
|
||||
if (x->prec >= 0 && x->n1 > x->prec) {
|
||||
x->n1 = x->prec;
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
case '%':
|
||||
buff[x->n0++] = '%';
|
||||
@ -239,4 +234,4 @@ static void _Putfld(_Pft *x, va_list *args, char type, char *buff) {
|
||||
}
|
||||
}
|
||||
|
||||
static const f32 padding = 0.0f;
|
||||
static const s32 padding[] = {0, 0};
|
||||
|
@ -1 +1,2 @@
|
||||
osTvType = 0x80000300;
|
||||
osViModeNtscLan1 = 0x80095800;
|
||||
|
@ -139,7 +139,7 @@ dlabel nuGfxCfb
|
||||
dlabel D_8009A65C
|
||||
.space 4
|
||||
|
||||
dlabel D_8009A660
|
||||
dlabel __osFinalrom
|
||||
.space 4
|
||||
|
||||
dlabel gBGMPlayerA
|
||||
|
@ -1,78 +0,0 @@
|
||||
.include "macro.inc"
|
||||
|
||||
.section .data
|
||||
|
||||
dlabel _osViModeNtscLan1
|
||||
.word 0x02000000, 0x0000311E, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002
|
||||
|
||||
dlabel _osViModeMPalLan1
|
||||
.word 0x1E000000, 0x0000311E, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002
|
||||
|
||||
dlabel D_800958C0
|
||||
.float 0.017453292, 0.0, 0.0, 0.0
|
||||
|
||||
dlabel __osPfsInodeCacheChannel
|
||||
.word 0xFFFFFFFF
|
||||
|
||||
dlabel __osPfsInodeCacheBank
|
||||
.byte 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
dlabel __osPfsLastChannel
|
||||
.word 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
dlabel D_800958F0
|
||||
.word 0x00000000
|
||||
|
||||
dlabel D_800958F4
|
||||
.word 0x03B9ACA0
|
||||
|
||||
dlabel osViClock
|
||||
.word 0x02E6D354
|
||||
|
||||
dlabel __osShutdown
|
||||
.word 0x00000000
|
||||
|
||||
dlabel __OSGlobalIntMask
|
||||
.word 0x003FFF01, 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
dlabel D_80095910
|
||||
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
dlabel D_80095938
|
||||
.word 0x00000000, 0x00000000
|
||||
|
||||
dlabel D_80095940
|
||||
.ascii "0123456789abcdef\0\0\0\0"
|
||||
|
||||
dlabel D_80095954
|
||||
.ascii "0123456789ABCDEF\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
|
||||
dlabel vi
|
||||
.short 0x0000
|
||||
|
||||
dlabel D_80095972
|
||||
.short 0x0000
|
||||
|
||||
dlabel D_80095974
|
||||
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
dlabel D_800959A0
|
||||
.short 0x0000
|
||||
|
||||
dlabel D_800959A2
|
||||
.short 0x0000
|
||||
|
||||
dlabel D_800959A4
|
||||
.word 0x00000000
|
||||
|
||||
dlabel D_800959A8
|
||||
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||
|
||||
dlabel __osViCurr
|
||||
.word vi
|
||||
|
||||
dlabel __osViNext
|
||||
.word D_800959A0, 0x00000000, 0x00000000
|
||||
|
||||
dlabel D_800959E0
|
||||
.word 0x10000000, 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002
|
File diff suppressed because it is too large
Load Diff
@ -1,50 +0,0 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
|
||||
glabel __createSpeedParam
|
||||
/* 45A50 8006A650 3C05A460 */ lui $a1, 0xa460
|
||||
/* 45A54 8006A654 34A50014 */ ori $a1, $a1, 0x14
|
||||
/* 45A58 8006A658 3C06A460 */ lui $a2, 0xa460
|
||||
/* 45A5C 8006A65C 34C60018 */ ori $a2, $a2, 0x18
|
||||
/* 45A60 8006A660 3C07A460 */ lui $a3, 0xa460
|
||||
/* 45A64 8006A664 34E7001C */ ori $a3, $a3, 0x1c
|
||||
/* 45A68 8006A668 3C08A460 */ lui $t0, 0xa460
|
||||
/* 45A6C 8006A66C 35080020 */ ori $t0, $t0, 0x20
|
||||
/* 45A70 8006A670 3C09A460 */ lui $t1, 0xa460
|
||||
/* 45A74 8006A674 35290024 */ ori $t1, $t1, 0x24
|
||||
/* 45A78 8006A678 3C04A460 */ lui $a0, 0xa460
|
||||
/* 45A7C 8006A67C 34840028 */ ori $a0, $a0, 0x28
|
||||
/* 45A80 8006A680 3C03A460 */ lui $v1, 0xa460
|
||||
/* 45A84 8006A684 3463002C */ ori $v1, $v1, 0x2c
|
||||
/* 45A88 8006A688 3C02A460 */ lui $v0, 0xa460
|
||||
/* 45A8C 8006A68C 34420030 */ ori $v0, $v0, 0x30
|
||||
/* 45A90 8006A690 8CA50000 */ lw $a1, ($a1)
|
||||
/* 45A94 8006A694 8CC60000 */ lw $a2, ($a2)
|
||||
/* 45A98 8006A698 8CE70000 */ lw $a3, ($a3)
|
||||
/* 45A9C 8006A69C 8D080000 */ lw $t0, ($t0)
|
||||
/* 45AA0 8006A6A0 8D290000 */ lw $t1, ($t1)
|
||||
/* 45AA4 8006A6A4 8C840000 */ lw $a0, ($a0)
|
||||
/* 45AA8 8006A6A8 8C630000 */ lw $v1, ($v1)
|
||||
/* 45AAC 8006A6AC 8C4A0000 */ lw $t2, ($v0)
|
||||
/* 45AB0 8006A6B0 24020007 */ addiu $v0, $zero, 7
|
||||
/* 45AB4 8006A6B4 3C01800B */ lui $at, %hi(D_800B451C)
|
||||
/* 45AB8 8006A6B8 A022451C */ sb $v0, %lo(D_800B451C)($at)
|
||||
/* 45ABC 8006A6BC 3C01800B */ lui $at, %hi(D_800B1B0C)
|
||||
/* 45AC0 8006A6C0 A0221B0C */ sb $v0, %lo(D_800B1B0C)($at)
|
||||
/* 45AC4 8006A6C4 3C01800B */ lui $at, %hi(D_800B451D)
|
||||
/* 45AC8 8006A6C8 A025451D */ sb $a1, %lo(D_800B451D)($at)
|
||||
/* 45ACC 8006A6CC 3C01800B */ lui $at, %hi(D_800B4520)
|
||||
/* 45AD0 8006A6D0 A0264520 */ sb $a2, %lo(D_800B4520)($at)
|
||||
/* 45AD4 8006A6D4 3C01800B */ lui $at, %hi(D_800B451E)
|
||||
/* 45AD8 8006A6D8 A027451E */ sb $a3, %lo(D_800B451E)($at)
|
||||
/* 45ADC 8006A6DC 3C01800B */ lui $at, %hi(D_800B451F)
|
||||
/* 45AE0 8006A6E0 A028451F */ sb $t0, %lo(D_800B451F)($at)
|
||||
/* 45AE4 8006A6E4 3C01800B */ lui $at, %hi(D_800B1B0D)
|
||||
/* 45AE8 8006A6E8 A0291B0D */ sb $t1, %lo(D_800B1B0D)($at)
|
||||
/* 45AEC 8006A6EC 3C01800B */ lui $at, %hi(D_800B1B10)
|
||||
/* 45AF0 8006A6F0 A0241B10 */ sb $a0, %lo(D_800B1B10)($at)
|
||||
/* 45AF4 8006A6F4 3C01800B */ lui $at, %hi(D_800B1B0E)
|
||||
/* 45AF8 8006A6F8 A0231B0E */ sb $v1, %lo(D_800B1B0E)($at)
|
||||
/* 45AFC 8006A6FC 3C01800B */ lui $at, %hi(D_800B1B0F)
|
||||
/* 45B00 8006A700 03E00008 */ jr $ra
|
||||
/* 45B04 8006A704 A02A1B0F */ sb $t2, %lo(D_800B1B0F)($at)
|
@ -1,194 +0,0 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
|
||||
glabel __osInitialize_common
|
||||
/* 45B08 8006A708 27BDFFE0 */ addiu $sp, $sp, -0x20
|
||||
/* 45B0C 8006A70C 24020001 */ addiu $v0, $zero, 1
|
||||
/* 45B10 8006A710 AFBF0018 */ sw $ra, 0x18($sp)
|
||||
/* 45B14 8006A714 3C01800A */ lui $at, %hi(D_8009A660)
|
||||
/* 45B18 8006A718 0C01B19C */ jal __osGetSR
|
||||
/* 45B1C 8006A71C AC22A660 */ sw $v0, %lo(D_8009A660)($at)
|
||||
/* 45B20 8006A720 3C042000 */ lui $a0, 0x2000
|
||||
/* 45B24 8006A724 0C01B1A8 */ jal __osSetSR
|
||||
/* 45B28 8006A728 00442025 */ or $a0, $v0, $a0
|
||||
/* 45B2C 8006A72C 3C040100 */ lui $a0, 0x100
|
||||
/* 45B30 8006A730 0C01B1A4 */ jal __osSetFpcCsr
|
||||
/* 45B34 8006A734 34840800 */ ori $a0, $a0, 0x800
|
||||
/* 45B38 8006A738 0C01B1AC */ jal __osSetWatchLo
|
||||
/* 45B3C 8006A73C 3C040490 */ lui $a0, 0x490
|
||||
/* 45B40 8006A740 3C041FC0 */ lui $a0, 0x1fc0
|
||||
.L8006A744:
|
||||
/* 45B44 8006A744 348407FC */ ori $a0, $a0, 0x7fc
|
||||
/* 45B48 8006A748 0C01B1F0 */ jal __osSiRawReadIo
|
||||
/* 45B4C 8006A74C 27A50010 */ addiu $a1, $sp, 0x10
|
||||
/* 45B50 8006A750 1440FFFC */ bnez $v0, .L8006A744
|
||||
/* 45B54 8006A754 3C041FC0 */ lui $a0, 0x1fc0
|
||||
.L8006A758:
|
||||
/* 45B58 8006A758 8FA50010 */ lw $a1, 0x10($sp)
|
||||
/* 45B5C 8006A75C 3C041FC0 */ lui $a0, 0x1fc0
|
||||
/* 45B60 8006A760 348407FC */ ori $a0, $a0, 0x7fc
|
||||
/* 45B64 8006A764 0C01B204 */ jal __osSiRawWriteIo
|
||||
/* 45B68 8006A768 34A50008 */ ori $a1, $a1, 8
|
||||
/* 45B6C 8006A76C 1440FFFA */ bnez $v0, .L8006A758
|
||||
/* 45B70 8006A770 00000000 */ nop
|
||||
/* 45B74 8006A774 3C028007 */ lui $v0, %hi(func_8006A9F0)
|
||||
/* 45B78 8006A778 2442A9F0 */ addiu $v0, $v0, %lo(func_8006A9F0)
|
||||
/* 45B7C 8006A77C 3C068000 */ lui $a2, 0x8000
|
||||
/* 45B80 8006A780 8C430000 */ lw $v1, ($v0)
|
||||
/* 45B84 8006A784 8C440004 */ lw $a0, 4($v0)
|
||||
/* 45B88 8006A788 8C450008 */ lw $a1, 8($v0)
|
||||
/* 45B8C 8006A78C ACC30000 */ sw $v1, ($a2)
|
||||
/* 45B90 8006A790 ACC40004 */ sw $a0, 4($a2)
|
||||
/* 45B94 8006A794 ACC50008 */ sw $a1, 8($a2)
|
||||
/* 45B98 8006A798 8C43000C */ lw $v1, 0xc($v0)
|
||||
/* 45B9C 8006A79C ACC3000C */ sw $v1, 0xc($a2)
|
||||
/* 45BA0 8006A7A0 3C068000 */ lui $a2, 0x8000
|
||||
/* 45BA4 8006A7A4 34C60080 */ ori $a2, $a2, 0x80
|
||||
/* 45BA8 8006A7A8 8C430000 */ lw $v1, ($v0)
|
||||
/* 45BAC 8006A7AC 8C440004 */ lw $a0, 4($v0)
|
||||
/* 45BB0 8006A7B0 8C450008 */ lw $a1, 8($v0)
|
||||
/* 45BB4 8006A7B4 ACC30000 */ sw $v1, ($a2)
|
||||
/* 45BB8 8006A7B8 ACC40004 */ sw $a0, 4($a2)
|
||||
/* 45BBC 8006A7BC ACC50008 */ sw $a1, 8($a2)
|
||||
/* 45BC0 8006A7C0 8C43000C */ lw $v1, 0xc($v0)
|
||||
/* 45BC4 8006A7C4 ACC3000C */ sw $v1, 0xc($a2)
|
||||
/* 45BC8 8006A7C8 3C068000 */ lui $a2, 0x8000
|
||||
/* 45BCC 8006A7CC 34C60100 */ ori $a2, $a2, 0x100
|
||||
/* 45BD0 8006A7D0 8C430000 */ lw $v1, ($v0)
|
||||
/* 45BD4 8006A7D4 8C440004 */ lw $a0, 4($v0)
|
||||
/* 45BD8 8006A7D8 8C450008 */ lw $a1, 8($v0)
|
||||
/* 45BDC 8006A7DC ACC30000 */ sw $v1, ($a2)
|
||||
/* 45BE0 8006A7E0 ACC40004 */ sw $a0, 4($a2)
|
||||
/* 45BE4 8006A7E4 ACC50008 */ sw $a1, 8($a2)
|
||||
/* 45BE8 8006A7E8 8C43000C */ lw $v1, 0xc($v0)
|
||||
/* 45BEC 8006A7EC ACC3000C */ sw $v1, 0xc($a2)
|
||||
/* 45BF0 8006A7F0 3C068000 */ lui $a2, 0x8000
|
||||
/* 45BF4 8006A7F4 34C60180 */ ori $a2, $a2, 0x180
|
||||
/* 45BF8 8006A7F8 8C430000 */ lw $v1, ($v0)
|
||||
/* 45BFC 8006A7FC 8C440004 */ lw $a0, 4($v0)
|
||||
/* 45C00 8006A800 8C450008 */ lw $a1, 8($v0)
|
||||
/* 45C04 8006A804 ACC30000 */ sw $v1, ($a2)
|
||||
/* 45C08 8006A808 ACC40004 */ sw $a0, 4($a2)
|
||||
/* 45C0C 8006A80C ACC50008 */ sw $a1, 8($a2)
|
||||
/* 45C10 8006A810 8C43000C */ lw $v1, 0xc($v0)
|
||||
/* 45C14 8006A814 ACC3000C */ sw $v1, 0xc($a2)
|
||||
/* 45C18 8006A818 3C048000 */ lui $a0, 0x8000
|
||||
/* 45C1C 8006A81C 0C018614 */ jal osWritebackDCache
|
||||
/* 45C20 8006A820 24050190 */ addiu $a1, $zero, 0x190
|
||||
/* 45C24 8006A824 3C048000 */ lui $a0, 0x8000
|
||||
/* 45C28 8006A828 0C0185F4 */ jal osInvalICache
|
||||
/* 45C2C 8006A82C 24050190 */ addiu $a1, $zero, 0x190
|
||||
/* 45C30 8006A830 3C05A460 */ lui $a1, 0xa460
|
||||
/* 45C34 8006A834 34A50014 */ ori $a1, $a1, 0x14
|
||||
/* 45C38 8006A838 3C06A460 */ lui $a2, 0xa460
|
||||
/* 45C3C 8006A83C 34C60018 */ ori $a2, $a2, 0x18
|
||||
/* 45C40 8006A840 3C07A460 */ lui $a3, 0xa460
|
||||
/* 45C44 8006A844 34E7001C */ ori $a3, $a3, 0x1c
|
||||
/* 45C48 8006A848 3C08A460 */ lui $t0, 0xa460
|
||||
/* 45C4C 8006A84C 35080020 */ ori $t0, $t0, 0x20
|
||||
/* 45C50 8006A850 3C09A460 */ lui $t1, 0xa460
|
||||
/* 45C54 8006A854 35290024 */ ori $t1, $t1, 0x24
|
||||
/* 45C58 8006A858 3C04A460 */ lui $a0, 0xa460
|
||||
/* 45C5C 8006A85C 34840028 */ ori $a0, $a0, 0x28
|
||||
/* 45C60 8006A860 3C03A460 */ lui $v1, 0xa460
|
||||
/* 45C64 8006A864 3463002C */ ori $v1, $v1, 0x2c
|
||||
/* 45C68 8006A868 3C02A460 */ lui $v0, 0xa460
|
||||
/* 45C6C 8006A86C 34420030 */ ori $v0, $v0, 0x30
|
||||
/* 45C70 8006A870 8CA50000 */ lw $a1, ($a1)
|
||||
/* 45C74 8006A874 8CC60000 */ lw $a2, ($a2)
|
||||
/* 45C78 8006A878 8CE70000 */ lw $a3, ($a3)
|
||||
/* 45C7C 8006A87C 8D080000 */ lw $t0, ($t0)
|
||||
/* 45C80 8006A880 8D290000 */ lw $t1, ($t1)
|
||||
/* 45C84 8006A884 8C840000 */ lw $a0, ($a0)
|
||||
/* 45C88 8006A888 8C630000 */ lw $v1, ($v1)
|
||||
/* 45C8C 8006A88C 8C4A0000 */ lw $t2, ($v0)
|
||||
/* 45C90 8006A890 24020007 */ addiu $v0, $zero, 7
|
||||
/* 45C94 8006A894 3C01800B */ lui $at, %hi(D_800B451C)
|
||||
/* 45C98 8006A898 A022451C */ sb $v0, %lo(D_800B451C)($at)
|
||||
/* 45C9C 8006A89C 3C01800B */ lui $at, %hi(D_800B1B0C)
|
||||
/* 45CA0 8006A8A0 A0221B0C */ sb $v0, %lo(D_800B1B0C)($at)
|
||||
/* 45CA4 8006A8A4 3C01800B */ lui $at, %hi(D_800B451D)
|
||||
/* 45CA8 8006A8A8 A025451D */ sb $a1, %lo(D_800B451D)($at)
|
||||
/* 45CAC 8006A8AC 3C01800B */ lui $at, %hi(D_800B4520)
|
||||
/* 45CB0 8006A8B0 A0264520 */ sb $a2, %lo(D_800B4520)($at)
|
||||
/* 45CB4 8006A8B4 3C01800B */ lui $at, %hi(D_800B451E)
|
||||
/* 45CB8 8006A8B8 A027451E */ sb $a3, %lo(D_800B451E)($at)
|
||||
/* 45CBC 8006A8BC 3C01800B */ lui $at, %hi(D_800B451F)
|
||||
/* 45CC0 8006A8C0 A028451F */ sb $t0, %lo(D_800B451F)($at)
|
||||
/* 45CC4 8006A8C4 3C01800B */ lui $at, %hi(D_800B1B0D)
|
||||
/* 45CC8 8006A8C8 A0291B0D */ sb $t1, %lo(D_800B1B0D)($at)
|
||||
/* 45CCC 8006A8CC 3C01800B */ lui $at, %hi(D_800B1B10)
|
||||
/* 45CD0 8006A8D0 A0241B10 */ sb $a0, %lo(D_800B1B10)($at)
|
||||
/* 45CD4 8006A8D4 3C01800B */ lui $at, %hi(D_800B1B0E)
|
||||
/* 45CD8 8006A8D8 A0231B0E */ sb $v1, %lo(D_800B1B0E)($at)
|
||||
/* 45CDC 8006A8DC 3C01800B */ lui $at, %hi(D_800B1B0F)
|
||||
/* 45CE0 8006A8E0 0C019A58 */ jal osUnmapTLBAll
|
||||
/* 45CE4 8006A8E4 A02A1B0F */ sb $t2, %lo(D_800B1B0F)($at)
|
||||
/* 45CE8 8006A8E8 0C01B28C */ jal osMapTLBRdb
|
||||
/* 45CEC 8006A8EC 00000000 */ nop
|
||||
/* 45CF0 8006A8F0 3C028009 */ lui $v0, %hi(D_800958F0)
|
||||
/* 45CF4 8006A8F4 8C4258F0 */ lw $v0, %lo(D_800958F0)($v0)
|
||||
/* 45CF8 8006A8F8 3C038009 */ lui $v1, %hi(D_800958F4)
|
||||
/* 45CFC 8006A8FC 8C6358F4 */ lw $v1, %lo(D_800958F4)($v1)
|
||||
/* 45D00 8006A900 00022040 */ sll $a0, $v0, 1
|
||||
/* 45D04 8006A904 000337C2 */ srl $a2, $v1, 0x1f
|
||||
/* 45D08 8006A908 00862025 */ or $a0, $a0, $a2
|
||||
/* 45D0C 8006A90C 00032840 */ sll $a1, $v1, 1
|
||||
/* 45D10 8006A910 00A32821 */ addu $a1, $a1, $v1
|
||||
/* 45D14 8006A914 00A3302B */ sltu $a2, $a1, $v1
|
||||
/* 45D18 8006A918 00822021 */ addu $a0, $a0, $v0
|
||||
/* 45D1C 8006A91C 00862021 */ addu $a0, $a0, $a2
|
||||
/* 45D20 8006A920 24060000 */ addiu $a2, $zero, 0
|
||||
/* 45D24 8006A924 0C01B8C4 */ jal __udivdi3
|
||||
/* 45D28 8006A928 24070004 */ addiu $a3, $zero, 4
|
||||
/* 45D2C 8006A92C 3C048000 */ lui $a0, %hi(D_8000030C)
|
||||
/* 45D30 8006A930 8C84030C */ lw $a0, %lo(D_8000030C)($a0)
|
||||
/* 45D34 8006A934 3C018009 */ lui $at, %hi(D_800958F0)
|
||||
/* 45D38 8006A938 AC2258F0 */ sw $v0, %lo(D_800958F0)($at)
|
||||
/* 45D3C 8006A93C 3C018009 */ lui $at, %hi(D_800958F4)
|
||||
/* 45D40 8006A940 14800005 */ bnez $a0, .L8006A958
|
||||
/* 45D44 8006A944 AC2358F4 */ sw $v1, %lo(D_800958F4)($at)
|
||||
/* 45D48 8006A948 3C048000 */ lui $a0, %hi(D_8000031C)
|
||||
/* 45D4C 8006A94C 2484031C */ addiu $a0, $a0, %lo(D_8000031C)
|
||||
/* 45D50 8006A950 0C01925C */ jal bzero
|
||||
/* 45D54 8006A954 24050040 */ addiu $a1, $zero, 0x40
|
||||
.L8006A958:
|
||||
/* 45D58 8006A958 3C038000 */ lui $v1, %hi(osTvType)
|
||||
/* 45D5C 8006A95C 8C630300 */ lw $v1, %lo(osTvType)($v1)
|
||||
/* 45D60 8006A960 54600004 */ bnel $v1, $zero, .L8006A974
|
||||
/* 45D64 8006A964 24020002 */ addiu $v0, $zero, 2
|
||||
/* 45D68 8006A968 3C0202F5 */ lui $v0, 0x2f5
|
||||
/* 45D6C 8006A96C 0801AA62 */ j .L8006A988
|
||||
/* 45D70 8006A970 3442B2D2 */ ori $v0, $v0, 0xb2d2
|
||||
.L8006A974:
|
||||
/* 45D74 8006A974 14620003 */ bne $v1, $v0, .L8006A984
|
||||
/* 45D78 8006A978 3C0202E6 */ lui $v0, 0x2e6
|
||||
/* 45D7C 8006A97C 0801AA62 */ j .L8006A988
|
||||
/* 45D80 8006A980 3442025C */ ori $v0, $v0, 0x25c
|
||||
.L8006A984:
|
||||
/* 45D84 8006A984 3442D354 */ ori $v0, $v0, 0xd354
|
||||
.L8006A988:
|
||||
/* 45D88 8006A988 3C018009 */ lui $at, %hi(osViClock)
|
||||
/* 45D8C 8006A98C 0C01B198 */ jal __osGetCause
|
||||
/* 45D90 8006A990 AC2258F8 */ sw $v0, %lo(osViClock)($at)
|
||||
/* 45D94 8006A994 30421000 */ andi $v0, $v0, 0x1000
|
||||
/* 45D98 8006A998 10400003 */ beqz $v0, .L8006A9A8
|
||||
/* 45D9C 8006A99C 3C03A450 */ lui $v1, 0xa450
|
||||
.L8006A9A0:
|
||||
/* 45DA0 8006A9A0 0801AA68 */ j .L8006A9A0
|
||||
/* 45DA4 8006A9A4 00000000 */ nop
|
||||
.L8006A9A8:
|
||||
/* 45DA8 8006A9A8 34630008 */ ori $v1, $v1, 8
|
||||
/* 45DAC 8006A9AC 3C04A450 */ lui $a0, 0xa450
|
||||
/* 45DB0 8006A9B0 34840010 */ ori $a0, $a0, 0x10
|
||||
/* 45DB4 8006A9B4 3C05A450 */ lui $a1, 0xa450
|
||||
/* 45DB8 8006A9B8 34A50014 */ ori $a1, $a1, 0x14
|
||||
/* 45DBC 8006A9BC 24020001 */ addiu $v0, $zero, 1
|
||||
/* 45DC0 8006A9C0 AC620000 */ sw $v0, ($v1)
|
||||
/* 45DC4 8006A9C4 24023FFF */ addiu $v0, $zero, 0x3fff
|
||||
/* 45DC8 8006A9C8 AC820000 */ sw $v0, ($a0)
|
||||
/* 45DCC 8006A9CC 2402000F */ addiu $v0, $zero, 0xf
|
||||
/* 45DD0 8006A9D0 ACA20000 */ sw $v0, ($a1)
|
||||
/* 45DD4 8006A9D4 8FBF0018 */ lw $ra, 0x18($sp)
|
||||
/* 45DD8 8006A9D8 03E00008 */ jr $ra
|
||||
/* 45DDC 8006A9DC 27BD0020 */ addiu $sp, $sp, 0x20
|
@ -1,77 +0,0 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
|
||||
glabel __osViInit
|
||||
/* 47E90 8006CA90 27BDFFE8 */ addiu $sp, $sp, -0x18
|
||||
/* 47E94 8006CA94 AFB00010 */ sw $s0, 0x10($sp)
|
||||
/* 47E98 8006CA98 3C108009 */ lui $s0, %hi(vi)
|
||||
/* 47E9C 8006CA9C 26105970 */ addiu $s0, $s0, %lo(vi)
|
||||
/* 47EA0 8006CAA0 02002021 */ addu $a0, $s0, $zero
|
||||
/* 47EA4 8006CAA4 AFBF0014 */ sw $ra, 0x14($sp)
|
||||
/* 47EA8 8006CAA8 0C01925C */ jal bzero
|
||||
/* 47EAC 8006CAAC 24050060 */ addiu $a1, $zero, 0x60
|
||||
/* 47EB0 8006CAB0 3C038000 */ lui $v1, %hi(osTvType)
|
||||
/* 47EB4 8006CAB4 8C630300 */ lw $v1, %lo(osTvType)($v1)
|
||||
/* 47EB8 8006CAB8 3C018009 */ lui $at, %hi(__osViCurr)
|
||||
/* 47EBC 8006CABC AC3059D0 */ sw $s0, %lo(__osViCurr)($at)
|
||||
/* 47EC0 8006CAC0 26100030 */ addiu $s0, $s0, 0x30
|
||||
/* 47EC4 8006CAC4 24020001 */ addiu $v0, $zero, 1
|
||||
/* 47EC8 8006CAC8 3C018009 */ lui $at, %hi(D_800959A2)
|
||||
/* 47ECC 8006CACC A42259A2 */ sh $v0, %lo(D_800959A2)($at)
|
||||
/* 47ED0 8006CAD0 3C018009 */ lui $at, %hi(D_80095972)
|
||||
/* 47ED4 8006CAD4 A4225972 */ sh $v0, %lo(D_80095972)($at)
|
||||
/* 47ED8 8006CAD8 3C028000 */ lui $v0, 0x8000
|
||||
/* 47EDC 8006CADC 3C018009 */ lui $at, %hi(__osViNext)
|
||||
/* 47EE0 8006CAE0 AC3059D4 */ sw $s0, %lo(__osViNext)($at)
|
||||
/* 47EE4 8006CAE4 3C018009 */ lui $at, %hi(D_800959A4)
|
||||
/* 47EE8 8006CAE8 AC2259A4 */ sw $v0, %lo(D_800959A4)($at)
|
||||
/* 47EEC 8006CAEC 3C018009 */ lui $at, %hi(D_80095974)
|
||||
/* 47EF0 8006CAF0 AC225974 */ sw $v0, %lo(D_80095974)($at)
|
||||
/* 47EF4 8006CAF4 14600004 */ bnez $v1, .L8006CB08
|
||||
/* 47EF8 8006CAF8 24020002 */ addiu $v0, $zero, 2
|
||||
/* 47EFC 8006CAFC 3C028009 */ lui $v0, %hi(D_800959E0)
|
||||
/* 47F00 8006CB00 0801B2C9 */ j .L8006CB24
|
||||
/* 47F04 8006CB04 244259E0 */ addiu $v0, $v0, %lo(D_800959E0)
|
||||
.L8006CB08:
|
||||
/* 47F08 8006CB08 14620004 */ bne $v1, $v0, .L8006CB1C
|
||||
/* 47F0C 8006CB0C 00000000 */ nop
|
||||
/* 47F10 8006CB10 3C028009 */ lui $v0, %hi(_osViModeMPalLan1)
|
||||
/* 47F14 8006CB14 0801B2C9 */ j .L8006CB24
|
||||
/* 47F18 8006CB18 24425870 */ addiu $v0, $v0, %lo(_osViModeMPalLan1)
|
||||
.L8006CB1C:
|
||||
/* 47F1C 8006CB1C 3C028009 */ lui $v0, %hi(_osViModeNtscLan1)
|
||||
/* 47F20 8006CB20 24425820 */ addiu $v0, $v0, %lo(_osViModeNtscLan1)
|
||||
.L8006CB24:
|
||||
/* 47F24 8006CB24 3C018009 */ lui $at, %hi(D_800959A8)
|
||||
/* 47F28 8006CB28 AC2259A8 */ sw $v0, %lo(D_800959A8)($at)
|
||||
/* 47F2C 8006CB2C 3C038009 */ lui $v1, %hi(__osViNext)
|
||||
/* 47F30 8006CB30 8C6359D4 */ lw $v1, %lo(__osViNext)($v1)
|
||||
/* 47F34 8006CB34 8C640008 */ lw $a0, 8($v1)
|
||||
/* 47F38 8006CB38 24020020 */ addiu $v0, $zero, 0x20
|
||||
/* 47F3C 8006CB3C A4620000 */ sh $v0, ($v1)
|
||||
/* 47F40 8006CB40 8C820004 */ lw $v0, 4($a0)
|
||||
/* 47F44 8006CB44 3C04A440 */ lui $a0, 0xa440
|
||||
/* 47F48 8006CB48 34840010 */ ori $a0, $a0, 0x10
|
||||
/* 47F4C 8006CB4C AC62000C */ sw $v0, 0xc($v1)
|
||||
/* 47F50 8006CB50 8C820000 */ lw $v0, ($a0)
|
||||
/* 47F54 8006CB54 2C42000B */ sltiu $v0, $v0, 0xb
|
||||
/* 47F58 8006CB58 14400007 */ bnez $v0, .L8006CB78
|
||||
/* 47F5C 8006CB5C 3C02A440 */ lui $v0, 0xa440
|
||||
/* 47F60 8006CB60 3C03A440 */ lui $v1, 0xa440
|
||||
/* 47F64 8006CB64 34630010 */ ori $v1, $v1, 0x10
|
||||
.L8006CB68:
|
||||
/* 47F68 8006CB68 8C620000 */ lw $v0, ($v1)
|
||||
/* 47F6C 8006CB6C 2C42000B */ sltiu $v0, $v0, 0xb
|
||||
/* 47F70 8006CB70 1040FFFD */ beqz $v0, .L8006CB68
|
||||
/* 47F74 8006CB74 3C02A440 */ lui $v0, 0xa440
|
||||
.L8006CB78:
|
||||
/* 47F78 8006CB78 AC400000 */ sw $zero, ($v0)
|
||||
/* 47F7C 8006CB7C 0C019C1C */ jal __osViSwapContext
|
||||
/* 47F80 8006CB80 00000000 */ nop
|
||||
/* 47F84 8006CB84 8FBF0014 */ lw $ra, 0x14($sp)
|
||||
/* 47F88 8006CB88 8FB00010 */ lw $s0, 0x10($sp)
|
||||
/* 47F8C 8006CB8C 03E00008 */ jr $ra
|
||||
/* 47F90 8006CB90 27BD0018 */ addiu $sp, $sp, 0x18
|
||||
/* 47F94 8006CB94 00000000 */ nop
|
||||
/* 47F98 8006CB98 00000000 */ nop
|
||||
/* 47F9C 8006CB9C 00000000 */ nop
|
@ -1,403 +0,0 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
|
||||
.section .rodata
|
||||
|
||||
dlabel D_80099E30
|
||||
.ascii "0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
|
||||
.section .text
|
||||
|
||||
glabel _Genld
|
||||
/* 474B4 8006C0B4 27BDFFD0 */ addiu $sp, $sp, -0x30
|
||||
/* 474B8 8006C0B8 AFB20018 */ sw $s2, 0x18($sp)
|
||||
/* 474BC 8006C0BC 00C09021 */ addu $s2, $a2, $zero
|
||||
/* 474C0 8006C0C0 8FA60040 */ lw $a2, 0x40($sp)
|
||||
/* 474C4 8006C0C4 AFB10014 */ sw $s1, 0x14($sp)
|
||||
/* 474C8 8006C0C8 00808821 */ addu $s1, $a0, $zero
|
||||
/* 474CC 8006C0CC AFB3001C */ sw $s3, 0x1c($sp)
|
||||
/* 474D0 8006C0D0 00A09821 */ addu $s3, $a1, $zero
|
||||
/* 474D4 8006C0D4 AFB50024 */ sw $s5, 0x24($sp)
|
||||
/* 474D8 8006C0D8 00E0A821 */ addu $s5, $a3, $zero
|
||||
/* 474DC 8006C0DC 00073C00 */ sll $a3, $a3, 0x10
|
||||
/* 474E0 8006C0E0 AFBF0028 */ sw $ra, 0x28($sp)
|
||||
/* 474E4 8006C0E4 AFB40020 */ sw $s4, 0x20($sp)
|
||||
/* 474E8 8006C0E8 AFB00010 */ sw $s0, 0x10($sp)
|
||||
/* 474EC 8006C0EC 1CE00004 */ bgtz $a3, .L8006C100
|
||||
/* 474F0 8006C0F0 00C0A021 */ addu $s4, $a2, $zero
|
||||
/* 474F4 8006C0F4 24150001 */ addiu $s5, $zero, 1
|
||||
/* 474F8 8006C0F8 3C12800A */ lui $s2, %hi(D_80099E30)
|
||||
/* 474FC 8006C0FC 26529E30 */ addiu $s2, $s2, %lo(D_80099E30)
|
||||
.L8006C100:
|
||||
/* 47500 8006C100 00051600 */ sll $v0, $a1, 0x18
|
||||
/* 47504 8006C104 00022603 */ sra $a0, $v0, 0x18
|
||||
/* 47508 8006C108 24050066 */ addiu $a1, $zero, 0x66
|
||||
/* 4750C 8006C10C 1085000F */ beq $a0, $a1, .L8006C14C
|
||||
/* 47510 8006C110 38830067 */ xori $v1, $a0, 0x67
|
||||
/* 47514 8006C114 2C630001 */ sltiu $v1, $v1, 1
|
||||
/* 47518 8006C118 38820047 */ xori $v0, $a0, 0x47
|
||||
/* 4751C 8006C11C 2C420001 */ sltiu $v0, $v0, 1
|
||||
/* 47520 8006C120 00621825 */ or $v1, $v1, $v0
|
||||
/* 47524 8006C124 106000B4 */ beqz $v1, .L8006C3F8
|
||||
/* 47528 8006C128 00061400 */ sll $v0, $a2, 0x10
|
||||
/* 4752C 8006C12C 00021C03 */ sra $v1, $v0, 0x10
|
||||
/* 47530 8006C130 2862FFFC */ slti $v0, $v1, -4
|
||||
/* 47534 8006C134 1440009B */ bnez $v0, .L8006C3A4
|
||||
/* 47538 8006C138 00131600 */ sll $v0, $s3, 0x18
|
||||
/* 4753C 8006C13C 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 47540 8006C140 0062102A */ slt $v0, $v1, $v0
|
||||
/* 47544 8006C144 10400097 */ beqz $v0, .L8006C3A4
|
||||
/* 47548 8006C148 00131600 */ sll $v0, $s3, 0x18
|
||||
.L8006C14C:
|
||||
/* 4754C 8006C14C 10850011 */ beq $a0, $a1, .L8006C194
|
||||
/* 47550 8006C150 24D40001 */ addiu $s4, $a2, 1
|
||||
/* 47554 8006C154 8E220030 */ lw $v0, 0x30($s1)
|
||||
/* 47558 8006C158 30420008 */ andi $v0, $v0, 8
|
||||
/* 4755C 8006C15C 14400006 */ bnez $v0, .L8006C178
|
||||
/* 47560 8006C160 00151C00 */ sll $v1, $s5, 0x10
|
||||
/* 47564 8006C164 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 47568 8006C168 00031C03 */ sra $v1, $v1, 0x10
|
||||
/* 4756C 8006C16C 0062102A */ slt $v0, $v1, $v0
|
||||
/* 47570 8006C170 54400001 */ bnel $v0, $zero, .L8006C178
|
||||
/* 47574 8006C174 AE230024 */ sw $v1, 0x24($s1)
|
||||
.L8006C178:
|
||||
/* 47578 8006C178 8E230024 */ lw $v1, 0x24($s1)
|
||||
/* 4757C 8006C17C 00141400 */ sll $v0, $s4, 0x10
|
||||
/* 47580 8006C180 00021403 */ sra $v0, $v0, 0x10
|
||||
/* 47584 8006C184 00621823 */ subu $v1, $v1, $v0
|
||||
/* 47588 8006C188 04610002 */ bgez $v1, .L8006C194
|
||||
/* 4758C 8006C18C AE230024 */ sw $v1, 0x24($s1)
|
||||
/* 47590 8006C190 AE200024 */ sw $zero, 0x24($s1)
|
||||
.L8006C194:
|
||||
/* 47594 8006C194 00141400 */ sll $v0, $s4, 0x10
|
||||
/* 47598 8006C198 00029C03 */ sra $s3, $v0, 0x10
|
||||
/* 4759C 8006C19C 1E600036 */ bgtz $s3, .L8006C278
|
||||
/* 475A0 8006C1A0 00151400 */ sll $v0, $s5, 0x10
|
||||
/* 475A4 8006C1A4 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 475A8 8006C1A8 8E230008 */ lw $v1, 8($s1)
|
||||
/* 475AC 8006C1AC 24820001 */ addiu $v0, $a0, 1
|
||||
/* 475B0 8006C1B0 00641821 */ addu $v1, $v1, $a0
|
||||
/* 475B4 8006C1B4 AE220014 */ sw $v0, 0x14($s1)
|
||||
/* 475B8 8006C1B8 24020030 */ addiu $v0, $zero, 0x30
|
||||
/* 475BC 8006C1BC A0620000 */ sb $v0, ($v1)
|
||||
/* 475C0 8006C1C0 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 475C4 8006C1C4 1C400005 */ bgtz $v0, .L8006C1DC
|
||||
/* 475C8 8006C1C8 00000000 */ nop
|
||||
/* 475CC 8006C1CC 8E220030 */ lw $v0, 0x30($s1)
|
||||
/* 475D0 8006C1D0 30420008 */ andi $v0, $v0, 8
|
||||
/* 475D4 8006C1D4 10400009 */ beqz $v0, .L8006C1FC
|
||||
/* 475D8 8006C1D8 00141400 */ sll $v0, $s4, 0x10
|
||||
.L8006C1DC:
|
||||
/* 475DC 8006C1DC 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 475E0 8006C1E0 8E230008 */ lw $v1, 8($s1)
|
||||
/* 475E4 8006C1E4 24820001 */ addiu $v0, $a0, 1
|
||||
/* 475E8 8006C1E8 00641821 */ addu $v1, $v1, $a0
|
||||
/* 475EC 8006C1EC AE220014 */ sw $v0, 0x14($s1)
|
||||
/* 475F0 8006C1F0 2402002E */ addiu $v0, $zero, 0x2e
|
||||
/* 475F4 8006C1F4 A0620000 */ sb $v0, ($v1)
|
||||
/* 475F8 8006C1F8 00141400 */ sll $v0, $s4, 0x10
|
||||
.L8006C1FC:
|
||||
/* 475FC 8006C1FC 8E230024 */ lw $v1, 0x24($s1)
|
||||
/* 47600 8006C200 00021403 */ sra $v0, $v0, 0x10
|
||||
/* 47604 8006C204 00021023 */ negu $v0, $v0
|
||||
/* 47608 8006C208 0062102A */ slt $v0, $v1, $v0
|
||||
/* 4760C 8006C20C 54400001 */ bnel $v0, $zero, .L8006C214
|
||||
/* 47610 8006C210 0003A023 */ negu $s4, $v1
|
||||
.L8006C214:
|
||||
/* 47614 8006C214 00141400 */ sll $v0, $s4, 0x10
|
||||
/* 47618 8006C218 8E240024 */ lw $a0, 0x24($s1)
|
||||
/* 4761C 8006C21C 00021403 */ sra $v0, $v0, 0x10
|
||||
/* 47620 8006C220 00021823 */ negu $v1, $v0
|
||||
/* 47624 8006C224 AE230018 */ sw $v1, 0x18($s1)
|
||||
/* 47628 8006C228 00822021 */ addu $a0, $a0, $v0
|
||||
/* 4762C 8006C22C 00151400 */ sll $v0, $s5, 0x10
|
||||
/* 47630 8006C230 00021403 */ sra $v0, $v0, 0x10
|
||||
/* 47634 8006C234 0082102A */ slt $v0, $a0, $v0
|
||||
/* 47638 8006C238 10400002 */ beqz $v0, .L8006C244
|
||||
/* 4763C 8006C23C AE240024 */ sw $a0, 0x24($s1)
|
||||
/* 47640 8006C240 0080A821 */ addu $s5, $a0, $zero
|
||||
.L8006C244:
|
||||
/* 47644 8006C244 02402821 */ addu $a1, $s2, $zero
|
||||
/* 47648 8006C248 8E220008 */ lw $v0, 8($s1)
|
||||
/* 4764C 8006C24C 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 47650 8006C250 00158400 */ sll $s0, $s5, 0x10
|
||||
/* 47654 8006C254 00108403 */ sra $s0, $s0, 0x10
|
||||
/* 47658 8006C258 02003021 */ addu $a2, $s0, $zero
|
||||
/* 4765C 8006C25C AE30001C */ sw $s0, 0x1c($s1)
|
||||
/* 47660 8006C260 0C01929D */ jal memcpy
|
||||
/* 47664 8006C264 00442021 */ addu $a0, $v0, $a0
|
||||
/* 47668 8006C268 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 4766C 8006C26C 00501023 */ subu $v0, $v0, $s0
|
||||
/* 47670 8006C270 0801B17B */ j .L8006C5EC
|
||||
/* 47674 8006C274 AE220020 */ sw $v0, 0x20($s1)
|
||||
.L8006C278:
|
||||
/* 47678 8006C278 00028403 */ sra $s0, $v0, 0x10
|
||||
/* 4767C 8006C27C 0213102A */ slt $v0, $s0, $s3
|
||||
/* 47680 8006C280 1040001C */ beqz $v0, .L8006C2F4
|
||||
/* 47684 8006C284 02402821 */ addu $a1, $s2, $zero
|
||||
/* 47688 8006C288 8E220008 */ lw $v0, 8($s1)
|
||||
/* 4768C 8006C28C 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 47690 8006C290 02003021 */ addu $a2, $s0, $zero
|
||||
/* 47694 8006C294 0C01929D */ jal memcpy
|
||||
/* 47698 8006C298 00442021 */ addu $a0, $v0, $a0
|
||||
/* 4769C 8006C29C 8E230014 */ lw $v1, 0x14($s1)
|
||||
/* 476A0 8006C2A0 8E240024 */ lw $a0, 0x24($s1)
|
||||
/* 476A4 8006C2A4 02701023 */ subu $v0, $s3, $s0
|
||||
/* 476A8 8006C2A8 AE220018 */ sw $v0, 0x18($s1)
|
||||
/* 476AC 8006C2AC 00701821 */ addu $v1, $v1, $s0
|
||||
/* 476B0 8006C2B0 1C800005 */ bgtz $a0, .L8006C2C8
|
||||
/* 476B4 8006C2B4 AE230014 */ sw $v1, 0x14($s1)
|
||||
/* 476B8 8006C2B8 8E220030 */ lw $v0, 0x30($s1)
|
||||
/* 476BC 8006C2BC 30420008 */ andi $v0, $v0, 8
|
||||
/* 476C0 8006C2C0 10400009 */ beqz $v0, .L8006C2E8
|
||||
/* 476C4 8006C2C4 00000000 */ nop
|
||||
.L8006C2C8:
|
||||
/* 476C8 8006C2C8 8E220008 */ lw $v0, 8($s1)
|
||||
/* 476CC 8006C2CC 8E230014 */ lw $v1, 0x14($s1)
|
||||
/* 476D0 8006C2D0 00431021 */ addu $v0, $v0, $v1
|
||||
/* 476D4 8006C2D4 2403002E */ addiu $v1, $zero, 0x2e
|
||||
/* 476D8 8006C2D8 A0430000 */ sb $v1, ($v0)
|
||||
/* 476DC 8006C2DC 8E22001C */ lw $v0, 0x1c($s1)
|
||||
/* 476E0 8006C2E0 24420001 */ addiu $v0, $v0, 1
|
||||
/* 476E4 8006C2E4 AE22001C */ sw $v0, 0x1c($s1)
|
||||
.L8006C2E8:
|
||||
/* 476E8 8006C2E8 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 476EC 8006C2EC 0801B17B */ j .L8006C5EC
|
||||
/* 476F0 8006C2F0 AE220020 */ sw $v0, 0x20($s1)
|
||||
.L8006C2F4:
|
||||
/* 476F4 8006C2F4 8E220008 */ lw $v0, 8($s1)
|
||||
/* 476F8 8006C2F8 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 476FC 8006C2FC 02603021 */ addu $a2, $s3, $zero
|
||||
/* 47700 8006C300 0C01929D */ jal memcpy
|
||||
/* 47704 8006C304 00442021 */ addu $a0, $v0, $a0
|
||||
/* 47708 8006C308 8E220014 */ lw $v0, 0x14($s1)
|
||||
/* 4770C 8006C30C 8E230024 */ lw $v1, 0x24($s1)
|
||||
/* 47710 8006C310 02B4A823 */ subu $s5, $s5, $s4
|
||||
/* 47714 8006C314 00533021 */ addu $a2, $v0, $s3
|
||||
/* 47718 8006C318 1C600005 */ bgtz $v1, .L8006C330
|
||||
/* 4771C 8006C31C AE260014 */ sw $a2, 0x14($s1)
|
||||
/* 47720 8006C320 8E220030 */ lw $v0, 0x30($s1)
|
||||
/* 47724 8006C324 30420008 */ andi $v0, $v0, 8
|
||||
/* 47728 8006C328 10400007 */ beqz $v0, .L8006C348
|
||||
/* 4772C 8006C32C 00000000 */ nop
|
||||
.L8006C330:
|
||||
/* 47730 8006C330 8E220008 */ lw $v0, 8($s1)
|
||||
/* 47734 8006C334 24C30001 */ addiu $v1, $a2, 1
|
||||
/* 47738 8006C338 AE230014 */ sw $v1, 0x14($s1)
|
||||
/* 4773C 8006C33C 2403002E */ addiu $v1, $zero, 0x2e
|
||||
/* 47740 8006C340 00461021 */ addu $v0, $v0, $a2
|
||||
/* 47744 8006C344 A0430000 */ sb $v1, ($v0)
|
||||
.L8006C348:
|
||||
/* 47748 8006C348 8E230024 */ lw $v1, 0x24($s1)
|
||||
/* 4774C 8006C34C 00151400 */ sll $v0, $s5, 0x10
|
||||
/* 47750 8006C350 00021403 */ sra $v0, $v0, 0x10
|
||||
/* 47754 8006C354 0062102A */ slt $v0, $v1, $v0
|
||||
/* 47758 8006C358 54400001 */ bnel $v0, $zero, .L8006C360
|
||||
/* 4775C 8006C35C 0060A821 */ addu $s5, $v1, $zero
|
||||
.L8006C360:
|
||||
/* 47760 8006C360 00142C00 */ sll $a1, $s4, 0x10
|
||||
/* 47764 8006C364 00052C03 */ sra $a1, $a1, 0x10
|
||||
/* 47768 8006C368 02452821 */ addu $a1, $s2, $a1
|
||||
/* 4776C 8006C36C 8E220008 */ lw $v0, 8($s1)
|
||||
/* 47770 8006C370 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 47774 8006C374 00158400 */ sll $s0, $s5, 0x10
|
||||
/* 47778 8006C378 00108403 */ sra $s0, $s0, 0x10
|
||||
/* 4777C 8006C37C 02003021 */ addu $a2, $s0, $zero
|
||||
/* 47780 8006C380 0C01929D */ jal memcpy
|
||||
/* 47784 8006C384 00442021 */ addu $a0, $v0, $a0
|
||||
/* 47788 8006C388 8E220014 */ lw $v0, 0x14($s1)
|
||||
/* 4778C 8006C38C 8E230024 */ lw $v1, 0x24($s1)
|
||||
/* 47790 8006C390 00501021 */ addu $v0, $v0, $s0
|
||||
/* 47794 8006C394 00701823 */ subu $v1, $v1, $s0
|
||||
/* 47798 8006C398 AE220014 */ sw $v0, 0x14($s1)
|
||||
/* 4779C 8006C39C 0801B17B */ j .L8006C5EC
|
||||
/* 477A0 8006C3A0 AE230018 */ sw $v1, 0x18($s1)
|
||||
.L8006C3A4:
|
||||
/* 477A4 8006C3A4 00021603 */ sra $v0, $v0, 0x18
|
||||
/* 477A8 8006C3A8 38430067 */ xori $v1, $v0, 0x67
|
||||
/* 477AC 8006C3AC 2C640001 */ sltiu $a0, $v1, 1
|
||||
/* 477B0 8006C3B0 38420047 */ xori $v0, $v0, 0x47
|
||||
/* 477B4 8006C3B4 2C420001 */ sltiu $v0, $v0, 1
|
||||
/* 477B8 8006C3B8 00821025 */ or $v0, $a0, $v0
|
||||
/* 477BC 8006C3BC 1040000E */ beqz $v0, .L8006C3F8
|
||||
/* 477C0 8006C3C0 00151C00 */ sll $v1, $s5, 0x10
|
||||
/* 477C4 8006C3C4 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 477C8 8006C3C8 00031C03 */ sra $v1, $v1, 0x10
|
||||
/* 477CC 8006C3CC 0062102A */ slt $v0, $v1, $v0
|
||||
/* 477D0 8006C3D0 54400001 */ bnel $v0, $zero, .L8006C3D8
|
||||
/* 477D4 8006C3D4 AE230024 */ sw $v1, 0x24($s1)
|
||||
.L8006C3D8:
|
||||
/* 477D8 8006C3D8 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 477DC 8006C3DC 2442FFFF */ addiu $v0, $v0, -1
|
||||
/* 477E0 8006C3E0 04410002 */ bgez $v0, .L8006C3EC
|
||||
/* 477E4 8006C3E4 AE220024 */ sw $v0, 0x24($s1)
|
||||
/* 477E8 8006C3E8 AE200024 */ sw $zero, 0x24($s1)
|
||||
.L8006C3EC:
|
||||
/* 477EC 8006C3EC 00041023 */ negu $v0, $a0
|
||||
/* 477F0 8006C3F0 30420065 */ andi $v0, $v0, 0x65
|
||||
/* 477F4 8006C3F4 34530045 */ ori $s3, $v0, 0x45
|
||||
.L8006C3F8:
|
||||
/* 477F8 8006C3F8 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 477FC 8006C3FC 24820001 */ addiu $v0, $a0, 1
|
||||
/* 47800 8006C400 AE220014 */ sw $v0, 0x14($s1)
|
||||
/* 47804 8006C404 8E220008 */ lw $v0, 8($s1)
|
||||
/* 47808 8006C408 92430000 */ lbu $v1, ($s2)
|
||||
/* 4780C 8006C40C 00441021 */ addu $v0, $v0, $a0
|
||||
/* 47810 8006C410 A0430000 */ sb $v1, ($v0)
|
||||
/* 47814 8006C414 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 47818 8006C418 1C400005 */ bgtz $v0, .L8006C430
|
||||
/* 4781C 8006C41C 26520001 */ addiu $s2, $s2, 1
|
||||
/* 47820 8006C420 8E220030 */ lw $v0, 0x30($s1)
|
||||
/* 47824 8006C424 30420008 */ andi $v0, $v0, 8
|
||||
/* 47828 8006C428 10400008 */ beqz $v0, .L8006C44C
|
||||
/* 4782C 8006C42C 00000000 */ nop
|
||||
.L8006C430:
|
||||
/* 47830 8006C430 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 47834 8006C434 8E230008 */ lw $v1, 8($s1)
|
||||
/* 47838 8006C438 24820001 */ addiu $v0, $a0, 1
|
||||
/* 4783C 8006C43C 00641821 */ addu $v1, $v1, $a0
|
||||
/* 47840 8006C440 AE220014 */ sw $v0, 0x14($s1)
|
||||
/* 47844 8006C444 2402002E */ addiu $v0, $zero, 0x2e
|
||||
/* 47848 8006C448 A0620000 */ sb $v0, ($v1)
|
||||
.L8006C44C:
|
||||
/* 4784C 8006C44C 8E230024 */ lw $v1, 0x24($s1)
|
||||
/* 47850 8006C450 18600015 */ blez $v1, .L8006C4A8
|
||||
/* 47854 8006C454 26A2FFFF */ addiu $v0, $s5, -1
|
||||
/* 47858 8006C458 0040A821 */ addu $s5, $v0, $zero
|
||||
/* 4785C 8006C45C 00021400 */ sll $v0, $v0, 0x10
|
||||
/* 47860 8006C460 00021403 */ sra $v0, $v0, 0x10
|
||||
/* 47864 8006C464 0062102A */ slt $v0, $v1, $v0
|
||||
/* 47868 8006C468 54400001 */ bnel $v0, $zero, .L8006C470
|
||||
/* 4786C 8006C46C 0060A821 */ addu $s5, $v1, $zero
|
||||
.L8006C470:
|
||||
/* 47870 8006C470 02402821 */ addu $a1, $s2, $zero
|
||||
/* 47874 8006C474 8E220008 */ lw $v0, 8($s1)
|
||||
/* 47878 8006C478 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 4787C 8006C47C 00158400 */ sll $s0, $s5, 0x10
|
||||
/* 47880 8006C480 00108403 */ sra $s0, $s0, 0x10
|
||||
/* 47884 8006C484 02003021 */ addu $a2, $s0, $zero
|
||||
/* 47888 8006C488 0C01929D */ jal memcpy
|
||||
/* 4788C 8006C48C 00442021 */ addu $a0, $v0, $a0
|
||||
/* 47890 8006C490 8E220014 */ lw $v0, 0x14($s1)
|
||||
/* 47894 8006C494 8E230024 */ lw $v1, 0x24($s1)
|
||||
/* 47898 8006C498 00501021 */ addu $v0, $v0, $s0
|
||||
/* 4789C 8006C49C 00701823 */ subu $v1, $v1, $s0
|
||||
/* 478A0 8006C4A0 AE220014 */ sw $v0, 0x14($s1)
|
||||
/* 478A4 8006C4A4 AE230018 */ sw $v1, 0x18($s1)
|
||||
.L8006C4A8:
|
||||
/* 478A8 8006C4A8 8E220008 */ lw $v0, 8($s1)
|
||||
/* 478AC 8006C4AC 8E230014 */ lw $v1, 0x14($s1)
|
||||
/* 478B0 8006C4B0 00439021 */ addu $s2, $v0, $v1
|
||||
/* 478B4 8006C4B4 A2530000 */ sb $s3, ($s2)
|
||||
/* 478B8 8006C4B8 00141400 */ sll $v0, $s4, 0x10
|
||||
/* 478BC 8006C4BC 04400005 */ bltz $v0, .L8006C4D4
|
||||
/* 478C0 8006C4C0 26520001 */ addiu $s2, $s2, 1
|
||||
/* 478C4 8006C4C4 2402002B */ addiu $v0, $zero, 0x2b
|
||||
/* 478C8 8006C4C8 A2420000 */ sb $v0, ($s2)
|
||||
/* 478CC 8006C4CC 0801B139 */ j .L8006C4E4
|
||||
/* 478D0 8006C4D0 26520001 */ addiu $s2, $s2, 1
|
||||
.L8006C4D4:
|
||||
/* 478D4 8006C4D4 2402002D */ addiu $v0, $zero, 0x2d
|
||||
/* 478D8 8006C4D8 A2420000 */ sb $v0, ($s2)
|
||||
/* 478DC 8006C4DC 26520001 */ addiu $s2, $s2, 1
|
||||
/* 478E0 8006C4E0 0014A023 */ negu $s4, $s4
|
||||
.L8006C4E4:
|
||||
/* 478E4 8006C4E4 00142C00 */ sll $a1, $s4, 0x10
|
||||
/* 478E8 8006C4E8 00052403 */ sra $a0, $a1, 0x10
|
||||
/* 478EC 8006C4EC 28820064 */ slti $v0, $a0, 0x64
|
||||
/* 478F0 8006C4F0 14400027 */ bnez $v0, .L8006C590
|
||||
/* 478F4 8006C4F4 3C036666 */ lui $v1, 0x6666
|
||||
/* 478F8 8006C4F8 288203E8 */ slti $v0, $a0, 0x3e8
|
||||
/* 478FC 8006C4FC 14400012 */ bnez $v0, .L8006C548
|
||||
/* 47900 8006C500 3C0351EB */ lui $v1, 0x51eb
|
||||
/* 47904 8006C504 3C021062 */ lui $v0, 0x1062
|
||||
/* 47908 8006C508 34424DD3 */ ori $v0, $v0, 0x4dd3
|
||||
/* 4790C 8006C50C 00820018 */ mult $a0, $v0
|
||||
/* 47910 8006C510 000517C3 */ sra $v0, $a1, 0x1f
|
||||
/* 47914 8006C514 00004010 */ mfhi $t0
|
||||
/* 47918 8006C518 00081983 */ sra $v1, $t0, 6
|
||||
/* 4791C 8006C51C 00621823 */ subu $v1, $v1, $v0
|
||||
/* 47920 8006C520 24620030 */ addiu $v0, $v1, 0x30
|
||||
/* 47924 8006C524 A2420000 */ sb $v0, ($s2)
|
||||
/* 47928 8006C528 26520001 */ addiu $s2, $s2, 1
|
||||
/* 4792C 8006C52C 00031140 */ sll $v0, $v1, 5
|
||||
/* 47930 8006C530 00431023 */ subu $v0, $v0, $v1
|
||||
/* 47934 8006C534 00021080 */ sll $v0, $v0, 2
|
||||
/* 47938 8006C538 00431021 */ addu $v0, $v0, $v1
|
||||
/* 4793C 8006C53C 000210C0 */ sll $v0, $v0, 3
|
||||
/* 47940 8006C540 0082A023 */ subu $s4, $a0, $v0
|
||||
/* 47944 8006C544 3C0351EB */ lui $v1, 0x51eb
|
||||
.L8006C548:
|
||||
/* 47948 8006C548 3463851F */ ori $v1, $v1, 0x851f
|
||||
/* 4794C 8006C54C 00141400 */ sll $v0, $s4, 0x10
|
||||
/* 47950 8006C550 00022403 */ sra $a0, $v0, 0x10
|
||||
/* 47954 8006C554 00830018 */ mult $a0, $v1
|
||||
/* 47958 8006C558 000217C3 */ sra $v0, $v0, 0x1f
|
||||
/* 4795C 8006C55C 00004010 */ mfhi $t0
|
||||
/* 47960 8006C560 00081943 */ sra $v1, $t0, 5
|
||||
/* 47964 8006C564 00621823 */ subu $v1, $v1, $v0
|
||||
/* 47968 8006C568 24620030 */ addiu $v0, $v1, 0x30
|
||||
/* 4796C 8006C56C A2420000 */ sb $v0, ($s2)
|
||||
/* 47970 8006C570 26520001 */ addiu $s2, $s2, 1
|
||||
/* 47974 8006C574 00031040 */ sll $v0, $v1, 1
|
||||
/* 47978 8006C578 00431021 */ addu $v0, $v0, $v1
|
||||
/* 4797C 8006C57C 000210C0 */ sll $v0, $v0, 3
|
||||
/* 47980 8006C580 00431021 */ addu $v0, $v0, $v1
|
||||
/* 47984 8006C584 00021080 */ sll $v0, $v0, 2
|
||||
/* 47988 8006C588 0082A023 */ subu $s4, $a0, $v0
|
||||
/* 4798C 8006C58C 3C036666 */ lui $v1, 0x6666
|
||||
.L8006C590:
|
||||
/* 47990 8006C590 34636667 */ ori $v1, $v1, 0x6667
|
||||
/* 47994 8006C594 00141400 */ sll $v0, $s4, 0x10
|
||||
/* 47998 8006C598 00022403 */ sra $a0, $v0, 0x10
|
||||
/* 4799C 8006C59C 00830018 */ mult $a0, $v1
|
||||
/* 479A0 8006C5A0 000217C3 */ sra $v0, $v0, 0x1f
|
||||
/* 479A4 8006C5A4 00004010 */ mfhi $t0
|
||||
/* 479A8 8006C5A8 00081883 */ sra $v1, $t0, 2
|
||||
/* 479AC 8006C5AC 00621823 */ subu $v1, $v1, $v0
|
||||
/* 479B0 8006C5B0 24620030 */ addiu $v0, $v1, 0x30
|
||||
/* 479B4 8006C5B4 A2420000 */ sb $v0, ($s2)
|
||||
/* 479B8 8006C5B8 26520001 */ addiu $s2, $s2, 1
|
||||
/* 479BC 8006C5BC 00031080 */ sll $v0, $v1, 2
|
||||
/* 479C0 8006C5C0 00431021 */ addu $v0, $v0, $v1
|
||||
/* 479C4 8006C5C4 00021040 */ sll $v0, $v0, 1
|
||||
/* 479C8 8006C5C8 00822023 */ subu $a0, $a0, $v0
|
||||
/* 479CC 8006C5CC 24840030 */ addiu $a0, $a0, 0x30
|
||||
/* 479D0 8006C5D0 A2440000 */ sb $a0, ($s2)
|
||||
/* 479D4 8006C5D4 8E220008 */ lw $v0, 8($s1)
|
||||
/* 479D8 8006C5D8 8E230014 */ lw $v1, 0x14($s1)
|
||||
/* 479DC 8006C5DC 26520001 */ addiu $s2, $s2, 1
|
||||
/* 479E0 8006C5E0 00431021 */ addu $v0, $v0, $v1
|
||||
/* 479E4 8006C5E4 02421023 */ subu $v0, $s2, $v0
|
||||
/* 479E8 8006C5E8 AE22001C */ sw $v0, 0x1c($s1)
|
||||
.L8006C5EC:
|
||||
/* 479EC 8006C5EC 8E220030 */ lw $v0, 0x30($s1)
|
||||
/* 479F0 8006C5F0 24030010 */ addiu $v1, $zero, 0x10
|
||||
/* 479F4 8006C5F4 30420014 */ andi $v0, $v0, 0x14
|
||||
/* 479F8 8006C5F8 1443000F */ bne $v0, $v1, .L8006C638
|
||||
/* 479FC 8006C5FC 00000000 */ nop
|
||||
/* 47A00 8006C600 8E22000C */ lw $v0, 0xc($s1)
|
||||
/* 47A04 8006C604 8E230014 */ lw $v1, 0x14($s1)
|
||||
/* 47A08 8006C608 8E240018 */ lw $a0, 0x18($s1)
|
||||
/* 47A0C 8006C60C 00431021 */ addu $v0, $v0, $v1
|
||||
/* 47A10 8006C610 00441021 */ addu $v0, $v0, $a0
|
||||
/* 47A14 8006C614 8E23001C */ lw $v1, 0x1c($s1)
|
||||
/* 47A18 8006C618 8E240020 */ lw $a0, 0x20($s1)
|
||||
/* 47A1C 8006C61C 8E250028 */ lw $a1, 0x28($s1)
|
||||
/* 47A20 8006C620 00431021 */ addu $v0, $v0, $v1
|
||||
/* 47A24 8006C624 00441821 */ addu $v1, $v0, $a0
|
||||
/* 47A28 8006C628 0065102A */ slt $v0, $v1, $a1
|
||||
/* 47A2C 8006C62C 10400002 */ beqz $v0, .L8006C638
|
||||
/* 47A30 8006C630 00A31023 */ subu $v0, $a1, $v1
|
||||
/* 47A34 8006C634 AE220010 */ sw $v0, 0x10($s1)
|
||||
.L8006C638:
|
||||
/* 47A38 8006C638 8FBF0028 */ lw $ra, 0x28($sp)
|
||||
/* 47A3C 8006C63C 8FB50024 */ lw $s5, 0x24($sp)
|
||||
/* 47A40 8006C640 8FB40020 */ lw $s4, 0x20($sp)
|
||||
/* 47A44 8006C644 8FB3001C */ lw $s3, 0x1c($sp)
|
||||
/* 47A48 8006C648 8FB20018 */ lw $s2, 0x18($sp)
|
||||
/* 47A4C 8006C64C 8FB10014 */ lw $s1, 0x14($sp)
|
||||
/* 47A50 8006C650 8FB00010 */ lw $s0, 0x10($sp)
|
||||
/* 47A54 8006C654 03E00008 */ jr $ra
|
||||
/* 47A58 8006C658 27BD0030 */ addiu $sp, $sp, 0x30
|
||||
/* 47A5C 8006C65C 00000000 */ nop
|
@ -1,334 +0,0 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
|
||||
.section .rodata
|
||||
|
||||
dlabel D_80099DD0
|
||||
.word 0x40240000, 0x00000000, 0x40590000, 0x00000000, 0x40C38800, 0x00000000, 0x4197D784, 0x00000000, 0x4341C379, 0x37E08000, 0x4693B8B5, 0xB5056E17, 0x4D384F03, 0xE93FF9F5, 0x5A827748, 0xF9301D32, 0x75154FDD, 0x7F73BF3C
|
||||
|
||||
dlabel D_80099E18
|
||||
.word 0x4E614E00
|
||||
|
||||
dlabel D_80099E1C
|
||||
.word 0x496E6600
|
||||
|
||||
dlabel D_80099E20
|
||||
.double 1.0
|
||||
|
||||
dlabel D_80099E28
|
||||
.double 100000000.0
|
||||
|
||||
.section .text
|
||||
|
||||
glabel _Ldtob
|
||||
/* 46FD0 8006BBD0 27BDFF80 */ addiu $sp, $sp, -0x80
|
||||
/* 46FD4 8006BBD4 AFB30054 */ sw $s3, 0x54($sp)
|
||||
/* 46FD8 8006BBD8 00809821 */ addu $s3, $a0, $zero
|
||||
/* 46FDC 8006BBDC AFB1004C */ sw $s1, 0x4c($sp)
|
||||
/* 46FE0 8006BBE0 27B10018 */ addiu $s1, $sp, 0x18
|
||||
/* 46FE4 8006BBE4 AFBF0060 */ sw $ra, 0x60($sp)
|
||||
/* 46FE8 8006BBE8 AFB5005C */ sw $s5, 0x5c($sp)
|
||||
/* 46FEC 8006BBEC AFB40058 */ sw $s4, 0x58($sp)
|
||||
/* 46FF0 8006BBF0 AFB20050 */ sw $s2, 0x50($sp)
|
||||
/* 46FF4 8006BBF4 AFB00048 */ sw $s0, 0x48($sp)
|
||||
/* 46FF8 8006BBF8 F7B80078 */ sdc1 $f24, 0x78($sp)
|
||||
/* 46FFC 8006BBFC F7B60070 */ sdc1 $f22, 0x70($sp)
|
||||
/* 47000 8006BC00 F7B40068 */ sdc1 $f20, 0x68($sp)
|
||||
/* 47004 8006BC04 8E630024 */ lw $v1, 0x24($s3)
|
||||
/* 47008 8006BC08 D6740000 */ ldc1 $f20, ($s3)
|
||||
/* 4700C 8006BC0C 04610003 */ bgez $v1, .L8006BC1C
|
||||
/* 47010 8006BC10 00A0A821 */ addu $s5, $a1, $zero
|
||||
/* 47014 8006BC14 0801AF12 */ j .L8006BC48
|
||||
/* 47018 8006BC18 24020006 */ addiu $v0, $zero, 6
|
||||
.L8006BC1C:
|
||||
/* 4701C 8006BC1C 1460000C */ bnez $v1, .L8006BC50
|
||||
/* 47020 8006BC20 27A40038 */ addiu $a0, $sp, 0x38
|
||||
/* 47024 8006BC24 00051600 */ sll $v0, $a1, 0x18
|
||||
/* 47028 8006BC28 00021603 */ sra $v0, $v0, 0x18
|
||||
/* 4702C 8006BC2C 38430067 */ xori $v1, $v0, 0x67
|
||||
/* 47030 8006BC30 2C630001 */ sltiu $v1, $v1, 1
|
||||
/* 47034 8006BC34 38420047 */ xori $v0, $v0, 0x47
|
||||
/* 47038 8006BC38 2C420001 */ sltiu $v0, $v0, 1
|
||||
/* 4703C 8006BC3C 00621825 */ or $v1, $v1, $v0
|
||||
/* 47040 8006BC40 10600003 */ beqz $v1, .L8006BC50
|
||||
/* 47044 8006BC44 24020001 */ addiu $v0, $zero, 1
|
||||
.L8006BC48:
|
||||
/* 47048 8006BC48 AE620024 */ sw $v0, 0x24($s3)
|
||||
/* 4704C 8006BC4C 27A40038 */ addiu $a0, $sp, 0x38
|
||||
.L8006BC50:
|
||||
/* 47050 8006BC50 0C01B007 */ jal _Ldunscale
|
||||
/* 47054 8006BC54 02602821 */ addu $a1, $s3, $zero
|
||||
/* 47058 8006BC58 00021400 */ sll $v0, $v0, 0x10
|
||||
/* 4705C 8006BC5C 00021C03 */ sra $v1, $v0, 0x10
|
||||
/* 47060 8006BC60 18600010 */ blez $v1, .L8006BCA4
|
||||
/* 47064 8006BC64 24020002 */ addiu $v0, $zero, 2
|
||||
/* 47068 8006BC68 3C06800A */ lui $a2, %hi(D_80099E1C)
|
||||
/* 4706C 8006BC6C 24C69E1C */ addiu $a2, $a2, %lo(D_80099E1C)
|
||||
/* 47070 8006BC70 8E670008 */ lw $a3, 8($s3)
|
||||
/* 47074 8006BC74 14620003 */ bne $v1, $v0, .L8006BC84
|
||||
/* 47078 8006BC78 24020003 */ addiu $v0, $zero, 3
|
||||
/* 4707C 8006BC7C 3C06800A */ lui $a2, %hi(D_80099E18)
|
||||
/* 47080 8006BC80 24C69E18 */ addiu $a2, $a2, %lo(D_80099E18)
|
||||
.L8006BC84:
|
||||
/* 47084 8006BC84 AE620014 */ sw $v0, 0x14($s3)
|
||||
/* 47088 8006BC88 80C20000 */ lb $v0, ($a2)
|
||||
/* 4708C 8006BC8C 80C30001 */ lb $v1, 1($a2)
|
||||
/* 47090 8006BC90 80C40002 */ lb $a0, 2($a2)
|
||||
/* 47094 8006BC94 A0E20000 */ sb $v0, ($a3)
|
||||
/* 47098 8006BC98 A0E30001 */ sb $v1, 1($a3)
|
||||
/* 4709C 8006BC9C 0801AFFB */ j .L8006BFEC
|
||||
/* 470A0 8006BCA0 A0E40002 */ sb $a0, 2($a3)
|
||||
.L8006BCA4:
|
||||
/* 470A4 8006BCA4 14600003 */ bnez $v1, .L8006BCB4
|
||||
/* 470A8 8006BCA8 00003821 */ addu $a3, $zero, $zero
|
||||
/* 470AC 8006BCAC 0801AFF2 */ j .L8006BFC8
|
||||
/* 470B0 8006BCB0 A7A00038 */ sh $zero, 0x38($sp)
|
||||
.L8006BCB4:
|
||||
/* 470B4 8006BCB4 44800000 */ mtc1 $zero, $f0
|
||||
/* 470B8 8006BCB8 44800800 */ mtc1 $zero, $f1
|
||||
/* 470BC 8006BCBC 00000000 */ nop
|
||||
/* 470C0 8006BCC0 4620A03C */ c.lt.d $f20, $f0
|
||||
/* 470C4 8006BCC4 00000000 */ nop
|
||||
/* 470C8 8006BCC8 00000000 */ nop
|
||||
/* 470CC 8006BCCC 45030001 */ bc1tl .L8006BCD4
|
||||
/* 470D0 8006BCD0 4620A507 */ neg.d $f20, $f20
|
||||
.L8006BCD4:
|
||||
/* 470D4 8006BCD4 87A30038 */ lh $v1, 0x38($sp)
|
||||
/* 470D8 8006BCD8 24027597 */ addiu $v0, $zero, 0x7597
|
||||
/* 470DC 8006BCDC 00620018 */ mult $v1, $v0
|
||||
/* 470E0 8006BCE0 00001812 */ mflo $v1
|
||||
/* 470E4 8006BCE4 3C0214F8 */ lui $v0, 0x14f8
|
||||
/* 470E8 8006BCE8 3442B589 */ ori $v0, $v0, 0xb589
|
||||
/* 470EC 8006BCEC 00620018 */ mult $v1, $v0
|
||||
/* 470F0 8006BCF0 00031FC3 */ sra $v1, $v1, 0x1f
|
||||
/* 470F4 8006BCF4 00004010 */ mfhi $t0
|
||||
/* 470F8 8006BCF8 00081343 */ sra $v0, $t0, 0xd
|
||||
/* 470FC 8006BCFC 00431023 */ subu $v0, $v0, $v1
|
||||
/* 47100 8006BD00 2443FFFC */ addiu $v1, $v0, -4
|
||||
/* 47104 8006BD04 00031400 */ sll $v0, $v1, 0x10
|
||||
/* 47108 8006BD08 00021403 */ sra $v0, $v0, 0x10
|
||||
/* 4710C 8006BD0C 04410013 */ bgez $v0, .L8006BD5C
|
||||
/* 47110 8006BD10 A7A30038 */ sh $v1, 0x38($sp)
|
||||
/* 47114 8006BD14 00021023 */ negu $v0, $v0
|
||||
/* 47118 8006BD18 24420003 */ addiu $v0, $v0, 3
|
||||
/* 4711C 8006BD1C 2403FFFC */ addiu $v1, $zero, -4
|
||||
/* 47120 8006BD20 00431824 */ and $v1, $v0, $v1
|
||||
/* 47124 8006BD24 00031023 */ negu $v0, $v1
|
||||
/* 47128 8006BD28 1860001F */ blez $v1, .L8006BDA8
|
||||
/* 4712C 8006BD2C A7A20038 */ sh $v0, 0x38($sp)
|
||||
/* 47130 8006BD30 3C04800A */ lui $a0, %hi(D_80099DD0)
|
||||
/* 47134 8006BD34 24849DD0 */ addiu $a0, $a0, %lo(D_80099DD0)
|
||||
.L8006BD38:
|
||||
/* 47138 8006BD38 30620001 */ andi $v0, $v1, 1
|
||||
/* 4713C 8006BD3C 10400003 */ beqz $v0, .L8006BD4C
|
||||
/* 47140 8006BD40 00031843 */ sra $v1, $v1, 1
|
||||
/* 47144 8006BD44 D4800000 */ ldc1 $f0, ($a0)
|
||||
/* 47148 8006BD48 4620A502 */ mul.d $f20, $f20, $f0
|
||||
.L8006BD4C:
|
||||
/* 4714C 8006BD4C 1C60FFFA */ bgtz $v1, .L8006BD38
|
||||
/* 47150 8006BD50 24840008 */ addiu $a0, $a0, 8
|
||||
/* 47154 8006BD54 0801AF6A */ j .L8006BDA8
|
||||
/* 47158 8006BD58 00000000 */ nop
|
||||
.L8006BD5C:
|
||||
/* 4715C 8006BD5C 18400012 */ blez $v0, .L8006BDA8
|
||||
/* 47160 8006BD60 2402FFFC */ addiu $v0, $zero, -4
|
||||
/* 47164 8006BD64 3C01800A */ lui $at, %hi(D_80099E20)
|
||||
/* 47168 8006BD68 D4229E20 */ ldc1 $f2, %lo(D_80099E20)($at)
|
||||
/* 4716C 8006BD6C 00621024 */ and $v0, $v1, $v0
|
||||
/* 47170 8006BD70 00021C00 */ sll $v1, $v0, 0x10
|
||||
/* 47174 8006BD74 00031C03 */ sra $v1, $v1, 0x10
|
||||
/* 47178 8006BD78 1860000A */ blez $v1, .L8006BDA4
|
||||
/* 4717C 8006BD7C A7A20038 */ sh $v0, 0x38($sp)
|
||||
/* 47180 8006BD80 3C04800A */ lui $a0, %hi(D_80099DD0)
|
||||
/* 47184 8006BD84 24849DD0 */ addiu $a0, $a0, %lo(D_80099DD0)
|
||||
.L8006BD88:
|
||||
/* 47188 8006BD88 30620001 */ andi $v0, $v1, 1
|
||||
/* 4718C 8006BD8C 10400003 */ beqz $v0, .L8006BD9C
|
||||
/* 47190 8006BD90 00031843 */ sra $v1, $v1, 1
|
||||
/* 47194 8006BD94 D4800000 */ ldc1 $f0, ($a0)
|
||||
/* 47198 8006BD98 46201082 */ mul.d $f2, $f2, $f0
|
||||
.L8006BD9C:
|
||||
/* 4719C 8006BD9C 1C60FFFA */ bgtz $v1, .L8006BD88
|
||||
/* 471A0 8006BDA0 24840008 */ addiu $a0, $a0, 8
|
||||
.L8006BDA4:
|
||||
/* 471A4 8006BDA4 4622A503 */ div.d $f20, $f20, $f2
|
||||
.L8006BDA8:
|
||||
/* 471A8 8006BDA8 8E640024 */ lw $a0, 0x24($s3)
|
||||
/* 471AC 8006BDAC 00151600 */ sll $v0, $s5, 0x18
|
||||
/* 471B0 8006BDB0 00021603 */ sra $v0, $v0, 0x18
|
||||
/* 471B4 8006BDB4 24030066 */ addiu $v1, $zero, 0x66
|
||||
/* 471B8 8006BDB8 14430004 */ bne $v0, $v1, .L8006BDCC
|
||||
/* 471BC 8006BDBC 24920006 */ addiu $s2, $a0, 6
|
||||
/* 471C0 8006BDC0 87A30038 */ lh $v1, 0x38($sp)
|
||||
/* 471C4 8006BDC4 2482000A */ addiu $v0, $a0, 0xa
|
||||
/* 471C8 8006BDC8 00439021 */ addu $s2, $v0, $v1
|
||||
.L8006BDCC:
|
||||
/* 471CC 8006BDCC 2A420014 */ slti $v0, $s2, 0x14
|
||||
/* 471D0 8006BDD0 50400001 */ beql $v0, $zero, .L8006BDD8
|
||||
/* 471D4 8006BDD4 24120013 */ addiu $s2, $zero, 0x13
|
||||
.L8006BDD8:
|
||||
/* 471D8 8006BDD8 24020030 */ addiu $v0, $zero, 0x30
|
||||
/* 471DC 8006BDDC A2220000 */ sb $v0, ($s1)
|
||||
/* 471E0 8006BDE0 26310001 */ addiu $s1, $s1, 1
|
||||
/* 471E4 8006BDE4 4480C000 */ mtc1 $zero, $f24
|
||||
/* 471E8 8006BDE8 4480C800 */ mtc1 $zero, $f25
|
||||
/* 471EC 8006BDEC 3C01800A */ lui $at, %hi(D_80099E28)
|
||||
/* 471F0 8006BDF0 D4369E28 */ ldc1 $f22, %lo(D_80099E28)($at)
|
||||
/* 471F4 8006BDF4 24140030 */ addiu $s4, $zero, 0x30
|
||||
.L8006BDF8:
|
||||
/* 471F8 8006BDF8 4634C03C */ c.lt.d $f24, $f20
|
||||
/* 471FC 8006BDFC 24030001 */ addiu $v1, $zero, 1
|
||||
/* 47200 8006BE00 00000000 */ nop
|
||||
/* 47204 8006BE04 45010002 */ bc1t .L8006BE10
|
||||
/* 47208 8006BE08 0012102A */ slt $v0, $zero, $s2
|
||||
/* 4720C 8006BE0C 00001821 */ addu $v1, $zero, $zero
|
||||
.L8006BE10:
|
||||
/* 47210 8006BE10 00431024 */ and $v0, $v0, $v1
|
||||
/* 47214 8006BE14 10400021 */ beqz $v0, .L8006BE9C
|
||||
/* 47218 8006BE18 2652FFF8 */ addiu $s2, $s2, -8
|
||||
/* 4721C 8006BE1C 4620A00D */ trunc.w.d $f0, $f20
|
||||
/* 47220 8006BE20 44050000 */ mfc1 $a1, $f0
|
||||
/* 47224 8006BE24 00000000 */ nop
|
||||
/* 47228 8006BE28 1A400006 */ blez $s2, .L8006BE44
|
||||
/* 4722C 8006BE2C 26310008 */ addiu $s1, $s1, 8
|
||||
/* 47230 8006BE30 44850000 */ mtc1 $a1, $f0
|
||||
/* 47234 8006BE34 00000000 */ nop
|
||||
/* 47238 8006BE38 46800021 */ cvt.d.w $f0, $f0
|
||||
/* 4723C 8006BE3C 4620A001 */ sub.d $f0, $f20, $f0
|
||||
/* 47240 8006BE40 46360502 */ mul.d $f20, $f0, $f22
|
||||
.L8006BE44:
|
||||
/* 47244 8006BE44 18A00010 */ blez $a1, .L8006BE88
|
||||
/* 47248 8006BE48 24100008 */ addiu $s0, $zero, 8
|
||||
/* 4724C 8006BE4C 2610FFFF */ addiu $s0, $s0, -1
|
||||
.L8006BE50:
|
||||
/* 47250 8006BE50 0600000D */ bltz $s0, .L8006BE88
|
||||
/* 47254 8006BE54 27A40040 */ addiu $a0, $sp, 0x40
|
||||
/* 47258 8006BE58 0C01B588 */ jal ldiv
|
||||
/* 4725C 8006BE5C 2406000A */ addiu $a2, $zero, 0xa
|
||||
/* 47260 8006BE60 8FA20044 */ lw $v0, 0x44($sp)
|
||||
/* 47264 8006BE64 2631FFFF */ addiu $s1, $s1, -1
|
||||
/* 47268 8006BE68 24420030 */ addiu $v0, $v0, 0x30
|
||||
/* 4726C 8006BE6C A2220000 */ sb $v0, ($s1)
|
||||
/* 47270 8006BE70 8FA50040 */ lw $a1, 0x40($sp)
|
||||
/* 47274 8006BE74 1CA0FFF6 */ bgtz $a1, .L8006BE50
|
||||
/* 47278 8006BE78 2610FFFF */ addiu $s0, $s0, -1
|
||||
/* 4727C 8006BE7C 0801AFA3 */ j .L8006BE8C
|
||||
/* 47280 8006BE80 00000000 */ nop
|
||||
.L8006BE84:
|
||||
/* 47284 8006BE84 A2340000 */ sb $s4, ($s1)
|
||||
.L8006BE88:
|
||||
/* 47288 8006BE88 2610FFFF */ addiu $s0, $s0, -1
|
||||
.L8006BE8C:
|
||||
/* 4728C 8006BE8C 0603FFFD */ bgezl $s0, .L8006BE84
|
||||
/* 47290 8006BE90 2631FFFF */ addiu $s1, $s1, -1
|
||||
/* 47294 8006BE94 0801AF7E */ j .L8006BDF8
|
||||
/* 47298 8006BE98 26310008 */ addiu $s1, $s1, 8
|
||||
.L8006BE9C:
|
||||
/* 4729C 8006BE9C 2623FFFF */ addiu $v1, $s1, -1
|
||||
/* 472A0 8006BEA0 27A20018 */ addiu $v0, $sp, 0x18
|
||||
/* 472A4 8006BEA4 00629023 */ subu $s2, $v1, $v0
|
||||
/* 472A8 8006BEA8 97A20038 */ lhu $v0, 0x38($sp)
|
||||
/* 472AC 8006BEAC 83A30019 */ lb $v1, 0x19($sp)
|
||||
/* 472B0 8006BEB0 24420007 */ addiu $v0, $v0, 7
|
||||
/* 472B4 8006BEB4 A7A20038 */ sh $v0, 0x38($sp)
|
||||
/* 472B8 8006BEB8 24020030 */ addiu $v0, $zero, 0x30
|
||||
/* 472BC 8006BEBC 14620009 */ bne $v1, $v0, .L8006BEE4
|
||||
/* 472C0 8006BEC0 27B10019 */ addiu $s1, $sp, 0x19
|
||||
/* 472C4 8006BEC4 24030030 */ addiu $v1, $zero, 0x30
|
||||
.L8006BEC8:
|
||||
/* 472C8 8006BEC8 97A20038 */ lhu $v0, 0x38($sp)
|
||||
/* 472CC 8006BECC 26310001 */ addiu $s1, $s1, 1
|
||||
/* 472D0 8006BED0 2442FFFF */ addiu $v0, $v0, -1
|
||||
/* 472D4 8006BED4 A7A20038 */ sh $v0, 0x38($sp)
|
||||
/* 472D8 8006BED8 82220000 */ lb $v0, ($s1)
|
||||
/* 472DC 8006BEDC 1043FFFA */ beq $v0, $v1, .L8006BEC8
|
||||
/* 472E0 8006BEE0 2652FFFF */ addiu $s2, $s2, -1
|
||||
.L8006BEE4:
|
||||
/* 472E4 8006BEE4 8E650024 */ lw $a1, 0x24($s3)
|
||||
/* 472E8 8006BEE8 00151600 */ sll $v0, $s5, 0x18
|
||||
/* 472EC 8006BEEC 00022603 */ sra $a0, $v0, 0x18
|
||||
/* 472F0 8006BEF0 24020066 */ addiu $v0, $zero, 0x66
|
||||
/* 472F4 8006BEF4 14820005 */ bne $a0, $v0, .L8006BF0C
|
||||
/* 472F8 8006BEF8 38830065 */ xori $v1, $a0, 0x65
|
||||
/* 472FC 8006BEFC 87A30038 */ lh $v1, 0x38($sp)
|
||||
/* 47300 8006BF00 24A20001 */ addiu $v0, $a1, 1
|
||||
/* 47304 8006BF04 0801AFC8 */ j .L8006BF20
|
||||
/* 47308 8006BF08 00433821 */ addu $a3, $v0, $v1
|
||||
.L8006BF0C:
|
||||
/* 4730C 8006BF0C 2C630001 */ sltiu $v1, $v1, 1
|
||||
/* 47310 8006BF10 38820045 */ xori $v0, $a0, 0x45
|
||||
/* 47314 8006BF14 2C420001 */ sltiu $v0, $v0, 1
|
||||
/* 47318 8006BF18 00621825 */ or $v1, $v1, $v0
|
||||
/* 4731C 8006BF1C 00A33821 */ addu $a3, $a1, $v1
|
||||
.L8006BF20:
|
||||
/* 47320 8006BF20 00071400 */ sll $v0, $a3, 0x10
|
||||
/* 47324 8006BF24 00021403 */ sra $v0, $v0, 0x10
|
||||
/* 47328 8006BF28 0242102A */ slt $v0, $s2, $v0
|
||||
/* 4732C 8006BF2C 54400001 */ bnel $v0, $zero, .L8006BF34
|
||||
/* 47330 8006BF30 02403821 */ addu $a3, $s2, $zero
|
||||
.L8006BF34:
|
||||
/* 47334 8006BF34 00071400 */ sll $v0, $a3, 0x10
|
||||
/* 47338 8006BF38 00022403 */ sra $a0, $v0, 0x10
|
||||
/* 4733C 8006BF3C 18800022 */ blez $a0, .L8006BFC8
|
||||
/* 47340 8006BF40 0092102A */ slt $v0, $a0, $s2
|
||||
/* 47344 8006BF44 10400008 */ beqz $v0, .L8006BF68
|
||||
/* 47348 8006BF48 24030030 */ addiu $v1, $zero, 0x30
|
||||
/* 4734C 8006BF4C 02241021 */ addu $v0, $s1, $a0
|
||||
/* 47350 8006BF50 80420000 */ lb $v0, ($v0)
|
||||
/* 47354 8006BF54 28420035 */ slti $v0, $v0, 0x35
|
||||
/* 47358 8006BF58 38420001 */ xori $v0, $v0, 1
|
||||
/* 4735C 8006BF5C 00021023 */ negu $v0, $v0
|
||||
/* 47360 8006BF60 30420039 */ andi $v0, $v0, 0x39
|
||||
/* 47364 8006BF64 34430030 */ ori $v1, $v0, 0x30
|
||||
.L8006BF68:
|
||||
/* 47368 8006BF68 2485FFFF */ addiu $a1, $a0, -1
|
||||
/* 4736C 8006BF6C 02252021 */ addu $a0, $s1, $a1
|
||||
/* 47370 8006BF70 80820000 */ lb $v0, ($a0)
|
||||
/* 47374 8006BF74 54430008 */ bnel $v0, $v1, .L8006BF98
|
||||
/* 47378 8006BF78 24020039 */ addiu $v0, $zero, 0x39
|
||||
/* 4737C 8006BF7C 00403021 */ addu $a2, $v0, $zero
|
||||
.L8006BF80:
|
||||
/* 47380 8006BF80 2484FFFF */ addiu $a0, $a0, -1
|
||||
/* 47384 8006BF84 80820000 */ lb $v0, ($a0)
|
||||
/* 47388 8006BF88 24E7FFFF */ addiu $a3, $a3, -1
|
||||
/* 4738C 8006BF8C 1046FFFC */ beq $v0, $a2, .L8006BF80
|
||||
/* 47390 8006BF90 24A5FFFF */ addiu $a1, $a1, -1
|
||||
/* 47394 8006BF94 24020039 */ addiu $v0, $zero, 0x39
|
||||
.L8006BF98:
|
||||
/* 47398 8006BF98 14620004 */ bne $v1, $v0, .L8006BFAC
|
||||
/* 4739C 8006BF9C 02251821 */ addu $v1, $s1, $a1
|
||||
/* 473A0 8006BFA0 90620000 */ lbu $v0, ($v1)
|
||||
/* 473A4 8006BFA4 24420001 */ addiu $v0, $v0, 1
|
||||
/* 473A8 8006BFA8 A0620000 */ sb $v0, ($v1)
|
||||
.L8006BFAC:
|
||||
/* 473AC 8006BFAC 04A10007 */ bgez $a1, .L8006BFCC
|
||||
/* 473B0 8006BFB0 02602021 */ addu $a0, $s3, $zero
|
||||
/* 473B4 8006BFB4 97A20038 */ lhu $v0, 0x38($sp)
|
||||
/* 473B8 8006BFB8 2631FFFF */ addiu $s1, $s1, -1
|
||||
/* 473BC 8006BFBC 24E70001 */ addiu $a3, $a3, 1
|
||||
/* 473C0 8006BFC0 24420001 */ addiu $v0, $v0, 1
|
||||
/* 473C4 8006BFC4 A7A20038 */ sh $v0, 0x38($sp)
|
||||
.L8006BFC8:
|
||||
/* 473C8 8006BFC8 02602021 */ addu $a0, $s3, $zero
|
||||
.L8006BFCC:
|
||||
/* 473CC 8006BFCC 00152E00 */ sll $a1, $s5, 0x18
|
||||
/* 473D0 8006BFD0 87A20038 */ lh $v0, 0x38($sp)
|
||||
/* 473D4 8006BFD4 00052E03 */ sra $a1, $a1, 0x18
|
||||
/* 473D8 8006BFD8 02203021 */ addu $a2, $s1, $zero
|
||||
/* 473DC 8006BFDC 00073C00 */ sll $a3, $a3, 0x10
|
||||
/* 473E0 8006BFE0 00073C03 */ sra $a3, $a3, 0x10
|
||||
/* 473E4 8006BFE4 0C01B02D */ jal _Genld
|
||||
/* 473E8 8006BFE8 AFA20010 */ sw $v0, 0x10($sp)
|
||||
.L8006BFEC:
|
||||
/* 473EC 8006BFEC 8FBF0060 */ lw $ra, 0x60($sp)
|
||||
/* 473F0 8006BFF0 8FB5005C */ lw $s5, 0x5c($sp)
|
||||
/* 473F4 8006BFF4 8FB40058 */ lw $s4, 0x58($sp)
|
||||
/* 473F8 8006BFF8 8FB30054 */ lw $s3, 0x54($sp)
|
||||
/* 473FC 8006BFFC 8FB20050 */ lw $s2, 0x50($sp)
|
||||
/* 47400 8006C000 8FB1004C */ lw $s1, 0x4c($sp)
|
||||
/* 47404 8006C004 8FB00048 */ lw $s0, 0x48($sp)
|
||||
/* 47408 8006C008 D7B80078 */ ldc1 $f24, 0x78($sp)
|
||||
/* 4740C 8006C00C D7B60070 */ ldc1 $f22, 0x70($sp)
|
||||
/* 47410 8006C010 D7B40068 */ ldc1 $f20, 0x68($sp)
|
||||
/* 47414 8006C014 03E00008 */ jr $ra
|
||||
/* 47418 8006C018 27BD0080 */ addiu $sp, $sp, 0x80
|
@ -1,46 +0,0 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
|
||||
glabel _Ldunscale
|
||||
/* 4741C 8006C01C 94A30000 */ lhu $v1, ($a1)
|
||||
/* 47420 8006C020 30627FF0 */ andi $v0, $v1, 0x7ff0
|
||||
/* 47424 8006C024 00023902 */ srl $a3, $v0, 4
|
||||
/* 47428 8006C028 00E03021 */ addu $a2, $a3, $zero
|
||||
/* 4742C 8006C02C 240207FF */ addiu $v0, $zero, 0x7ff
|
||||
/* 47430 8006C030 14C20011 */ bne $a2, $v0, .L8006C078
|
||||
/* 47434 8006C034 00A04021 */ addu $t0, $a1, $zero
|
||||
/* 47438 8006C038 A4800000 */ sh $zero, ($a0)
|
||||
/* 4743C 8006C03C 94A20000 */ lhu $v0, ($a1)
|
||||
/* 47440 8006C040 3042000F */ andi $v0, $v0, 0xf
|
||||
/* 47444 8006C044 14400019 */ bnez $v0, .L8006C0AC
|
||||
/* 47448 8006C048 24020002 */ addiu $v0, $zero, 2
|
||||
/* 4744C 8006C04C 94A20002 */ lhu $v0, 2($a1)
|
||||
/* 47450 8006C050 14400016 */ bnez $v0, .L8006C0AC
|
||||
/* 47454 8006C054 24020002 */ addiu $v0, $zero, 2
|
||||
/* 47458 8006C058 94A20004 */ lhu $v0, 4($a1)
|
||||
/* 4745C 8006C05C 14400013 */ bnez $v0, .L8006C0AC
|
||||
/* 47460 8006C060 24020002 */ addiu $v0, $zero, 2
|
||||
/* 47464 8006C064 94A20006 */ lhu $v0, 6($a1)
|
||||
/* 47468 8006C068 14400010 */ bnez $v0, .L8006C0AC
|
||||
/* 4746C 8006C06C 24020002 */ addiu $v0, $zero, 2
|
||||
/* 47470 8006C070 0801B02B */ j .L8006C0AC
|
||||
/* 47474 8006C074 24020001 */ addiu $v0, $zero, 1
|
||||
.L8006C078:
|
||||
/* 47478 8006C078 18C00007 */ blez $a2, .L8006C098
|
||||
/* 4747C 8006C07C 2402FFFF */ addiu $v0, $zero, -1
|
||||
/* 47480 8006C080 3063800F */ andi $v1, $v1, 0x800f
|
||||
/* 47484 8006C084 34633FF0 */ ori $v1, $v1, 0x3ff0
|
||||
/* 47488 8006C088 A5030000 */ sh $v1, ($t0)
|
||||
/* 4748C 8006C08C 24E3FC02 */ addiu $v1, $a3, -0x3fe
|
||||
/* 47490 8006C090 0801B02B */ j .L8006C0AC
|
||||
/* 47494 8006C094 A4830000 */ sh $v1, ($a0)
|
||||
.L8006C098:
|
||||
/* 47498 8006C098 04C00003 */ bltz $a2, .L8006C0A8
|
||||
/* 4749C 8006C09C 00001021 */ addu $v0, $zero, $zero
|
||||
/* 474A0 8006C0A0 0801B02B */ j .L8006C0AC
|
||||
/* 474A4 8006C0A4 A4800000 */ sh $zero, ($a0)
|
||||
.L8006C0A8:
|
||||
/* 474A8 8006C0A8 24020002 */ addiu $v0, $zero, 2
|
||||
.L8006C0AC:
|
||||
/* 474AC 8006C0AC 03E00008 */ jr $ra
|
||||
/* 474B0 8006C0B0 00000000 */ nop
|
@ -1,164 +0,0 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
|
||||
glabel _Litob
|
||||
/* 46D80 8006B980 27BDFFA0 */ addiu $sp, $sp, -0x60
|
||||
/* 46D84 8006B984 AFB10044 */ sw $s1, 0x44($sp)
|
||||
/* 46D88 8006B988 00808821 */ addu $s1, $a0, $zero
|
||||
/* 46D8C 8006B98C AFB60058 */ sw $s6, 0x58($sp)
|
||||
/* 46D90 8006B990 3C168009 */ lui $s6, %hi(D_80095940)
|
||||
/* 46D94 8006B994 26D65940 */ addiu $s6, $s6, %lo(D_80095940)
|
||||
/* 46D98 8006B998 00A02021 */ addu $a0, $a1, $zero
|
||||
/* 46D9C 8006B99C 00052E00 */ sll $a1, $a1, 0x18
|
||||
/* 46DA0 8006B9A0 00052E03 */ sra $a1, $a1, 0x18
|
||||
/* 46DA4 8006B9A4 24020058 */ addiu $v0, $zero, 0x58
|
||||
/* 46DA8 8006B9A8 AFBF005C */ sw $ra, 0x5c($sp)
|
||||
/* 46DAC 8006B9AC AFB50054 */ sw $s5, 0x54($sp)
|
||||
/* 46DB0 8006B9B0 AFB40050 */ sw $s4, 0x50($sp)
|
||||
/* 46DB4 8006B9B4 AFB3004C */ sw $s3, 0x4c($sp)
|
||||
/* 46DB8 8006B9B8 AFB20048 */ sw $s2, 0x48($sp)
|
||||
/* 46DBC 8006B9BC 14A20003 */ bne $a1, $v0, .L8006B9CC
|
||||
/* 46DC0 8006B9C0 AFB00040 */ sw $s0, 0x40($sp)
|
||||
/* 46DC4 8006B9C4 3C168009 */ lui $s6, %hi(D_80095954)
|
||||
/* 46DC8 8006B9C8 26D65954 */ addiu $s6, $s6, %lo(D_80095954)
|
||||
.L8006B9CC:
|
||||
/* 46DCC 8006B9CC 2402006F */ addiu $v0, $zero, 0x6f
|
||||
/* 46DD0 8006B9D0 10A20009 */ beq $a1, $v0, .L8006B9F8
|
||||
/* 46DD4 8006B9D4 38A30078 */ xori $v1, $a1, 0x78
|
||||
/* 46DD8 8006B9D8 0003182B */ sltu $v1, $zero, $v1
|
||||
/* 46DDC 8006B9DC 38A20058 */ xori $v0, $a1, 0x58
|
||||
/* 46DE0 8006B9E0 0002102B */ sltu $v0, $zero, $v0
|
||||
/* 46DE4 8006B9E4 00621824 */ and $v1, $v1, $v0
|
||||
/* 46DE8 8006B9E8 10600004 */ beqz $v1, .L8006B9FC
|
||||
/* 46DEC 8006B9EC 24130010 */ addiu $s3, $zero, 0x10
|
||||
/* 46DF0 8006B9F0 0801AE7F */ j .L8006B9FC
|
||||
/* 46DF4 8006B9F4 2413000A */ addiu $s3, $zero, 0xa
|
||||
.L8006B9F8:
|
||||
/* 46DF8 8006B9F8 24130008 */ addiu $s3, $zero, 8
|
||||
.L8006B9FC:
|
||||
/* 46DFC 8006B9FC 8E340000 */ lw $s4, ($s1)
|
||||
/* 46E00 8006BA00 8E350004 */ lw $s5, 4($s1)
|
||||
/* 46E04 8006BA04 00041600 */ sll $v0, $a0, 0x18
|
||||
/* 46E08 8006BA08 00021603 */ sra $v0, $v0, 0x18
|
||||
/* 46E0C 8006BA0C 38430064 */ xori $v1, $v0, 0x64
|
||||
/* 46E10 8006BA10 2C630001 */ sltiu $v1, $v1, 1
|
||||
/* 46E14 8006BA14 38420069 */ xori $v0, $v0, 0x69
|
||||
/* 46E18 8006BA18 2C420001 */ sltiu $v0, $v0, 1
|
||||
/* 46E1C 8006BA1C 00621825 */ or $v1, $v1, $v0
|
||||
/* 46E20 8006BA20 10600008 */ beqz $v1, .L8006BA44
|
||||
/* 46E24 8006BA24 24120018 */ addiu $s2, $zero, 0x18
|
||||
/* 46E28 8006BA28 8E220000 */ lw $v0, ($s1)
|
||||
/* 46E2C 8006BA2C 04410005 */ bgez $v0, .L8006BA44
|
||||
/* 46E30 8006BA30 00000000 */ nop
|
||||
/* 46E34 8006BA34 0015A823 */ negu $s5, $s5
|
||||
/* 46E38 8006BA38 0014A023 */ negu $s4, $s4
|
||||
/* 46E3C 8006BA3C 0015102B */ sltu $v0, $zero, $s5
|
||||
/* 46E40 8006BA40 0282A023 */ subu $s4, $s4, $v0
|
||||
.L8006BA44:
|
||||
/* 46E44 8006BA44 56800007 */ bnel $s4, $zero, .L8006BA64
|
||||
/* 46E48 8006BA48 2652FFFF */ addiu $s2, $s2, -1
|
||||
/* 46E4C 8006BA4C 56A00005 */ bnel $s5, $zero, .L8006BA64
|
||||
/* 46E50 8006BA50 2652FFFF */ addiu $s2, $s2, -1
|
||||
/* 46E54 8006BA54 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 46E58 8006BA58 1040000D */ beqz $v0, .L8006BA90
|
||||
/* 46E5C 8006BA5C 02603821 */ addu $a3, $s3, $zero
|
||||
/* 46E60 8006BA60 2652FFFF */ addiu $s2, $s2, -1
|
||||
.L8006BA64:
|
||||
/* 46E64 8006BA64 02603821 */ addu $a3, $s3, $zero
|
||||
/* 46E68 8006BA68 00003021 */ addu $a2, $zero, $zero
|
||||
/* 46E6C 8006BA6C 02802021 */ addu $a0, $s4, $zero
|
||||
/* 46E70 8006BA70 02A02821 */ addu $a1, $s5, $zero
|
||||
/* 46E74 8006BA74 27B00018 */ addiu $s0, $sp, 0x18
|
||||
/* 46E78 8006BA78 0C01BA1C */ jal __umoddi3
|
||||
/* 46E7C 8006BA7C 02128021 */ addu $s0, $s0, $s2
|
||||
/* 46E80 8006BA80 02C31021 */ addu $v0, $s6, $v1
|
||||
/* 46E84 8006BA84 90420000 */ lbu $v0, ($v0)
|
||||
/* 46E88 8006BA88 A2020000 */ sb $v0, ($s0)
|
||||
/* 46E8C 8006BA8C 02603821 */ addu $a3, $s3, $zero
|
||||
.L8006BA90:
|
||||
/* 46E90 8006BA90 00003021 */ addu $a2, $zero, $zero
|
||||
/* 46E94 8006BA94 02802021 */ addu $a0, $s4, $zero
|
||||
/* 46E98 8006BA98 0C01B8C4 */ jal __udivdi3
|
||||
/* 46E9C 8006BA9C 02A02821 */ addu $a1, $s5, $zero
|
||||
/* 46EA0 8006BAA0 AE220000 */ sw $v0, ($s1)
|
||||
/* 46EA4 8006BAA4 AE230004 */ sw $v1, 4($s1)
|
||||
/* 46EA8 8006BAA8 27A20018 */ addiu $v0, $sp, 0x18
|
||||
/* 46EAC 8006BAAC 02428021 */ addu $s0, $s2, $v0
|
||||
.L8006BAB0:
|
||||
/* 46EB0 8006BAB0 8E220000 */ lw $v0, ($s1)
|
||||
/* 46EB4 8006BAB4 1C400006 */ bgtz $v0, .L8006BAD0
|
||||
/* 46EB8 8006BAB8 00001821 */ addu $v1, $zero, $zero
|
||||
/* 46EBC 8006BABC 14400006 */ bnez $v0, .L8006BAD8
|
||||
/* 46EC0 8006BAC0 0012102A */ slt $v0, $zero, $s2
|
||||
/* 46EC4 8006BAC4 8E220004 */ lw $v0, 4($s1)
|
||||
/* 46EC8 8006BAC8 10400003 */ beqz $v0, .L8006BAD8
|
||||
/* 46ECC 8006BACC 0012102A */ slt $v0, $zero, $s2
|
||||
.L8006BAD0:
|
||||
/* 46ED0 8006BAD0 24030001 */ addiu $v1, $zero, 1
|
||||
/* 46ED4 8006BAD4 0012102A */ slt $v0, $zero, $s2
|
||||
.L8006BAD8:
|
||||
/* 46ED8 8006BAD8 00621024 */ and $v0, $v1, $v0
|
||||
/* 46EDC 8006BADC 10400014 */ beqz $v0, .L8006BB30
|
||||
/* 46EE0 8006BAE0 02601821 */ addu $v1, $s3, $zero
|
||||
/* 46EE4 8006BAE4 8E260000 */ lw $a2, ($s1)
|
||||
/* 46EE8 8006BAE8 8E270004 */ lw $a3, 4($s1)
|
||||
/* 46EEC 8006BAEC 001317C3 */ sra $v0, $s3, 0x1f
|
||||
/* 46EF0 8006BAF0 AFA20010 */ sw $v0, 0x10($sp)
|
||||
/* 46EF4 8006BAF4 AFA30014 */ sw $v1, 0x14($sp)
|
||||
/* 46EF8 8006BAF8 0C01B5A9 */ jal lldiv
|
||||
/* 46EFC 8006BAFC 27A40030 */ addiu $a0, $sp, 0x30
|
||||
/* 46F00 8006BB00 8FA20030 */ lw $v0, 0x30($sp)
|
||||
/* 46F04 8006BB04 8FA30034 */ lw $v1, 0x34($sp)
|
||||
/* 46F08 8006BB08 AE220000 */ sw $v0, ($s1)
|
||||
/* 46F0C 8006BB0C AE230004 */ sw $v1, 4($s1)
|
||||
/* 46F10 8006BB10 8FA20038 */ lw $v0, 0x38($sp)
|
||||
/* 46F14 8006BB14 8FA3003C */ lw $v1, 0x3c($sp)
|
||||
/* 46F18 8006BB18 02C31021 */ addu $v0, $s6, $v1
|
||||
/* 46F1C 8006BB1C 90420000 */ lbu $v0, ($v0)
|
||||
/* 46F20 8006BB20 2610FFFF */ addiu $s0, $s0, -1
|
||||
/* 46F24 8006BB24 2652FFFF */ addiu $s2, $s2, -1
|
||||
/* 46F28 8006BB28 0801AEAC */ j .L8006BAB0
|
||||
/* 46F2C 8006BB2C A2020000 */ sb $v0, ($s0)
|
||||
.L8006BB30:
|
||||
/* 46F30 8006BB30 8E240008 */ lw $a0, 8($s1)
|
||||
/* 46F34 8006BB34 27A50018 */ addiu $a1, $sp, 0x18
|
||||
/* 46F38 8006BB38 00B22821 */ addu $a1, $a1, $s2
|
||||
/* 46F3C 8006BB3C 24060018 */ addiu $a2, $zero, 0x18
|
||||
/* 46F40 8006BB40 00D23023 */ subu $a2, $a2, $s2
|
||||
/* 46F44 8006BB44 0C01929D */ jal memcpy
|
||||
/* 46F48 8006BB48 AE260014 */ sw $a2, 0x14($s1)
|
||||
/* 46F4C 8006BB4C 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 46F50 8006BB50 8E230024 */ lw $v1, 0x24($s1)
|
||||
/* 46F54 8006BB54 0083102A */ slt $v0, $a0, $v1
|
||||
/* 46F58 8006BB58 10400002 */ beqz $v0, .L8006BB64
|
||||
/* 46F5C 8006BB5C 00641023 */ subu $v0, $v1, $a0
|
||||
/* 46F60 8006BB60 AE220010 */ sw $v0, 0x10($s1)
|
||||
.L8006BB64:
|
||||
/* 46F64 8006BB64 8E220024 */ lw $v0, 0x24($s1)
|
||||
/* 46F68 8006BB68 0441000F */ bgez $v0, .L8006BBA8
|
||||
/* 46F6C 8006BB6C 24030010 */ addiu $v1, $zero, 0x10
|
||||
/* 46F70 8006BB70 8E220030 */ lw $v0, 0x30($s1)
|
||||
/* 46F74 8006BB74 30420014 */ andi $v0, $v0, 0x14
|
||||
/* 46F78 8006BB78 1443000B */ bne $v0, $v1, .L8006BBA8
|
||||
/* 46F7C 8006BB7C 00000000 */ nop
|
||||
/* 46F80 8006BB80 8E220028 */ lw $v0, 0x28($s1)
|
||||
/* 46F84 8006BB84 8E23000C */ lw $v1, 0xc($s1)
|
||||
/* 46F88 8006BB88 8E250010 */ lw $a1, 0x10($s1)
|
||||
/* 46F8C 8006BB8C 8E240014 */ lw $a0, 0x14($s1)
|
||||
/* 46F90 8006BB90 00431023 */ subu $v0, $v0, $v1
|
||||
/* 46F94 8006BB94 00451023 */ subu $v0, $v0, $a1
|
||||
/* 46F98 8006BB98 00449023 */ subu $s2, $v0, $a0
|
||||
/* 46F9C 8006BB9C 1A400002 */ blez $s2, .L8006BBA8
|
||||
/* 46FA0 8006BBA0 00B21021 */ addu $v0, $a1, $s2
|
||||
/* 46FA4 8006BBA4 AE220010 */ sw $v0, 0x10($s1)
|
||||
.L8006BBA8:
|
||||
/* 46FA8 8006BBA8 8FBF005C */ lw $ra, 0x5c($sp)
|
||||
/* 46FAC 8006BBAC 8FB60058 */ lw $s6, 0x58($sp)
|
||||
/* 46FB0 8006BBB0 8FB50054 */ lw $s5, 0x54($sp)
|
||||
/* 46FB4 8006BBB4 8FB40050 */ lw $s4, 0x50($sp)
|
||||
/* 46FB8 8006BBB8 8FB3004C */ lw $s3, 0x4c($sp)
|
||||
/* 46FBC 8006BBBC 8FB20048 */ lw $s2, 0x48($sp)
|
||||
/* 46FC0 8006BBC0 8FB10044 */ lw $s1, 0x44($sp)
|
||||
/* 46FC4 8006BBC4 8FB00040 */ lw $s0, 0x40($sp)
|
||||
/* 46FC8 8006BBC8 03E00008 */ jr $ra
|
||||
/* 46FCC 8006BBCC 27BD0060 */ addiu $sp, $sp, 0x60
|
@ -235,7 +235,7 @@ segments:
|
||||
- [0x457C0, c, os/contramwrite, gcc_272 -O3]
|
||||
- [0x459D0, hasm, os/parameters] # Needs actual symbols added
|
||||
- [0x45A30, c, os/afterprenmi, gcc_272 -O3]
|
||||
- [0x45A50, c, os/initialize]
|
||||
- [0x45A50, c, os/initialize, gcc_272 -O3]
|
||||
- [0x45DF0, hasm, os/exceptasm]
|
||||
- [0x46760, hasm, os/__osDisableInt]
|
||||
- [0x467D0, hasm, os/__osRestoreInt]
|
||||
@ -247,8 +247,8 @@ segments:
|
||||
- [0x46AE0, c, os/epirawwrite, gcc_272 -O3]
|
||||
- [0x46C50, c, os/ai, gcc_272 -O3]
|
||||
- [0x46C70, hasm, os/bcmp]
|
||||
- [0x46D80, c, os/xlitob]
|
||||
- [0x46FD0, c, os/xldtob]
|
||||
- [0x46D80, c, os/xlitob, gcc_272 -O3]
|
||||
- [0x46FD0, c, os/xldtob, gcc_272 -O3]
|
||||
- [0x47A60, hasm, os/__osGetCause]
|
||||
- [0x47A70, hasm, os/__osGetSR]
|
||||
- [0x47A80, hasm, os/__osSetCompare]
|
||||
@ -265,7 +265,7 @@ segments:
|
||||
- [0x47C60, c, os/crc, gcc_272 -O3]
|
||||
- [0x47D50, c, os/destroythread, gcc_272 -O3]
|
||||
- [0x47E30, hasm, os/osMapTLBRdb]
|
||||
- [0x47E90, c, os/vi]
|
||||
- [0x47E90, c, os/vi, gcc_272 -O3]
|
||||
- [0x47FA0, c, os/vigetcurrcontext, gcc_272 -O3]
|
||||
- [0x47FB0, hasm, os/padding]
|
||||
- [0x47FC0, hasm, os/guNormalize]
|
||||
@ -359,7 +359,12 @@ segments:
|
||||
- [0x6FA70, .data, os/timerintr] # libultra data
|
||||
- [auto, .data, os/vimgr]
|
||||
- [auto, .data, os/vitbl]
|
||||
- [0x70C20, data, 70C20]
|
||||
- [auto, .data, os/guRotate]
|
||||
- [auto, .data, os/contpfs]
|
||||
- [auto, .data, os/contramread]
|
||||
- [auto, .data, os/initialize]
|
||||
- [auto, .data, os/xlitob]
|
||||
- [auto, .data, os/vi]
|
||||
- [0x70E30, .data, battle/battle]
|
||||
- [0x71430, bin, gspF3DEX2kawase_fifo_text]
|
||||
- [0x72A60, bin, gspF3DEX2kawase_fifo_data]
|
||||
|
@ -2437,8 +2437,8 @@ __osRunQueue = 0x80094658; // type:data rom:0x6FA58
|
||||
__osActiveQueue = 0x8009465C; // type:data rom:0x6FA5C
|
||||
__osRunningThread = 0x80094660; // type:data rom:0x6FA60
|
||||
osViModeTable = 0x800946A0; // rom:0x6FAA0
|
||||
_osViModeNtscLan1 = 0x80095820; // type:data rom:0x70C20
|
||||
_osViModeMPalLan1 = 0x80095870; // type:data rom:0x70C70
|
||||
osViModeNtscLan1 = 0x80095820; // type:data rom:0x70C20
|
||||
osViModeMpalLan1 = 0x80095870; // type:data rom:0x70C70
|
||||
gBattleAreas = 0x80095A30; // type:data rom:0x70E30 size:0x600
|
||||
D_80097D30 = 0x80097D30; // type:data rom:0x73130
|
||||
D_80097DC8 = 0x80097DC8; // type:data rom:0x731C8
|
||||
@ -2590,7 +2590,7 @@ gOverrideFlags = 0x8009A650; // type:data rom:0x75A50
|
||||
D_8009A654 = 0x8009A654; // type:data rom:0x75A54
|
||||
nuGfxCfb = 0x8009A658; // type:data rom:0x75A58
|
||||
D_8009A65C = 0x8009A65C; // type:data rom:0x75A5C
|
||||
D_8009A660 = 0x8009A660; // type:data rom:0x75A60
|
||||
__osFinalrom = 0x8009A660; // type:data rom:0x75A60
|
||||
gBGMPlayerA = 0x8009A664; // type:data rom:0x75A64
|
||||
D_8009A668 = 0x8009A668; // type:data rom:0x75A68
|
||||
gMasterGfxPos = 0x8009A66C; // rom:0x75A6C
|
||||
@ -25715,9 +25715,9 @@ obfuscated_general_heap_create = 0x7012BC11; // type:data
|
||||
D_7599F6D8 = 0x7599F6D8; // type:data
|
||||
osTvType = 0x80000300; //
|
||||
osRomBase = 0x80000308; // type:data
|
||||
D_8000030C = 0x8000030C; // type:data
|
||||
osResetType = 0x8000030C; // type:data
|
||||
osMemSize = 0x80000318; // type:data
|
||||
D_8000031C = 0x8000031C; // type:data
|
||||
osAppNMIBuffer = 0x8000031C; // type:data
|
||||
obfuscated_load_engine_data = 0x80026AC7; // type:data
|
||||
dead_atan2 = 0x8002AF70; // type:data
|
||||
obfuscated_create_audio_system = 0x8004AA85; // type:data
|
||||
|
@ -26,6 +26,9 @@ D_F0000008 = 0xF0000008;
|
||||
D_F5000007 = 0xF5000007;
|
||||
D_FA000028 = 0xFA000028;
|
||||
D_FD100008 = 0xFD100008;
|
||||
__osExceptionPreamble = 0x8006A9F0;
|
||||
D_80095910 = 0x80095910;
|
||||
D_80095938 = 0x80095938;
|
||||
|
||||
// Obfuscation symbols
|
||||
obfuscated_battle_heap_create = battle_heap_create - 0xFEFFFFF;
|
||||
@ -189,8 +192,8 @@ osRomBase = 0x80000308;
|
||||
osMemSize = 0x80000318;
|
||||
gBackgroundImage = 0x80200000;
|
||||
D_80200000 = 0x80200000;
|
||||
D_8000030C = 0x8000030C;
|
||||
D_8000031C = 0x8000031C;
|
||||
osResetType = 0x8000030C;
|
||||
osAppNMIBuffer = 0x8000031C;
|
||||
D_800A08C0 = 0x800A08C0;
|
||||
|
||||
// effect tlb stuff
|
||||
|
Loading…
Reference in New Issue
Block a user