Merge branch 'main' into main

This commit is contained in:
CreateSource 2025-01-15 19:54:23 -05:00 committed by GitHub
commit eb91e8162a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
234 changed files with 47605 additions and 9728 deletions

View file

@ -0,0 +1,55 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h"
#include "stddef.h"
#include "PowerPC_EABI_Support/Runtime/NMWException.h"
void _ExitProcess();
extern void (*_dtors[])(void);
int __aborting = 0;
static void (*atexit_funcs[64])(void);
static int atexit_curr_func = 0;
static void (*__atexit_funcs[64])(void);
static int __atexit_curr_func = 0;
void (*__stdio_exit)(void) = 0;
void (*__console_exit)(void) = 0;
void abort(void)
{
// TODO
}
void exit(int status)
{
int i;
void (**dtor)(void);
if (!__aborting) {
__destroy_global_chain();
dtor = _dtors;
while (*dtor != NULL) {
(*dtor)();
dtor++;
}
if (__stdio_exit != NULL) {
__stdio_exit();
__stdio_exit = NULL;
}
}
while (__atexit_curr_func > 0)
__atexit_funcs[--__atexit_curr_func]();
if (__console_exit != NULL) {
__console_exit();
__console_exit = NULL;
}
_ExitProcess();
}

View file

@ -0,0 +1,95 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h"
extern files __files = {
{
0,
0,
1,
0,
2,
0,
0,
0,
0,
0,
0,
0,
0,
{ 0, 0 },
{ 0, 0 },
0,
(unsigned char*)&__files._stdin.char_buffer,
1,
(unsigned char*)&__files._stdin.char_buffer,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
},
{
0,
0,
2,
0,
2,
0,
0,
0,
0,
0,
0,
0,
0,
{ 0, 0 },
{ 0, 0 },
0,
(unsigned char*)&__files._stdout.char_buffer,
1,
(unsigned char*)&__files._stdout.char_buffer,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
},
{
0,
0,
2,
0,
2,
0,
0,
0,
0,
0,
0,
0,
0,
{ 0, 0 },
{ 0, 0 },
0,
(unsigned char*)&__files._stderr.char_buffer,
1,
(unsigned char*)&__files._stderr.char_buffer,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
},
};

View file

@ -0,0 +1,41 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h"
void __prep_buffer(FILE* file)
{
file->buffer_ptr = file->buffer;
file->buffer_length = file->buffer_size;
file->buffer_length -= file->position & file->buffer_alignment;
file->buffer_position = file->position;
}
void __convert_from_newlines(unsigned char* p, size_t* n) { }
int __flush_buffer(FILE* file, size_t* bytes_flushed)
{
size_t buffer_len;
int ioresult;
buffer_len = file->buffer_ptr - file->buffer;
if (buffer_len) {
file->buffer_length = buffer_len;
if (!file->file_mode.binary_io)
__convert_from_newlines(file->buffer, &file->buffer_length);
ioresult = (*file->write_fn)(file->handle, file->buffer,
&file->buffer_length, file->idle_fn);
if (bytes_flushed)
*bytes_flushed = file->buffer_length;
if (ioresult)
return ioresult;
file->position += file->buffer_length;
}
__prep_buffer(file);
return __no_io_error;
}

View file

@ -0,0 +1,85 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h"
#define ctrl __control_char
#define motn __motion_char
#define spac __space_char
#define punc __punctuation
#define digi __digit
#define hexd __hex_digit
#define lowc __lower_case
#define uppc __upper_case
#define dhex (hexd | digi)
#define uhex (hexd | uppc)
#define lhex (hexd | lowc)
const unsigned char __ctype_map[256] = {
// clang-format off
ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, motn, motn, motn, motn, motn, ctrl, ctrl,
ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl,
spac, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc,
dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, punc, punc, punc, punc, punc, punc,
punc, uhex, uhex, uhex, uhex, uhex, uhex, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc,
uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, punc, punc, punc, punc, punc,
punc, lhex, lhex, lhex, lhex, lhex, lhex, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc,
lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, punc, punc, punc, punc, ctrl,
// clang-format on
};
const unsigned char __lower_map[256] = {
// clang-format off
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',
'@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[', '\\', ']', '^', '_',
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 0x7F,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,
// clang-format on
};
const unsigned char __upper_map[256] = {
// clang-format off
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
'`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '{', '|', '}', '~', 0x7F,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,
// clang-format on
};
int tolower(int __c)
{
if (__c == -1)
return -1;
return __lower_map[__c & 0xff];
}
int toupper(int __c)
{
if (__c == -1)
return -1;
return __upper_map[__c & 0xff];
}

View file

@ -0,0 +1,114 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h"
#include "string.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h"
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream)
{
unsigned char* write_ptr;
size_t num_bytes, bytes_to_go, bytes_written;
int ioresult, always_buffer;
if (fwide(stream, 0) == 0)
fwide(stream, -1);
bytes_to_go = size * count;
if (!bytes_to_go || stream->file_state.error
|| stream->file_mode.file_kind == __closed_file)
return 0;
if ((int)stream->file_mode.file_kind == __console_file)
__stdio_atexit();
always_buffer = !stream->file_mode.binary_io
|| (int)stream->file_mode.file_kind == __string_file
|| stream->file_mode.buffer_mode == _IOFBF
|| stream->file_mode.buffer_mode == _IOLBF;
if (stream->file_state.io_state == __neutral) {
if (stream->file_mode.io_mode & __write) {
stream->file_state.io_state = __writing;
__prep_buffer(stream);
}
}
if (stream->file_state.io_state != __writing) {
set_error(stream);
return 0;
}
write_ptr = (unsigned char*)buffer;
bytes_written = 0;
if (bytes_to_go
&& (stream->buffer_ptr != stream->buffer || always_buffer)) {
stream->buffer_length
= stream->buffer_size - (stream->buffer_ptr - stream->buffer);
do {
unsigned char* newline = NULL;
num_bytes = stream->buffer_length;
if (num_bytes > bytes_to_go)
num_bytes = bytes_to_go;
if (num_bytes) {
memcpy(stream->buffer_ptr, write_ptr, num_bytes);
write_ptr += num_bytes;
bytes_written += num_bytes;
bytes_to_go -= num_bytes;
stream->buffer_ptr += num_bytes;
stream->buffer_length -= num_bytes;
}
if (!stream->buffer_length
&& (int)stream->file_mode.file_kind == __string_file) {
bytes_written += bytes_to_go;
break;
}
if (!stream->buffer_length || newline != NULL
|| (stream->file_mode.buffer_mode == _IONBF)) {
ioresult = __flush_buffer(stream, NULL);
if (ioresult) {
set_error(stream);
bytes_to_go = 0;
break;
}
}
} while (bytes_to_go && always_buffer);
}
if (bytes_to_go && !always_buffer) {
unsigned char* save_buffer = stream->buffer;
size_t save_size = stream->buffer_size;
stream->buffer = write_ptr;
stream->buffer_size = bytes_to_go;
stream->buffer_ptr = write_ptr + bytes_to_go;
if (__flush_buffer(stream, &num_bytes) != __no_io_error)
set_error(stream);
bytes_written += num_bytes;
stream->buffer = save_buffer;
stream->buffer_size = save_size;
__prep_buffer(stream);
stream->buffer_length = 0;
}
if (stream->file_mode.buffer_mode != _IOFBF)
stream->buffer_length = 0;
return ((bytes_written + size - 1) / size);
}

View file

@ -0,0 +1,3 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h"
double fabs__Fd(double v) { return __fabs(v); }

View file

@ -0,0 +1,145 @@
/* @(#)e_atan2.c 1.3 95/01/18 */
/**
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/* __ieee754_atan2(y,x)
* Method :
* 1. Reduce y to positive by atan2(y,x)=-atan2(-y,x).
* 2. Reduce x to positive by (if x and y are unexceptional):
* ARG (x+iy) = arctan(y/x) ... if x > 0,
* ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0,
*
* Special cases:
*
* ATAN2((anything), NaN ) is NaN;
* ATAN2(NAN , (anything) ) is NaN;
* ATAN2(+-0, +(anything but NaN)) is +-0 ;
* ATAN2(+-0, -(anything but NaN)) is +-pi ;
* ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2;
* ATAN2(+-(anything but INF and NaN), +INF) is +-0 ;
* ATAN2(+-(anything but INF and NaN), -INF) is +-pi;
* ATAN2(+-INF,+INF ) is +-pi/4 ;
* ATAN2(+-INF,-INF ) is +-3pi/4;
* ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2;
*
* Constants:
* The hexadecimal values are the intended ones for the following
* constants. The decimal values may be used, provided that the
* compiler will convert from decimal to binary accurately enough
* to produce the hexadecimal values shown.
*/
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h"
#ifdef __STDC__
static const double
#else
static double
#endif
tiny
= 1.0e-300,
zero = 0.0, pi_o_4 = 7.8539816339744827900E-01, /* 0x3FE921FB, 0x54442D18 */
pi_o_2 = 1.5707963267948965580E+00, /* 0x3FF921FB, 0x54442D18 */
pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
#ifdef __STDC__
double __ieee754_atan2(double y, double x)
#else
double __ieee754_atan2(y, x)
double y, x;
#endif
{
double z;
int k, m, hx, hy, ix, iy;
unsigned lx, ly;
hx = __HI(x);
ix = hx & 0x7fffffff;
lx = __LO(x);
hy = __HI(y);
iy = hy & 0x7fffffff;
ly = __LO(y);
if (((ix | ((lx | -lx) >> 31)) > 0x7ff00000)
|| ((iy | ((ly | -ly) >> 31)) > 0x7ff00000)) /* x or y is NaN */
return x + y;
if ((hx - 0x3ff00000 | lx) == 0)
return atan(y); /* x=1.0 */
m = ((hy >> 31) & 1) | ((hx >> 30) & 2); /* 2*sign(x)+sign(y) */
/* when y = 0 */
if ((iy | ly) == 0) {
switch (m) {
case 0:
case 1:
return y; /* atan(+-0,+anything)=+-0 */
case 2:
return pi + tiny; /* atan(+0,-anything) = pi */
case 3:
return -pi - tiny; /* atan(-0,-anything) =-pi */
}
}
/* when x = 0 */
if ((ix | lx) == 0)
return (hy < 0) ? -pi_o_2 - tiny : pi_o_2 + tiny;
/* when x is INF */
if (ix == 0x7ff00000) {
if (iy == 0x7ff00000) {
switch (m) {
case 0:
return pi_o_4 + tiny; /* atan(+INF,+INF) */
case 1:
return -pi_o_4 - tiny; /* atan(-INF,+INF) */
case 2:
return 3.0 * pi_o_4 + tiny; /*atan(+INF,-INF)*/
case 3:
return -3.0 * pi_o_4 - tiny; /*atan(-INF,-INF)*/
}
} else {
switch (m) {
case 0:
return zero; /* atan(+...,+INF) */
case 1:
return -zero; /* atan(-...,+INF) */
case 2:
return pi + tiny; /* atan(+...,-INF) */
case 3:
return -pi - tiny; /* atan(-...,-INF) */
}
}
}
/* when y is INF */
if (iy == 0x7ff00000)
return (hy < 0) ? -pi_o_2 - tiny : pi_o_2 + tiny;
/* compute y/x */
k = (iy - ix) >> 20;
if (k > 60)
z = pi_o_2 + 0.5 * pi_lo; /* |y/x| > 2**60 */
else if (hx < 0 && k < -60)
z = 0.0; /* |y|/x < -2**60 */
else
z = atan(fabs__Fd(y / x)); /* safe to do y/x */
switch (m) {
case 0:
return z; /* atan(+,+) */
case 1:
__HI(z) ^= 0x80000000;
return z; /* atan(-,+) */
case 2:
return pi - (z - pi_lo); /* atan(+,-) */
default: /* case 3 */
return (z - pi_lo) - pi; /* atan(-,-) */
}
}

View file

@ -0,0 +1,3 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h"
int errno;

View file

@ -0,0 +1,5 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h"
unsigned long __float_nan[] = { 0x7FFFFFFF };
unsigned long __float_huge[] = { 0x7F800000 };

View file

@ -0,0 +1,18 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h"
size_t wcstombs(char* s, const wchar_t* pwcs, size_t n)
{
wchar_t next;
size_t chars_written;
int i;
chars_written = 0;
for (i = 0; i < n; ++i) {
next = *pwcs++;
*s++ = (char)next;
if ((char)next == '\0')
break;
++chars_written;
}
return chars_written;
}

View file

@ -0,0 +1,75 @@
#include "string.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h"
void* memmove(void* dst, const void* src, size_t n)
{
unsigned char* csrc;
unsigned char* cdst;
int reverse = (unsigned int)src < (unsigned int)dst;
if (n >= 32) {
if (((unsigned int)dst ^ (unsigned int)src) & 3) {
if (!reverse) {
__copy_longs_unaligned(dst, src, n);
} else {
__copy_longs_rev_unaligned(dst, src, n);
}
} else {
if (!reverse) {
__copy_longs_aligned(dst, src, n);
} else {
__copy_longs_rev_aligned(dst, src, n);
}
}
return dst;
} else {
if (!reverse) {
csrc = ((unsigned char*)src) - 1;
cdst = ((unsigned char*)dst) - 1;
n++;
while (--n > 0) {
*++cdst = *++csrc;
}
} else {
csrc = (unsigned char*)src + n;
cdst = (unsigned char*)dst + n;
n++;
while (--n > 0) {
*--cdst = *--csrc;
}
}
}
return dst;
}
void* memchr(const void* ptr, int ch, size_t count)
{
const unsigned char* p;
unsigned long v = (ch & 0xff);
for (p = (unsigned char*)ptr - 1, count++; --count;)
if ((*++p & 0xff) == v)
return (void*)p;
return NULL;
}
int memcmp(const void* lhs, const void* rhs, size_t count)
{
const unsigned char* p1;
const unsigned char* p2;
for (p1 = (const unsigned char*)lhs - 1, p2 = (const unsigned char*)rhs - 1,
count++;
--count;)
if (*++p1 != *++p2)
return ((*p1 < *p2) ? -1 : +1);
return 0;
}

View file

@ -0,0 +1,221 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h"
#define cps ((unsigned char*)src)
#define cpd ((unsigned char*)dst)
#define lps ((unsigned long*)src)
#define lpd ((unsigned long*)dst)
#define deref_auto_inc(p) *++(p)
void __copy_longs_aligned(void* dst, const void* src, size_t n)
{
unsigned long i;
i = (-(unsigned long)dst) & 3;
cps = ((unsigned char*)src) - 1;
cpd = ((unsigned char*)dst) - 1;
if (i) {
n -= i;
do
deref_auto_inc(cpd) = deref_auto_inc(cps);
while (--i);
}
lps = ((unsigned long*)(cps + 1)) - 1;
lpd = ((unsigned long*)(cpd + 1)) - 1;
i = n >> 5;
if (i)
do {
deref_auto_inc(lpd) = deref_auto_inc(lps);
deref_auto_inc(lpd) = deref_auto_inc(lps);
deref_auto_inc(lpd) = deref_auto_inc(lps);
deref_auto_inc(lpd) = deref_auto_inc(lps);
deref_auto_inc(lpd) = deref_auto_inc(lps);
deref_auto_inc(lpd) = deref_auto_inc(lps);
deref_auto_inc(lpd) = deref_auto_inc(lps);
deref_auto_inc(lpd) = deref_auto_inc(lps);
} while (--i);
i = (n & 31) >> 2;
if (i)
do
deref_auto_inc(lpd) = deref_auto_inc(lps);
while (--i);
cps = ((unsigned char*)(lps + 1)) - 1;
cpd = ((unsigned char*)(lpd + 1)) - 1;
n &= 3;
if (n)
do
deref_auto_inc(cpd) = deref_auto_inc(cps);
while (--n);
return;
}
void __copy_longs_rev_aligned(void* dst, const void* src, size_t n)
{
unsigned long i;
cps = ((unsigned char*)src) + n;
cpd = ((unsigned char*)dst) + n;
i = ((unsigned long)cpd) & 3;
if (i) {
n -= i;
do
*--cpd = *--cps;
while (--i);
}
i = n >> 5;
if (i)
do {
*--lpd = *--lps;
*--lpd = *--lps;
*--lpd = *--lps;
*--lpd = *--lps;
*--lpd = *--lps;
*--lpd = *--lps;
*--lpd = *--lps;
*--lpd = *--lps;
} while (--i);
i = (n & 31) >> 2;
if (i)
do
*--lpd = *--lps;
while (--i);
n &= 3;
if (n)
do
*--cpd = *--cps;
while (--n);
return;
}
void __copy_longs_unaligned(void* dst, const void* src, size_t n)
{
unsigned long i, v1, v2;
unsigned int src_offset, left_shift, right_shift;
i = (-(unsigned long)dst) & 3;
cps = ((unsigned char*)src) - 1;
cpd = ((unsigned char*)dst) - 1;
if (i) {
n -= i;
do
deref_auto_inc(cpd) = deref_auto_inc(cps);
while (--i);
}
src_offset = ((unsigned int)(cps + 1)) & 3;
left_shift = src_offset << 3;
right_shift = 32 - left_shift;
cps -= src_offset;
lps = ((unsigned long*)(cps + 1)) - 1;
lpd = ((unsigned long*)(cpd + 1)) - 1;
i = n >> 3;
v1 = deref_auto_inc(lps);
do {
v2 = deref_auto_inc(lps);
deref_auto_inc(lpd) = (v1 << left_shift) | (v2 >> right_shift);
v1 = deref_auto_inc(lps);
deref_auto_inc(lpd) = (v2 << left_shift) | (v1 >> right_shift);
} while (--i);
if (n & 4) {
v2 = deref_auto_inc(lps);
deref_auto_inc(lpd) = (v1 << left_shift) | (v2 >> right_shift);
}
cps = ((unsigned char*)(lps + 1)) - 1;
cpd = ((unsigned char*)(lpd + 1)) - 1;
n &= 3;
if (n) {
cps -= 4 - src_offset;
do
deref_auto_inc(cpd) = deref_auto_inc(cps);
while (--n);
}
return;
}
void __copy_longs_rev_unaligned(void* dst, const void* src, size_t n)
{
unsigned long i, v1, v2;
unsigned int src_offset, left_shift, right_shift;
cps = ((unsigned char*)src) + n;
cpd = ((unsigned char*)dst) + n;
i = ((unsigned long)cpd) & 3;
if (i) {
n -= i;
do
*--cpd = *--cps;
while (--i);
}
src_offset = ((unsigned int)cps) & 3;
left_shift = src_offset << 3;
right_shift = 32 - left_shift;
cps += 4 - src_offset;
i = n >> 3;
v1 = *--lps;
do {
v2 = *--lps;
*--lpd = (v2 << left_shift) | (v1 >> right_shift);
v1 = *--lps;
*--lpd = (v1 << left_shift) | (v2 >> right_shift);
} while (--i);
if (n & 4) {
v2 = *--lps;
*--lpd = (v2 << left_shift) | (v1 >> right_shift);
}
n &= 3;
if (n) {
cps += src_offset;
do
*--cpd = *--cps;
while (--n);
}
return;
}

View file

@ -0,0 +1 @@
void __stdio_atexit(void) { }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,13 @@
#include "dolphin.h"
// rand.c from Runtime library
u32 next = 1;
u32 rand(void)
{
next = 0x41C64E6D * next + 12345;
return (next >> 16) & 0x7FFF;
}
void srand(u32 seed) { next = seed; }

View file

@ -0,0 +1,148 @@
/* @(#)s_atan.c 1.3 95/01/18 */
/**
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/* atan(x)
* Method
* 1. Reduce x to positive by atan(x) = -atan(-x).
* 2. According to the integer k=4t+0.25 chopped, t=x, the argument
* is further reduced to one of the following intervals and the
* arctangent of t is evaluated by the corresponding formula:
*
* [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...)
* [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) )
* [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) )
* [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) )
* [39/16,INF] atan(x) = atan(INF) + atan( -1/t )
*
* Constants:
* The hexadecimal values are the intended ones for the following
* constants. The decimal values may be used, provided that the
* compiler will convert from decimal to binary accurately enough
* to produce the hexadecimal values shown.
*/
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h"
#ifdef __STDC__
static const double atanhi[] = {
#else
static double atanhi[] = {
#endif
4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */
7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */
9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */
1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */
};
#ifdef __STDC__
static const double atanlo[] = {
#else
static double atanlo[] = {
#endif
2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */
3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */
1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */
6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */
};
#ifdef __STDC__
static const double aT[] = {
#else
static double aT[] = {
#endif
3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */
-1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */
1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */
-1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */
9.09088713343650656196e-02, /* 0x3FB745CD, 0xC54C206E */
-7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */
6.66107313738753120669e-02, /* 0x3FB10D66, 0xA0D03D51 */
-5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */
4.97687799461593236017e-02, /* 0x3FA97B4B, 0x24760DEB */
-3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */
1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */
};
#ifdef __STDC__
static const double
#else
static double
#endif
one
= 1.0,
huge = 1.0e300;
#ifdef __STDC__
double atan(double x)
#else
double atan(x)
double x;
#endif
{
double w, s1, s2, z;
int ix, hx, id;
hx = __HI(x);
ix = hx & 0x7fffffff;
if (ix >= 0x44100000) { /* if |x| >= 2^66 */
if (ix > 0x7ff00000 || (ix == 0x7ff00000 && (__LO(x) != 0)))
return x + x; /* NaN */
if (hx > 0)
return atanhi[3] + atanlo[3];
else
return -atanhi[3] - atanlo[3];
}
if (ix < 0x3fdc0000) { /* |x| < 0.4375 */
if (ix < 0x3e200000) { /* |x| < 2^-29 */
if (huge + x > one)
return x; /* raise inexact */
}
id = -1;
} else {
x = fabs__Fd(x);
if (ix < 0x3ff30000) { /* |x| < 1.1875 */
if (ix < 0x3fe60000) { /* 7/16 <=|x|<11/16 */
id = 0;
x = (2.0 * x - one) / (2.0 + x);
} else { /* 11/16<=|x|< 19/16 */
id = 1;
x = (x - one) / (x + one);
}
} else {
if (ix < 0x40038000) { /* |x| < 2.4375 */
id = 2;
x = (x - 1.5) / (one + 1.5 * x);
} else { /* 2.4375 <= |x| < 2^66 */
id = 3;
x = -1.0 / x;
}
}
}
/* end of argument reduction */
z = x * x;
w = z * z;
/* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */
s1 = z
* (aT[0]
+ w
* (aT[2]
+ w * (aT[4] + w * (aT[6] + w * (aT[8] + w * aT[10])))));
s2 = w * (aT[1] + w * (aT[3] + w * (aT[5] + w * (aT[7] + w * aT[9]))));
if (id < 0)
return x - x * (s1 + s2);
else {
z = atanhi[id] - ((x * (s1 + s2) - atanlo[id]) - x);
return (hx < 0) ? -z : z;
}
}

View file

@ -0,0 +1,58 @@
/* @(#)s_frexp.c 1.4 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* for non-zero x
* x = frexp(arg,&exp);
* return a double fp quantity x such that 0.5 <= |x| <1.0
* and the corresponding binary exponent "exp". That is
* arg = x*2^exp.
* If arg is inf, 0.0, or NaN, then frexp(arg,&exp) returns arg
* with *exp=0.
*/
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h"
#ifdef __STDC__
static const double
#else
static double
#endif
two54
= 1.80143985094819840000e+16; /* 0x43500000, 0x00000000 */
#ifdef __STDC__
double frexp(double x, int* eptr)
#else
double frexp(x, eptr)
double x;
int* eptr;
#endif
{
int hx, ix, lx;
hx = __HI(x);
ix = 0x7fffffff & hx;
lx = __LO(x);
*eptr = 0;
if (ix >= 0x7ff00000 || ((ix | lx) == 0))
return x; /* 0,inf,nan */
if (ix < 0x00100000) { /* subnormal */
x *= two54;
hx = __HI(x);
ix = hx & 0x7fffffff;
*eptr = -54;
}
*eptr += (ix >> 20) - 1022;
hx = (hx & 0x800fffff) | 0x3fe00000;
__HI(x) = hx;
return x;
}

View file

@ -0,0 +1,34 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h"
int __StringRead(void* pPtr, int ch, int act)
{
char ret;
__InStrCtrl* Iscp = (__InStrCtrl*)pPtr;
switch (act) {
case __GetAChar:
ret = *(Iscp->NextChar);
if (ret == '\0') {
Iscp->NullCharDetected = 1;
return -1;
} else {
Iscp->NextChar++;
return ret;
}
case __UngetAChar:
if (Iscp->NullCharDetected == 0) {
Iscp->NextChar--;
} else {
Iscp->NullCharDetected = 0;
}
return ch;
case __TestForError:
return Iscp->NullCharDetected;
}
return 0;
}

View file

@ -0,0 +1,258 @@
#include "string.h"
#include "stddef.h"
static int K1 = 0x80808080;
static int K2 = 0xFEFEFEFF;
size_t strlen(const char* str)
{
size_t len = -1;
unsigned char* p = (unsigned char*)str - 1;
do {
len++;
} while (*++p);
return len;
}
char* strcpy(char* dst, const char* src)
{
register unsigned char *destb, *fromb;
register unsigned long w, t, align;
register unsigned int k1;
register unsigned int k2;
fromb = (unsigned char*)src;
destb = (unsigned char*)dst;
if ((align = ((int)fromb & 3)) != ((int)destb & 3)) {
goto bytecopy;
}
if (align) {
if ((*destb = *fromb) == 0) {
return dst;
}
for (align = 3 - align; align; align--) {
if ((*(++destb) = *(++fromb)) == 0) {
return dst;
}
}
++destb;
++fromb;
}
k1 = K1;
k2 = K2;
w = *((int*)(fromb));
t = w + k2;
t &= k1;
if (t) {
goto bytecopy;
}
--((int*)(destb));
do {
*(++((int*)(destb))) = w;
w = *(++((int*)(fromb)));
t = w + k2;
t &= k1;
if (t) {
goto adjust;
}
} while (1);
adjust:
++((int*)(destb));
bytecopy:
if ((*destb = *fromb) == 0) {
return dst;
}
do {
if ((*(++destb) = *(++fromb)) == 0) {
return dst;
}
} while (1);
return dst;
}
char* strncpy(char* dst, const char* src, size_t n)
{
const unsigned char* p = (const unsigned char*)src - 1;
unsigned char* q = (unsigned char*)dst - 1;
n++;
while (--n) {
if (!(*++q = *++p)) {
while (--n) {
*++q = 0;
}
break;
}
}
return dst;
}
char* strcat(char* dst, const char* src)
{
const unsigned char* p = (unsigned char*)src - 1;
unsigned char* q = (unsigned char*)dst - 1;
while (*++q) { }
q--;
while (*++q = *++p) { }
return dst;
}
int strcmp(const char* str1, const char* str2)
{
register unsigned char* left = (unsigned char*)str1;
register unsigned char* right = (unsigned char*)str2;
unsigned long align, l1, r1, x;
l1 = *left;
r1 = *right;
if (l1 - r1) {
return l1 - r1;
}
if ((align = ((int)left & 3)) != ((int)right & 3)) {
goto bytecopy;
}
if (align) {
if (l1 == 0) {
return 0;
}
for (align = 3 - align; align; align--) {
l1 = *(++left);
r1 = *(++right);
if (l1 - r1) {
return l1 - r1;
}
if (l1 == 0) {
return 0;
}
}
left++;
right++;
}
l1 = *(int*)left;
r1 = *(int*)right;
x = l1 + K2;
if (x & K1) {
goto adjust;
}
while (l1 == r1) {
l1 = *(++((int*)(left)));
r1 = *(++((int*)(right)));
x = l1 + K2;
if (x & K1) {
goto adjust;
}
}
if (l1 > r1) {
return 1;
}
return -1;
adjust:
l1 = *left;
r1 = *right;
if (l1 - r1) {
return l1 - r1;
}
bytecopy:
if (l1 == 0) {
return 0;
}
do {
l1 = *(++left);
r1 = *(++right);
if (l1 - r1) {
return l1 - r1;
}
if (l1 == 0) {
return 0;
}
} while (1);
}
char* strchr(const char* str, int c)
{
const unsigned char* p = (unsigned char*)str - 1;
unsigned long chr = (c & 0xFF);
unsigned long ch;
while (ch = *++p) {
if (ch == chr) {
return (char*)p;
}
}
return chr ? NULL : (char*)p;
}
char* strrchr(const char* str, int c)
{
const unsigned char* p = (unsigned char*)str - 1;
const unsigned char* q = NULL;
unsigned long chr = (c & 0xFF);
unsigned long ch;
while (ch = *++p) {
if (ch == chr) {
q = p;
}
}
if (q != NULL) {
return (char*)q;
}
return chr ? NULL : (char*)p;
}
char* strstr(const char* str, const char* pat)
{
const unsigned char* s1 = (const unsigned char*)str - 1;
const unsigned char* p1 = (const unsigned char*)pat - 1;
unsigned long firstc, c1, c2;
if ((pat == 0) || (!(firstc = *++p1))) {
return (char*)str;
}
while (c1 = *++s1) {
if (c1 == firstc) {
const unsigned char* s2 = s1 - 1;
const unsigned char* p2 = p1 - 1;
while ((c1 = *++s2) == (c2 = *++p2) && c1)
;
if (!c2)
return (char*)s1;
}
}
return NULL;
}

View file

@ -0,0 +1,199 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h"
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h"
enum scan_states {
start = 0x01,
check_for_zero = 0x02,
leading_zero = 0x04,
need_digit = 0x08,
digit_loop = 0x10,
finished = 0x20,
failure = 0x40
};
#define final_state(scan_state) (scan_state & (finished | failure))
#define success(scan_state) \
(scan_state & (leading_zero | digit_loop | finished))
#define fetch() (count++, (*ReadProc)(ReadProcArg, 0, __GetAChar))
#define unfetch(c) (*ReadProc)(ReadProcArg, c, __UngetAChar)
unsigned long __strtoul(int base, int max_width,
int (*ReadProc)(void*, int, int), void* ReadProcArg,
int* chars_scanned, int* negative, int* overflow)
{
int scan_state = start;
int count = 0;
unsigned long value = 0;
unsigned long value_max = 0;
int c;
*negative = *overflow = 0;
if (base < 0 || base == 1 || base > 36 || max_width < 1) {
scan_state = failure;
} else {
c = fetch();
}
if (base != 0)
value_max = ULONG_MAX / base;
while (count <= max_width && c != -1 && !final_state(scan_state)) {
switch (scan_state) {
case start:
if (isspace(c)) {
c = fetch();
break;
}
if (c == '+') {
c = fetch();
} else if (c == '-') {
c = fetch();
*negative = 1;
}
scan_state = check_for_zero;
break;
case check_for_zero:
if (base == 0 || base == 16) {
if (c == '0') {
scan_state = leading_zero;
c = fetch();
break;
}
}
scan_state = need_digit;
break;
case 4:
if (c == 'X' || c == 'x') {
base = 16;
scan_state = need_digit;
c = fetch();
break;
}
if (base == 0)
base = 8;
scan_state = digit_loop;
break;
case need_digit:
case digit_loop:
if (base == 0)
base = 10;
if (!value_max) {
value_max = ULONG_MAX / base;
}
if (isdigit(c)) {
if ((c -= '0') >= base) {
if (scan_state == digit_loop)
scan_state = finished;
else
scan_state = failure;
c += '0';
break;
}
} else if (!isalpha(c) || (toupper(c) - 'A' + 10) >= base) {
if (scan_state == digit_loop)
scan_state = finished;
else
scan_state = failure;
break;
} else {
c = toupper(c) - 'A' + 10;
}
if (value > value_max)
*overflow = 1;
value *= base;
if (c > (ULONG_MAX - value))
*overflow = 1;
value += c;
scan_state = digit_loop;
c = fetch();
break;
}
}
if (!success(scan_state)) {
value = 0;
count = 0;
} else {
count--;
}
*chars_scanned = count;
unfetch(c);
return value;
}
unsigned long strtoul(const char* str, char** end, int base)
{
unsigned long value;
int count, negative, overflow;
__InStrCtrl isc;
isc.NextChar = (char*)str;
isc.NullCharDetected = 0;
value = __strtoul(base, 0x7FFFFFFF, &__StringRead, (void*)&isc, &count,
&negative, &overflow);
if (end) {
*end = (char*)str + count;
}
if (overflow) {
value = ULONG_MAX;
errno = 0x22;
} else if (negative) {
value = -value;
}
return value;
}
long strtol(const char* str, char** end, int base)
{
unsigned long uvalue;
long svalue;
int count, negative, overflow;
__InStrCtrl isc;
isc.NextChar = (char*)str;
isc.NullCharDetected = 0;
uvalue = __strtoul(base, 0x7FFFFFFF, &__StringRead, (void*)&isc, &count,
&negative, &overflow);
if (end) {
*end = (char*)str + count;
}
if (overflow || (!negative && uvalue > LONG_MAX)
|| (negative && uvalue > -LONG_MIN)) {
svalue = (negative ? -LONG_MIN : LONG_MAX);
errno = ERANGE;
} else {
svalue = (negative ? (long)-uvalue : (long)uvalue);
}
return svalue;
}

View file

@ -0,0 +1,39 @@
/* @(#)w_atan2.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/*
* wrapper atan2(y,x)
*/
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h"
#ifdef __STDC__
double atan2(double y, double x) /* wrapper atan2 */
#else
double atan2(y, x) /* wrapper atan2 */
double y, x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_atan2(y, x);
#else
double z;
z = __ieee754_atan2(y, x);
if (_LIB_VERSION == _IEEE_ || isnan(x) || isnan(y))
return z;
if (x == 0.0 && y == 0.0) {
return __kernel_standard(y, x, 3); /* atan2(+-0,+-0) */
} else
return z;
#endif
}

View file

@ -0,0 +1,22 @@
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h"
int fwide(FILE* file, int mode)
{
if (file->file_mode.file_kind == __closed_file) {
return 0;
}
switch (file->file_mode.file_orientation) {
case UNORIENTED:
if (mode > 0) {
file->file_mode.file_orientation = WIDE_ORIENTED;
} else if (mode < 0) {
file->file_mode.file_orientation = CHAR_ORIENTED;
}
return mode;
case WIDE_ORIENTED:
return 1;
case CHAR_ORIENTED:
return -1;
}
}

View file

@ -495,7 +495,7 @@ static void fn_1_17E4(void)
CharModelMotionShiftSet(char_tbl[j], mot_tbl[j][0], 0, 10, HU3D_MOTATTR_LOOP);
}
if (time <= 20) {
Hu3DModelPosSet(player_mdl[j], player_pos[j].x, player_pos[j].y + (1000.0 * cos(M_PI * (time * 4.5f) / 180.0)), player_pos[j].z);
Hu3DModelPosSet(player_mdl[j], player_pos[j].x, player_pos[j].y + 1000.0 * cosd(time * 4.5f), player_pos[j].z);
time -= 10;
if (time >= 0) {
tplvl = 0.1 * time;
@ -1081,7 +1081,7 @@ static void fn_1_50B0(ModelData *model, Mtx mtx)
target.y = 415.0f;
pos.x = (sind(lbl_1_bss_40[0].y) * cosd(lbl_1_bss_40[0].x) * lbl_1_bss_20[0]) + lbl_1_bss_28[0].x;
pos.y = (-sind(lbl_1_bss_40[0].x) * lbl_1_bss_20[0]) + lbl_1_bss_28[0].y;
pos.z = (cos(M_PI * lbl_1_bss_40[0].y / 180.0) * cosd(lbl_1_bss_40[0].x) * lbl_1_bss_20[0]) + lbl_1_bss_28[0].z;
pos.z = (cosd(lbl_1_bss_40[0].y) * cosd(lbl_1_bss_40[0].x) * lbl_1_bss_20[0]) + lbl_1_bss_28[0].z;
up.x = -sind(lbl_1_bss_40[0].y);
up.z = -cosd(lbl_1_bss_40[0].y);
up.y = 0;

View file

@ -1,7 +1,7 @@
#include "game/process.h"
#include "game/object.h"
#include "game/hsfdraw.h"
#include "math.h"
#include "ext_math.h"
typedef struct unkDominationData2 {
/* 0x00 */ s32 unk_00;
@ -128,16 +128,16 @@ void fn_1_2024(omObjData* arg0) {
}
break;
case 2:
var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
var_f31 = sind(90.0f * temp_r31->unk_44);
break;
case 3:
var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
var_f31 = sind(90.0f * temp_r31->unk_44);
if (temp_r31->unk_48 > 0.5) {
temp_r31->unk_00 = 4;
}
break;
case 4:
var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
var_f31 = sind(90.0f * temp_r31->unk_44);
var_f31 *= var_f31;
break;
}

View file

@ -467,8 +467,8 @@ void fn_1_DB4(omObjData *arg0)
temp_r31->unk_20++;
}
temp_f31 = (32.0f * sin(1.0471975511965976)) - (9.8f * temp_r31->unk_24);
temp_f30 = 22.0f * cos(1.0471975511965976);
temp_f31 = 32.0f * sin(M_PI / 3) - 9.8f * temp_r31->unk_24;
temp_f30 = 22.0f * cos(M_PI / 3);
temp_r31->unk_18 = temp_r31->unk_18 + temp_f30;
temp_r31->unk_14 = temp_r31->unk_14 + temp_f31;
temp_r31->unk_24 += 0.3f;
@ -514,7 +514,7 @@ void fn_1_1074(omObjData *arg0)
temp_r31->unk_20 = 1;
}
temp_r31->unk_14 = (temp_r31->unk_14 + ((80.0 * sin(1.5707963267948966)) - (9.8 * temp_r31->unk_24)));
temp_r31->unk_14 += 80.0 * sin(M_PI / 2) - 9.8 * temp_r31->unk_24;
temp_r31->unk_24 += 0.3f;
if (!(temp_r31->unk_14 < 1000.0f)) {

View file

@ -132,7 +132,7 @@ s8 fn_1_524(void)
var_r30 = 1;
}
var_f30 = lbl_1_bss_2 / 300.0f;
temp_f31 = (sin((M_PI * (90.0f * var_f30)) / 180.0) * sin((M_PI * (90.0f * var_f30)) / 180.0));
temp_f31 = sind(90.0f * var_f30) * sind(90.0f * var_f30);
CZoom = fn_1_4120(var_r31[0].zoom, var_r31[1].zoom, var_r31[2].zoom, temp_f31);
Center.x = fn_1_4120(var_r31[0].center.x, var_r31[1].center.x, var_r31[2].center.x, temp_f31);
Center.y = fn_1_4120(var_r31[0].center.y, var_r31[1].center.y, var_r31[2].center.y, temp_f31);
@ -157,8 +157,8 @@ s8 fn_1_524(void)
Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unkC, -0.0001f - (0.005f * temp_f31), 0.0f, 0.0f);
Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unkE, -0.0002f - (0.005f * temp_f31), 0.0f, 0.0f);
Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unk10, -0.0003f - (0.005f * temp_f31), 0.0f, 0.0f);
sp8.x = -(sin((M_PI * CRot.y) / 180.0) * cosd(CRot.x));
sp8.y = sin((M_PI * CRot.x) / 180.0);
sp8.x = -(sind(CRot.y) * cosd(CRot.x));
sp8.y = sind(CRot.x);
sp8.z = -(cosd(CRot.y) * cosd(CRot.x));
HuAudFXListnerUpdate(&Hu3DCamera->pos, &sp8);
return var_r30;
@ -178,7 +178,7 @@ s8 fn_1_B80(void)
var_r30 = 1;
}
temp_f30 = lbl_1_bss_4 / 60.0f;
temp_f31 = (sin((M_PI * (90.0f * temp_f30)) / 180.0) * sin((M_PI * (90.0f * temp_f30)) / 180.0));
temp_f31 = sind(90.0f * temp_f30) * sind(90.0f * temp_f30);
CZoom = var_r31[0].zoom + (temp_f31 * (var_r31[1].zoom - var_r31[0].zoom));
Center.x = var_r31[0].center.x + (temp_f31 * (var_r31[1].center.x - var_r31[0].center.x));
Center.y = var_r31[0].center.y + (temp_f31 * (var_r31[1].center.y - var_r31[0].center.y));
@ -300,20 +300,20 @@ s8 fn_1_10E8(omObjData *object)
else if (lbl_1_bss_C > 0.2f) {
lbl_1_bss_A = 1;
}
var_f31 = sin((M_PI * (90.0f * lbl_1_bss_C)) / 180.0);
var_f31 = sind(90.0f * lbl_1_bss_C);
var_f27 = 1520.0f;
var_f26 = -1030.0f;
temp_f30 = var_f27 + (var_f31 * (var_f26 - var_f27));
Hu3DModelPosSet(lbl_1_bss_DC->model[4], temp_f30, 0.0f, -1200.0f);
Hu3DModelPosSet(lbl_1_bss_DC->model[1], temp_f30, 0.0f, -1200.0f);
if ((lbl_1_data_BC + 0x10000) != 0xFFFF) {
if (lbl_1_data_BC != ~0) {
sp8.x = temp_f30;
sp8.y = 0.0f;
sp8.z = -1200.0f;
HuAudFXEmiterUpDate(lbl_1_data_BC, &sp8);
}
var_f31 = 1.2f * lbl_1_bss_C;
if ((var_f31 >= 1.0f) && ((lbl_1_data_BC + 0x10000) != 0xFFFF)) {
if ((var_f31 >= 1.0f) && lbl_1_data_BC != ~0) {
HuAudFXEmiterPlay(0x555, &sp8);
sp8.x += 200.0f;
HuAudFXEmiterPlay(0x55E, &sp8);
@ -324,7 +324,7 @@ s8 fn_1_10E8(omObjData *object)
var_f31 = 0.0f;
}
else {
var_f31 = sin((M_PI * (90.0f + (90.0f * var_f31))) / 180.0);
var_f31 = sind(90.0f + 90.0f * var_f31);
}
Hu3DMotionSpeedSet(lbl_1_bss_DC->model[4], 2.0f * var_f31);
if (lbl_1_bss_C > 0.5f) {
@ -455,7 +455,7 @@ void fn_1_2098(omObjData *object)
Hu3DModelAttrSet(lbl_1_bss_DC->model[4], HU3D_ATTR_DISPOFF);
lbl_1_bss_18 = 1.0f;
}
var_f31 = sin((M_PI * (90.0f * lbl_1_bss_18)) / 180.0);
var_f31 = sind(90.0f * lbl_1_bss_18);
var_f29 = -1030.0f;
var_f28 = -1880.0f;
var_f30 = var_f29 + (var_f31 * (var_f28 - var_f29));
@ -684,7 +684,7 @@ void fn_1_2DCC(omObjData *object)
Hu3DModelAttrReset(var_r31->unk6, HU3D_ATTR_DISPOFF);
}
var_r31->unk10 += var_f30;
var_f31 = sin((M_PI * (90.0f * var_r31->unk10)) / 180.0);
var_f31 = sind(90.0f * var_r31->unk10);
if (var_r31->unk10 >= 1.0f) {
var_f31 = 1.0f;
var_r31->unk10 = var_f31;
@ -728,7 +728,7 @@ void fn_1_2DCC(omObjData *object)
}
Hu3DModelPosSet(var_r31->unk6, 70.0f + temp_r30->pos.x, 290.0f, -1200.0f);
Hu3DData[var_r31->unk4].pos.x = temp_r30->pos.x;
var_f31 = (0.800000011920929 * sin((M_PI * (180.0f * var_r31->unk10)) / 180.0));
var_f31 = 0.8f * sind(180.0f * var_r31->unk10);
Hu3DMotionSpeedSet(var_r31->unk2, var_f31);
}
}
@ -948,7 +948,7 @@ void fn_1_44F0(s16 arg0, f32 arg8, f32 arg9, f32 argA, s8 arg1, s16 arg2)
return;
temp_f31 = (((rand8() << 8) | rand8()) % 361);
var_r31->unk0.x = (2.0 + (3.0 * sin((M_PI * temp_f31) / 180.0)));
var_r31->unk0.x = 2.0 + (3.0 * sind(temp_f31));
var_r31->unk0.y = (0.1f * ((((rand8() << 8) | rand8()) % 31) + 40));
var_r31->unk0.z = (3.5 * cosd(temp_f31));
var_r31->unk28 = 0;
@ -1012,7 +1012,7 @@ void fn_1_4FFC(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4)
temp_f31 = ((((rand8() << 8) | rand8()) % 81) - 40);
temp_r31->unk0.x = (13.0 * cosd(temp_f31));
temp_r31->unk0.y = 0.1f * ((((rand8() << 8) | rand8()) % 21) + 20);
temp_r31->unk0.z = (9.0 * sin((M_PI * temp_f31) / 180.0));
temp_r31->unk0.z = (9.0 * sind(temp_f31));
temp_r31->unkC.x = (0.05f * temp_r31->unk0.x);
temp_r31->unkC.z = (0.05f * temp_r31->unk0.z);
temp_r31->unk18 = 500.0f;

View file

@ -81,8 +81,8 @@ void ObjectSetup(void)
temp_f29 = lbl_1_bss_268.y;
temp_f31 = lbl_1_bss_268.z;
lbl_1_bss_774 = sqrtf((temp_f31 * temp_f31) + ((temp_f30 * temp_f30) + (temp_f29 * temp_f29)));
lbl_1_bss_778 = fn_1_1D08((180.0 * (atan2(temp_f30, temp_f31) / M_PI)));
lbl_1_bss_77C = fn_1_1D08((180.0 * (atan2(temp_f29, temp_f31) / M_PI)));
lbl_1_bss_778 = fn_1_1D08(atan2d(temp_f30, temp_f31));
lbl_1_bss_77C = fn_1_1D08(atan2d(temp_f29, temp_f31));
lbl_1_bss_77C = 50.0f;
Hu3DLighInit();
lbl_1_bss_7A0 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFFU, 0xFFU, 0xFFU);

View file

@ -1156,9 +1156,9 @@ void fn_1_42AC(void)
var_f23 = -200.0 * (cos(0.0) * cosd(lbl_1_bss_920[var_r27]));
}
else {
var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cos(0.3490658503988659));
var_f26 = 150.0 + (-200.0 * sin(-0.3490658503988659));
var_f23 = -200.0 * (cos(-0.3490658503988659) * cosd(lbl_1_bss_920[var_r27]));
var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cosd(20));
var_f26 = 150.0 + -200.0 * sind(-20);
var_f23 = -200.0 * (cosd(-20) * cosd(lbl_1_bss_920[var_r27]));
}
if (!lbl_1_bss_938[var_r30->unk_04]) {
var_f26 += 70.0f;

View file

@ -856,7 +856,7 @@ void fn_1_9C14(omObjData *object)
return;
}
PSQUATNormalize(&var_r31->unk_194, &sp28);
if (sp28.w < cos(0.4363323129985824)) {
if (sp28.w < cosd(25)) {
var_r31->unk_3C = 1;
}
}

View file

@ -326,7 +326,7 @@ void fn_1_3D58(omObjData *object)
var_r28->y = 0.0f;
var_r28->z = var_f29;
}
var_f29 += (var_f28 * sin(1.0471975511965976));
var_f29 += var_f28 * sind(60);
}
var_r28 = lbl_1_bss_178.unk_2C;
var_r30 = 0;

File diff suppressed because it is too large Load diff

View file

@ -59,16 +59,111 @@ M420DllUnkStruct2 lbl_1_data_50[4] = {
{ 0x19, 0x01, 0x14, 0x04, 0x0A, 0x08, 0x01, 0x01 },
};
// TODO MAKE_NUM
static const s32 lbl_1_rodata_F8[8][0xB] = {
{ 0x5F0000, 0x5F0017, 0x5F0018, 0x5F0068, 0x5F0069, 0x5F006A, 0x5F0035, 0x5F006B, 0x5F006E, 0x5F0049, 0x33001B },
{ 0x1A0000, 0x1A0017, 0x1A0018, 0x1A0068, 0x1A0069, 0x1A006A, 0x1A0035, 0x1A006B, 0x1A006E, 0x1A0049, 0x33001C },
{ 0x6D0000, 0x6D0017, 0x6D0018, 0x6D0068, 0x6D0069, 0x6D006A, 0x6D0035, 0x6D006B, 0x6D006E, 0x6D0049, 0x33001D },
{ 0x8A0000, 0x8A0017, 0x8A0018, 0x8A0068, 0x8A0069, 0x8A006A, 0x8A0035, 0x8A006B, 0x8A006E, 0x8A0049, 0x33001E },
{ 0x850000, 0x850017, 0x850018, 0x850068, 0x850069, 0x85006A, 0x850035, 0x85006B, 0x85006E, 0x850049, 0x33001F },
{ 0x110000, 0x110017, 0x110018, 0x110068, 0x110069, 0x11006A, 0x110035, 0x11006B, 0x11006E, 0x110049, 0x330020 },
{ 0x0D0000, 0x0D0017, 0x0D0018, 0x0D0068, 0x0D0069, 0x0D006A, 0x0D0035, 0x0D006B, 0x0D006E, 0x0D0049, 0x330021 },
{ 0x810000, 0x810017, 0x810018, 0x810068, 0x810069, 0x81006A, 0x810035, 0x81006B, 0x81006E, 0x810049, 0x330022 },
{
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x68),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x69),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6A),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6B),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6E),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49),
0x33001B,
},
{
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x18),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x68),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x69),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6A),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x35),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6B),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6E),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x49),
0x33001C,
},
{
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x18),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x68),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x69),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6A),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x35),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6B),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6E),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x49),
0x33001D,
},
{
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x18),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x68),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x69),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6A),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x35),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6B),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6E),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x49),
0x33001E,
},
{
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x18),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x68),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x69),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6A),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x35),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6B),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6E),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x49),
0x33001F,
},
{
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x18),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x68),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x69),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6A),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x35),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6B),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6E),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x49),
0x330020,
},
{
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x18),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x68),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x69),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6A),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x35),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6B),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6E),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x49),
0x330021,
},
{
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x18),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x68),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x69),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6A),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x35),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6B),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6E),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x49),
0x330022,
},
};
static const Vec lbl_1_rodata_258[4][2] = {
{ { -372.0f, 300.0f, -220.0f }, { 0.0f, 50.0f, 0.0f } },

View file

@ -77,25 +77,30 @@ M424DllClawStruct3 lbl_1_bss_640[0x10];
// DATA
Vec lbl_1_data_1E0[4] = {
{ 950.0f, 275.0f, 0.0f },
{ 950.0f, 275.0f, 0.0f },
{ 900.0f, 360.0f, 320.0f },
{ 494.99996f, 220.0f, 494.99996f },
{ 0.0f, 225.0f, 0.0f },
{ 494.99996f, 220.0f, 494.99996f },
{ 0.0f, 225.0f, 0.0f },
};
f32 lbl_1_data_210[3] = { 12.0f, 11.0f, 17.5f };
char lbl_1_data_21C[12][0x10] = {
"tsume10", "tsume11", "tsume12",
"tsume20", "tsume21", "tsume22",
"tsume30", "tsume31", "tsume32",
"tsume40", "tsume41", "tsume42",
};
u8 lbl_1_data_2DC[12] = {
1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0
};
s32 lbl_1_data_2E8[9] = {
0x5F0000, 0x5F0002, 0x5F0003, 0x5F0005, 0x5F0006,
0x5F0042, 0x5F0008, 0x5F0017, 0x5F0018
"tsume10",
"tsume11",
"tsume12",
"tsume20",
"tsume21",
"tsume22",
"tsume30",
"tsume31",
"tsume32",
"tsume40",
"tsume41",
"tsume42",
};
u8 lbl_1_data_2DC[12] = { 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 };
s32 lbl_1_data_2E8[9] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x42),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x08), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18) };
Vec lbl_1_data_30C = { 0.0f, 0.0f, 0.0f };
// PROTO
@ -104,22 +109,23 @@ void fn_1_8924(u8, s32);
u8 fn_1_8950(u8);
u8 fn_1_897C(u8);
u8 fn_1_89A8(u8);
Vec* fn_1_89D4(u8);
void fn_1_94D0(omObjData*);
void fn_1_9A64(omObjData*);
void fn_1_AE58(omObjData*);
void fn_1_AE64(omObjData*);
Vec *fn_1_89D4(u8);
void fn_1_94D0(omObjData *);
void fn_1_9A64(omObjData *);
void fn_1_AE58(omObjData *);
void fn_1_AE64(omObjData *);
u16 fn_1_B79C(f32, f32, f32);
s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3);
s32 fn_1_B9E0(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2, s32 arg3);
void fn_1_C604(s32, s32);
s32 fn_1_C878(s16, const char*, Mtx, s32);
void fn_1_C99C(HsfObject*, Mtx, const char*, Mtx);
s32 fn_1_C878(s16, const char *, Mtx, s32);
void fn_1_C99C(HsfObject *, Mtx, const char *, Mtx);
void fn_1_CE74(s32);
void fn_1_CF00(Process*);
void fn_1_CF80(omObjData*);
void fn_1_CF00(Process *);
void fn_1_CF80(omObjData *);
s32 fn_1_D010(s32, s32);
omObjData* fn_1_93F0(Process* arg0) {
omObjData *fn_1_93F0(Process *arg0)
{
lbl_1_bss_6DC = arg0;
lbl_1_bss_6D8 = omAddObjEx(arg0, 0x40, 5, 9, -1, fn_1_94D0);
lbl_1_bss_6CC = 0;
@ -130,13 +136,15 @@ omObjData* fn_1_93F0(Process* arg0) {
return lbl_1_bss_6D8;
}
void fn_1_94A4(void) {
void fn_1_94A4(void)
{
fn_1_AE58(lbl_1_bss_6D8);
}
void fn_1_94D0(omObjData* arg0) {
void fn_1_94D0(omObjData *arg0)
{
s32 var_r29;
M424DllClawStruct* var_r31;
M424DllClawStruct *var_r31;
var_r31 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B0, 0x10000000);
memset(var_r31, 0, 0x1B0);
@ -164,13 +172,13 @@ void fn_1_94D0(omObjData* arg0) {
var_r31->unk170 = -1;
var_r31->unk174 = lbl_1_data_30C;
// @todo how did this happen
var_r31->unk180 = (180.0 * (atan2(-102.864990234375, 424.559997558593750) / M_PI));
var_r31->unk180 = atan2d(-102.864990234375, 424.559997558593750);
if (var_r31->unk180 < 0.0f) {
var_r31->unk180 += 360.0f;
}
var_r31->unk184 = -1;
var_r31->unk30 = lbl_1_data_30C;
for (var_r29 = 0; var_r29 < 0xC; var_r29++) {
var_r31->unk3C[var_r29] = lbl_1_data_30C;
var_r31->unkCC[var_r29] = lbl_1_data_30C;
@ -218,7 +226,8 @@ void fn_1_94D0(omObjData* arg0) {
arg0->func = fn_1_9A64;
}
void fn_1_9A64(omObjData* arg0) {
void fn_1_9A64(omObjData *arg0)
{
Mtx sp74;
Mtx sp44;
Vec sp38;
@ -228,7 +237,7 @@ void fn_1_9A64(omObjData* arg0) {
Vec sp8;
f32 var_f31;
f32 temp_f30;
M424DllClawStruct* temp_r31;
M424DllClawStruct *temp_r31;
s32 var_r29;
s32 temp_r28;
s32 var_r27;
@ -242,13 +251,15 @@ void fn_1_9A64(omObjData* arg0) {
if (temp_r31->unk6 != 0) {
fn_1_AE64(arg0);
}
} else {
}
else {
temp_r31->unkC = 0;
temp_r31->unkA = 0;
}
if (fn_1_FE0() <= 1) {
var_r25 = -1;
} else {
}
else {
var_r25 = temp_r31->unk10;
}
switch (var_r25) {
@ -262,7 +273,8 @@ void fn_1_9A64(omObjData* arg0) {
if (fn_1_FE0() > 4) {
temp_r31->unk10 = 10;
temp_r31->unk12 = 0;
} else if ((temp_r31->unkA & 0x100) != 0) {
}
else if ((temp_r31->unkA & 0x100) != 0) {
HuAudFXPlay(0x62A);
temp_r31->unk184 = HuAudFXPlay(0x621);
temp_r31->unk10 = 2;
@ -275,7 +287,8 @@ void fn_1_9A64(omObjData* arg0) {
if (temp_r31->unk24 >= 1.0f) {
temp_r31->unk24 = 1.0f;
temp_r31->unk20 = -1.0f;
} else {
}
else {
if (temp_r31->unk24 <= 0.0f) {
temp_r31->unk24 = 0.0f;
temp_r31->unk20 = 1.0f;
@ -289,7 +302,8 @@ void fn_1_9A64(omObjData* arg0) {
HuAudFXPlay(0x622);
temp_r31->unk10 = 10;
temp_r31->unk12 = 0;
} else if (((temp_r31->unkC & 0x100) == 0) || (temp_r31->unk12 >= 360.0f)) {
}
else if (((temp_r31->unkC & 0x100) == 0) || (temp_r31->unk12 >= 360.0f)) {
if (temp_r31->unk184 != -1) {
HuAudFXStop(temp_r31->unk184);
temp_r31->unk184 = -1;
@ -363,23 +377,27 @@ void fn_1_9A64(omObjData* arg0) {
temp_r31->unk28 = 0.0f;
if (temp_r31->unk168 != -1) {
var_r27 = fn_1_897C(temp_r31->unk168);
} else {
}
else {
var_r27 = -1;
}
if (temp_r31->unk168 == -1) {
if (fn_1_FE0() > 4) {
temp_r31->unk10 = 10;
temp_r31->unk12 = 0;
} else {
}
else {
temp_r31->unk10 = 8;
temp_r31->unk12 = 0;
HuAudFXPlay(0x625);
}
} else if (var_r27 == 0) {
}
else if (var_r27 == 0) {
temp_r31->unk10 = 8;
temp_r31->unk12 = 0;
HuAudFXPlay(0x625);
} else {
}
else {
if (temp_r31->unk168 != -1) {
fn_1_252C(-0.01f, 0x3C);
fn_1_2670(0x75, 0);
@ -394,15 +412,18 @@ void fn_1_9A64(omObjData* arg0) {
case 7:
if (arg0->rot.y < temp_r31->unk180) {
arg0->rot.y += 1.25f;
} else if (arg0->rot.y > temp_r31->unk180) {
}
else if (arg0->rot.y > temp_r31->unk180) {
arg0->rot.y = temp_r31->unk180;
}
var_f31 = 0.35f - temp_r31->unk24;
if (var_f31 > 0.0125f) {
temp_r31->unk24 += 0.0125f;
} else if (var_f31 < -0.0125f) {
}
else if (var_f31 < -0.0125f) {
temp_r31->unk24 -= 0.0125f;
} else {
}
else {
temp_r31->unk24 = 0.35f;
}
if ((arg0->rot.y == temp_r31->unk180) && (0.35f == temp_r31->unk24)) {
@ -423,7 +444,8 @@ void fn_1_9A64(omObjData* arg0) {
var_r26 = fn_1_89A8(temp_r31->unk168);
HuAudCharVoicePlay(var_r26, 0x123);
fn_1_D010(0x628, 30);
} else {
}
else {
fn_1_8924(temp_r31->unk168, 2);
}
temp_r31->unk16C = temp_r31->unk168;
@ -451,12 +473,14 @@ void fn_1_9A64(omObjData* arg0) {
temp_r31->unk12++;
if (arg0->rot.y > 270.0f) {
arg0->rot.y -= 1.25f;
} else if (arg0->rot.y < 270.0f) {
}
else if (arg0->rot.y < 270.0f) {
arg0->rot.y = 270.0f;
}
if (temp_r31->unk24 > 0.025f) {
temp_r31->unk24 -= 0.025f;
} else if (temp_r31->unk24 < 0.05f) {
}
else if (temp_r31->unk24 < 0.05f) {
temp_r31->unk24 = 0.0f;
}
if ((270.0f == arg0->rot.y) && (0.0f == temp_r31->unk24)) {
@ -475,14 +499,15 @@ void fn_1_9A64(omObjData* arg0) {
temp_r31->unkE = 5;
CharModelMotionSet(temp_r31->unk2, arg0->motion[temp_r31->unkE]);
temp_r31->unkE = 3;
CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0);
CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0U);
temp_r31->unk16 = 0;
temp_r31->unk14 = 0;
temp_r31->unk1C = lbl_1_data_210[0];
temp_r31->unk18 = fn_1_B79C(lbl_1_data_1E0[0].y, lbl_1_data_1E0[1].y, temp_r31->unk1C);
temp_r31->unk10 = 11;
temp_r31->unk12 = 0;
} else {
}
else {
temp_r31->unk10 = 13;
temp_r31->unk12 = 0;
}
@ -513,14 +538,15 @@ void fn_1_9A64(omObjData* arg0) {
arg0->trans.y = sp8.y;
arg0->trans.z = sp8.z;
temp_r31->unkE = 4;
CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0);
CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0U);
temp_r31->unk12 = 0;
temp_r31->unk16 ^= 1;
if (++temp_r31->unk14 >= 3) {
temp_r31->unk10 = 0xC;
}
}
} else {
}
else {
sp14 = lbl_1_data_1E0[var_r29];
sp8 = lbl_1_data_1E0[var_r29 + 1];
var_f31 = atan2d((sp8.x - arg0->trans.x), (sp8.z - arg0->trans.z));
@ -551,7 +577,8 @@ void fn_1_9A64(omObjData* arg0) {
if (fn_1_B888() != 0) {
temp_r31->unk10 = 14;
temp_r31->unk12 = 0;
} else {
}
else {
temp_r31->unk10 = 15;
temp_r31->unk12 = 0;
}
@ -585,7 +612,7 @@ void fn_1_9A64(omObjData* arg0) {
temp_r31->unk30.x = sp74[0][3];
temp_r31->unk30.y = sp74[1][3];
temp_r31->unk30.z = sp74[2][3];
for (var_r29 = 0; var_r29 < 0xC; var_r29++) {
PSMTXCopy(sp44, sp74);
fn_1_C878(arg0->model[4], lbl_1_data_21C[var_r29], sp74, 1);
@ -611,25 +638,17 @@ void fn_1_9A64(omObjData* arg0) {
temp_r31->unk164 = 1;
}
void fn_1_AE58(omObjData* arg0) {
void fn_1_AE58(omObjData *arg0)
{
arg0->func = NULL;
}
f32 lbl_1_data_36C[4][2] = {
30.0f, 24.0f,
24.0f, 18.0f,
12.0f, 6.0f,
6.0f, 0.0f
};
f32 lbl_1_data_36C[4][2] = { 30.0f, 24.0f, 24.0f, 18.0f, 12.0f, 6.0f, 6.0f, 0.0f };
f32 lbl_1_data_38C[4][2] = {
0.2f, 0.15f,
0.15f, 0.1f,
0.1f, 0.05f,
0.05f, 0.0f
};
f32 lbl_1_data_38C[4][2] = { 0.2f, 0.15f, 0.15f, 0.1f, 0.1f, 0.05f, 0.05f, 0.0f };
void fn_1_AE64(omObjData* arg0) {
void fn_1_AE64(omObjData *arg0)
{
M424DllClawStruct2 sp20[8];
M424DllClawStruct2 sp10;
s32 spC;
@ -642,12 +661,12 @@ void fn_1_AE64(omObjData* arg0) {
f32 var_f24;
s32 temp_r24;
s32 temp_r23;
M424DllClawStruct* temp_r31;
Vec* var_r30;
M424DllClawStruct *temp_r31;
Vec *var_r30;
s32 var_r29;
s32 var_r28;
s32 var_r27;
M424DllBallStruct2* var_r26;
M424DllBallStruct2 *var_r26;
s32 var_r25;
spC = 0;
@ -693,7 +712,7 @@ void fn_1_AE64(omObjData* arg0) {
if (var_r28 != 0) {
for (var_r29 = 0; var_r29 < (var_r28 - 1); var_r29++) {
var_r27 = var_r29 + 1;
for (;var_r27 < var_r28; var_r27++) {
for (; var_r27 < var_r28; var_r27++) {
if (sp20[var_r29].unkC < sp20[var_r27].unkC) {
sp10 = sp20[var_r29];
sp20[var_r29] = sp20[var_r27];
@ -729,7 +748,8 @@ void fn_1_AE64(omObjData* arg0) {
var_f29 = (var_f29 - 350.0f) / 250.0f + temp_r23;
if (var_f29 < 0.0f) {
var_f29 = 0.0f;
} else if (var_f29 > 1.0f) {
}
else if (var_f29 > 1.0f) {
var_f29 = 1.0f;
}
temp_r31->unk194 = (60.0f * (1.0f - var_f29));
@ -748,7 +768,8 @@ void fn_1_AE64(omObjData* arg0) {
temp_r31->unk1AC = 0;
return;
}
} else {
}
else {
if (var_f31 >= (15.0f + temp_r31->unk1A8)) {
temp_r31->unk1A0++;
temp_r31->unk1A8 = var_f31;
@ -766,7 +787,8 @@ void fn_1_AE64(omObjData* arg0) {
if (++temp_r31->unk1AC >= temp_r31->unk194) {
var_r25 = 0;
}
} else {
}
else {
var_r25 = 0;
}
if (var_r25 != 0) {
@ -778,7 +800,8 @@ void fn_1_AE64(omObjData* arg0) {
}
}
u16 fn_1_B79C(f32 arg0, f32 arg1, f32 arg2) {
u16 fn_1_B79C(f32 arg0, f32 arg1, f32 arg2)
{
f32 var_f31;
f32 var_f3;
u16 var_r31;
@ -791,8 +814,9 @@ u16 fn_1_B79C(f32 arg0, f32 arg1, f32 arg2) {
return var_r31;
}
s32 fn_1_B804(void) {
M424DllClawStruct* temp_r31;
s32 fn_1_B804(void)
{
M424DllClawStruct *temp_r31;
if (!lbl_1_bss_6D8) {
return 0;
@ -807,17 +831,20 @@ s32 fn_1_B804(void) {
return 0;
}
s32 fn_1_B888(void) {
s32 fn_1_B888(void)
{
if (lbl_1_bss_6CC >= 3) {
return 1;
} else {
}
else {
return 0;
}
}
s32 fn_1_B8AC(void) {
M424DllClawStruct* temp_r31;
s32 fn_1_B8AC(void)
{
M424DllClawStruct *temp_r31;
if (!lbl_1_bss_6D8) {
return 0;
}
@ -832,9 +859,10 @@ s32 fn_1_B8AC(void) {
return 0;
}
s32 fn_1_B924(void) {
M424DllClawStruct* temp_r31;
s32 fn_1_B924(void)
{
M424DllClawStruct *temp_r31;
if (!lbl_1_bss_6D8) {
return 0;
}
@ -849,11 +877,13 @@ s32 fn_1_B924(void) {
return 0;
}
void fn_1_B99C(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2) {
void fn_1_B99C(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2)
{
fn_1_B9E0(arg0, arg1, arg8, arg2, 0x10);
}
s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) {
s32 fn_1_B9E0(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2, s32 arg3)
{
Vec sp60;
Vec sp54;
Vec sp48;
@ -870,11 +900,11 @@ s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) {
f32 var_f25;
f32 var_f24;
f32 var_f23;
M424DllClawStruct* temp_r31;
M424DllClawStruct *temp_r31;
s32 var_r29;
s32 var_r28;
s32 var_r26;
omObjData* var_r24;
omObjData *var_r24;
s32 var_r23;
var_r23 = 1;
@ -907,7 +937,8 @@ s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) {
var_f23 = sqrtf((sp18.x * sp18.x) + (sp18.z * sp18.z));
if ((temp_r31->unk3C[var_r29].y > sp24.y) && (var_f23 < 17.599999999999998)) {
temp_r31->unk15C = 1;
} else {
}
else {
PSVECNormalize(&sp18, &sp18);
PSVECScale(&sp18, &sp18, temp_f30);
PSVECAdd(&temp_r31->unk3C[var_r29], &sp18, arg2);
@ -947,9 +978,10 @@ s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) {
PSVECAdd(&sp60, &sp30, arg2);
var_r28 = 1;
var_r26 = 1;
} else if (var_f29 < temp_f30) {
}
else if (var_f29 < temp_f30) {
if (PSVECMag(&sp30) <= 0.0f) {
sp30.x = sp30.y = 0.0f;
sp30.z = 1.0f;
}
@ -1025,12 +1057,13 @@ s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) {
return var_r28;
}
s32 fn_1_C210(Vec* arg0) {
s32 fn_1_C210(Vec *arg0)
{
Vec sp1C;
Vec sp10;
f32 spC;
M424DllClawStruct* temp_r31;
omObjData* var_r30;
M424DllClawStruct *temp_r31;
omObjData *var_r30;
s32 var_r29;
var_r29 = 0;
@ -1052,21 +1085,23 @@ s32 fn_1_C210(Vec* arg0) {
return var_r29;
}
void fn_1_C2E0(s32 arg0) {
void fn_1_C2E0(s32 arg0)
{
Vec sp4C;
Vec sp40;
Vec sp34;
Vec sp28;
Vec* spC;
M424DllBallStruct2* temp_r27;
Vec* temp_r28;
M424DllClawStruct* temp_r31;
Vec *spC;
M424DllBallStruct2 *temp_r27;
Vec *temp_r28;
M424DllClawStruct *temp_r31;
s32 var_r30;
s32 var_r26;
omObjData* var_r25;
omObjData *var_r25;
if ((u8)omPauseChk() != 0U)
return;
if ((u8)omPauseChk() != 0) return;
var_r25 = lbl_1_bss_6D8;
if (lbl_1_bss_6D8) {
temp_r31 = var_r25->data;
@ -1074,10 +1109,11 @@ void fn_1_C2E0(s32 arg0) {
temp_r27 = &lbl_1_bss_60[0];
if (temp_r27) {
var_r26 = 0x10;
for (var_r30 = 0; var_r30 < lbl_1_bss_58; var_r30++) {
temp_r27 = &lbl_1_bss_60[var_r30];
if ((fn_1_8950(var_r30) == 3) || (fn_1_8950(var_r30) == 4)) continue;
if ((fn_1_8950(var_r30) == 3) || (fn_1_8950(var_r30) == 4))
continue;
temp_r28 = fn_1_89D4(var_r30);
spC = fn_1_8A00(var_r30);
sp28 = *temp_r28;
@ -1116,18 +1152,19 @@ void fn_1_C2E0(s32 arg0) {
}
}
void fn_1_C604(s32 arg0, s32 arg1) {
void fn_1_C604(s32 arg0, s32 arg1)
{
Vec sp30;
Vec sp24;
Vec sp18;
Vec spC;
M424DllBallStruct2* sp8;
Vec* var_r31;
M424DllBallStruct2 *sp8;
Vec *var_r31;
f32 temp_f31;
f32 var_f30;
s32 var_r30;
M424DllBallStruct2* var_r28;
Vec* var_r27;
M424DllBallStruct2 *var_r28;
Vec *var_r27;
sp8 = &lbl_1_bss_60[var_r30];
var_r27 = fn_1_89D4(arg0);
@ -1145,7 +1182,8 @@ void fn_1_C604(s32 arg0, s32 arg1) {
sp18.x *= temp_f31;
sp18.y *= temp_f31;
sp18.z *= temp_f31;
} else {
}
else {
sp18.x = 0.0f;
sp18.y = 0.0f;
sp18.z = 1.0f;
@ -1168,22 +1206,25 @@ void fn_1_C604(s32 arg0, s32 arg1) {
}
}
void fn_1_C854(void) {
void fn_1_C854(void)
{
fn_1_C2E0(0);
}
s32 fn_1_C878(s16 arg0, const char* arg1, Mtx arg2, s32 arg3) {
s32 fn_1_C878(s16 arg0, const char *arg1, Mtx arg2, s32 arg3)
{
Mtx sp44;
Mtx sp14;
HsfData* temp_r30;
ModelData* temp_r31;
HsfData *temp_r30;
ModelData *temp_r31;
temp_r31 = &Hu3DData[arg0];
temp_r30 = temp_r31->hsfData;
lbl_1_bss_6C8 = 0;
if (temp_r31->unk_08 != -1) {
lbl_1_bss_6C4 = 1;
} else {
}
else {
lbl_1_bss_6C4 = 0;
}
mtxRot(sp14, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z);
@ -1197,18 +1238,19 @@ s32 fn_1_C878(s16 arg0, const char* arg1, Mtx arg2, s32 arg3) {
return lbl_1_bss_6C8;
}
void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) {
void fn_1_C99C(HsfObject *arg0, Mtx arg1, const char *arg2, Mtx arg3)
{
Mtx spF8;
Mtx spC8;
Mtx sp98;
Mtx sp68;
Mtx sp38;
Mtx sp8;
HsfTransform* var_r31;
HsfTransform* var_r30;
HsfTransform* var_r29;
HsfObject* temp_r28;
HsfObject* temp_r27;
HsfTransform *var_r31;
HsfTransform *var_r30;
HsfTransform *var_r29;
HsfObject *temp_r28;
HsfObject *temp_r27;
u32 var_r25;
u32 var_r24;
u32 var_r23;
@ -1216,13 +1258,15 @@ void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) {
if (lbl_1_bss_6C8 == 0) {
if (lbl_1_bss_6C4 != 0) {
var_r31 = &arg0->data.curr;
} else {
}
else {
var_r31 = &arg0->data.base;
}
if ((var_r31->scale.x <= 0.0f) && (var_r31->scale.y <= 0.0f) && (var_r31->scale.z <= 0.0f)) {
PSMTXCopy(arg1, spF8);
OSReport("OBJ MTX CHECK ERROR %s \n", arg0->name);
} else {
}
else {
mtxRot(spC8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z);
PSMTXScale(spF8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z);
PSMTXConcat(spC8, spF8, spF8);
@ -1241,13 +1285,15 @@ void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) {
if (lbl_1_bss_6C8 == 0) {
if (lbl_1_bss_6C4 != 0) {
var_r30 = &temp_r28->data.curr;
} else {
}
else {
var_r30 = &temp_r28->data.base;
}
if ((var_r30->scale.x <= 0.0f) && (var_r30->scale.y <= 0.0f) && (var_r30->scale.z <= 0.0f)) {
PSMTXCopy(spF8, sp68);
OSReport("OBJ MTX CHECK ERROR %s \n", temp_r28->name);
} else {
}
else {
mtxRot(sp98, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z);
PSMTXScale(sp68, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z);
PSMTXConcat(sp98, sp68, sp68);
@ -1266,13 +1312,15 @@ void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) {
if (lbl_1_bss_6C8 == 0) {
if (lbl_1_bss_6C4 != 0) {
var_r29 = &temp_r27->data.curr;
} else {
}
else {
var_r29 = &temp_r27->data.base;
}
if ((var_r29->scale.x <= 0.0f) && (var_r29->scale.y <= 0.0f) && (var_r29->scale.z <= 0.0f)) {
PSMTXCopy(sp68, sp8);
OSReport("OBJ MTX CHECK ERROR %s \n", temp_r27->name);
} else {
OSReport("OBJ MTX CHECK ERROR %s \n", temp_r27->name
}
else {
mtxRot(sp38, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z);
PSMTXScale(sp8, var_r29->scale.x, var_r29->scale.y, var_r29->scale.z);
PSMTXConcat(sp38, sp8, sp8);
@ -1296,8 +1344,9 @@ void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) {
}
}
void fn_1_CE74(s32 arg0) {
ModelData* temp_r31;
void fn_1_CE74(s32 arg0)
{
ModelData *temp_r31;
temp_r31 = &Hu3DData[arg0];
if (temp_r31->unk_08 != -1) {
@ -1311,21 +1360,23 @@ void fn_1_CE74(s32 arg0) {
}
}
void fn_1_CF00(Process* arg0) {
M424DllClawStruct3* var_r31;
void fn_1_CF00(Process *arg0)
{
M424DllClawStruct3 *var_r31;
s32 var_r30;
omAddObjEx(arg0, 0x40, 0, 0, -1, fn_1_CF80);
var_r31 = &lbl_1_bss_640[0];
for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) {
var_r31->unk0 = -1;
var_r31->unk4 = -1;
}
}
void fn_1_CF80(omObjData* arg0) {
M424DllClawStruct3* var_r31;
void fn_1_CF80(omObjData *arg0)
{
M424DllClawStruct3 *var_r31;
s32 var_r30;
var_r31 = &lbl_1_bss_640[0];
@ -1340,13 +1391,15 @@ void fn_1_CF80(omObjData* arg0) {
}
}
s32 fn_1_D010(s32 arg0, s32 arg1) {
M424DllClawStruct3* var_r31;
s32 fn_1_D010(s32 arg0, s32 arg1)
{
M424DllClawStruct3 *var_r31;
s32 var_r30;
var_r31 = &lbl_1_bss_640[0];
for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) {
if (var_r31->unk0 == -1) break;
if (var_r31->unk0 == -1)
break;
}
if (var_r30 >= 0x10) {
return -1;

1670
src/REL/m425Dll/main.c Normal file

File diff suppressed because it is too large Load diff

2768
src/REL/m425Dll/thwomp.c Normal file

File diff suppressed because it is too large Load diff

569
src/REL/m430Dll/main.c Normal file
View file

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

2428
src/REL/m430Dll/player.c Normal file

File diff suppressed because it is too large Load diff

1818
src/REL/m430Dll/water.c Normal file

File diff suppressed because it is too large Load diff

476
src/REL/m433Dll/main.c Normal file
View file

@ -0,0 +1,476 @@
#include "ext_math.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
#include "string.h"
#include "REL/m433Dll.h"
void fn_1_4C0(omObjData *object);
void fn_1_618(omObjData *object);
void fn_1_798(omObjData *object);
void fn_1_AD4(omObjData *object);
void fn_1_E2C(omObjData *object);
void fn_1_1040(omObjData *object);
void fn_1_13FC(omObjData *object);
void fn_1_16D0(omObjData *object);
omObjFunc fn_1_1A3C(Process *process, omObjData *object);
void fn_1_1A48(omObjData *object);
float fn_1_26C4(float arg8, float arg9, float argA);
Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f };
Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f };
Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f };
GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF };
Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f };
Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f };
Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f };
Vec lbl_1_data_4C = { 0.0f, 170.0f, 0.0f };
Vec lbl_1_data_58 = { 0.0f, -22.0f, 850.0f };
char lbl_1_bss_34[0x4];
char lbl_1_bss_30[0x4];
char lbl_1_bss_2C[0x4];
Process *lbl_1_bss_28;
omObjData *lbl_1_bss_24;
omObjData *lbl_1_bss_20;
char lbl_1_bss_18[8];
s16 lbl_1_bss_16;
s16 lbl_1_bss_14;
s16 lbl_1_bss_12;
s16 lbl_1_bss_10;
s32 lbl_1_bss_C;
s32 lbl_1_bss_8;
s32 lbl_1_bss_4;
s32 lbl_1_bss_0;
void ObjectSetup(void)
{
Vec sp14;
Vec sp8;
Process *var_r31;
LightData *var_r30;
HuAudSndGrpSet(0x3A);
lbl_1_bss_C = lbl_1_bss_8 = -1;
lbl_1_bss_4 = lbl_1_bss_0 = -1;
lbl_1_data_28.x = 200.0f;
lbl_1_data_28.y = 1200.0f;
lbl_1_data_28.z = 160.0f;
lbl_1_data_34.x = 0.0f;
lbl_1_data_34.y = 1.0f;
lbl_1_data_34.z = 0.0f;
lbl_1_data_40.x = 0.0f;
lbl_1_data_40.y = 0.0f;
lbl_1_data_40.z = 0.0f;
Hu3DShadowCreate(30.0f, 20.0f, 25000.0f);
Hu3DShadowTPLvlSet(0.625f);
Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40);
lbl_1_bss_16 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24);
Hu3DGLightInfinitytSet(lbl_1_bss_16);
var_r30 = &Hu3DGlobalLight[lbl_1_bss_16];
var_r30->unk_00 |= 0x8000;
lbl_1_data_18.x = 55.74f;
lbl_1_data_18.y = 0.0f;
lbl_1_data_18.z = 3500.0f;
sp14.x = sp14.y = sp14.z = 0.0f;
sp8.x = sp8.z = 0.0f;
sp8.y = lbl_1_data_18.z;
sp8.x = 0.0f;
sp8.y = 3480.0002f;
sp8.z = 900.00006f;
Hu3DGLightPosAimSetV(lbl_1_bss_16, &sp8, &sp14);
Hu3DShadowPosSet(&sp8, &lbl_1_data_34, &sp14);
lbl_1_bss_14 = lbl_1_bss_12 = lbl_1_bss_10 = -1;
var_r31 = omInitObjMan(0x32, 0x2000);
lbl_1_bss_28 = var_r31;
omGameSysInit(var_r31);
Hu3DCameraCreate(1);
Hu3DCameraPerspectiveSet(1, -1.0f, 10.0f, 10000.0f, 1.2f);
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
lbl_1_bss_20 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutView);
lbl_1_bss_24 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_4C0);
fn_1_2894(var_r31);
fn_1_5904(var_r31);
}
void fn_1_4C0(omObjData *object)
{
M433DllWork *work;
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433DllWork), MEMORY_DEFAULT_NUM);
work = object->data;
memset(work, 0, sizeof(M433DllWork));
work->unk_00 = 0;
work->unk_04 = 0;
work->unk_0C = 0;
work->unk_10 = 0;
work->unk_14 = 0;
work->unk_18 = 0;
work->unk_24 = 0;
work->unk_28 = 0;
work->unk_08 = 0;
work->unk_34 = 2;
work->unk_38 = 0;
work->unk_3C = 0;
object->func = fn_1_798;
}
void fn_1_584(omObjData *object)
{
M433DllWork *work = object->data;
work->unk_04++;
work->unk_10++;
work->unk_18++;
work->unk_28++;
if ((omSysExitReq != 0) && (work->unk_00 != 5)) {
work->unk_00 = 4;
fn_1_618(object);
}
}
void fn_1_618(omObjData *object)
{
M433DllWork *work = object->data;
if (work->unk_08 == 0) {
switch (work->unk_00) {
case 0:
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
Hu3DCameraPerspectiveSet(1, 41.5f, 10.0f, 10000.0f, 1.2f);
lbl_1_bss_C = HuAudFXPlay(0x6AC);
work->unk_00 = 1;
work->unk_10 = 0;
object->func = fn_1_29A4(lbl_1_bss_28, object);
break;
case 1:
work->unk_00 = 2;
work->unk_18 = 0;
object->func = fn_1_1040;
break;
case 2:
work->unk_00 = 3;
work->unk_28 = 0;
object->func = fn_1_1A3C(lbl_1_bss_28, object);
break;
case 3:
case 4:
work->unk_08 = 1;
work->unk_00 = 5;
object->func = fn_1_AD4;
break;
case 5:
default:
work->unk_00 = 5;
object->func = fn_1_E2C;
break;
}
work->unk_04 = 0;
}
}
void fn_1_798(omObjData *object)
{
fn_1_584(object);
fn_1_618(object);
}
void fn_1_AD4(omObjData *object)
{
M433DllWork *work = object->data;
fn_1_584(object);
if (WipeStatGet() == 0) {
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
work->unk_08 = 0;
fn_1_618(object);
}
}
void fn_1_E2C(omObjData *object)
{
fn_1_584(object);
if (WipeStatGet() == 0) {
fn_1_5B74();
fn_1_2984();
MGSeqKillAll();
HuAudFadeOut(1);
omOvlReturnEx(1, 1);
}
}
void fn_1_1040(omObjData *object)
{
M433DllWork *work = object->data;
fn_1_584(object);
switch (work->unk_14) {
case 0:
HuAudFXFadeOut(lbl_1_bss_C, 0x1E);
work->unk_1C = 0x1E;
work->unk_20 = 0x3C;
lbl_1_bss_14 = MGSeqCreate(3, 0);
MGSeqPosSet(lbl_1_bss_14, 320.0f, 240.0f);
Center.x = 0.0f;
Center.y = 200.0f;
Center.z = 0.0f;
CRot.x = -30.0f;
CRot.y = 0.0f;
CRot.z = 0.0f;
CZoom = 1900.0f;
work->unk_14 = 1;
work->unk_18 = 0;
break;
case 1:
if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_14) & 0x10) != 0)) {
lbl_1_bss_4 = HuAudSeqPlay(0x47);
}
if ((MGSeqStatGet(lbl_1_bss_14) == 0) && (work->unk_08 == 0)) {
work->unk_14 = 2;
work->unk_18 = 0;
object->func = fn_1_13FC;
}
break;
}
}
void fn_1_13FC(omObjData *object)
{
M433DllWork *work = object->data;
s32 var_r27 = 0;
fn_1_584(object);
work->unk_20++;
if (--work->unk_20 == 0) {
work->unk_20 = 0x3C;
work->unk_1C--;
if (work->unk_1C == 0) {
var_r27 = 1;
}
}
if (work->unk_34 != 2) {
var_r27 = 1;
}
if (var_r27 != 0) {
lbl_1_bss_12 = MGSeqCreate(3, 1);
MGSeqPosSet(lbl_1_bss_12, 320.0f, 240.0f);
HuAudSeqFadeOut(lbl_1_bss_4, 0x64);
work->unk_14 = 3;
work->unk_18 = 0;
if (work->unk_08 == 0) {
object->func = fn_1_16D0;
}
lbl_1_bss_8 = HuAudFXPlay(0x6AC);
}
}
void fn_1_16D0(omObjData *object)
{
M433DllWork *work = object->data;
fn_1_584(object);
if ((MGSeqStatGet(lbl_1_bss_12) == 0) && ((work->unk_38 + 0xFFFF0000) == 0x1111)) {
work->unk_14 = 4;
work->unk_18 = 0;
fn_1_618(object);
}
}
omObjFunc fn_1_1A3C(Process *process, omObjData *object)
{
return fn_1_1A48;
}
static inline s32 fn_1_1A48_inline(void)
{
return GWSystem.mg_type;
}
void fn_1_1A48(omObjData *object)
{
M433DllWork *work = object->data;
float var_f31 = lbl_1_data_58.y;
if (fn_1_10FA4(1) != 0) {
var_f31 *= -1.0f;
}
Center.x += 0.15f * (lbl_1_data_4C.x - Center.x);
Center.y += 0.15f * (lbl_1_data_4C.y - Center.y);
Center.z += 0.15f * (lbl_1_data_4C.z - Center.z);
CRot.x = fn_1_26C4(CRot.x, lbl_1_data_58.x, 0.15f);
CRot.y = fn_1_26C4(CRot.y, var_f31, 0.15f);
CZoom += 0.15f * (lbl_1_data_58.z - CZoom);
fn_1_584(object);
work->unk_24 = 1;
if (lbl_1_bss_0 < 0) {
lbl_1_bss_0 = HuAudSStreamPlay(1);
}
if (lbl_1_bss_10 < 0) {
s32 spC[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
s32 var_r26;
s32 var_r25 = 0;
s32 var_r24;
for (var_r26 = 0; var_r26 < 2; var_r26++) {
if (work->unk_2C[var_r26] >= 0) {
spC[var_r25++] = GWPlayerCfg[work->unk_2C[var_r26]].character;
GWPlayerCoinWinAdd(work->unk_2C[var_r26], 10);
}
}
if (spC[0] == -1) {
lbl_1_bss_10 = MGSeqCreate(5, 2);
return;
}
var_r24 = 3;
if (fn_1_1A48_inline() == 0) {
if (fn_1_10FA4(0) != 0) {
var_r24 = 5;
}
}
lbl_1_bss_10 = MGSeqCreate(5, var_r24, spC[0], spC[1], spC[2], spC[3]);
return;
}
if ((MGSeqStatGet(lbl_1_bss_10) == 0) && (work->unk_28 >= 210.0f)) {
HuAudFXFadeOut(lbl_1_bss_8, 0x1E);
work->unk_24 = 2;
fn_1_618(object);
}
}
s32 fn_1_213C(void)
{
return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_00;
}
s32 fn_1_2154(void)
{
return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_0C;
}
u32 fn_1_216C(void)
{
return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_14;
}
u32 fn_1_2184(void)
{
return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_24;
}
void fn_1_219C(s32 arg0, s32 arg1, s32 arg2)
{
M433DllWork *work = lbl_1_bss_24->data;
work->unk_34 = arg0;
work->unk_2C[0] = arg1;
work->unk_2C[1] = arg2;
}
s32 fn_1_21CC(void)
{
return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_34;
}
void fn_1_21E4(s32 arg0)
{
OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_38 |= (1 << ((arg0 & 7) * 4));
}
void fn_1_2214(s32 arg0)
{
OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_3C |= (1 << ((arg0 & 3) * 4));
}
s32 fn_1_2244(void)
{
return MGSeqStatGet(lbl_1_bss_12) == 0;
}
void fn_1_227C(Vec *arg0, Vec *arg1)
{
Vec sp10;
PSVECSubtract(arg1, arg0, &sp10);
Center = *arg1;
CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z)));
CRot.y = atan2d(-sp10.x, -sp10.z);
CRot.z = 0.0f;
CZoom = PSVECMag(&sp10);
}
void fn_1_2484(float arg8, float arg9, float argA, float argB, float argC, float argD)
{
Vec sp3C;
Vec sp30;
sp3C.x = arg8;
sp3C.y = arg9;
sp3C.z = argA;
sp30.x = argB;
sp30.y = argC;
sp30.z = argD;
fn_1_227C(&sp3C, &sp30);
}
float fn_1_26C4(float arg8, float arg9, float argA)
{
float var_f31;
float var_f30;
float var_f29;
var_f30 = fmod(arg9 - arg8, 360.0);
var_f31 = var_f30;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if (var_f31 > 180.0f) {
var_f31 -= 360.0f;
}
var_f29 = fmod(arg8 + (argA * var_f31), 360.0);
var_f31 = var_f29;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
return var_f31;
}
float fn_1_27E0(float arg8, float arg9)
{
float var_f31;
float var_f30;
var_f30 = fmod(arg9 - arg8, 360.0);
var_f31 = var_f30;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if (var_f31 > 180.0f) {
var_f31 -= 360.0f;
}
return var_f31;
}
s32 lbl_1_data_64[] = {
0x00000000,
0x00000000,
0x45ABE000,
0xC576E000,
0x00000000,
0xBF333333,
0x3F19999A,
0xFFFFFFFF,
0x00000000,
0x45ABE000,
0xC576E000,
0x00000000,
0x3F800000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
};

827
src/REL/m433Dll/map.c Normal file
View file

@ -0,0 +1,827 @@
#include "dolphin/mtx.h"
#include "ext_math.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/flag.h"
#include "game/frand.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
#include "string.h"
#include "REL/m433Dll.h"
typedef struct M433DllBss38Struct {
/* 0x00 */ u8 unk_00;
/* 0x01 */ char unk01[2];
/* 0x03 */ u8 unk_03;
/* 0x04 */ u8 unk_04;
/* 0x05 */ char unk05[3];
/* 0x08 */ float unk_08;
/* 0x0C */ Vec unk_0C;
/* 0x18 */ Vec unk_18;
/* 0x24 */ Vec unk_24;
/* 0x30 */ Vec unk_30;
/* 0x3C */ char unk3C[0xC];
/* 0x48 */ Vec unk_48;
union {
struct {
/* 0x54 */ float unk_54;
/* 0x58 */ float unk_58;
char unk5C[4];
/* 0x60 */ float unk_60;
};
struct {
/* 0x54 */ s16 unk_54_s16[0x20];
};
};
} M433DllBss38Struct; /* size = 0x94 */
typedef struct M433DllMapWork {
char unk00;
u8 unk_01;
u8 unk_02;
char unk03;
u8 unk_04;
char unk08[4];
Vec unk_0C;
Vec unk_18;
char unk24[0xC];
Vec unk_30;
Vec unk_3C;
char unk48[0xC];
s16 unk_54;
char unk56[0x3E];
} M433DllMapWork; /* size 0x94 */
typedef struct M433DllMapWork2 {
u8 unk_00;
Vec unk_04;
Vec unk_10;
Vec unk_1C;
Vec unk_28;
Vec unk_34;
Vec unk_40;
char unk4C[0xE4];
float unk_130;
float unk_134;
float unk_138;
char unk13C[4];
float unk_140;
float unk_144;
float unk_148;
float unk_14C[3];
float unk_158[3];
float unk_164[3];
float unk_170[3];
float unk_17C[3];
u16 unk_188[3];
} M433DllMapWork2; /* size 0x190 */
typedef struct M433DllUnkStruct {
s16 unk_00;
s16 unk_02;
s16 unk_04;
char unk06[0x42];
} M433DllUnkStruct; /* size 0x48 */
void fn_1_2AC4(omObjData *object);
void fn_1_2CE0(omObjData *object);
void fn_1_32CC(omObjData *object);
void fn_1_39AC(omObjData *object);
void fn_1_3C1C(omObjData *object);
s16 fn_1_3E5C(s32 arg0, s16 arg1, ParticleHook arg2);
void fn_1_3F14(ModelData *model, ParticleData *particle, Mtx matrix);
void fn_1_4A94(omObjData *object);
void fn_1_4BA0(omObjData *object);
void fn_1_4ED4(float arg8, Vec *arg0, Vec *arg1, float arg9);
void fn_1_5068(void);
void *fn_1_50A8(s32 arg0);
void fn_1_51DC(void);
s32 fn_1_5260(void);
float fn_1_52B4(float arg8, float arg9, float argA);
void fn_1_541C(Mtx arg0, float arg8, float arg9, float argA);
void fn_1_553C(Mtx arg0, Vec *arg1);
extern s32 lbl_1_bss_34;
omObjData *lbl_1_bss_7B0;
omObjData *lbl_1_bss_7AC;
omObjData *lbl_1_bss_7A8;
void *lbl_1_bss_728[0x20];
M433DllBss38Struct lbl_1_bss_38[0xC];
void fn_1_2894(Process *process)
{
s32 var_r31;
s32 var_r29;
lbl_1_bss_34 = 1;
lbl_1_bss_7AC = omAddObjEx(process, 0x1E, 8, 0, -1, fn_1_2CE0);
lbl_1_bss_7A8 = omAddObjEx(process, 0x1F, 3, 6, -1, fn_1_39AC);
lbl_1_bss_7B0 = omAddObjEx(process, 0x1D, 1, 0, -1, fn_1_4A94);
var_r29 = frand() & 0x1F;
for (var_r31 = 0; var_r31 < var_r29; var_r31++) {
fn_1_5260();
}
fn_1_5068();
}
void fn_1_2984(void)
{
fn_1_51DC();
}
omObjFunc fn_1_29A4(Process *process, omObjData *object)
{
M433DllWork *work = object->data;
CRot.x = 54.3f;
CRot.y = 22.3f;
CRot.z = 0.0f;
Center.x = -130.1f;
Center.y = 885.0f;
Center.z = -900.3f;
CZoom = 1100.0f;
fn_1_4ED4(0.0f, &Center, &CRot, CZoom);
object->work[0] = 0xB4;
work->unk_0C = 1;
return fn_1_2AC4;
}
void fn_1_2AC4(omObjData *object)
{
Vec sp14;
Vec sp8;
float var_f31;
M433DllWork *work = object->data;
fn_1_584(object);
if (object->work[0] == 120.0f) {
sp14.x = 0.0f;
sp14.y = -10.0f;
sp14.z = -207.5f;
sp8.x = -26.5f;
sp8.y = 0.0f;
sp8.z = 0.0f;
var_f31 = 1400.0f;
fn_1_4ED4(90.0f, &sp14, &sp8, var_f31);
}
if (object->work[0] == 48.0f) {
sp14.x = 0.0f;
sp14.y = 200.0f;
sp14.z = 0.0f;
sp8.x = -30.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
var_f31 = 1900.0f;
fn_1_4ED4(object->work[0], &sp14, &sp8, var_f31);
}
if (--object->work[0] == 0) {
work->unk_0C = 2;
fn_1_618(object);
lbl_1_bss_7B0->func = NULL;
}
}
void fn_1_2CE0(omObjData *object)
{
Vec sp8[0x10] = {
{ 475.0f, 800.0f, -1400.0f },
{ -300.0f, 700.0f, -1400.0f },
{ 300.0f, 875.0f, -1450.0f },
{ -575.0f, 850.0f, -1550.0f },
{ 350.0f, 750.0f, -1500.0f },
{ -450.0f, 775.0f, -1550.0f },
{ 325.0f, 725.0f, -1450.0f },
{ -525.0f, 725.0f, -1500.0f },
{ 575.0f, 850.0f, -1550.0f },
{ -350.0f, 750.0f, -1500.0f },
{ 450.0f, 775.0f, -1550.0f },
{ -325.0f, 725.0f, -1450.0f },
{ 525.0f, 725.0f, -1500.0f },
{ -475.0f, 800.0f, -1400.0f },
{ 300.0f, 700.0f, -1400.0f },
{ -300.0f, 875.0f, -1450.0f },
};
M433DllBss38Struct *var_r31;
s32 var_r30;
M433DllUnkStruct *var_r28;
s32 i;
s32 var_r26;
var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCD));
object->model[0] = var_r30;
var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCE));
object->model[1] = var_r30;
Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP);
Hu3DMotionSpeedSet(var_r30, 0.5f);
var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCF));
object->model[2] = var_r30;
Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP);
var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M425, 0x05), 1, fn_1_3F14);
object->model[3] = var_r30;
Hu3DParticleBlendModeSet(var_r30, 1);
Hu3DModelLayerSet(var_r30, 6);
var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C;
var_r28->unk_02 = 0;
HuDataDirClose(DATA_MAKE_NUM(DATADIR_M425, 0x05));
var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD3), 0xA, fn_1_3F14);
object->model[4] = var_r30;
Hu3DParticleBlendModeSet(var_r30, 1);
Hu3DModelLayerSet(var_r30, 6);
var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C;
var_r28->unk_02 = 1;
var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD2), 4, fn_1_3F14);
object->model[5] = var_r30;
Hu3DParticleBlendModeSet(var_r30, 1);
Hu3DModelLayerSet(var_r30, 6);
var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C;
var_r28->unk_02 = 2;
var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD1), 6, fn_1_3F14);
object->model[6] = var_r30;
Hu3DParticleBlendModeSet(var_r30, 1);
Hu3DModelLayerSet(var_r30, 6);
var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C;
var_r28->unk_02 = 3;
for (i = 0; i < 0xC; i++) {
var_r31 = &lbl_1_bss_38[i];
var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M425, 0x02));
var_r31->unk_00 = var_r30;
var_r31->unk_0C.x = sp8[i].x;
var_r31->unk_0C.y = sp8[i].y - 300.0f;
var_r31->unk_0C.z = 800.0f + sp8[i].z;
Hu3DModelPosSet(var_r30, var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z);
Hu3DMotionSpeedSet(var_r30, 6.0f);
var_r31->unk_03 = var_r31->unk_04 = 0;
var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f;
var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 1.0f;
var_r31->unk_48.x = var_r31->unk_48.y = var_r31->unk_48.z = 0.0f;
var_r31->unk_30.x = var_r31->unk_0C.x;
var_r31->unk_30.y = var_r31->unk_0C.y;
var_r31->unk_30.z = var_r31->unk_0C.z;
if ((i & 1) != 0) {
var_r31->unk_18.y = 90.0f;
var_r31->unk_0C.y += 650.0;
var_r31->unk_0C.x -= 1000.0 + (200.0f * ((fn_1_5260() - 0x8000) / 32768.0f));
}
else {
var_r31->unk_18.y = 90.0f;
var_r31->unk_0C.x += 200.0f * ((fn_1_5260() - 0x8000) / 32768.0f);
}
var_r31->unk_18.y += 10.0f * ((fn_1_5260() - 0x8000) / 32768.0f);
var_r31->unk_0C.z = var_r31->unk_0C.z - 400.0;
var_r31->unk_08 = 100.0f * (0.1f + (0.02f * (fn_1_5260() / 65536.0f)));
for (var_r26 = 0; var_r26 < 0x20; var_r26++) {
var_r31->unk_54_s16[var_r26] = 0;
}
var_r31->unk_60 = var_r31->unk_08;
}
HuDataDirClose(DATA_MAKE_NUM(DATADIR_M425, 0x02));
HuAudFXPlayVol(0x6A3, 0x41);
object->func = fn_1_32CC;
}
void fn_1_32CC(omObjData *object)
{
Mtx sp14;
Vec sp8;
M433DllBss38Struct *var_r31;
s32 i;
for (i = 0; i < 0xC; i++) {
var_r31 = &lbl_1_bss_38[i];
switch (var_r31->unk_04) {
case 0:
if (var_r31->unk_08 < var_r31->unk_60) {
var_r31->unk_08 += 0.4f;
}
if ((s32)(64.0f * (fn_1_5260() / 65536.0f)) == 0) {
Hu3DMotionTimeSet(var_r31->unk_00, 0.0f);
}
if (Hu3DMotionEndCheck(var_r31->unk_00) != 0) {
var_r31->unk_48.y = -3.8933334f;
}
else {
var_r31->unk_48.y = -1.2166667f;
}
var_r31->unk_54 += 0.1f * ((fn_1_5260() - 0x8000) / 32768.0f);
var_r31->unk_58 += var_r31->unk_54;
if (var_r31->unk_58 > 180.0f) {
var_r31->unk_58 -= 180.0f;
}
if (var_r31->unk_58 < -180.0f) {
var_r31->unk_58 += 180.0f;
}
var_r31->unk_18.x = -30.0 * sind(var_r31->unk_58) * sind(var_r31->unk_18.y);
var_r31->unk_18.z = -30.0 * sind(var_r31->unk_58) * cosd(var_r31->unk_18.y);
if (var_r31->unk_0C.y <= 500.0f || fabs(var_r31->unk_0C.x) > 1600.0) {
var_r31->unk_48.y = 0.0f;
var_r31->unk_54_s16[6] = 0xB4;
var_r31->unk_08 *= 0.75f;
var_r31->unk_04++;
}
break;
case 1:
var_r31->unk_18.y += 1.0f;
var_r31->unk_18.x = 0.0f;
var_r31->unk_18.z = 60.0 * sind(var_r31->unk_54_s16[6]) * cosd(var_r31->unk_18.y);
if (--var_r31->unk_54_s16[6] == 0) {
Hu3DModelAttrSet(var_r31->unk_00, HU3D_MOTATTR_LOOP);
Hu3DMotionSpeedSet(var_r31->unk_00, 6.0f);
var_r31->unk_48.y = 4.866667f;
var_r31->unk_04++;
}
break;
case 2:
if (var_r31->unk_08 > 4.0f) {
var_r31->unk_08 -= 0.1f;
var_r31->unk_48.y += 0.73f;
}
var_r31->unk_48.y += -0.5475f;
if (var_r31->unk_48.y < 0.0f) {
Hu3DModelAttrReset(var_r31->unk_00, HU3D_MOTATTR_LOOP);
Hu3DMotionSpeedSet(var_r31->unk_00, 2.0f);
var_r31->unk_60 = 100.0f * (0.1f + (0.02f * (fn_1_5260() / 65536.0f)));
var_r31->unk_04 = 0;
}
break;
}
var_r31->unk_48.x = var_r31->unk_08 * sind(var_r31->unk_18.y);
var_r31->unk_48.z = var_r31->unk_08 * cosd(var_r31->unk_18.y);
var_r31->unk_0C.x += var_r31->unk_48.x;
var_r31->unk_0C.y += var_r31->unk_48.y;
var_r31->unk_0C.z += var_r31->unk_48.z;
if (var_r31->unk_0C.z >= -500.0f) {
var_r31->unk_0C.z = -500.0f;
}
Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z);
fn_1_541C(sp14, var_r31->unk_18.x, -var_r31->unk_18.y, var_r31->unk_18.z);
fn_1_553C(sp14, &sp8);
Hu3DModelRotSetV(var_r31->unk_00, &sp8);
}
}
void fn_1_39AC(omObjData *object)
{
s32 var_r29;
s32 var_r28;
s32 sp18[4] = { 0x004000D4, 0x004000D5, 0x004000D6, 0x004000D7 };
s32 sp8[4] = { 0x0040000C, 0x00400010, 0x0040000F, 0x0040000E };
M433DllMapWork *work = fn_1_50A8(sizeof(M433DllMapWork));
object->data = work;
if (lbl_1_bss_34 != 0) {
var_r28 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0x0B));
}
else {
var_r28 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0x62));
}
object->model[0] = var_r28;
for (var_r29 = 0; var_r29 < 4; var_r29++) {
if (lbl_1_bss_34 != 0) {
object->motion[var_r29] = Hu3DJointMotionFile(var_r28, sp8[var_r29]);
}
else {
object->motion[var_r29] = Hu3DJointMotionFile(var_r28, sp18[var_r29]);
}
}
Hu3DMotionSet(var_r28, object->motion[0]);
Hu3DModelAttrSet(var_r28, HU3D_MOTATTR_LOOP);
work->unk_01 = work->unk_02 = 0;
work->unk_04 = 0;
work->unk_54 = 0;
work->unk_0C.x = 0.0f;
work->unk_0C.y = 180.0f;
work->unk_0C.z = -490.0f;
work->unk_30 = work->unk_0C;
work->unk_18.x = work->unk_18.y = work->unk_18.z = 0.0f;
work->unk_3C = work->unk_18;
omSetTra(object, work->unk_0C.x, work->unk_0C.y, work->unk_0C.z);
omSetRot(object, work->unk_18.x, work->unk_18.y, work->unk_18.z);
object->func = fn_1_3C1C;
}
void fn_1_3C1C(omObjData *object)
{
M433DllMapWork *work;
s32 var_r29;
s32 var_r28;
work = object->data;
var_r28 = object->model[0];
switch (work->unk_04) {
case 0:
work->unk_01 = 0;
var_r29 = 0x40000001;
break;
case 1:
work->unk_3C.y = 0.0f;
work->unk_01 = 1;
var_r29 = 0x40000001;
if (work->unk_54++ >= 0x5A) {
work->unk_54 = 0;
work->unk_04 = 0;
}
break;
case 2:
work->unk_3C.y = 0.0f;
work->unk_01 = 2;
var_r29 = 0;
if (Hu3DMotionEndCheck(var_r28) != 0) {
work->unk_04 = 0;
}
break;
case 3:
work->unk_3C.y = 0.0f;
work->unk_01 = 3;
var_r29 = 0x40000001;
break;
case 4:
work->unk_3C.y = 0.0f;
work->unk_04 = 0;
break;
case 5:
work->unk_3C.y = 50.0f;
work->unk_04 = 0;
break;
case 6:
work->unk_3C.y = -50.0f;
work->unk_04 = 0;
break;
}
if (work->unk_01 != work->unk_02) {
work->unk_02 = work->unk_01;
Hu3DMotionShiftSet(var_r28, object->motion[work->unk_01], 0.0f, 8.0f, var_r29);
switch (work->unk_01) {
case 1:
HuAudFXPlay(0x43);
break;
case 2:
HuAudFXPlay(0x45);
break;
}
}
work->unk_18.y = fn_1_52B4(work->unk_18.y, work->unk_3C.y, 0.9f);
omSetTra(object, work->unk_0C.x, work->unk_0C.y, work->unk_0C.z);
omSetRot(object, work->unk_18.x, work->unk_18.y, work->unk_18.z);
}
s16 fn_1_3E5C(s32 sp8, s16 spC, ParticleHook sp10)
{
M433DllUnkStruct *var_r31;
s32 var_r30;
ParticleData *var_r29;
AnimData *var_r28;
var_r28 = HuSprAnimRead(HuDataReadNum(sp8, MEMORY_DEFAULT_NUM));
var_r30 = Hu3DParticleCreate(var_r28, spC);
Hu3DParticleHookSet(var_r30, sp10);
var_r29 = Hu3DData[var_r30].unk_120;
var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433DllUnkStruct), MEMORY_DEFAULT_NUM);
var_r29->unk_1C = var_r31;
var_r31->unk_00 = var_r30;
var_r31->unk_04 = 0;
return var_r30;
}
void fn_1_3F14(ModelData *model, ParticleData *var_r30, Mtx matrix)
{
float var_f29;
float var_f26;
float var_f25;
float var_f24;
HsfanimStruct01 *var_r31;
s32 var_r28;
float sp54[4] = { 1000.0f, 200.0f, 600.0f, 1200.0f };
float sp44[4] = { 1.0f, 0.6f, 0.3f, 0.425f };
Vec sp38;
Vec sp2C;
Vec sp20;
Vec sp14;
s16 sp8 = 0;
M433DllUnkStruct *var_r29 = var_r30->unk_1C;
switch (var_r29->unk_04) {
case 0:
var_r30->unk_00 = 0x54;
var_r31 = var_r30->unk_48;
if (var_r29->unk_02 != 0) {
sp14.x = 0.0f;
sp14.y = -4700.0f;
sp14.z = 4450.0f;
var_f29 = 1.0f / sqrtf((sp14.z * sp14.z) + ((sp14.x * sp14.x) + (sp14.y * sp14.y)));
sp14.x *= var_f29;
sp14.y *= var_f29;
sp14.z *= var_f29;
var_f24 = 4000.0f / var_r30->unk_30;
for (var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) {
var_f26 = 500.0f + ((var_f24 * var_r28) + (0.25f * var_f24 * (fn_1_5260() / 65536.0f)));
var_f25 = var_f26 / 4000.0f;
var_r31->unk14.x = var_f26;
var_r31->unk34.x = var_f26 * sp14.x;
var_r31->unk34.y = 5500.0f + (var_f26 * sp14.y);
var_r31->unk34.z = -3950.0f + (var_f26 * sp14.z);
var_r31->unk2C = (0.3f + (0.7f * (var_f25 * var_f25))) * (sp54[var_r29->unk_02] * (0.7f + (0.3f * (fn_1_5260() / 65536.0f))));
var_r31->unk40.r = (s32)(160.0f * (fn_1_5260() / 65536.0f)) + 0x20;
var_r31->unk40.g = (s32)(96.0f * (fn_1_5260() / 65536.0f)) + 0x20;
var_r31->unk40.b = (s32)(128.0f * (fn_1_5260() / 65536.0f)) + 0x20;
var_r31->unk40.a = ((1.0 - (0.4 * var_f25)) * (255.0f * sp44[var_r29->unk_02])) - (s32)(16.0f * (fn_1_5260() / 65536.0f));
}
var_r29->unk_04++;
}
else {
var_r31->unk34.x = 0.0f;
var_r31->unk34.y = 5500.0f;
var_r31->unk34.z = -3950.0f;
var_r31->unk2C = 1000.0f;
}
break;
case 1:
sp38.x = sind(CRot.y) * cosd(CRot.x);
sp38.y = -sind(CRot.x);
sp38.z = cosd(CRot.y) * cosd(CRot.x);
sp2C.x = -(Center.x + (1.25f * (sp38.x * CZoom)));
sp2C.y = 5500.0f - (Center.y + (sp38.y * CZoom));
sp2C.z = -3950.0f - (Center.z + (1.25f * (sp38.z * CZoom)));
var_f29 = 1.0f / sqrtf((sp2C.z * sp2C.z) + ((sp2C.x * sp2C.x) + (sp2C.y * sp2C.y)));
sp2C.x *= var_f29;
sp2C.y *= var_f29;
sp2C.z *= var_f29;
var_f29 = -((-sp2C.z * -sp38.z) + ((-sp2C.x * -sp38.x) + (-sp2C.y * -sp38.y)));
sp20.x = -sp38.x + (-2.0f * sp2C.x * var_f29);
sp20.y = -sp38.y + (-2.0f * sp2C.y * var_f29);
sp20.z = -sp38.z + (-2.0f * sp2C.z * var_f29);
for (var_r31 = var_r30->unk_48, var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) {
var_r31->unk34.x = sp20.x * var_r31->unk14.x;
var_r31->unk34.y = 5500.0f + (sp20.y * var_r31->unk14.x);
var_r31->unk34.z = -3950.0f + (sp20.z * var_r31->unk14.x);
if (var_r30->unk_00 < 0xA) {
var_r31->unk40.a *= 0.8f;
}
}
var_r30->unk_00--;
if (var_r30->unk_00 == 0) {
Hu3DModelAttrReset(var_r29->unk_00, HU3D_ATTR_PARTICLE_KILL);
Hu3DModelKill(var_r29->unk_00);
return;
}
break;
}
DCFlushRange(var_r30->unk_48, var_r30->unk_30 * sizeof(HsfanimStruct01));
}
void fn_1_4A94(omObjData *var_r30)
{
M433DllMapWork2 *work = fn_1_50A8(sizeof(M433DllMapWork2));
var_r30->data = work;
work->unk_148 = work->unk_144 = 0.0f;
work->unk_140 = 1.0f;
work->unk_10.x = work->unk_28.x = -30.0f;
work->unk_10.y = work->unk_28.y = 0.0f;
work->unk_10.z = work->unk_28.z = 0.0f;
work->unk_04.x = work->unk_1C.x = 0.0f;
work->unk_04.y = work->unk_1C.y = 200.0f;
work->unk_04.z = work->unk_1C.z = 0.0f;
work->unk_130 = work->unk_134 = 1900.0f;
work->unk_188[0] = work->unk_188[1] = work->unk_188[2] = 0;
var_r30->func = fn_1_4BA0;
}
void fn_1_4BA0(omObjData *object)
{
float var_f31;
s32 var_r30;
M433DllMapWork2 *work = object->data;
if (work->unk_148 > 0.0f) {
work->unk_148 = work->unk_148 - work->unk_140;
var_f31 = (work->unk_144 - work->unk_148) / work->unk_144;
var_f31 = sind((90.0f * var_f31));
if (work->unk_00 == 0) {
work->unk_04.x = work->unk_1C.x + (var_f31 * (work->unk_34.x - work->unk_1C.x));
work->unk_04.y = work->unk_1C.y + (var_f31 * (work->unk_34.y - work->unk_1C.y));
work->unk_04.z = work->unk_1C.z + (var_f31 * (work->unk_34.z - work->unk_1C.z));
work->unk_10.x = work->unk_28.x + (var_f31 * (work->unk_40.x - work->unk_28.x));
work->unk_10.y = work->unk_28.y + (var_f31 * (work->unk_40.y - work->unk_28.y));
work->unk_10.z = work->unk_28.z + (var_f31 * (work->unk_40.z - work->unk_28.z));
work->unk_130 = work->unk_134 + (var_f31 * (work->unk_138 - work->unk_134));
}
}
CRot.x = work->unk_10.x;
CRot.y = work->unk_10.y;
CRot.z = work->unk_10.z;
Center.x = work->unk_04.x;
Center.y = work->unk_04.y;
Center.z = work->unk_04.z;
CZoom = work->unk_130;
for (var_r30 = 0; var_r30 < 3; var_r30++) {
work->unk_17C[var_r30] = 0.0f;
if (work->unk_188[var_r30] != 0) {
work->unk_17C[var_r30] = work->unk_14C[var_r30] * sind(work->unk_164[var_r30]);
work->unk_164[var_r30] += work->unk_170[var_r30];
work->unk_14C[var_r30] *= work->unk_158[var_r30];
work->unk_188[var_r30] -= 1;
}
}
Center.x += work->unk_17C[0];
Center.y += work->unk_17C[1];
Center.z += work->unk_17C[2];
}
void fn_1_4ED4(float arg8, Vec *arg0, Vec *arg1, float arg9)
{
M433DllMapWork2 *work = lbl_1_bss_7B0->data;
work->unk_00 = 0;
work->unk_144 = arg8;
work->unk_148 = arg8;
if (arg8 == 0.0f) {
work->unk_04.x = arg0->x;
work->unk_04.y = arg0->y;
work->unk_04.z = arg0->z;
work->unk_10.x = arg1->x;
work->unk_10.y = arg1->y;
work->unk_10.z = arg1->z;
work->unk_130 = arg9;
return;
}
work->unk_1C = work->unk_04;
work->unk_34.x = arg0->x;
work->unk_34.y = arg0->y;
work->unk_34.z = arg0->z;
work->unk_28 = work->unk_10;
work->unk_40.x = arg1->x;
work->unk_40.y = arg1->y;
work->unk_40.z = arg1->z;
work->unk_134 = work->unk_130;
work->unk_138 = arg9;
}
void fn_1_4FC0(float arg8)
{
M433DllMapWork2 *var_r31 = lbl_1_bss_7B0->data;
var_r31->unk_140 = arg8;
}
void fn_1_4FE8(u8 arg0, u16 arg1, float arg8, float arg9, float argA)
{
M433DllMapWork2 *var_r31 = lbl_1_bss_7B0->data;
var_r31->unk_188[arg0] = arg1;
var_r31->unk_14C[arg0] = arg8;
var_r31->unk_158[arg0] = arg9;
var_r31->unk_170[arg0] = argA;
var_r31->unk_164[arg0] = 90.0f;
}
void fn_1_5068(void)
{
s32 i;
for (i = 0; i < 0x20; i++) {
lbl_1_bss_728[i] = NULL;
}
}
void *fn_1_50A8(s32 arg0)
{
s32 i;
for (i = 0; i < 0x20; i++) {
if (!lbl_1_bss_728[i]) {
break;
}
}
if (i == 0x20) {
return NULL;
}
lbl_1_bss_728[i] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, MEMORY_DEFAULT_NUM);
return lbl_1_bss_728[i];
}
void fn_1_5148(u32 sp8)
{
s32 i;
for (i = 0; i < 0x20; i++) {
if (lbl_1_bss_728[i] == (void *)sp8) {
break;
}
}
if (i != 0x20) {
HuMemDirectFree(lbl_1_bss_728[i]);
lbl_1_bss_728[i] = NULL;
}
}
void fn_1_51DC(void)
{
s32 i;
for (i = 0; i < 0x20; i++) {
if (lbl_1_bss_728[i]) {
HuMemDirectFree(lbl_1_bss_728[i]);
lbl_1_bss_728[i] = NULL;
}
}
}
u32 lbl_1_data_C4 = 0x41C64E6D;
s32 fn_1_5260(void)
{
lbl_1_data_C4 *= 0x41C64E6D;
lbl_1_data_C4 += 0x3039;
return lbl_1_data_C4 >> 0x10;
}
float fn_1_52B4(float arg8, float arg9, float argA)
{
float var_f31;
if (arg8 > 180.0f) {
arg8 -= 360.0f;
}
else if (arg8 <= -180.0f) {
arg8 += 360.0f;
}
if (arg9 > 180.0f) {
arg9 -= 360.0f;
}
else if (arg9 <= -180.0f) {
arg9 += 360.0f;
}
var_f31 = arg8 - arg9;
if (var_f31 > 180.0f) {
var_f31 -= 360.0f;
}
else if (var_f31 <= -180.0f) {
var_f31 += 360.0f;
}
arg8 = arg9 + (var_f31 * argA);
if (arg8 > 180.0f) {
return arg8 - 360.0f;
}
if (arg8 <= -180.0f) {
arg8 += 360.0f;
}
return arg8;
}
void fn_1_541C(Mtx arg0, float arg8, float arg9, float argA)
{
Mtx sp38;
Mtx sp8;
if (argA != 0.0f) {
PSMTXRotRad(arg0, 0x5A, MTXDegToRad(argA));
}
else {
PSMTXIdentity(arg0);
}
if (arg8 != 0.0f) {
PSMTXRotRad(sp38, 0x58, MTXDegToRad(arg8));
PSMTXConcat(sp38, arg0, arg0);
}
if (arg9 != 0.0f) {
PSMTXRotRad(sp8, 0x59, MTXDegToRad(arg9));
PSMTXConcat(sp8, arg0, arg0);
}
}
void fn_1_553C(Mtx arg0, Vec *arg1)
{
float var_f29;
float var_f28;
arg1->x = atan2d(arg0[1][2], arg0[2][2]);
if (arg1->x < 0.0f) {
arg1->x += 360.0f;
}
arg1->z = atan2d(arg0[0][1], arg0[0][0]);
if (arg1->z < 0.0f) {
arg1->z += 360.0f;
}
var_f29 = -arg0[0][2];
var_f28 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? (-(1.0 - (var_f29 * var_f29))) : (1.0 - (var_f29 * var_f29)));
if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) {
arg1->x = fmod(180.0f + arg1->x, 360.0);
arg1->z = fmod(180.0f + arg1->z, 360.0);
var_f28 = -var_f28;
}
arg1->y = atan2d(var_f29, var_f28);
if (arg1->y < 0.0f) {
arg1->y += 360.0f;
}
}
void fn_1_58D8(s32 arg0)
{
M433DllMapWork *work = lbl_1_bss_7A8->data;
work->unk_04 = arg0;
}

3584
src/REL/m433Dll/player.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,7 @@
#include "game/audio.h"
#include "game/chrman.h"
#include "game/hsfman.h"
#include "game/hsfdraw.h"
#include "game/hsfmotion.h"
#include "game/object.h"
#include "game/objsub.h"
@ -211,8 +212,6 @@ void fn_1_64C0(omObjData *object);
float fn_1_67AC(float arg0, float arg1);
// Issues with assignment of temp_f30
// Scratch is at https://decomp.me/scratch/EqCuG
void fn_1_4E50(omObjData *object)
{
float temp_f31;

View file

@ -125,7 +125,7 @@ s32 fn_1_4A4(void)
var_r30 = 1;
}
var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0));
var_f31 = sind(90.0f * var_f31) * sind(90.0f * var_f31);
CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31);
Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31);
Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31);
@ -152,7 +152,7 @@ s32 fn_1_6C8(void)
var_r30 = 1;
}
var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0));
var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31));
CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31);
Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31);
Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31);
@ -282,7 +282,7 @@ u8 fn_1_E14(omObjData *arg0)
var_f31 = 1.0f;
var_r30 = 1;
}
var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0));
var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31));
CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31);
Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31);
Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31);
@ -338,7 +338,7 @@ u8 fn_1_1138(omObjData *object)
var_f31 = 1.0f;
var_r28 = 1;
}
var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0));
var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31));
CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31);
Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31);
Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31);
@ -628,8 +628,8 @@ void fn_1_2470(omObjData *arg0)
Hu3DModelShadowMapSet(arg0->model[0]);
for (var_r30 = 0; var_r30 < 5; var_r30++) {
temp_f31 = (450.0 * cos(M_PI * lbl_1_data_0[var_r30] / 180.0));
var_f29 = (450.0 * sin(M_PI * lbl_1_data_0[var_r30] / 180.0));
temp_f31 = 450.0 * cosd(lbl_1_data_0[var_r30]);
var_f29 = 450.0 * sind(lbl_1_data_0[var_r30]);
Hu3DModelPosSet(arg0->model[var_r30 + 4], temp_f31, 0.0f, var_f29);
var_f30 = 90.0f - lbl_1_data_0[var_r30];
Hu3DModelRotSet(arg0->model[var_r30 + 4], 0.0f, var_f30, 0.0f);
@ -705,7 +705,7 @@ void fn_1_2B04(omObjData *object)
fn_1_4EEC(0x20, 0);
return;
}
temp_f31 = sin((M_PI * (90.0f * temp_f31)) / 180.0);
temp_f31 = sind(90.0f * temp_f31);
temp_r31->center.y = (250.0f + (1750.0f * temp_f31));
}
Hu3DModelPosSet(object->model[3], temp_r31->center.x, temp_r31->center.y, temp_r31->center.z);
@ -764,7 +764,7 @@ void fn_1_2D28(omObjData *object)
if ((11 * REFRESH_RATE_F / 6) == lbl_1_data_F0[0]) {
HuAudFXPlay(0x70A);
}
var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0);
var_f31 = sind(90.0f * var_f31);
temp_r31->center.y = (2000.0f + (-1750.0f * var_f31));
break;
case 0x2:
@ -811,7 +811,7 @@ void fn_1_2D28(omObjData *object)
fn_1_4EEC(7, 2);
return;
}
var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0);
var_f31 = sind(90.0f * var_f31);
temp_r31->center.y = (250.0f + (1750.0f * var_f31));
break;
case 0x63:
@ -1030,7 +1030,7 @@ void fn_1_46E0(omObjData *object)
fn_1_4EEC(0x18, 0x10);
HuAudFXPlay(0x70F);
}
var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0);
var_f31 = sind(90.0f * var_f31);
temp_r31->unk24 = (150.0f * var_f31);
break;
case 0x63:
@ -1090,7 +1090,7 @@ void fn_1_4B44(omObjData *object)
lbl_1_data_108[0] = 0;
lbl_1_data_104[0]++;
}
var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0);
var_f31 = sind(90.0f * var_f31);
temp_r31->unk24 = (150.0f + (-150.0f * var_f31));
break;
case 1:

View file

@ -255,7 +255,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1)
arg1->unk18.z = (700.0 * sind(lbl_1_data_250));
var_f29 = (arg1->unk18.x - arg1->unk24.x);
var_f28 = (arg1->unk18.z - arg1->unk24.z);
var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI));
var_f30 = atan2d(var_f29, var_f28);
if (var_f30 < 0.0f) {
var_f30 += 360.0f;
}
@ -310,7 +310,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1)
arg1->unk18.z = (arg1->unk5C * sind(lbl_1_data_250));
var_f29 = (arg1->unk18.x - arg1->unk24.x);
var_f28 = (arg1->unk18.z - arg1->unk24.z);
var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI));
var_f30 = atan2d(var_f29, var_f28);
if (var_f30 < 0.0f) {
var_f30 += 360.0f;
}
@ -551,7 +551,7 @@ void fn_1_C944(omObjData *arg0, unkObjStruct *arg1)
arg1->unk48 = arg1->unk48 & ~4;
var_f26 = (arg1->unk18.x - arg1->unk24.x);
var_f25 = (arg1->unk18.z - arg1->unk24.z);
var_f29 = (180.0 * (atan2(var_f26, var_f25) / M_PI));
var_f29 = atan2d(var_f26, var_f25);
if (var_f29 < 0.0f) {
var_f29 += 360.0f;
}
@ -920,7 +920,7 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
arg1->unk18.z = (arg1->unk5C * sind(lbl_1_bss_84));
var_f29 = (arg1->unk18.x - arg1->unk24.x);
var_f28 = (arg1->unk18.z - arg1->unk24.z);
var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI));
var_f30 = atan2d(var_f29, var_f28);
if (var_f30 < 0.0f) {
var_f30 += 360.0f;
}
@ -949,8 +949,8 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
arg1->unk60++;
}
var_f29 = arg1->unk5C + ((700.0f - arg1->unk5C) * var_f31);
arg1->unk18.x = (var_f29 * cos(2.356194490192345)); // atan2(1.0, -1.0)
arg1->unk18.z = (var_f29 * sin(2.356194490192345));
arg1->unk18.x = var_f29 * cosd(135);
arg1->unk18.z = var_f29 * sind(135);
var_f29 = 0.3f;
var_f28 = 0.6f;
if (var_f31 >= var_f29) {
@ -978,7 +978,7 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1)
arg1->unk18.z = (700.0 * sind(lbl_1_bss_84));
var_f29 = (arg1->unk18.x - arg1->unk24.x);
var_f28 = (arg1->unk18.z - arg1->unk24.z);
var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI));
var_f30 = atan2d(var_f29, var_f28);
if (var_f30 < 0.0f) {
var_f30 += 360.0f;
}

View file

@ -355,8 +355,8 @@ void fn_1_5BD4(omObjData *object)
var_f30 = 0.0f;
}
var_f30 = var_f30 * var_f30;
sp8.x = 320.0 + (160.0 * (var_f31 * cos(M_PI * ((450.0f * var_f31) + (90.0f * object->work[0])) / 180.0)));
sp8.y = 240.0 + (120.0 * (var_f31 * sin(M_PI * ((450.0f * var_f31) + (90.0f * object->work[0])) / 180.0)));
sp8.x = 320.0 + 160.0 * (var_f31 * cosd(450.0f * var_f31 + 90.0f * object->work[0]));
sp8.y = 240.0 + 120.0 * (var_f31 * sind(450.0f * var_f31 + 90.0f * object->work[0]));
temp_r31->unk100->unk_44 = sp8.x + (var_f30 * (temp_r31->unk100->unk_78 - sp8.x));
temp_r31->unk100->unk_48 = sp8.y + (var_f30 * (temp_r31->unk100->unk_7C - sp8.y));
temp_r31->unk100->unk_40 = 0.01f + ((temp_r31->unk100->unk_80 - 0.01f) * var_f31);

View file

@ -49,8 +49,8 @@ void fn_1_D9F4(s16 arg0)
sp10.y = 1.0f;
C_MTXLookAt(sp34, &sp28, &sp10, &sp1C);
GXLoadPosMtxImm(sp34, 0);
sp28.x = 1.2000000476837158 * (10000.0 * -sin(var_r31->fov / 2));
sp28.y = 0.8333333134651184 * (10000.0 * -sin(var_r31->fov / 2));
sp28.x = 1.2f * (10000.0 * -sin(var_r31->fov / 2));
sp28.y = (2.5f / 3) * (10000.0 * -sin(var_r31->fov / 2));
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-sp28.x, -sp28.y, -10000.0f);
GXPosition3f32(sp28.x, -sp28.y, -10000.0f);

View file

@ -51,7 +51,7 @@ void fn_1_68DC(void) {
f32 temp_f31;
if (lbl_1_bss_38 != 0) {
temp_f31 = sin((M_PI * (90.0f * lbl_1_bss_40)) / 180.0);
temp_f31 = sind(90.0f * lbl_1_bss_40);
temp_f31 *= temp_f31;
lbl_1_bss_8C.x = lbl_1_bss_54.x + (temp_f31 * (lbl_1_bss_70.x - lbl_1_bss_54.x));
lbl_1_bss_8C.y = lbl_1_bss_54.y + (temp_f31 * (lbl_1_bss_70.y - lbl_1_bss_54.y));
@ -138,4 +138,4 @@ void fn_1_709C(void) {
print8(0x20, 0x84, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_8C.x, lbl_1_bss_8C.y, lbl_1_bss_8C.z);
print8(0x20, 0x94, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_80.x, lbl_1_bss_80.y, lbl_1_bss_80.z);
print8(0x20, 0xA4, 1.5f, "ZOOM : %.2f", lbl_1_bss_7C);
}
}

View file

@ -1,7 +1,7 @@
#include "REL/m446Dll.h"
#include "game/hsfman.h"
#include "math.h"
#include "ext_math.h"
// data
m446Func4 lbl_1_data_150[3] = { NULL, fn_1_2AA8, fn_1_2DA8 };
@ -229,7 +229,7 @@ void fn_1_20D4(void)
temp_r31->unk7C--;
}
else {
temp_f31 = sin((M_PI * (90.0f * temp_r31->unk80)) / 180.0);
temp_f31 = sind(90.0f * temp_r31->unk80);
temp_r31->unk10.x = temp_r31->unk1C.x + (temp_f31 * (temp_r31->unk28.x - temp_r31->unk1C.x));
temp_r31->unk10.y = temp_r31->unk1C.y + (temp_f31 * (temp_r31->unk28.y - temp_r31->unk1C.y));
temp_r31->unk10.z = temp_r31->unk1C.z + (temp_f31 * (temp_r31->unk28.z - temp_r31->unk1C.z));
@ -243,7 +243,7 @@ void fn_1_20D4(void)
}
}
if (temp_r31->unk74 != 0) {
temp_f31 = sin((M_PI * (90.0f * temp_r31->unk88)) / 180.0);
temp_f31 = sind(90.0f * temp_r31->unk88);
temp_r31->unk34.x = (temp_r31->unk40.x + (temp_f31 * (temp_r31->unk4C.x - temp_r31->unk40.x)));
temp_r31->unk34.y = (temp_r31->unk40.y + (temp_f31 * (temp_r31->unk4C.y - temp_r31->unk40.y)));
temp_r31->unk34.z = (temp_r31->unk40.z + (temp_f31 * (temp_r31->unk4C.z - temp_r31->unk40.z)));
@ -256,7 +256,7 @@ void fn_1_20D4(void)
}
}
if (temp_r31->unk78 != 0) {
temp_f31 = sin((M_PI * (90.0f * temp_r31->unk90)) / 180.0);
temp_f31 = sind(90.0f * temp_r31->unk90);
temp_r31->unk58 = (temp_r31->unk5C + (temp_f31 * (temp_r31->unk60 - temp_r31->unk5C)));
temp_r31->unk90 = (temp_r31->unk90 + temp_r31->unk94);
if (temp_r31->unk90 >= 1.0f) {

View file

@ -2,7 +2,7 @@
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "math.h"
#include "ext_math.h"
// bss
unkStruct3 *lbl_1_bss_98;
@ -42,7 +42,7 @@ void fn_1_7350(void)
do {
temp_r31 = var_r30->unk0;
if (temp_r31->field00_bit1 != 0) {
temp_f31 = sin((M_PI * (90.0f * temp_r31->unk4C)) / 180.0);
temp_f31 = sind(90.0f * temp_r31->unk4C);
temp_f31 *= temp_f31;
temp_r31->unk20.x = (temp_r31->unk2C.x + (temp_f31 * (temp_r31->unk38.x - temp_r31->unk2C.x)));
temp_r31->unk20.y = (temp_r31->unk2C.y + (temp_f31 * (temp_r31->unk38.y - temp_r31->unk2C.y)));

View file

@ -6,7 +6,7 @@
#include "game/hsfmotion.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "math.h"
#include "ext_math.h"
// cursor.c
extern unkStruct7 *m446CursorCreate(s32);
@ -122,7 +122,7 @@ void fn_1_487C(void)
lbl_1_data_2DC[temp_r31->unk18](temp_r31);
}
if (temp_r31->unkB4 != 0) {
temp_f31 = sin((M_PI * (90.0f * temp_r31->unkC0)) / 180.0);
temp_f31 = sind(90.0f * temp_r31->unkC0);
temp_f31 *= temp_f31;
temp_r31->unk48.x = (temp_r31->unk9C.x + (temp_f31 * (temp_r31->unkA8.x - temp_r31->unk9C.x)));
temp_r31->unk48.y = (temp_r31->unk9C.y + (temp_f31 * (temp_r31->unkA8.y - temp_r31->unk9C.y)));
@ -136,7 +136,7 @@ void fn_1_487C(void)
}
}
if (temp_r31->unk98 != 0) {
temp_f31 = sin((M_PI * (90.0f * temp_r31->unkB8)) / 180.0);
temp_f31 = sind(90.0f * temp_r31->unkB8);
temp_f31 *= temp_f31;
temp_r31->unk54.x = (temp_r31->unk80.x + (temp_f31 * (temp_r31->unk8C.x - temp_r31->unk80.x)));
temp_r31->unk54.y = (temp_r31->unk80.y + (temp_f31 * (temp_r31->unk8C.y - temp_r31->unk80.y)));

View file

@ -127,7 +127,8 @@ s32 lbl_1_data_0[0x12] = {
0x610000,
};
s32 lbl_1_data_48[0x12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
s32 lbl_1_data_90[4] = { 0x5F0000, 0x500000, 0x5F0017, 0x5F0085 };
s32 lbl_1_data_90[4]
= { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0x500000, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x85) };
s32 lbl_1_data_A0[4] = { 0x50001C, 0x50001E, 0x50001D, 0x50001F };
u8 lbl_1_data_B0[0x38] = { 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08,
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,

View file

@ -3,7 +3,6 @@
#include "game/object.h"
#include "game/objsub.h"
#include "game/hsfmotion.h"
#include "game/pad.h"
@ -15,7 +14,6 @@
#include "game/minigame_seq.h"
#include "game/wipe.h"
#include "ext_math.h"
#include "math.h"
@ -329,15 +327,15 @@ s32 fn_1_C90(void)
s32 fn_1_3214(void);
u32 lbl_1_data_E0[5][2] = {
0x5F0000,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00),
0,
0x540024,
1,
0x54001C,
1,
0x5F0017,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17),
0,
0x5F0018,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18),
0,
};

View file

@ -436,16 +436,16 @@ s32 fn_1_F4C(void)
}
M456DllDataE4Struct lbl_1_data_E4[0xA] = {
{ 0x5F0000, 0 },
{ 0x55001C, 1 },
{ 0x550024, 1 },
{ 0x55002C, 1 },
{ 0x550034, 1 },
{ 0x5F002A, 0 },
{ 0x5F0005, 0 },
{ 0x5F0017, 0 },
{ 0x5F0018, 0 },
{ 0x55003C, 1 },
{ DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0 },
{ DATA_MAKE_NUM(DATADIR_M456, 0x1C), 1 },
{ DATA_MAKE_NUM(DATADIR_M456, 0x24), 1 },
{ DATA_MAKE_NUM(DATADIR_M456, 0x2C), 1 },
{ DATA_MAKE_NUM(DATADIR_M456, 0x34), 1 },
{ DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2A), 0 },
{ DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), 0 },
{ DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), 0 },
{ DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), 0 },
{ DATA_MAKE_NUM(DATADIR_M456, 0x3C), 1 },
};
Vec lbl_1_data_134[4] = {
{ -300.0f, 0.0f, 0.0f },
@ -826,7 +826,7 @@ void fn_1_2448(omObjData *object)
}
M456DllData1B0Struct lbl_1_data_1B0[0x10] = {
{ 0x550044, 0x10E },
{ DATA_MAKE_NUM(DATADIR_M456, 0x44), 0x10E },
{ 0x610037, 0xFA },
{ 0x610030, 0xFA },
{ 0x610030, 0xFA },

View file

@ -77,16 +77,16 @@ void fn_1_6D9C(omObjData *arg0);
s32 lbl_1_data_0[2] = { 0x570025, 0x570026 };
s32 lbl_1_data_8[2] = { 0, 0 };
s32 lbl_1_data_10[0xA] = {
0x5F0000,
0x5F0002,
0x5F0003,
0x5F0005,
0x5F0006,
0x5F0036,
0x5F002F,
0x5F001A,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x36),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2F),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A),
0x570000,
0x5F0017,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17),
};
u32 lbl_1_data_38[0xA] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 };
u32 lbl_1_data_60[0xA] = { 0x30008, 0, 0, 0x3000A, 0, 0, 0x57002A, 0x570028, 0x570029, 0x570027 };

File diff suppressed because it is too large Load diff

View file

@ -109,7 +109,7 @@ f32 fn_1_254(f32 arg8, f32 arg9, f32 argA, f32 argB)
if (argA >= argB) {
return arg9;
}
return (arg8 + ((arg9 - arg8) * (1.0 - cos((M_PI * ((90.0f / argB) * argA)) / 180.0))));
return (arg8 + ((arg9 - arg8) * (1.0 - cosd((90.0f / argB) * argA))));
}
// fn_1_32C
@ -118,7 +118,7 @@ f32 fn_1_32C(f32 arg8, f32 arg9, f32 argA, f32 argB)
if (argA >= argB) {
return arg9;
}
return (arg8 + ((arg9 - arg8) * sin((M_PI * ((90.0f / argB) * argA)) / 180.0)));
return arg8 + (arg9 - arg8) * sind((90.0f / argB) * argA);
}
f32 fn_1_3F4(f32 arg8, f32 arg9, f32 argA, f32 argB)
@ -126,7 +126,7 @@ f32 fn_1_3F4(f32 arg8, f32 arg9, f32 argA, f32 argB)
if (argA >= argB) {
return arg8;
}
return (arg8 + ((arg9 - arg8) * sin((M_PI * ((360.0f / argB) * argA)) / 180.0)));
return (arg8 + ((arg9 - arg8) * sind((360.0f / argB) * argA)));
}
void fn_1_4B0(s32 arg0)

View file

@ -2696,7 +2696,7 @@ void fn_1_E71C(s32 arg0)
inline void fn_1_E874_inline(void)
{
s32 sp18 = lbl_1_bss_3114[0].unk_68;
GWSystem.unk0B[1] = sp18;
GWSystem.unk0C = sp18;
}
void fn_1_E874(omObjData *arg0, MentDllUnkBss35BCStruct *arg1)

View file

@ -11,10 +11,8 @@
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
#include "math.h"
#include "REL/modeltestDll.h"
#include "math.h"
// -------------------------------------------------------------------------- //
@ -311,7 +309,7 @@ void fn_1_29C(omObjData *arg0)
Hu3DParManAttrSet(lbl_1_bss_864[var_r31], 0x864);
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_864[var_r31]), 1U);
Hu3DParManPosSet(
lbl_1_bss_864[var_r31], (100.0 * sin((M_PI * (36.0f * var_r31)) / 180.0)), 0.0f, 100.0 * cos((M_PI * (36.0f * var_r31)) / 180.0));
lbl_1_bss_864[var_r31], (100.0 * sind(36.0f * var_r31)), 0.0f, 100.0 * cosd(36.0f * var_r31));
Hu3DParManRotSet(lbl_1_bss_864[var_r31], -90.0f, 0.0f, 0.0f);
}
@ -465,28 +463,28 @@ void fn_1_F9C(struct om_obj_data *omData)
}
}
sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
sp3C.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x));
sp3C.y = Center.y + CZoom * -sind(CRot.x);
sp3C.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x));
sp30.x = Center.x - sp3C.x;
sp30.y = Center.y - sp3C.y;
sp30.z = Center.z - sp3C.z;
sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
sp24.y = cos((M_PI * CRot.x) / 180.0);
sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
sp24.x = sind(CRot.y) * sind(CRot.x);
sp24.y = cosd(CRot.x);
sp24.z = cosd(CRot.y) * sind(CRot.x);
temp_f31 = CRot.z;
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0))
+ sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0))
+ sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0));
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cosd(temp_f31))
+ sp24.y * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) - sp30.z * sind(temp_f31))
+ sp24.z * (sp30.x * sp30.z * (1.0f - cosd(temp_f31)) + sp30.y * sind(temp_f31));
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0))
+ sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0))
+ sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0));
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cosd(temp_f31))
+ sp24.x * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) + sp30.z * sind(temp_f31))
+ sp24.z * (sp30.y * sp30.z * (1.0f - cosd(temp_f31)) - sp30.x * sind(temp_f31));
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0))
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0))
+ sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0)));
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cosd(temp_f31))
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cosd(temp_f31)) - sp30.y * sind(temp_f31))
+ sp24.y * (sp30.y * sp30.z * (1.0 - cosd(temp_f31)) + sp30.x * sind(temp_f31)));
VECCrossProduct(&sp24, &sp30, &sp30);
VECNormalize(&sp30, &sp30);
@ -603,11 +601,11 @@ void fn_1_20F4(void)
Hu3DMtxTransGet(spC0, &sp18);
PSMTXMultVec(sp60, &sp18, &sp18);
temp_f27 = 180.0 * (atan2(sp18.z, sp18.x) / M_PI);
temp_f27 = atan2d(sp18.z, sp18.x);
temp_r31 = &lbl_1_bss_40[var_r29 * 2];
temp_r31->obj->data.curr.rot.x = temp_r31->rot.x + (var_f29 * (2.0 * (sin((M_PI * temp_f27) / 180.0) * sin((M_PI * var_r27) / 180.0))));
temp_r31->obj->data.curr.rot.x = temp_r31->rot.x + (var_f29 * (2.0 * (sind(temp_f27) * sind(var_r27))));
temp_r31->obj->data.curr.rot.y = temp_r31->rot.y;
temp_r31->obj->data.curr.rot.z = temp_r31->rot.z + (var_f29 * cos((M_PI * var_r27) / 180.0));
temp_r31->obj->data.curr.rot.z = temp_r31->rot.z + (var_f29 * cosd(var_r27));
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0);
Hu3DMtxTransGet(spC0, &sp24);
@ -632,7 +630,7 @@ void fn_1_20F4(void)
var_f29 = 0.0f;
}
else {
var_r27 = 180.0 * (atan2(HuPadSubStkX[1], HuPadSubStkY[1]) / M_PI);
var_r27 = atan2d(HuPadSubStkX[1], HuPadSubStkY[1]);
temp_f30 = (HuPadSubStkX[1] * HuPadSubStkX[1]) + (HuPadSubStkY[1] * HuPadSubStkY[1]);
var_f29 = sqrtf(temp_f30);
if (var_f29 > 80.0f) {
@ -658,8 +656,8 @@ void fn_1_28F8(Point3d *arg0, Point3d *arg1)
C_MTXLookAt(sp18, &cam->pos, &cam->up, &cam->target);
PSMTXMultVec(sp18, arg0, &spC);
temp_f31 = (1.2f * (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0)))));
temp_f30 = (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0))));
temp_f31 = (1.2f * (spC.z * (sind(cam->fov / 2) / (cosd(cam->fov / 2)))));
temp_f30 = (spC.z * (sind(cam->fov / 2) / (cosd(cam->fov / 2))));
arg1->x = 288.0f + (spC.x * (288.0f / -temp_f31));
arg1->y = 240.0f + (spC.y * (240.0f / temp_f30));
}

View file

@ -103,28 +103,28 @@ void fn_1_37DC(omObjData *)
CZoom += HuPadTrigL[0] / 2;
CZoom -= HuPadTrigR[0] / 2;
sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
sp3C.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x));
sp3C.y = Center.y + CZoom * -sind(CRot.x);
sp3C.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x));
sp30.x = Center.x - sp3C.x;
sp30.y = Center.y - sp3C.y;
sp30.z = Center.z - sp3C.z;
sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
sp24.y = cos((M_PI * CRot.x) / 180.0);
sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
sp24.x = sind(CRot.y) * sind(CRot.x);
sp24.y = cosd(CRot.x);
sp24.z = cosd(CRot.y) * sind(CRot.x);
temp_f31 = CRot.z;
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0))
+ sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0))
+ sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0));
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cosd(temp_f31))
+ sp24.y * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) - sp30.z * sind(temp_f31))
+ sp24.z * (sp30.x * sp30.z * (1.0f - cosd(temp_f31)) + sp30.y * sind(temp_f31));
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0))
+ sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0))
+ sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0));
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cosd(temp_f31))
+ sp24.x * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) + sp30.z * sind(temp_f31))
+ sp24.z * (sp30.y * sp30.z * (1.0f - cosd(temp_f31)) - sp30.x * sind(temp_f31));
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0))
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0))
+ sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0)));
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cosd(temp_f31))
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cosd(temp_f31)) - sp30.y * sind(temp_f31))
+ sp24.y * (sp30.y * sp30.z * (1.0 - cosd(temp_f31)) + sp30.x * sind(temp_f31)));
VECCrossProduct(&sp24, &sp30, &sp30);
VECNormalize(&sp30, &sp30);
@ -148,17 +148,17 @@ void fn_1_439C(omObjData * )
temp_f31 = CRot.x;
temp_f30 = CRot.y + (var_r31 * 90);
sp10 = CRot.z;
sp2C.x = Center.x + (CZoom * (sin((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0))));
sp2C.y = Center.y + (CZoom * -sin((M_PI * temp_f31) / 180.0));
sp2C.z = Center.z + (CZoom * (cos((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0))));
sp2C.x = Center.x + CZoom * (sind(temp_f30) * (cosd(temp_f31)));
sp2C.y = Center.y + CZoom * -sind(temp_f31);
sp2C.z = Center.z + CZoom * (cosd(temp_f30) * (cosd(temp_f31)));
sp20.x = Center.x;
sp20.y = Center.y;
sp20.z = Center.z;
sp14.x = sin((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0));
sp14.y = cos((M_PI * temp_f31) / 180.0);
sp14.z = cos((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0));
sp14.x = sind(temp_f30) * (sind(temp_f31));
sp14.y = cosd(temp_f31);
sp14.z = cosd(temp_f30) * (sind(temp_f31));
Hu3DCameraPosSet(lbl_1_data_358[var_r31], sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z);
}

View file

@ -10,7 +10,7 @@
#include "game/window.h"
#include "game/wipe.h"
#include "math.h"
#include "ext_math.h"
#include "REL/modeseldll.h"
@ -203,7 +203,7 @@ repeat:
fn_1_5C38();
for (temp_r30 = 0; temp_r30 <= 20; temp_r30++) {
temp_f31 = temp_r30 / 20.0;
temp_f31 = sin(M_PI * (90.0f * temp_f31) / 180.0);
temp_f31 = sind(90.0f * temp_f31);
Hu3DModelScaleSet(lbl_1_bss_19A[0], temp_f31, temp_f31, temp_f31);
Hu3DModelScaleSet(lbl_1_bss_19A[1], temp_f31, temp_f31, temp_f31);
Hu3DModelScaleSet(lbl_1_bss_19A[2], temp_f31, temp_f31, temp_f31);
@ -377,8 +377,8 @@ loop_exit:
for (temp_r30 = 0; temp_r30 <= 40; temp_r30++) {
if (temp_r30 <= 30) {
temp_f31 = temp_r30 / 30.0f;
sp28.x = 288.0 + (GET_ZEROSIGN(temp_r26) * (100.0 + (250.0 * sin(M_PI * (90.0f * temp_f31) / 180.0))));
sp28.y = 250.0 - (100.0 * sin(M_PI * (180.0f * temp_f31) / 180.0));
sp28.x = 288.0 + (GET_ZEROSIGN(temp_r26) * (100.0 + (250.0 * sind(90.0f * temp_f31))));
sp28.y = 250.0 - (100.0 * sind(180.0f * temp_f31));
sp28.z = (temp_r30 * 100) + 600;
Hu3D2Dto3D(&sp28, 1, &sp1C);
Hu3DModelPosSetV(lbl_1_bss_19A[temp_r26 + 2], &sp1C);
@ -390,11 +390,11 @@ loop_exit:
temp_f31 = (temp_r30 - 20) / 20.0f;
if (temp_r29) {
sp28.x = 288.0f + ((1.0 - temp_f31) * (100 * GET_ZEROSIGN(temp_r31)));
sp28.y = 250.0 - (100.0 * sin(M_PI * (180.0f * temp_f31) / 180.0));
sp28.y = 250.0 - (100.0 * sind(180.0f * temp_f31));
sp28.z = 600.0f;
Hu3D2Dto3D(&sp28, 1, &sp1C);
Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C);
temp_f31 = (0.5 * sin(M_PI * (90.0f * temp_f31) / 180.0)) + 1.0;
temp_f31 = (0.5 * sind(90.0f * temp_f31)) + 1.0;
Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31);
}
else {
@ -407,14 +407,14 @@ loop_exit:
sp28.z = 600;
Hu3D2Dto3D(&sp28, 1, &sp10);
VECSubtract(&sp10, &sp1C, &sp28);
sp28.x *= sin(M_PI * (90.0f * temp_f31) / 180.0);
sp28.y *= 1.0 - cos(M_PI * (90.0f * temp_f31) / 180.0);
sp28.x *= sind(90.0f * temp_f31);
sp28.y *= 1.0 - cosd(90.0f * temp_f31);
sp28.z = 0;
VECAdd(&sp28, &sp1C, &sp1C);
Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C);
lbl_1_bss_108[temp_r31] *= cos(M_PI * (90.0f * temp_f31) / 180.0);
lbl_1_bss_108[temp_r31] *= cosd(90.0f * temp_f31);
lbl_1_bss_100[temp_r31] = 1.0 - temp_f31;
temp_f31 = 1.0 + (0.3 * cos(M_PI * (90.0f * temp_f31) / 180.0));
temp_f31 = 1.0 + (0.3 * cosd(90.0f * temp_f31));
Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31);
}
}
@ -525,7 +525,7 @@ cleanup:
for (temp_r30 = 0; temp_r30 <= 20; temp_r30++) {
temp_f31 = temp_r30 / 20.0f;
if (temp_r29) {
temp_f31 = 1.5 * cos(M_PI * (90.0f * temp_f31) / 180.0);
temp_f31 = 1.5 * cosd(90.0f * temp_f31);
Hu3DModelScaleSet(lbl_1_bss_19A[0], temp_f31, temp_f31, temp_f31);
Hu3DModelScaleSet(lbl_1_bss_19A[1], temp_f31, temp_f31, temp_f31);
Hu3DModelScaleSet(lbl_1_bss_19A[2], 0.7 * temp_f31, 0.7 * temp_f31, 0.7 * temp_f31);
@ -544,14 +544,14 @@ cleanup:
sp28.z = 600;
Hu3D2Dto3D(&sp28, 1, &sp10);
VECSubtract(&sp10, &sp1C, &sp28);
sp28.x *= sin(M_PI * (90.0f * temp_f31) / 180.0);
sp28.y *= 1.0 - cos(M_PI * (90.0f * temp_f31) / 180.0);
sp28.x *= sind(90.0f * temp_f31);
sp28.y *= 1.0 - cosd(90.0f * temp_f31);
sp28.z = 0.0f;
VECAdd(&sp28, &sp1C, &sp1C);
Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C);
lbl_1_bss_108[temp_r31] *= cos(M_PI * (90.0f * temp_f31) / 180.0);
lbl_1_bss_108[temp_r31] *= cosd(90.0f * temp_f31);
lbl_1_bss_100[temp_r31] = 1.0 - temp_f31;
temp_f31 = 1.0 + (0.5 * cos(M_PI * (90.0f * temp_f31) / 180.0));
temp_f31 = 1.0 + (0.5 * cosd(90.0f * temp_f31));
Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31);
}
HuPrcVSleep();
@ -636,10 +636,10 @@ void fn_1_5850(void)
float scale;
float time = i / 10.0;
if (param) {
scale = 1.0 + (0.3 * sin(M_PI * (90.0f * time) / 180.0));
scale = 1.0 + (0.3 * sind(90.0f * time));
}
else {
scale = 1.0 + (0.3 * cos(M_PI * (90.0f * time) / 180.0));
scale = 1.0 + (0.3 * cosd(90.0f * time));
}
Hu3DModelScaleSet(lbl_1_bss_19A[index + 2], scale, scale, scale);
Hu3DModelScaleSet(lbl_1_bss_19A[index + 4], scale, scale, scale);
@ -800,7 +800,7 @@ s32 fn_1_61B4(void)
lbl_1_bss_120[0] = lbl_1_bss_120[1] = lbl_1_bss_120[2] = 1;
UnMountCnt = 0;
for (temp_r29 = 0; temp_r29 <= 20; temp_r29++) {
temp_f31 = sin(M_PI * (90.0f * (temp_r29 / 20.0f)) / 180.0);
temp_f31 = sind(90.0f * (temp_r29 / 20.0f));
for (temp_r28 = 0; temp_r28 < 3; temp_r28++) {
Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 8], temp_f31, temp_f31, temp_f31);
Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 11], temp_f31, temp_f31, temp_f31);
@ -1076,7 +1076,7 @@ s32 fn_1_61B4(void)
}
HuWinDispOff(lbl_1_bss_146);
for (temp_r29 = 0; temp_r29 <= 20; temp_r29++) {
temp_f31 = cos(M_PI * (90.0 * (temp_r29 / 20.0)) / 180.0);
temp_f31 = cosd(90.0 * (temp_r29 / 20.0));
Hu3DModelScaleSet(lbl_1_bss_19A[curSlotNo], temp_f31, temp_f31, temp_f31);
for (temp_r28 = 0; temp_r28 < 3; temp_r28++) {
Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 8], temp_f31, temp_f31, temp_f31);
@ -1115,10 +1115,10 @@ void fn_1_72DC(void)
Vec pos_2d;
Vec pos_3d;
if (param) {
scale = sin(M_PI * (90.0f * (i / 10.0f)) / 180.0);
scale = sind(90.0f * (i / 10.0f));
}
else {
scale = cos(M_PI * (90.0f * (i / 10.0f)) / 180.0);
scale = cosd(90.0f * (i / 10.0f));
}
pos_2d.x = 158.0f + (index * 130);
pos_2d.y = 230;
@ -1476,7 +1476,7 @@ s32 fn_1_8540(s16 boxno)
return 0;
}
for (time = 0; time <= 10; time++) {
scale = cos(M_PI * (90.0 * (time / 10.0)) / 180.0);
scale = cosd(90.0 * (time / 10.0));
Hu3DModelScaleSet(lbl_1_bss_19A[boxno + 8], scale, scale, scale);
HuPrcVSleep();
}
@ -1490,7 +1490,7 @@ s32 fn_1_8540(s16 boxno)
Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno + 8], 0.6f);
Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno + 11], 0.3f);
for (time = 0; time <= 20; time++) {
scale = sin(M_PI * (90.0 * (time / 20.0)) / 180.0);
scale = sind(90.0 * (time / 20.0));
Hu3DModelScaleSet(lbl_1_bss_19A[boxno + 8], scale, scale, scale);
HuPrcVSleep();
}
@ -1661,7 +1661,7 @@ s32 fn_1_8C30(s16 boxno)
else {
fn_1_9E14();
for (temp_r30 = 0; temp_r30 <= 10; temp_r30++) {
temp_f31 = cos(M_PI * (90.0 * (temp_r30 / 10.0)) / 180.0);
temp_f31 = cosd(90.0 * (temp_r30 / 10.0));
Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31 + 8], temp_f31, temp_f31, temp_f31);
HuPrcVSleep();
}
@ -1709,7 +1709,7 @@ s32 fn_1_8C30(s16 boxno)
temp_f31 = temp_r30 / 30.0;
sp60.x = sp3C.x * temp_f31;
sp60.y = sp3C.y * temp_f31;
sp60.z = (sp3C.z * temp_f31) + (-300 * sin(M_PI * (180.0f * temp_f31) / 180.0));
sp60.z = (sp3C.z * temp_f31) + (-300 * sind(180.0f * temp_f31));
VECAdd(&sp60, &sp54, &sp60);
Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31 + 11], &sp60);
HuPrcVSleep();
@ -1730,7 +1730,7 @@ s32 fn_1_8C30(s16 boxno)
Hu3DModelAttrSet(lbl_1_bss_19A[23], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_19A[boxno + 8], HU3D_ATTR_DISPOFF);
for (temp_r30 = 0; temp_r30 <= 10; temp_r30++) {
temp_f31 = sin(M_PI * (90.0 * (temp_r30 / 10.0)) / 180.0);
temp_f31 = sind(90.0 * (temp_r30 / 10.0));
Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31 + 8], temp_f31, temp_f31, temp_f31);
HuPrcVSleep();
}
@ -1859,7 +1859,7 @@ void fn_1_A8C0(s16 boxno)
SLLoadBoardStory();
lbl_1_bss_EE[boxno] = GWGameStat.total_stars;
lbl_1_bss_D0[boxno] = GWGameStat.create_time;
lbl_1_bss_E8[boxno] = GWSystem.unk0B[1];
lbl_1_bss_E8[boxno] = GWSystem.unk0C;
lbl_1_bss_C4[boxno] = GWGameStat.story_continue;
lbl_1_bss_B8[boxno] = GWGameStat.party_continue;
if (GWGameStat.story_continue) {

View file

@ -8,7 +8,7 @@
#include "game/process.h"
#include "game/window.h"
#include "game/wipe.h"
#include "math.h"
#include "ext_math.h"
typedef struct camera_view_params {
Vec rot;
@ -233,15 +233,15 @@ void fn_1_B8C(omObjData *object)
y = lbl_1_bss_24[i].y;
z = lbl_1_bss_24[i].z;
pos.x = (((sin((M_PI * y) / 180.0) * cos((M_PI * x) / 180.0)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].x);
pos.y = (-sin((M_PI * x) / 180.0) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].y;
pos.z = ((cos((M_PI * y) / 180.0) * cos((M_PI * x) / 180.0)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].z;
pos.x = (((sind(y) * cosd(x)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].x);
pos.y = (-sind(x) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].y;
pos.z = ((cosd(y) * cosd(x)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].z;
target.x = lbl_1_bss_C[i].x;
target.y = lbl_1_bss_C[i].y;
target.z = lbl_1_bss_C[i].z;
up.x = sin((M_PI * y) / 180.0) * sin((M_PI * x) / 180.0);
up.y = cos((M_PI * x) / 180.0);
up.z = cos((M_PI * y) / 180.0) * sin((M_PI * x) / 180.0);
up.x = sind(y) * sind(x);
up.y = cosd(x);
up.z = cosd(y) * sind(x);
Hu3DCameraPosSet(lbl_1_data_6E[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z);
}
}
@ -272,27 +272,27 @@ void fn_1_F40(omObjData *object)
if (lbl_1_bss_4[0] < 100.0f) {
lbl_1_bss_4[0] = 100.0f;
}
pos.x = lbl_1_bss_C[0].x + (lbl_1_bss_4[0] * (sin((M_PI * lbl_1_bss_24[0].y) / 180.0) * cos((M_PI * lbl_1_bss_24[0].x) / 180.0)));
pos.y = (lbl_1_bss_C[0].y + (lbl_1_bss_4[0] * -sin((M_PI * lbl_1_bss_24[0].x) / 180.0)));
pos.z = (lbl_1_bss_C[0].z + (lbl_1_bss_4[0] * (cos((M_PI * lbl_1_bss_24[0].y) / 180.0) * cos((M_PI * lbl_1_bss_24[0].x) / 180.0))));
pos.x = lbl_1_bss_C[0].x + (lbl_1_bss_4[0] * (sind(lbl_1_bss_24[0].y) * cosd(lbl_1_bss_24[0].x)));
pos.y = (lbl_1_bss_C[0].y + (lbl_1_bss_4[0] * -sind(lbl_1_bss_24[0].x)));
pos.z = (lbl_1_bss_C[0].z + (lbl_1_bss_4[0] * (cosd(lbl_1_bss_24[0].y) * cosd(lbl_1_bss_24[0].x))));
offset.x = lbl_1_bss_C[0].x - pos.x;
offset.y = lbl_1_bss_C[0].y - pos.y;
offset.z = lbl_1_bss_C[0].z - pos.z;
dir.x = (sin((M_PI * lbl_1_bss_24[0].y) / 180.0) * sin((M_PI * lbl_1_bss_24[0].x) / 180.0));
dir.y = cos((M_PI * lbl_1_bss_24[0].x) / 180.0);
dir.z = (cos((M_PI * lbl_1_bss_24[0].y) / 180.0) * sin((M_PI * lbl_1_bss_24[0].x) / 180.0));
dir.x = (sind(lbl_1_bss_24[0].y) * sind(lbl_1_bss_24[0].x));
dir.y = cosd(lbl_1_bss_24[0].x);
dir.z = (cosd(lbl_1_bss_24[0].y) * sind(lbl_1_bss_24[0].x));
z_rot = lbl_1_bss_24[0].z;
y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0))
+ dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0))
+ dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0));
y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot))
+ dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot))
+ dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot));
y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0))
+ dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0))
+ dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0));
y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot))
+ dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot))
+ dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot));
y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0))
+ (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0))
+ dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0)));
y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot))
+ (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot))
+ dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot)));
VECCrossProduct(&dir, &offset, &offset);
VECNormalize(&offset, &offset);

View file

@ -0,0 +1,629 @@
#include "REL/mstory2Dll.h"
#include "game/armem.h"
#include "game/audio.h"
#include "game/board/main.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ s32 unk0C;
/* 0x010 */ s32 unk10;
/* 0x014 */ s32 unk14;
/* 0x018 */ char unk18[0x18];
/* 0x030 */ StructFn357C unk30[4];
/* 0x100 */ float unk100;
} StructBss3DC; // Size 0x104
StructBss3DC lbl_1_bss_3DC;
StructBss16C lbl_1_bss_3B4;
StructBss16C lbl_1_bss_38C;
StructBss16C lbl_1_bss_364;
StructBss16C lbl_1_bss_33C;
StructBss16C lbl_1_bss_29C[4];
Process *lbl_1_bss_298;
void fn_1_C4C0(void);
void fn_1_C858(void);
void fn_1_CCCC(int arg0, int arg1, int arg2, int arg3, int arg4);
void fn_1_CD78(void);
void fn_1_D224(int arg0, int arg1, int arg2, int arg3, int arg4);
void fn_1_D2D0(omObjData *arg0, StructBss16C *arg1);
void fn_1_D478(void);
void fn_1_D764(int arg0);
void fn_1_DB58(int arg0, int arg1, int arg2, int arg3, int arg4);
void fn_1_DC54(omObjData *arg0, StructBss16C *arg1);
void fn_1_DDC4(void);
void fn_1_E1B8(void);
void fn_1_E244(void);
void fn_1_E334(void);
void fn_1_B37C(omObjData *arg0, StructBss16C *arg1)
{
fn_1_BE8(30);
fn_1_DB58(4, -1, 15, 1, 0);
fn_1_D224(4, -1, 15, 1, 0);
arg1->unk04 = NULL;
}
void fn_1_B3E4(Process *arg0, s32 arg1)
{
int i;
lbl_1_bss_298 = arg0;
lbl_1_bss_3DC.unk0C = arg1;
fn_1_C30();
fn_1_3668(255);
fn_1_2828(lbl_1_bss_298, fn_1_E1B8);
fn_1_3754();
fn_1_D764(arg1);
HuPrcChildCreate(fn_1_C858, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_CD78, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_D478, 100, 8192, 0, HuPrcCurrentGet());
for (i = 0; i < 4; i++) {
HuPrcChildCreate(fn_1_DDC4, 100, 8192, 0, HuPrcCurrentGet());
}
HuPrcChildCreate(fn_1_C4C0, 100, 8192, 0, HuPrcCurrentGet());
}
void fn_1_B518(omObjData *object)
{
if (object->work[2]) {
object->work[2]--;
return;
}
if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) {
fn_1_1DFC(object, 1, object->work[1], 15, 1);
object->work[0] = object->work[1] = object->work[2] = 0;
}
}
void fn_1_B5A4(void)
{
int posX = 16;
int posY = 40;
GXColor winColor = { 0, 0, 128, 128 };
int i;
while (1) {
fn_1_BC8();
printWin(posX, posY, 220, 160, &winColor);
if (lbl_1_bss_3B4.unk04 == NULL) {
print8(posX, posY, 1, "PROC_MAIN -> FALSE");
}
else {
print8(posX, posY, 1, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_38C.unk04 == NULL) {
print8(posX, posY + 10, 1, "PROC_MAP -> FALSE");
}
else {
print8(posX, posY + 10, 1, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_364.unk04 == NULL) {
print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE");
}
else {
print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE");
}
if (lbl_1_bss_33C.unk04 == NULL) {
print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE");
}
else {
print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE");
}
for (i = 0; i < 4; i++) {
if (lbl_1_bss_29C[i].unk04 == NULL) {
print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> FALSE", i);
}
else {
print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> TRUE", i);
}
}
print8(posX, posY + 90, 1, "P:%d W:%d", lbl_1_bss_3DC.unk00, lbl_1_bss_3DC.unk0C);
print8(posX, posY + 110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(posX, posY + 120 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_3DC.unk30[i].unk00, lbl_1_bss_3DC.unk30[i].unk04,
lbl_1_bss_3DC.unk30[i].unk08, lbl_1_bss_3DC.unk30[i].unk0C, lbl_1_bss_3DC.unk30[i].unk14, lbl_1_bss_3DC.unk30[i].unk10);
}
}
}
void fn_1_B984(void)
{
lbl_1_bss_78[0] = HuAudSeqPlay(51);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
fn_1_BE8(60);
}
void fn_1_B9E0(void)
{
lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 = (void *)fn_1_DC54;
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_E244);
while (1) {
fn_1_BC8();
if (lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 == NULL) {
break;
}
}
while (1) {
fn_1_BC8();
if (lbl_1_bss_33C.unk04 == NULL) {
break;
}
}
fn_1_BE8(30);
}
void fn_1_BA90(void)
{
int i;
lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C);
HuAudFXPlay(lbl_1_data_0[5][0]);
fn_1_D224(3, -1, 15, 1, 0);
fn_1_1D4C(lbl_1_bss_3DC.unk04, lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk10, 0);
fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000C);
fn_1_1AFC(lbl_1_bss_3DC.unk04, -1);
fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004);
fn_1_D224(1, -1, 15, 1, 0);
fn_1_1A94(lbl_1_bss_3DC.unk04);
HuAudSeqFadeOut(lbl_1_bss_78[0], 1000);
fn_1_BE8(60);
for (i = 0; i < 4; i++) {
if (lbl_1_bss_3DC.unk30[i].unk00 != lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk00) {
Hu3DModelAttrSet(lbl_1_bss_29C[i].unk00->model[1], 1);
}
Hu3DModelAttrSet(lbl_1_bss_29C[i].unk00->model[2], 1);
}
Hu3DModelAttrReset(lbl_1_bss_364.unk00->model[1], 1);
Hu3DModelAttrReset(lbl_1_bss_38C.unk00->model[5], 1);
Hu3DModelAttrReset(lbl_1_bss_38C.unk00->model[6], 1);
lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C);
HuAudFXPlay(lbl_1_data_0[6][0]);
lbl_1_bss_78[1] = HuAudSeqPlay(55);
lbl_1_bss_33C.unk04 = (void *)fn_1_B37C;
fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000D);
fn_1_1AFC(lbl_1_bss_3DC.unk04, -1);
fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_3DC.unk04);
fn_1_1DFC(lbl_1_bss_38C.unk00, 2, 3, 0, 0);
fn_1_BE8(60);
lbl_1_bss_33C.unk04 = (void *)fn_1_D2D0;
fn_1_DB58(5, -1, 15, 0, 0);
fn_1_D224(5, 1, 0, 0, 1);
fn_1_2264(lbl_1_bss_38C.unk00, 2, 3, 0);
}
void fn_1_BDF0(void)
{
lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C);
HuAudFXPlay(lbl_1_data_0[6][1]);
fn_1_CCCC(3, -1, 15, 1, 0);
fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000E);
fn_1_1AFC(lbl_1_bss_3DC.unk04, -1);
fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004);
fn_1_CCCC(1, -1, 15, 1, 0);
fn_1_1A94(lbl_1_bss_3DC.unk04);
fn_1_CCCC(2, -1, 15, 0, 0);
fn_1_BE8(45);
HuAudFXPlay(lbl_1_data_0[6][0]);
fn_1_BE8(15);
HuAudSeqFadeOut(lbl_1_bss_78[1], 3000);
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_E334);
fn_1_BE8(30);
fn_1_BE8(45);
fn_1_BE8(75);
}
void fn_1_BF48(void)
{
int i;
omOvlHisData *his;
int charNo;
int padNo;
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (1) {
fn_1_BC8();
if (!WipeStatGet()) {
break;
}
}
CharModelKill(-1);
charNo = lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk10;
padNo = lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk14;
GWPlayerCfg[lbl_1_bss_3DC.unk00].character = GWPlayerCfg[0].character;
GWPlayerCfg[lbl_1_bss_3DC.unk00].pad_idx = GWPlayerCfg[0].pad_idx;
GWPlayerCfg[lbl_1_bss_3DC.unk00].group = GWPlayerCfg[0].group;
GWPlayerCfg[lbl_1_bss_3DC.unk00].iscom = GWPlayerCfg[0].iscom;
GWPlayerCfg[0].character = charNo;
GWPlayerCfg[0].pad_idx = padNo;
GWPlayerCfg[0].group = 0;
GWPlayerCfg[0].iscom = FALSE;
for (i = 0; i < 4; i++) {
GWPlayer[i].character = GWPlayerCfg[i].character;
GWPlayer[i].port = GWPlayerCfg[i].pad_idx;
GWPlayer[i].com = GWPlayerCfg[i].iscom;
GWPlayer[i].team = GWPlayerCfg[i].group;
}
GWPlayerCfg[1].character = 8;
for (i = 1; i < 4; i++) {
GWPlayerCfg[i].iscom = GWPlayerCfg[i].group = 1;
}
his = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY2, 3, his->stat);
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
GWSystem.mg_type = -1;
GWMGAvailSet(450);
GWSystem.mg_next = 450 - 401;
omOvlCallEx(OVL_M450, 1, 0, 0);
while (1) {
fn_1_BC8();
}
}
void fn_1_C270(omObjData *arg0, StructBss16C *arg1)
{
int temp = 0;
fn_1_B984();
fn_1_B9E0();
fn_1_BA90();
fn_1_BDF0();
fn_1_BF48();
arg1->unk04 = NULL;
}
void fn_1_C4C0(void)
{
omObjData *obj;
lbl_1_bss_3B4.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL);
lbl_1_bss_3B4.unk04 = (void *)fn_1_C270;
lbl_1_bss_3B4.unk00->data = &lbl_1_bss_3B4;
while (1) {
fn_1_BC8();
if (lbl_1_bss_3B4.unk04 != NULL) {
lbl_1_bss_3B4.unk04(obj, &lbl_1_bss_3B4);
}
}
}
void fn_1_C574(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52));
object->motion[1] = Hu3DMotionIDGet(object->model[1]);
Hu3DModelShadowMapObjSet(object->model[1], "base_story-base");
fn_1_1DFC(object, 1, 1, 0, 1);
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53));
object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54));
object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55));
fn_1_1DFC(object, 2, 2, 0, 2);
object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x59));
object->motion[5] = Hu3DMotionIDGet(object->model[5]);
Hu3DModelPosSet(object->model[5], 0, 80, 460);
Hu3DModelAttrSet(object->model[5], 1);
Hu3DModelShadowSet(object->model[5]);
fn_1_1DFC(object, 5, 5, 0, 2);
object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5A));
object->motion[6] = Hu3DMotionIDGet(object->model[6]);
Hu3DModelHookSet(object->model[5], "koopasgbox_fix-effect_fook2", object->model[6]);
Hu3DModelAttrSet(object->model[6], 1);
fn_1_1DFC(object, 6, 6, 0, 2);
}
void fn_1_C79C(omObjData *arg0, StructBss16C *arg1)
{
Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_C858(void)
{
omObjData *obj;
lbl_1_bss_38C.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL);
lbl_1_bss_38C.unk04 = (void *)fn_1_C79C;
lbl_1_bss_38C.unk00->data = &lbl_1_bss_38C;
fn_1_C574(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_38C.unk04 != NULL) {
lbl_1_bss_38C.unk04(obj, &lbl_1_bss_38C);
}
}
}
void fn_1_CB0C(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C));
Hu3DModelPosSet(object->model[1], 0, 0, 150);
Hu3DModelRotSet(object->model[1], 0, 0, 0);
Hu3DModelScaleSet(object->model[1], 1.25f, 1.25f, 1.25f);
Hu3DModelScaleSet(object->model[1], 1.6f, 1.6f, 1.6f);
Hu3DModelAttrSet(object->model[1], 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
}
void fn_1_CCCC(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_364.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_364.unk00->work[0] = arg4;
lbl_1_bss_364.unk00->work[1] = arg1;
lbl_1_bss_364.unk00->work[2] = arg2 + 1;
}
void fn_1_CD78(void)
{
omObjData *obj;
lbl_1_bss_364.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL);
lbl_1_bss_364.unk04 = NULL;
lbl_1_bss_364.unk00->data = &lbl_1_bss_38C;
fn_1_CB0C(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_364.unk04 != NULL) {
lbl_1_bss_364.unk04(obj, &lbl_1_bss_364);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_D030(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E));
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x84 : 0x7F));
object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x85 : 0x80));
Hu3DModelPosSet(object->model[1], -300, 0, 890);
Hu3DModelRotSet(object->model[1], 0, 30, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13);
}
void fn_1_D224(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_33C.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_33C.unk00->work[0] = arg4;
lbl_1_bss_33C.unk00->work[1] = arg1;
lbl_1_bss_33C.unk00->work[2] = arg2 + 1;
}
void fn_1_D2D0(omObjData *arg0, StructBss16C *arg1)
{
int i;
for (i = 0; i < 15; i++) {
fn_1_BC8();
Hu3DData[arg0->model[1]].rot.y = fn_1_864(0, 135, i, 15);
}
arg1->unk04 = NULL;
}
void fn_1_D394(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { -120, 0, 800 };
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, 60, 60, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_D478(void)
{
omObjData *obj;
lbl_1_bss_33C.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL);
lbl_1_bss_33C.unk04 = NULL;
lbl_1_bss_33C.unk00->data = &lbl_1_bss_33C;
fn_1_D030(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_33C.unk04 != NULL) {
lbl_1_bss_33C.unk04(obj, &lbl_1_bss_33C);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_D764(int arg0)
{
int i;
int order[4];
order[0] = 0;
for (i = 1; i < 4; i++) {
order[i] = order[i - 1] + 1;
if (order[i] >= 4) {
order[i] = 0;
}
if (arg0 == order[i]) {
lbl_1_bss_3DC.unk00 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_357C(&lbl_1_bss_3DC.unk30[i], order[i]);
}
for (i = 0; i < 4; i++) {
lbl_1_bss_3DC.unk30[i].unk18 = GWPlayer[order[i]].rank + 1;
}
}
Vec lbl_1_data_668[4] = {
{ -300, 0, 460 },
{ -100, -30, 460 },
{ 100, -60, 460 },
{ 300, -90, 460 },
};
void fn_1_D898(omObjData *object, int player)
{
int playerNo = player;
int charNo = lbl_1_bss_3DC.unk30[playerNo].unk10;
object->model[1] = CharModelCreate(charNo, 4);
object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00));
object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03));
object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05));
object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A));
object->motion[5] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D));
CharModelMotionDataClose(charNo);
Hu3DModelPosSet(
object->model[1], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18 - 1].y + 90, lbl_1_data_668[playerNo].z);
Hu3DModelRotSet(object->model[1], 0, 0, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x56));
Hu3DModelPosSet(
object->model[2], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18 - 1].y, lbl_1_data_668[playerNo].z);
if (lbl_1_bss_3DC.unk30[playerNo].unk18 == 4) {
Hu3DModelAttrSet(object->model[2], 1);
}
Hu3DModelScaleSet(object->model[2], 1.5, 1, 1.5);
Hu3DModelShadowMapSet(object->model[2]);
}
void fn_1_DB58(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[0] = arg4;
lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[1] = arg1;
lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[2] = arg2 + 1;
}
void fn_1_DC54(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { 120, 0, 800 };
fn_1_2948(arg0, 1, pos, -1, 30, 10);
lbl_1_bss_33C.unk04 = (void *)fn_1_D394;
fn_1_1DFC(lbl_1_bss_38C.unk00, 2, 2, 0, 0);
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, -60, 30, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_DDC4(void)
{
omObjData *obj;
int playerNo = lbl_1_bss_3DC.unk10++;
lbl_1_bss_29C[playerNo].unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL);
lbl_1_bss_29C[playerNo].unk04 = NULL;
lbl_1_bss_29C[playerNo].unk00->data = &lbl_1_bss_29C[0];
fn_1_D898(obj, playerNo);
while (1) {
fn_1_BC8();
if (lbl_1_bss_29C[playerNo].unk04 != NULL) {
lbl_1_bss_29C[playerNo].unk04(obj, &lbl_1_bss_29C[playerNo]);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_E1B8(void)
{
StructBss24 *work = &lbl_1_bss_24;
work->unk08.x = 0;
work->unk08.y = 170;
work->unk08.z = -20;
work->unk20.x = -5;
work->unk20.y = 0;
work->unk20.z = 0;
work->unk38 = 1700;
}
void fn_1_E244(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
temp.unk08.x = 0;
temp.unk08.y = 125;
temp.unk08.z = -20;
temp.unk20.x = -5;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 1750;
fn_1_4FEC(work, &temp, work->unk40++, 60, 30);
}
void fn_1_E334(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
if (work->unk40 == 50) {
fn_1_1DFC(lbl_1_bss_38C.unk00, 5, 5, 0, 0);
fn_1_1DFC(lbl_1_bss_38C.unk00, 6, 6, 0, 0);
HuAudFXPlay(161);
}
temp.unk08.x = 0;
temp.unk08.y = 130;
temp.unk08.z = 460;
temp.unk20.x = 0;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 150;
fn_1_4FEC(work, &temp, work->unk40, 180, 10);
if (work->unk40++ >= 90) {
if (work->unk40 == 91) {
lbl_1_bss_88[0] = HuAudFXPlay(32);
}
work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90);
Hu3DData[lbl_1_bss_38C.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90);
}
}

View file

@ -0,0 +1,633 @@
#include "REL/mstory2Dll.h"
#include "game/armem.h"
#include "game/audio.h"
#include "game/board/main.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ s32 unk0C;
/* 0x010 */ s32 unk10;
/* 0x014 */ s32 unk14;
/* 0x018 */ char unk18[0x18];
/* 0x030 */ StructFn357C unk30[4];
/* 0x100 */ float unk100;
} StructBss194; // Size 0x104
StructBss194 lbl_1_bss_194;
StructBss16C lbl_1_bss_16C;
StructBss16C lbl_1_bss_144;
StructBss16C lbl_1_bss_11C;
StructBss16C lbl_1_bss_F4;
StructBss16C lbl_1_bss_CC;
Process *lbl_1_bss_C8;
s32 lbl_1_bss_88[16];
s32 lbl_1_bss_78[4];
u32 lbl_1_data_3A0[11]
= { 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000 };
s32 lbl_1_data_3CC[2][2] = { 20, 70, 1, 1 };
s32 lbl_1_data_3DC = -1;
s32 lbl_1_data_3E0[2] = { -1, -1 };
void fn_1_9768(void);
void fn_1_9A10(void);
void fn_1_9BD4(s32 arg0);
void fn_1_9ECC(omObjData *arg0, StructBss16C *arg1);
void fn_1_9FDC(void);
void fn_1_A4A8(omObjData *arg0, StructBss16C *arg1);
void fn_1_A58C(void);
void fn_1_AB10(omObjData *arg0, StructBss16C *arg1);
void fn_1_AE5C(void);
void fn_1_B1C0(void);
void fn_1_B24C(void);
void fn_1_7DB0(void)
{
int i;
while (1) {
do {
HuPrcVSleep();
} while (lbl_1_data_3DC == -1 || lbl_1_data_3E0[0] == -1 || lbl_1_data_3E0[1] == -1 || lbl_1_data_3E0[0] != Hu3DMotionIDGet(lbl_1_data_3DC));
for (i = 0; i < 2; i++) {
if (lbl_1_data_3CC[1][i] != -1) {
if (Hu3DMotionTimeGet(lbl_1_data_3DC) >= lbl_1_data_3CC[0][i]) {
OSReport("KE-System TIME:%d\n", lbl_1_data_3CC[0][i]);
HuAudFXPlay(81);
lbl_1_data_3CC[1][i] = -1;
}
}
}
if (Hu3DMotionTimeGet(lbl_1_data_3DC) <= 10) {
for (i = 0; i < 2; i++) {
lbl_1_data_3CC[1][i] = 1;
}
}
}
}
void fn_1_7F54(Process *arg0, s32 arg1)
{
lbl_1_bss_C8 = arg0;
lbl_1_bss_194.unk0C = arg1;
fn_1_C30();
fn_1_3668(255);
fn_1_2828(lbl_1_bss_C8, fn_1_B1C0);
fn_1_3754();
fn_1_9BD4(arg1);
HuPrcChildCreate(fn_1_9FDC, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_9A10, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_A58C, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_AE5C, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_9768, 100, 8192, 0, HuPrcCurrentGet());
}
void fn_1_806C(omObjData *object)
{
if (object->work[2]) {
object->work[2]--;
return;
}
if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) {
fn_1_1DFC(object, 1, object->work[1], 15, 1);
object->work[0] = object->work[1] = object->work[2] = 0;
}
}
void fn_1_80F8(void)
{
int posX = 16;
int posY = 40;
GXColor winColor = { 0, 0, 128, 128 };
int i;
while (1) {
fn_1_BC8();
fontcolor = FONT_COLOR_WHITE;
printWin(posX, posY, 220, 130, &winColor);
if (lbl_1_bss_16C.unk04 == NULL) {
print8(posX, posY, 1, "PROC_MAIN -> FALSE");
}
else {
print8(posX, posY, 1, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_144.unk04 == NULL) {
print8(posX, posY + 10, 1, "PROC_MAP -> FALSE");
}
else {
print8(posX, posY + 10, 1, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_11C.unk04 == NULL) {
print8(posX, posY + 20, 1, "PROC_PLAYER -> FALSE");
}
else {
print8(posX, posY + 20, 1, "PROC_PLAYER -> TRUE");
}
if (lbl_1_bss_F4.unk04 == NULL) {
print8(posX, posY + 30, 1, "PROC_SUB -> FALSE");
}
else {
print8(posX, posY + 30, 1, "PROC_SUB -> TRUE");
}
if (lbl_1_bss_CC.unk04 == NULL) {
print8(posX, posY + 40, 1, "PROC_KOOPA -> FALSE");
}
else {
print8(posX, posY + 40, 1, "PROC_KOOPA -> TRUE");
}
print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_194.unk00, lbl_1_bss_194.unk0C);
print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_194.unk30[i].unk00, lbl_1_bss_194.unk30[i].unk04,
lbl_1_bss_194.unk30[i].unk08, lbl_1_bss_194.unk30[i].unk0C, lbl_1_bss_194.unk30[i].unk14, lbl_1_bss_194.unk30[i].unk10);
}
if (HuPadBtnDown[0] & PAD_BUTTON_X) {
fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 30, 120, TRUE);
}
else if (HuPadBtnDown[0] & PAD_BUTTON_Y) {
fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 30, 120, FALSE);
}
}
}
void fn_1_8580(void)
{
lbl_1_bss_78[0] = HuAudSeqPlay(51);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
fn_1_BE8(60);
}
void fn_1_85DC(void)
{
fn_1_1DFC(lbl_1_bss_144.unk00, 2, 3, 0, 0);
fn_1_2264(lbl_1_bss_144.unk00, 2, 3, 0);
lbl_1_bss_11C.unk04 = (void *)fn_1_9ECC;
lbl_1_bss_F4.unk04 = (void *)fn_1_A4A8;
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_B24C);
fn_1_BE8(30);
fn_1_1DFC(lbl_1_bss_144.unk00, 2, 2, 0, 0);
do {
fn_1_BC8();
} while (lbl_1_bss_11C.unk04 != NULL);
do {
fn_1_BC8();
} while (lbl_1_bss_F4.unk04 != NULL);
lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C);
HuAudFXPlay(lbl_1_data_0[0][2]);
fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 3, 5, 1);
fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0000);
fn_1_1AFC(lbl_1_bss_194.unk04, -1);
fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0001);
fn_1_1AFC(lbl_1_bss_194.unk04, -1);
fn_1_1D18(lbl_1_bss_194.unk04, 0x250004);
fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 1, 5, 1);
fn_1_1A94(lbl_1_bss_194.unk04);
fn_1_BE8(15);
}
void fn_1_87D4(void)
{
int i;
float speed;
HuAudSeqFadeOut(lbl_1_bss_78[0], 500);
HuAudFXPlay(153);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 2, 0, 0);
fn_1_BC8();
Hu3DMotionTimeSet(lbl_1_bss_CC.unk00->model[1], 100);
Hu3DModelAttrReset(lbl_1_bss_CC.unk00->model[1], 1);
while (1) {
fn_1_BC8();
if (Hu3DMotionTimeGet(lbl_1_bss_CC.unk00->model[1]) >= 132) {
break;
}
}
fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 4, 0, 0);
fn_1_BC8();
while (1) {
fn_1_BC8();
if (Hu3DMotionTimeGet(lbl_1_bss_F4.unk00->model[1]) >= 5) {
break;
}
}
Hu3DMotionSpeedSet(lbl_1_bss_F4.unk00->model[1], 0);
Hu3DData[lbl_1_bss_F4.unk00->model[1]].rot.y = 0;
fn_1_67D8(lbl_1_bss_11C.unk00, 3, 1, 5, 0);
HuAudFXPlay(156);
omVibrate(lbl_1_bss_194.unk0C, 45, 12, 0);
speed = 50;
for (i = 0; i < 60; i++) {
float weight = fn_1_B08(0, speed, i % 15, 15);
speed = fn_1_88C(speed, 0, 30);
lbl_1_bss_194.unk100 = fn_1_88C(lbl_1_bss_194.unk100, weight, 5);
fn_1_BC8();
}
lbl_1_bss_194.unk100 = 0;
}
void fn_1_8ABC(void)
{
fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 1, 20, 1);
lbl_1_bss_78[1] = HuAudSeqPlay(6);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 10, 0);
fn_1_BE8(30);
lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C);
HuAudFXPlay(lbl_1_data_0[6][0]);
HuWinAttrSet(lbl_1_bss_194.unk04, 0x400);
HuWinMesSet(lbl_1_bss_194.unk04, 0x1F0002);
fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 10, 0);
fn_1_BE8(45);
HuAudFXPlay(lbl_1_data_0[6][0]);
fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 10, 1);
HuWinAttrReset(lbl_1_bss_194.unk04, 0x400);
HuWinKeyWaitEntry(lbl_1_bss_194.unk04);
fn_1_BC8();
fn_1_1AFC(lbl_1_bss_194.unk04, -1);
HuAudFXPlay(lbl_1_data_0[6][2]);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 4, 10, 1);
fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0003);
fn_1_1AFC(lbl_1_bss_194.unk04, -1);
fn_1_1D18(lbl_1_bss_194.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_194.unk04);
fn_1_BE8(30);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 30, 1);
fn_1_BE8(60);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 5, 10, 0);
fn_1_BE8(25);
HuAudFXPlay(81);
fn_1_BE8(20);
lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C);
HuAudFXPlay(lbl_1_data_0[6][2]);
fn_1_1D4C(lbl_1_bss_194.unk04, lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 0);
fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0004);
fn_1_1AFC(lbl_1_bss_194.unk04, -1);
fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0005);
fn_1_1AFC(lbl_1_bss_194.unk04, -1);
fn_1_1D18(lbl_1_bss_194.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_194.unk04);
fn_1_67D8(lbl_1_bss_11C.unk00, 7, 8, 10, 0);
fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 3, 5, 0);
fn_1_BE8(90);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 30, 0);
fn_1_BE8(30);
lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C);
HuAudFXPlay(lbl_1_data_0[6][0]);
HuWinAttrSet(lbl_1_bss_194.unk04, 0x400);
HuWinMesSet(lbl_1_bss_194.unk04, 0x1F0002);
fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 10, 1);
HuWinAttrReset(lbl_1_bss_194.unk04, 0x400);
HuWinKeyWaitEntry(lbl_1_bss_194.unk04);
fn_1_BC8();
fn_1_1AFC(lbl_1_bss_194.unk04, -1);
fn_1_1D18(lbl_1_bss_194.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_194.unk04);
}
void fn_1_9034(void)
{
fn_1_BE8(60);
lbl_1_bss_CC.unk04 = (void *)fn_1_AB10;
lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C);
HuAudFXPlay(lbl_1_data_0[6][1]);
fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0007);
fn_1_1AFC(lbl_1_bss_194.unk04, -1);
fn_1_1A94(lbl_1_bss_194.unk04);
while (1) {
fn_1_BC8();
if (lbl_1_bss_CC.unk04 == NULL) {
break;
}
}
HuAudFXPlay(149);
Hu3DMotionSpeedSet(lbl_1_bss_F4.unk00->model[1], 1);
fn_1_BC8();
fn_1_2264(lbl_1_bss_F4.unk00, 1, 4, 0);
lbl_1_bss_88[0] = HuAudFXPlay(98);
HuAudFXPlay(lbl_1_data_0[0][1]);
fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 5, 15, 1);
fn_1_BE8(60);
}
void fn_1_9198(void)
{
fn_1_BE8(60);
HuAudSeqFadeOut(lbl_1_bss_78[0], 1000);
HuAudFXFadeOut(lbl_1_bss_88[0], 1000);
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (1) {
fn_1_BC8();
if (!WipeStatGet()) {
break;
}
}
CharModelKill(-1);
HuAudFadeOut(1);
GWPlayerCfg[0].group = 0;
GWPlayerCfg[0].character = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10;
GWPlayerCfg[0].pad_idx = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk14;
GWPlayerCfg[0].iscom = FALSE;
omOvlGotoEx(OVL_MENT, 1, 11, 0);
}
void fn_1_92BC(omObjData *arg0, StructBss16C *arg1)
{
int temp = 0;
fn_1_8580();
fn_1_85DC();
fn_1_87D4();
fn_1_8ABC();
fn_1_9034();
fn_1_9198();
arg1->unk04 = NULL;
}
void fn_1_9768(void)
{
omObjData *obj;
lbl_1_bss_16C.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL);
lbl_1_bss_16C.unk04 = (void *)fn_1_92BC;
lbl_1_bss_16C.unk00->data = &lbl_1_bss_16C;
while (1) {
fn_1_BC8();
if (lbl_1_bss_16C.unk04 != NULL) {
lbl_1_bss_16C.unk04(obj, &lbl_1_bss_16C);
}
}
}
void fn_1_981C(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x50));
object->motion[0] = Hu3DMotionIDGet(object->model[1]);
fn_1_1DFC(object, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base");
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53));
object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54));
object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55));
fn_1_1DFC(object, 2, 3, 0, 2);
object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x51));
}
void fn_1_9954(omObjData *arg0, StructBss16C *arg1)
{
Hu3DData[arg0->model[5]].pos.y = fn_1_B08(125, 130, arg1->unk08++, 360);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_9A10(void)
{
omObjData *obj;
lbl_1_bss_144.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL);
lbl_1_bss_144.unk04 = (void *)fn_1_9954;
lbl_1_bss_144.unk00->data = &lbl_1_bss_144;
fn_1_981C(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_144.unk04 != NULL) {
lbl_1_bss_144.unk04(obj, &lbl_1_bss_144);
}
}
}
void fn_1_9BD4(s32 arg0)
{
int i;
int order[4];
order[0] = 0;
for (i = 1; i < 4; i++) {
order[i] = order[i - 1] + 1;
if (order[i] >= 4) {
order[i] = 0;
}
if (arg0 == order[i]) {
lbl_1_bss_194.unk00 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_357C(&lbl_1_bss_194.unk30[i], order[i]);
}
}
void fn_1_9CB8(omObjData *object)
{
int charNo = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10;
object->model[1] = CharModelCreate(charNo, 1);
object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00));
object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x18) + charNo);
object->motion[7] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x48) + charNo);
object->motion[8] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x40) + charNo);
object->motion[9] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x20) + charNo);
object->motion[10] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x12));
CharModelMotionDataClose(charNo);
Hu3DModelPosSet(object->model[1], 120, 0, 800);
Hu3DModelRotSet(object->model[1], 0, -135, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
}
void fn_1_9ECC(omObjData *arg0, StructBss16C *arg1)
{
int i;
fn_1_1DFC(arg0, 1, 2, 0, 0);
fn_1_BC8();
Hu3DMotionTimeSet(arg0->model[1], 60);
for (i = 0; i < 60; i++) {
fn_1_BC8();
Hu3DData[arg0->model[1]].rot.y = fn_1_864(-135, -90, i, 60);
}
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_9FDC(void)
{
omObjData *obj;
lbl_1_bss_11C.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL);
lbl_1_bss_11C.unk04 = NULL;
lbl_1_bss_11C.unk00->data = &lbl_1_bss_11C;
fn_1_9CB8(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_11C.unk04 != NULL) {
lbl_1_bss_11C.unk04(obj, &lbl_1_bss_11C);
}
if (obj->work[0]) {
fn_1_6704(obj);
}
}
}
void fn_1_A288(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x72 : 0x73));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x73 : 0x74));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x75));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x76));
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7A : 0x78));
object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7B : 0x79));
object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x79 : 0x77));
Hu3DModelPosSet(object->model[1], 0, 0, 460);
Hu3DModelRotSet(object->model[1], 0, 0, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 6, 0, 1);
CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 9);
}
void fn_1_A4A8(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { -120, 0, 800 };
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, 90, 45, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_A58C(void)
{
omObjData *obj;
lbl_1_bss_F4.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL);
lbl_1_bss_F4.unk04 = NULL;
lbl_1_bss_F4.unk00->data = &lbl_1_bss_F4;
fn_1_A288(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_F4.unk04 != NULL) {
lbl_1_bss_F4.unk04(obj, &lbl_1_bss_F4);
}
if (obj->work[0]) {
fn_1_6704(obj);
}
}
}
void fn_1_A848(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x65 : 0x69));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A));
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C));
object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x68 : 0x6B));
object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6C : 0x6D));
object->motion[7] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6D : 0x6E));
object->motion[8] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x64 : 0x68));
Hu3DModelPosSet(object->model[1], -120, 0, 800);
Hu3DModelRotSet(object->model[1], 0, 90, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelAttrSet(object->model[1], 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
lbl_1_data_3DC = object->model[1];
lbl_1_data_3E0[0] = object->motion[7];
lbl_1_data_3E0[1] = object->motion[8];
HuPrcChildCreate(fn_1_7DB0, 100, 8192, 0, HuPrcCurrentGet());
}
void fn_1_AB10(omObjData *arg0, StructBss16C *arg1)
{
int i;
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 8, 15, 1);
for (i = 0; i < 30; i++) {
fn_1_BC8();
Hu3DData[lbl_1_bss_CC.unk00->model[1]].pos.x = fn_1_864(-120, -60, i, 30);
}
fn_1_1DFC(lbl_1_bss_11C.unk00, 1, 9, 15, 0);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 6, 15, 0);
fn_1_2264(lbl_1_bss_CC.unk00, 1, 6, 15);
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 7, 15, 1);
fn_1_1DFC(lbl_1_bss_11C.unk00, 1, 10, 15, 1);
for (i = 0; i < 240; i++) {
fn_1_BC8();
Hu3DData[lbl_1_bss_CC.unk00->model[1]].pos.x = fn_1_864(-60, 540, i, 180);
Hu3DData[lbl_1_bss_11C.unk00->model[1]].pos.x = fn_1_864(120, 840, i, 180);
}
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_ADB0(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_CC.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_CC.unk00->work[0] = arg4;
lbl_1_bss_CC.unk00->work[1] = arg1;
lbl_1_bss_CC.unk00->work[2] = arg2 + 1;
}
void fn_1_AE5C(void)
{
omObjData *obj;
lbl_1_bss_CC.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL);
lbl_1_bss_CC.unk04 = NULL;
lbl_1_bss_CC.unk00->data = &lbl_1_bss_CC;
fn_1_A848(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_CC.unk04 != NULL) {
lbl_1_bss_CC.unk04(obj, &lbl_1_bss_CC);
}
if (obj->work[0]) {
fn_1_6704(obj);
}
}
}
void fn_1_B1C0(void)
{
StructBss24 *work = &lbl_1_bss_24;
work->unk08.x = 0;
work->unk08.y = 125;
work->unk08.z = 0;
work->unk20.x = -4.9f;
work->unk20.y = 0;
work->unk20.z = 0;
work->unk38 = 1750;
}
void fn_1_B24C(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
temp.unk08.x = 0;
temp.unk08.y = 100;
temp.unk08.z = 0;
temp.unk20.x = 0;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 1400;
fn_1_42A0(work, &temp, work->unk40++, 60, 10);
if (0.0f != lbl_1_bss_194.unk100) {
work->unk08.y = 100 + lbl_1_bss_194.unk100;
}
}

View file

@ -0,0 +1,848 @@
#include "REL/mstory2Dll.h"
#include "game/armem.h"
#include "game/audio.h"
#include "game/board/main.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ s32 unk0C;
/* 0x010 */ s32 unk10;
/* 0x014 */ s32 unk14;
/* 0x018 */ char unk18[0x18];
/* 0x030 */ StructFn357C unk30[4];
/* 0x100 */ float unk100;
} StructBss688; // Size 0x104
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ char unk0C[4];
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
} StructBss4E8; // Size 0x18
StructBss688 lbl_1_bss_688;
StructBss16C lbl_1_bss_660;
StructBss16C lbl_1_bss_638;
StructBss16C lbl_1_bss_610;
StructBss16C lbl_1_bss_5E8;
StructBss16C lbl_1_bss_548[4];
StructBss4E8 lbl_1_bss_4E8[4];
BOOL lbl_1_bss_4E4;
Process *lbl_1_bss_4E0;
s32 lbl_1_data_698[7] = {
DATADIR_W01,
DATADIR_W02,
DATADIR_W03,
DATADIR_W04,
DATADIR_W05,
DATADIR_W06,
DATADIR_W10,
};
s32 lbl_1_data_6B4[8] = { DATADIR_MARIOMDL1, DATADIR_LUIGIMDL1, DATADIR_PEACHMDL1, DATADIR_YOSHIMDL1, DATADIR_WARIOMDL1, DATADIR_DONKEYMDL1,
DATADIR_DAISYMDL1, DATADIR_WALUIGIMDL1 };
void fn_1_FDFC(void);
void fn_1_10194(void);
void fn_1_106B0(omObjData *arg0, StructBss16C *arg1);
void fn_1_1094C(void);
void fn_1_10DF4(int arg0, int arg1, int arg2, int arg3, int arg4);
void fn_1_10EA0(omObjData *arg0, StructBss16C *arg1);
void fn_1_1112C(void);
void fn_1_11418(int arg0);
void fn_1_11934(omObjData *arg0, StructBss16C *arg1);
void fn_1_11A98(omObjData *arg0, StructBss16C *arg1);
void fn_1_11BB0(void);
void fn_1_11FD0(void);
void fn_1_1205C(void);
void fn_1_1218C(void);
void fn_1_E570(void)
{
int statId = HuDataDirReadAsync(DATADIR_BOARD);
if (statId != -1) {
while (!HuDataGetAsyncStat(statId)) {
HuPrcVSleep();
}
}
HuAR_MRAMtoARAM(DATADIR_BOARD);
while (HuARDMACheck()) {
HuPrcVSleep();
}
HuDataDirClose(DATADIR_BOARD);
statId = HuDataDirReadAsync(lbl_1_data_698[GWSystem.board]);
if (statId != -1) {
while (!HuDataGetAsyncStat(statId)) {
HuPrcVSleep();
}
}
lbl_1_bss_4E4 = TRUE;
HuPrcEnd();
while (1) {
HuPrcVSleep();
}
}
void fn_1_E638(void)
{
int i, j;
lbl_1_bss_4E8[0].unk00 = 0;
lbl_1_bss_4E8[0].unk04 = 0;
lbl_1_bss_4E8[0].unk10 = lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10;
lbl_1_bss_4E8[0].unk14 = lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk14;
lbl_1_bss_4E8[0].unk08 = 0;
for (i = 1; i < 4; i++) {
lbl_1_bss_4E8[i].unk10 = -1;
lbl_1_bss_4E8[i].unk14 = i;
lbl_1_bss_4E8[i].unk08 = 1;
}
for (i = 1; i < 4; i++) {
do {
lbl_1_bss_4E8[i].unk10 = rand8() % 8;
for (j = 0; j < 4; j++) {
if (i != j && lbl_1_bss_4E8[j].unk10 != -1 && lbl_1_bss_4E8[i].unk10 == lbl_1_bss_4E8[j].unk10) {
break;
}
}
} while (j != 4);
}
for (i = 0; i < 4; i++) {
GWPlayerCfg[i].character = lbl_1_bss_4E8[i].unk10;
GWPlayerCfg[i].pad_idx = lbl_1_bss_4E8[i].unk14;
GWPlayerCfg[i].group = 0;
GWPlayerCfg[i].iscom = lbl_1_bss_4E8[i].unk08;
}
BoardSaveInit(GWSystem.board);
CharKill(-1);
HuDataDirClose(DATADIR_MSTORY2);
HuPrcChildCreate(fn_1_E570, 100, 12288, 0, lbl_1_bss_4E0);
}
void fn_1_E8EC(void)
{
int ovlTbl[7] = { OVL_W01, OVL_W02, OVL_W03, OVL_W04, OVL_W05, OVL_W06, OVL_W10 };
omOvlHisData *his;
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (WipeStatGet()) {
fn_1_BC8();
}
CharModelKill(-1);
MGSeqKillAll();
his = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY3, 0, his->stat);
do {
fn_1_BC8();
} while (lbl_1_bss_4E4 != 1);
CharARAMOpen(GWPlayerCfg[0].character);
CharARAMOpen(GWPlayerCfg[1].character);
CharARAMOpen(GWPlayerCfg[2].character);
CharARAMOpen(GWPlayerCfg[3].character);
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
omOvlCallEx(ovlTbl[GWSystem.board], 1, 0, 0);
while (1) {
fn_1_BC8();
}
}
void fn_1_EA2C(Process *arg0, s32 arg1)
{
int i;
lbl_1_bss_4E0 = arg0;
lbl_1_bss_688.unk0C = arg1;
fn_1_C30();
fn_1_3668(255);
fn_1_2828(lbl_1_bss_4E0, fn_1_11FD0);
fn_1_3754();
fn_1_11418(arg1);
HuPrcChildCreate(fn_1_10194, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_1094C, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_1112C, 100, 8192, 0, HuPrcCurrentGet());
for (i = 0; i < 4; i++) {
HuPrcChildCreate(fn_1_11BB0, 100, 8192, 0, HuPrcCurrentGet());
}
HuPrcChildCreate(fn_1_FDFC, 100, 8192, 0, HuPrcCurrentGet());
}
void fn_1_EB60(omObjData *object)
{
if (object->work[2]) {
object->work[2]--;
return;
}
if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) {
fn_1_1DFC(object, 1, object->work[1], 15, 1);
object->work[0] = object->work[1] = object->work[2] = 0;
}
}
void fn_1_EBEC(void)
{
int posX = 16;
int posY = 40;
GXColor winColor = { 0, 0, 128, 128 };
int i;
while (1) {
fn_1_BC8();
printWin(posX, posY, 220, 160, &winColor);
if (lbl_1_bss_660.unk04 == NULL) {
print8(posX, posY, 1, "PROC_MAIN -> FALSE");
}
else {
print8(posX, posY, 1, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_638.unk04 == NULL) {
print8(posX, posY + 10, 1, "PROC_MAP -> FALSE");
}
else {
print8(posX, posY + 10, 1, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_610.unk04 == NULL) {
print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE");
}
else {
print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE");
}
if (lbl_1_bss_5E8.unk04 == NULL) {
print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE");
}
else {
print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE");
}
for (i = 0; i < 4; i++) {
if (lbl_1_bss_548[i].unk04 == NULL) {
print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> FALSE", i);
}
else {
print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> TRUE", i);
}
}
print8(posX, posY + 90, 1, "P:%d W:%d", lbl_1_bss_688.unk00, lbl_1_bss_688.unk0C);
print8(posX, posY + 110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(posX, posY + 120 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_688.unk30[i].unk00, lbl_1_bss_688.unk30[i].unk04,
lbl_1_bss_688.unk30[i].unk08, lbl_1_bss_688.unk30[i].unk0C, lbl_1_bss_688.unk30[i].unk14, lbl_1_bss_688.unk30[i].unk10);
}
}
}
void fn_1_EFCC(void)
{
lbl_1_bss_78[0] = HuAudSeqPlay(52);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
fn_1_BE8(60);
}
void fn_1_F028(void)
{
int i;
for (i = 0; i < 4; i++) {
lbl_1_bss_548[i].unk04 = (void *)fn_1_11934;
}
do {
fn_1_BC8();
for (i = 0; i < 4; i++) {
if (lbl_1_bss_548[i].unk04 != NULL) {
break;
}
}
} while (i != 4);
lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 = (void *)fn_1_11A98;
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_1205C);
do {
fn_1_BC8();
} while (lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL);
do {
fn_1_BC8();
} while (lbl_1_bss_5E8.unk04 != NULL);
fn_1_BE8(30);
if (0) {
// Dummy code to stop this function from inlining
do {
fn_1_BC8();
for (i = 0; i < 4; i++) {
if (lbl_1_bss_548[i].unk04 != NULL) {
break;
}
}
} while (i != 4);
lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 = (void *)fn_1_11A98;
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_1205C);
do {
fn_1_BC8();
} while (lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL);
do {
fn_1_BC8();
} while (lbl_1_bss_5E8.unk04 != NULL);
fn_1_BE8(30);
}
}
void fn_1_F150(void)
{
lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C);
HuAudFXPlay(lbl_1_data_0[5][0]);
fn_1_10DF4(3, -1, 15, 1, 0);
fn_1_1D18(lbl_1_bss_688.unk04, 0x1F0009);
fn_1_1AFC(lbl_1_bss_688.unk04, -1);
fn_1_1D18(lbl_1_bss_688.unk04, 0x250004);
fn_1_10DF4(1, -1, 15, 1, 0);
fn_1_1A94(lbl_1_bss_688.unk04);
}
int fn_1_F22C(void)
{
int result = 0;
fn_1_1D18(lbl_1_bss_688.unk04, 0x1E0021);
fn_1_1AFC(lbl_1_bss_688.unk04, 5);
lbl_1_bss_688.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_688.unk0C);
fn_1_1D18(lbl_1_bss_688.unk08, 0x1E0035);
result = fn_1_1C64(lbl_1_bss_688.unk08);
fn_1_1D18(lbl_1_bss_688.unk08, 0x250004);
fn_1_71DC(lbl_1_bss_688.unk08);
return result;
}
int fn_1_F2FC(void)
{
int result = 0;
fn_1_1D18(lbl_1_bss_688.unk04, 0x1E0005);
fn_1_1AFC(lbl_1_bss_688.unk04, 5);
lbl_1_bss_688.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_688.unk0C);
fn_1_1D18(lbl_1_bss_688.unk08, 0x1E0035);
result = fn_1_1BA8(lbl_1_bss_688.unk08, 1);
fn_1_1D18(lbl_1_bss_688.unk08, 0x250004);
fn_1_71DC(lbl_1_bss_688.unk08);
return result;
}
void fn_1_F3D0(void)
{
lbl_1_bss_5E8.unk04 = (void *)fn_1_10EA0;
lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C);
HuAudFXPlay(lbl_1_data_0[5][0]);
fn_1_1D18(lbl_1_bss_688.unk04, 0x1F000A);
fn_1_1AFC(lbl_1_bss_688.unk04, -1);
fn_1_1D18(lbl_1_bss_688.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_688.unk04);
HuAudSeqFadeOut(lbl_1_bss_78[0], 1000);
do {
fn_1_BC8();
} while (lbl_1_bss_5E8.unk04 != NULL);
lbl_1_bss_610.unk04 = (void *)fn_1_106B0;
do {
fn_1_BC8();
} while (lbl_1_bss_610.unk04 != NULL);
fn_1_7384(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->model[1], lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10, 1, 20, 1);
lbl_1_bss_78[1] = HuAudSeqPlay(6);
fn_1_BE8(30);
fn_1_1DFC(lbl_1_bss_610.unk00, 1, 4, 30, 0);
fn_1_BE8(30);
lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C);
HuAudFXPlay(lbl_1_data_0[6][0]);
HuWinAttrSet(lbl_1_bss_688.unk04, 0x400);
HuWinMesSet(lbl_1_bss_688.unk04, 0x1F000B);
fn_1_2264(lbl_1_bss_610.unk00, 1, 4, 10);
fn_1_1DFC(lbl_1_bss_610.unk00, 1, 1, 10, 1);
HuWinAttrReset(lbl_1_bss_688.unk04, 0x400);
HuWinKeyWaitEntry(lbl_1_bss_688.unk04);
fn_1_BC8();
fn_1_1AFC(lbl_1_bss_688.unk04, -1);
fn_1_1D18(lbl_1_bss_688.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_688.unk04);
fn_1_BE8(60);
fn_1_E638();
Hu3DModelAttrReset(lbl_1_bss_638.unk00->model[5], 1);
Hu3DModelAttrReset(lbl_1_bss_638.unk00->model[6], 1);
fn_1_1DFC(lbl_1_bss_610.unk00, 1, 4, 15, 1);
fn_1_1DFC(lbl_1_bss_638.unk00, 2, 3, 0, 0);
fn_1_BE8(45);
HuAudFXPlay(lbl_1_data_0[6][0]);
fn_1_BE8(15);
fn_1_1DFC(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 1, 5, 0, 0);
fn_1_BC8();
fn_1_7384(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->model[1], lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10, 1, 10, 0);
fn_1_2264(lbl_1_bss_638.unk00, 2, 3, 0);
HuAudSeqFadeOut(lbl_1_bss_78[1], 3000);
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_1218C);
fn_1_BE8(150);
}
void fn_1_F838(void) { }
void fn_1_F83C(void)
{
fn_1_BE8(60);
HuAudSeqFadeOut(lbl_1_bss_78[0], 1000);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
CharModelKill(-1);
HuAudFadeOut(1);
omOvlReturnEx(1, 1);
}
void fn_1_F8B4(omObjData *arg0, StructBss16C *arg1)
{
int mode = 0;
int i;
fn_1_EFCC();
fn_1_F028();
fn_1_F150();
lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C);
while (1) {
fn_1_BC8();
if (fn_1_F22C()) {
mode = 0;
break;
}
else if (fn_1_F2FC()) {
mode = 1;
break;
}
}
fn_1_1A94(lbl_1_bss_688.unk04);
for (i = 0; i < 4; i++) {
if (lbl_1_bss_688.unk30[i].unk00 != lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk00) {
Hu3DModelAttrSet(lbl_1_bss_548[i].unk00->model[1], 1);
}
Hu3DModelAttrSet(lbl_1_bss_548[i].unk00->model[2], 1);
}
switch (mode) {
case 0:
fn_1_F3D0();
break;
case 1:
break;
}
switch (mode) {
case 0:
fn_1_E8EC();
break;
case 1:
fn_1_F83C();
break;
}
arg1->unk04 = NULL;
}
void fn_1_FDFC(void)
{
omObjData *obj;
lbl_1_bss_660.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL);
lbl_1_bss_660.unk04 = (void *)fn_1_F8B4;
lbl_1_bss_660.unk00->data = &lbl_1_bss_660;
while (1) {
fn_1_BC8();
if (lbl_1_bss_660.unk04 != NULL) {
lbl_1_bss_660.unk04(obj, &lbl_1_bss_660);
}
}
}
void fn_1_FEB0(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52));
object->motion[1] = Hu3DMotionIDGet(object->model[1]);
Hu3DModelShadowMapObjSet(object->model[1], "base_story-base");
fn_1_1DFC(object, 1, 1, 0, 1);
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53));
object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54));
object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55));
fn_1_1DFC(object, 2, 2, 0, 2);
object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x57));
object->motion[5] = Hu3DMotionIDGet(object->model[5]);
Hu3DModelPosSet(object->model[5], 0, 80, 460);
Hu3DModelAttrSet(object->model[5], 1);
Hu3DModelShadowSet(object->model[5]);
fn_1_1DFC(object, 5, 5, 0, 2);
object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x58));
object->motion[6] = Hu3DMotionIDGet(object->model[6]);
Hu3DModelHookSet(object->model[5], "koopabox_fix-effect_fook2", object->model[6]);
Hu3DModelAttrSet(object->model[6], 1);
fn_1_1DFC(object, 6, 6, 0, 2);
}
void fn_1_100D8(omObjData *arg0, StructBss16C *arg1)
{
Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_10194(void)
{
omObjData *obj;
lbl_1_bss_638.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL);
lbl_1_bss_638.unk04 = (void *)fn_1_100D8;
lbl_1_bss_638.unk00->data = &lbl_1_bss_638;
fn_1_FEB0(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_638.unk04 != NULL) {
lbl_1_bss_638.unk04(obj, &lbl_1_bss_638);
}
}
}
void fn_1_10448(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x65 : 0x69));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C));
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A));
Hu3DModelPosSet(object->model[1], -180, 0, 800);
Hu3DModelRotSet(object->model[1], 0, 60, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelAttrSet(object->model[1], 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
}
void fn_1_10604(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_610.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_610.unk00->work[0] = arg4;
lbl_1_bss_610.unk00->work[1] = arg1;
lbl_1_bss_610.unk00->work[2] = arg2 + 1;
}
void fn_1_106B0(omObjData *arg0, StructBss16C *arg1)
{
int i = 0;
float speed = 50;
HuAudFXPlay(153);
fn_1_10604(2, 1, 0, 0, 1);
fn_1_BE8(5);
Hu3DMotionTimeSet(lbl_1_bss_610.unk00->model[1], 100);
fn_1_BC8();
Hu3DModelAttrReset(arg0->model[1], 1);
while (1) {
fn_1_BC8();
if (Hu3DMotionTimeGet(lbl_1_bss_610.unk00->model[1]) >= 137) {
break;
}
}
HuAudFXPlay(156);
omVibrate(lbl_1_bss_688.unk0C, 45, 12, 0);
fn_1_67D8(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 6, 1, 5, 0);
for (i = 0; i < 60; i++) {
float posY;
fn_1_BC8();
posY = fn_1_B08(0, speed, i % 15, 15);
speed = fn_1_88C(speed, 0, 30);
lbl_1_bss_688.unk100 = fn_1_88C(lbl_1_bss_688.unk100, posY, 5);
}
lbl_1_bss_688.unk100 = 0;
arg1->unk04 = NULL;
}
void fn_1_1094C(void)
{
omObjData *obj;
lbl_1_bss_610.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL);
lbl_1_bss_610.unk04 = NULL;
lbl_1_bss_610.unk00->data = &lbl_1_bss_638;
fn_1_10448(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_610.unk04 != NULL) {
lbl_1_bss_610.unk04(obj, &lbl_1_bss_610);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_10C00(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E));
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x84 : 0x7F));
object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x85 : 0x80));
Hu3DModelPosSet(object->model[1], -300, 0, 890);
Hu3DModelRotSet(object->model[1], 0, 30, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13);
}
void fn_1_10DF4(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_5E8.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_5E8.unk00->work[0] = arg4;
lbl_1_bss_5E8.unk00->work[1] = arg1;
lbl_1_bss_5E8.unk00->work[2] = arg2 + 1;
}
void fn_1_10EA0(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { -600, 0, 800 };
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, -90, 60, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_10F84(omObjData *arg0, StructBss16C *arg1)
{
int i;
for (i = 0; i < 15; i++) {
fn_1_BC8();
Hu3DData[arg0->model[1]].rot.y = fn_1_864(0, 135, i, 15);
}
arg1->unk04 = NULL;
}
void fn_1_11048(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { -120, 0, 800 };
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, 60, 60, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_1112C(void)
{
omObjData *obj;
lbl_1_bss_5E8.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL);
lbl_1_bss_5E8.unk04 = NULL;
lbl_1_bss_5E8.unk00->data = &lbl_1_bss_5E8;
fn_1_10C00(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_5E8.unk04 != NULL) {
lbl_1_bss_5E8.unk04(obj, &lbl_1_bss_5E8);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_11418(int arg0)
{
int i;
int order[4];
order[0] = 0;
for (i = 1; i < 4; i++) {
order[i] = order[i - 1] + 1;
if (order[i] >= 4) {
order[i] = 0;
}
if (arg0 == order[i]) {
lbl_1_bss_688.unk00 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_357C(&lbl_1_bss_688.unk30[i], order[i]);
}
for (i = 0; i < 4; i++) {
lbl_1_bss_688.unk30[i].unk18 = GWPlayer[order[i]].rank + 1;
}
}
Vec lbl_1_data_81C[4] = {
{ -300, 0, 460 },
{ -100, -30, 460 },
{ 100, -60, 460 },
{ 300, -90, 460 },
};
void fn_1_1154C(omObjData *object, int player)
{
int playerNo = player;
int charNo = lbl_1_bss_688.unk30[playerNo].unk10;
object->model[1] = CharModelCreate(charNo, 4);
object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00));
object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03));
object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05));
object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A));
object->motion[5] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D));
object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x18) + charNo);
CharModelMotionDataClose(charNo);
Hu3DModelPosSet(
object->model[1], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18 - 1].y + 90, lbl_1_data_81C[playerNo].z);
Hu3DModelRotSet(object->model[1], 0, 0, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x56));
Hu3DModelPosSet(
object->model[2], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18 - 1].y, lbl_1_data_81C[playerNo].z);
if (lbl_1_bss_688.unk30[playerNo].unk18 == 4) {
Hu3DModelAttrSet(object->model[2], 1);
}
Hu3DModelScaleSet(object->model[2], 1.5, 1, 1.5);
Hu3DModelShadowMapSet(object->model[2]);
}
void fn_1_11838(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[0] = arg4;
lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[1] = arg1;
lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[2] = arg2 + 1;
}
void fn_1_11934(omObjData *arg0, StructBss16C *arg1)
{
float posY = Hu3DData[arg0->model[1]].pos.y;
int i;
for (i = 0; i < 60; i++) {
fn_1_BC8();
Hu3DData[arg0->model[1]].pos.y = fn_1_984(posY, 0, i, 60);
Hu3DData[arg0->model[2]].pos.y = fn_1_984(posY - 90, -90, i, 60);
}
Hu3DModelAttrSet(arg0->model[2], 1);
arg1->unk04 = NULL;
}
void fn_1_11A98(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { 120, 0, 800 };
lbl_1_bss_5E8.unk04 = (void *)fn_1_11048;
fn_1_1DFC(lbl_1_bss_638.unk00, 2, 2, 0, 0);
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, -60, 30, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_11BB0(void)
{
omObjData *obj;
int playerNo = lbl_1_bss_688.unk10++;
lbl_1_bss_548[playerNo].unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL);
lbl_1_bss_548[playerNo].unk04 = NULL;
lbl_1_bss_548[playerNo].unk00->data = &lbl_1_bss_548[0];
fn_1_1154C(obj, playerNo);
while (1) {
fn_1_BC8();
if (lbl_1_bss_548[playerNo].unk04 != NULL) {
lbl_1_bss_548[playerNo].unk04(obj, &lbl_1_bss_548[playerNo]);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_11FD0(void)
{
StructBss24 *work = &lbl_1_bss_24;
work->unk08.x = 0;
work->unk08.y = 170;
work->unk08.z = 0;
work->unk20.x = -5;
work->unk20.y = 0;
work->unk20.z = 0;
work->unk38 = 1700;
}
void fn_1_1205C(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
temp.unk08.x = 0;
temp.unk08.y = 125;
temp.unk08.z = 0;
temp.unk20.x = -5;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 1750;
fn_1_4FEC(work, &temp, work->unk40++, 60, 30);
if (0.0f != lbl_1_bss_688.unk100) {
work->unk08.y = lbl_1_bss_688.unk100 + 125;
}
}
void fn_1_1218C(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
if (work->unk40 == 50) {
fn_1_1DFC(lbl_1_bss_638.unk00, 5, 5, 0, 0);
fn_1_1DFC(lbl_1_bss_638.unk00, 6, 6, 0, 0);
HuAudFXPlay(161);
}
temp.unk08.x = 0;
temp.unk08.y = 100;
temp.unk08.z = 460;
temp.unk20.x = 0;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 125;
fn_1_4FEC(work, &temp, work->unk40, 180, 10);
if (work->unk40++ >= 90) {
if (work->unk40 == 91) {
lbl_1_bss_88[0] = HuAudFXPlay(32);
}
work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90);
Hu3DData[lbl_1_bss_638.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90);
}
}

701
src/REL/mstory2Dll/ending.c Normal file
View file

@ -0,0 +1,701 @@
#include "REL/mstory2Dll.h"
#include "game/armem.h"
#include "game/board/main.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/esprite.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
#ifndef __MWERKS__
#include "game/audio.h"
#include "game/saveload.h"
#include "game/thpmain.h"
#endif
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ s32 unk0C;
/* 0x010 */ s32 unk10;
/* 0x014 */ s32 unk14;
/* 0x018 */ char unk18[0x18];
/* 0x030 */ StructFn357C unk30[4];
/* 0x100 */ float unk100;
} StructBssC0C; // Size 0x104
StructBssC0C lbl_1_bss_C0C;
StructBss16C lbl_1_bss_BE4;
StructBss16C lbl_1_bss_BBC;
StructBss16C lbl_1_bss_B94;
StructBss16C lbl_1_bss_B6C;
StructBss16C lbl_1_bss_B44;
BOOL lbl_1_bss_B40;
BOOL lbl_1_bss_B3C;
Process *lbl_1_bss_B38;
s32 lbl_1_data_EF8[2][2] = { 20, 70, 1, 1 };
s32 lbl_1_data_F08 = -1;
s32 lbl_1_data_F0C[2] = { -1, -1 };
s32 lbl_1_data_F14 = 127;
void fn_1_19F14(void);
void fn_1_1A160(void);
void fn_1_1A538(omObjData *arg0, StructBss16C *arg1);
void fn_1_1A578(void);
void fn_1_1A9D0(omObjData *arg0, StructBss16C *arg1);
void fn_1_1AAB4(void);
void fn_1_1AFD4(omObjData *arg0, StructBss16C *arg1);
void fn_1_1B0E4(void);
void fn_1_1AD3C(int arg0);
void fn_1_1B318(void);
void fn_1_1B3A4(void);
void fn_1_1B430(void);
void fn_1_186D0(void)
{
int i;
while (1) {
HuPrcVSleep();
if (lbl_1_data_F08 != -1 && lbl_1_data_F0C[0] != -1 && lbl_1_data_F0C[1] != -1 && lbl_1_data_F0C[0] == Hu3DMotionIDGet(lbl_1_data_F08)) {
for (i = 0; i < 2; i++) {
if (lbl_1_data_EF8[1][i] != -1) {
if (Hu3DMotionTimeGet(lbl_1_data_F08) >= lbl_1_data_EF8[0][i]) {
OSReport("KE-System TIME:%d\n", lbl_1_data_EF8[0][i]);
HuAudFXPlayVol(81, lbl_1_data_F14);
lbl_1_data_EF8[1][i] = -1;
}
}
}
if (Hu3DMotionTimeGet(lbl_1_data_F08) <= 10) {
for (i = 0; i < 2; i++) {
lbl_1_data_EF8[1][i] = 1;
}
}
}
if (lbl_1_bss_B3C == 1) {
lbl_1_data_F14--;
if (lbl_1_data_F14 <= 0) {
lbl_1_data_F14 = 0;
}
}
if (lbl_1_bss_B3C == 2) {
break;
}
}
HuPrcEnd();
while (1) {
HuPrcVSleep();
}
}
void fn_1_188F0(Process *arg0, s32 arg1)
{
lbl_1_bss_B38 = arg0;
if (GWSystem.diff_story == 2) {
GWGameStat.field10E_bit4 = TRUE;
}
lbl_1_bss_C0C.unk0C = arg1;
fn_1_C30();
fn_1_3668(255);
fn_1_2828(lbl_1_bss_B38, fn_1_1B318);
fn_1_3754();
fn_1_1AD3C(arg1);
HuPrcChildCreate(fn_1_1B0E4, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_1A160, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_1AAB4, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_1A578, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_19F14, 100, 12288, 0, HuPrcCurrentGet());
}
void fn_1_18A34(omObjData *object)
{
if (object->work[2]) {
object->work[2]--;
return;
}
if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) {
fn_1_1DFC(object, 1, object->work[1], 15, 1);
object->work[0] = object->work[1] = object->work[2] = 0;
}
}
void fn_1_18AC0(void)
{
int posX = 16;
int posY = 40;
GXColor winColor = { 0, 0, 128, 128 };
int i;
while (1) {
fn_1_BC8();
fontcolor = FONT_COLOR_WHITE;
printWin(posX, posY, 220, 130, &winColor);
if (lbl_1_bss_BE4.unk04 == NULL) {
print8(posX, posY, 1, "PROC_MAIN -> FALSE");
}
else {
print8(posX, posY, 1, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_BBC.unk04 == NULL) {
print8(posX, posY + 10, 1, "PROC_MAP -> FALSE");
}
else {
print8(posX, posY + 10, 1, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_B94.unk04 == NULL) {
print8(posX, posY + 20, 1, "PROC_PLAYER -> FALSE");
}
else {
print8(posX, posY + 20, 1, "PROC_PLAYER -> TRUE");
}
if (lbl_1_bss_B6C.unk04 == NULL) {
print8(posX, posY + 30, 1, "PROC_SUB -> FALSE");
}
else {
print8(posX, posY + 30, 1, "PROC_SUB -> TRUE");
}
if (lbl_1_bss_B44.unk04 == NULL) {
print8(posX, posY + 40, 1, "PROC_KOOPA -> FALSE");
}
else {
print8(posX, posY + 40, 1, "PROC_KOOPA -> TRUE");
}
print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_C0C.unk00, lbl_1_bss_C0C.unk0C);
print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_C0C.unk30[i].unk00, lbl_1_bss_C0C.unk30[i].unk04,
lbl_1_bss_C0C.unk30[i].unk08, lbl_1_bss_C0C.unk30[i].unk0C, lbl_1_bss_C0C.unk30[i].unk14, lbl_1_bss_C0C.unk30[i].unk10);
}
}
}
void fn_1_18E7C(void)
{
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
fn_1_BE8(60);
}
void fn_1_18EC4(void)
{
lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C);
HuAudFXPlay(lbl_1_data_0[6][1]);
fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F001E);
fn_1_1AFC(lbl_1_bss_C0C.unk04, -1);
fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_C0C.unk04);
lbl_1_bss_B44.unk04 = (void *)fn_1_1A538;
lbl_1_bss_B3C = 1;
fn_1_BE8(60);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
fn_1_BE8(60);
lbl_1_bss_B44.unk04 = NULL;
lbl_1_bss_B3C = 2;
fn_1_1DFC(lbl_1_bss_B44.unk00, 1, 1, 0, 1);
fn_1_2750(fn_1_1B3A4);
Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[1], 1);
Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[2], 1);
Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[4], 1);
Hu3DModelAttrReset(lbl_1_bss_B6C.unk00->model[1], 1);
Hu3DModelAttrReset(lbl_1_bss_B94.unk00->model[1], 1);
Hu3DModelAttrSet(lbl_1_bss_B44.unk00->model[1], 1);
Hu3DModelPosSet(lbl_1_bss_BBC.unk00->model[1], 0, 0, 0);
fn_1_BE8(60);
lbl_1_bss_78[0] = HuAudSeqPlay(56);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
if (0) {
fn_1_BC8();
}
}
void fn_1_19138(void)
{
fn_1_1DFC(lbl_1_bss_BBC.unk00, 2, 3, 0, 0);
fn_1_2264(lbl_1_bss_BBC.unk00, 2, 3, 0);
lbl_1_bss_B94.unk04 = (void *)fn_1_1AFD4;
lbl_1_bss_B6C.unk04 = (void *)fn_1_1A9D0;
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_1B430);
fn_1_BE8(30);
fn_1_1DFC(lbl_1_bss_BBC.unk00, 2, 2, 0, 0);
while (1) {
fn_1_BC8();
if (lbl_1_bss_B94.unk04 == NULL) {
break;
}
}
while (1) {
fn_1_BC8();
if (lbl_1_bss_B6C.unk04 == NULL) {
break;
}
}
lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C);
HuAudFXPlay(lbl_1_data_0[0][2]);
fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 15, 1);
fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F001F);
fn_1_1AFC(lbl_1_bss_C0C.unk04, -1);
fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F0020);
fn_1_1AFC(lbl_1_bss_C0C.unk04, -1);
fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004);
fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 15, 1);
fn_1_1A94(lbl_1_bss_C0C.unk04);
fn_1_BE8(60);
}
char *lbl_1_data_10E4[8] = { "movie/endmov_ma0.thp", "movie/endmov_lu0.thp", "movie/endmov_pe0.thp", "movie/endmov_yo0.thp", "movie/endmov_wa0.thp",
"movie/endmov_do0.thp", "movie/endmov_da0.thp", "movie/endmov_wl0.thp" };
void fn_1_19334(void)
{
lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C);
HuAudFXPlay(lbl_1_data_0[0][2]);
fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 0, 1);
fn_1_1D4C(lbl_1_bss_C0C.unk04, lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10, 0);
fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F0024);
fn_1_1AFC(lbl_1_bss_C0C.unk04, -1);
fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004);
fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 0, 1);
fn_1_1A94(lbl_1_bss_C0C.unk04);
fn_1_1DFC(lbl_1_bss_B94.unk00, 1, 4, 15, 0);
fn_1_2264(lbl_1_bss_B94.unk00, 1, 4, 15);
fn_1_1DFC(lbl_1_bss_B94.unk00, 1, 3, 15, 1);
fn_1_BE8(60);
lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C);
fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 0, 1);
fn_1_6D78(lbl_1_bss_C0C.unk04, 0x1F0023, 0, -1);
fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004);
fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 0, 1);
HuAudFXPlay(lbl_1_data_0[0][3]);
fn_1_1A94(lbl_1_bss_C0C.unk04);
fn_1_BE8(60);
HuAudFXPlay(152);
Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[1], 1);
Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[2], 1);
Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[4], 1);
Hu3DModelAttrSet(lbl_1_bss_B6C.unk00->model[1], 1);
Hu3DModelAttrSet(lbl_1_bss_B94.unk00->model[1], 1);
HuAudSeqFadeOut(lbl_1_bss_78[0], 100);
lbl_1_bss_B3C = 2;
GWGameStat.field10E_bit6 = TRUE;
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (WipeStatGet()) {
HuPrcVSleep();
}
lbl_1_bss_BBC.unk04 = NULL;
lbl_1_bss_B94.unk04 = NULL;
lbl_1_bss_B44.unk04 = NULL;
lbl_1_bss_B6C.unk04 = NULL;
CharModelKill(-1);
Hu3DAllKill();
fn_1_BE8(60);
{
int time = 0;
#if VERSION_PAL
s32 languageOffset = 0;
#endif
int gid = HuSprGrpCreate(3);
int sprid = HuTHPSprCreate(lbl_1_data_10E4[lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10], FALSE, 1000);
HuSprGrpMemberSet(gid, 0, sprid);
HuSprPosSet(gid, 0, 288, 240);
#if VERSION_PAL
switch (GWGameStat.language) {
case 2:
languageOffset = 1;
break;
case 3:
languageOffset = 2;
break;
case 4:
languageOffset = 3;
break;
case 5:
languageOffset = 4;
break;
}
sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x60) + languageOffset, MEMORY_DEFAULT_NUM)), 950, 0);
#else
sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x60), MEMORY_DEFAULT_NUM)), 950, 0);
#endif
HuSprGrpMemberSet(gid, 1, sprid);
HuSprPosSet(gid, 1, 288, 226);
HuSprAttrSet(gid, 1, HUSPR_ATTR_DISPOFF);
sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x61 : 0x65), MEMORY_DEFAULT_NUM)), 950, 0);
HuSprGrpMemberSet(gid, 2, sprid);
HuSprBankSet(gid, 2, lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10);
if (GWLanguageGet() == 0 && lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10 == 5) {
HuSprBankSet(gid, 2, 8);
}
HuSprPosSet(gid, 2, 288, 254);
HuSprAttrSet(gid, 2, HUSPR_ATTR_DISPOFF);
HuPrcSleep(5);
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10);
while (WipeStatGet()) {
HuPrcVSleep();
}
while (!HuTHPEndCheck()) {
if (time >= (VERSION_NTSC ? 3300 : 2725)) {
HuSprAttrReset(gid, 1, HUSPR_ATTR_DISPOFF);
HuSprAttrReset(gid, 2, HUSPR_ATTR_DISPOFF);
}
else {
time++;
}
HuPrcVSleep();
}
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
}
HuTHPClose();
HuPrcVSleep();
HuSprGrpKill(gid);
}
}
void fn_1_199A0(void)
{
float sp8[2];
s32 temp_r30;
s32 var_r29;
s32 var_r31;
s32 var_r28;
temp_r30 = 1;
Hu3DAllKill();
HuSprClose();
HuSprInit();
if (SLSaveFlagGet() == 0) {
lbl_1_bss_B40 = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
espInit();
HuPrcVSleep();
var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0);
espPosSet(var_r29, 288.0f, 240.0f);
espAttrReset(var_r29, 4);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
fn_1_BE8(60);
var_r28 = GWUnkB1Get();
GWSystem.unk0B |= 1 << var_r28;
if (SLSaveFlagGet() == 1) {
HuWinInit(1);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22));
var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2);
winData[var_r31].active_pad = 1;
HuWinAttrSet(var_r31, 0x10);
HuWinExAnimIn(var_r31);
HuWinMesSet(var_r31, MAKE_MESSID(30, 22));
temp_r30 = HuWinChoiceGet(var_r31, 0);
HuWinExAnimOut(var_r31);
HuWinExCleanup(var_r31);
if (SLSaveFlagGet() == 1 && temp_r30 == 0) {
GWGameStat.story_continue = FALSE;
SLCommonSet();
SLSaveBoardStory();
SLSave();
}
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
lbl_1_bss_B40 = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_19BE8(void)
{
omOvlHisData *his;
fn_1_BE8(120);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
CharModelKill(-1);
HuAudFadeOut(1);
his = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY2, 20, 1);
omOvlCallEx(OVL_STAFF, 1, 0, 0);
while (1) {
fn_1_BC8();
}
}
void fn_1_19C6C(omObjData *arg0, StructBss16C *arg1)
{
int temp = 0;
fn_1_18E7C();
fn_1_18EC4();
fn_1_19138();
fn_1_19334();
fn_1_19BE8();
arg1->unk04 = NULL;
}
void fn_1_19F14(void)
{
omObjData *obj;
lbl_1_bss_BE4.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL);
lbl_1_bss_BE4.unk04 = (void *)fn_1_19C6C;
lbl_1_bss_BE4.unk00->data = &lbl_1_bss_BE4;
while (1) {
fn_1_BC8();
if (lbl_1_bss_BE4.unk04 != NULL) {
lbl_1_bss_BE4.unk04(obj, &lbl_1_bss_BE4);
}
}
}
void fn_1_19FC8(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x50));
object->motion[0] = Hu3DMotionIDGet(object->model[1]);
fn_1_1DFC(object, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base");
Hu3DModelAttrSet(object->model[1], 1);
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53));
object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54));
object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55));
Hu3DModelAttrSet(object->model[2], 1);
fn_1_1DFC(object, 2, 3, 0, 2);
object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x51));
Hu3DModelAttrSet(object->model[4], 1);
Hu3DModelPosSet(object->model[1], 0, -1000, 0);
}
void fn_1_1A160(void)
{
omObjData *obj;
lbl_1_bss_BBC.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL);
lbl_1_bss_BBC.unk04 = NULL;
fn_1_19FC8(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_BBC.unk04 != NULL) {
lbl_1_bss_BBC.unk04(obj, &lbl_1_bss_BBC);
}
}
}
void fn_1_1A368(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x70 : 0x71));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x71 : 0x72));
Hu3DModelPosSet(object->model[1], 0, 0, 600);
Hu3DModelRotSet(object->model[1], 0, 180, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
fn_1_1DFC(object, 1, 3, 0, 1);
lbl_1_data_F08 = object->model[1];
lbl_1_data_F0C[0] = object->motion[3];
lbl_1_data_F0C[1] = object->motion[3];
HuPrcChildCreate(fn_1_186D0, 100, 8192, 0, HuPrcCurrentGet());
}
void fn_1_1A538(omObjData *arg0, StructBss16C *arg1)
{
Hu3DData[lbl_1_bss_B44.unk00->model[1]].pos.z -= 2.5f;
}
void fn_1_1A578(void)
{
omObjData *obj;
lbl_1_bss_B44.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL);
lbl_1_bss_B44.unk04 = NULL;
fn_1_1A368(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_B44.unk04 != NULL) {
lbl_1_bss_B44.unk04(obj, &lbl_1_bss_B44);
}
if (obj->work[0]) {
fn_1_6704(obj);
}
}
}
void fn_1_1A7CC(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x72 : 0x73));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x73 : 0x74));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x75));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x76));
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7C : 0x7A));
object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x79 : 0x77));
Hu3DModelPosSet(object->model[1], 0, 0, 460);
Hu3DModelRotSet(object->model[1], 0, 0, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelAttrSet(object->model[1], 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 5, 0, 1);
CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 9);
}
void fn_1_1A9D0(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { -120, 0, 800 };
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, 90, 60, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_1AAB4(void)
{
omObjData *obj;
lbl_1_bss_B6C.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL);
lbl_1_bss_B6C.unk04 = NULL;
fn_1_1A7CC(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_B6C.unk04 != NULL) {
lbl_1_bss_B6C.unk04(obj, &lbl_1_bss_B6C);
}
if (obj->work[0]) {
fn_1_6704(obj);
}
}
}
void fn_1_1AD3C(int arg0)
{
int i;
int order[4];
order[0] = 0;
for (i = 1; i < 4; i++) {
order[i] = order[i - 1] + 1;
if (order[i] >= 4) {
order[i] = 0;
}
if (arg0 == order[i]) {
lbl_1_bss_C0C.unk00 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_357C(&lbl_1_bss_C0C.unk30[i], order[i]);
}
}
void fn_1_1AE20(omObjData *object)
{
int charNo = lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10;
object->model[1] = CharModelCreate(charNo, 1);
object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00));
object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x10) + charNo);
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x08) + charNo);
CharModelMotionDataClose(charNo);
Hu3DModelPosSet(object->model[1], 120, 0, 800);
Hu3DModelRotSet(object->model[1], 0, -135, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelAttrSet(object->model[1], 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
}
void fn_1_1AFD4(omObjData *arg0, StructBss16C *arg1)
{
int i;
fn_1_1DFC(arg0, 1, 2, 0, 0);
fn_1_BC8();
Hu3DMotionTimeSet(arg0->model[1], 60);
for (i = 0; i < 60; i++) {
fn_1_BC8();
Hu3DData[arg0->model[1]].rot.y = fn_1_864(-135, -90, i, 60);
}
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_1B0E4(void)
{
omObjData *obj;
lbl_1_bss_B94.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL);
lbl_1_bss_B94.unk04 = NULL;
fn_1_1AE20(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_B94.unk04 != NULL) {
lbl_1_bss_B94.unk04(obj, &lbl_1_bss_B94);
}
if (obj->work[0]) {
fn_1_6704(obj);
}
}
}
void fn_1_1B318(void)
{
StructBss24 *work = &lbl_1_bss_24;
work->unk08.x = 0;
work->unk08.y = 120;
work->unk08.z = 0;
work->unk20.x = 0;
work->unk20.y = 0;
work->unk20.z = 0;
work->unk38 = 1400;
}
void fn_1_1B3A4(void)
{
StructBss24 *work = &lbl_1_bss_24;
work->unk08.x = 0;
work->unk08.y = 125;
work->unk08.z = 0;
work->unk20.x = -4.9f;
work->unk20.y = 0;
work->unk20.z = 0;
work->unk38 = 1750;
}
void fn_1_1B430(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
temp.unk08.x = 0;
temp.unk08.y = 100;
temp.unk08.z = 0;
temp.unk20.x = 0;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 1400;
fn_1_42A0(work, &temp, work->unk40++, 60, 10);
if (0.0f != lbl_1_bss_C0C.unk100) {
work->unk08.y = 125 + lbl_1_bss_C0C.unk100;
}
}

1238
src/REL/mstory2Dll/main.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,842 @@
#include "REL/mstory2Dll.h"
#include "game/armem.h"
#include "game/board/main.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct struct_data850 {
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
} StructData850;
StructData850 lbl_1_data_850[] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 },
};
s32 lbl_1_data_C10[2][2] = { 20, 70, 1, 1 };
s32 lbl_1_data_C20 = -1;
s32 lbl_1_data_C24[2] = { -1, -1 };
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ s32 unk0C;
/* 0x010 */ s32 unk10;
/* 0x014 */ s32 unk14;
/* 0x018 */ char unk18[0x18];
/* 0x030 */ StructFn357C unk30[4];
/* 0x100 */ s32 unk100;
} StructBss860; // Size 0x104
StructBss860 lbl_1_bss_860;
StructBss16C lbl_1_bss_838;
StructBss16C lbl_1_bss_810;
StructBss16C lbl_1_bss_7E8;
StructBss16C lbl_1_bss_7C0;
StructBss16C lbl_1_bss_798;
BOOL lbl_1_bss_794;
Process *lbl_1_bss_790;
void fn_1_13BB8(void);
void fn_1_13FB4(omObjData *arg0, StructBss16C *arg1);
void fn_1_140A0(omObjData *arg0, StructBss16C *arg1);
void fn_1_1449C(void);
void fn_1_14A9C(int arg0, int arg1, int arg2, int arg3, int arg4);
void fn_1_14B48(omObjData *arg0, StructBss16C *arg1);
void fn_1_14C40(void);
void fn_1_15134(int arg0, int arg1, int arg2, int arg3, int arg4);
void fn_1_151E0(omObjData *arg0, StructBss16C *arg1);
void fn_1_152C4(omObjData *arg0, StructBss16C *arg1);
void fn_1_153A8(void);
void fn_1_15668(int arg0);
void fn_1_159F0(void);
void fn_1_15CDC(void);
void fn_1_15D68(void);
void fn_1_15E58(void);
void fn_1_15F70(void);
void fn_1_123C8(void)
{
int i;
while (1) {
do {
HuPrcVSleep();
} while (lbl_1_data_C20 == -1 || lbl_1_data_C24[0] == -1 || lbl_1_data_C24[1] == -1 || lbl_1_data_C24[0] != Hu3DMotionIDGet(lbl_1_data_C20));
for (i = 0; i < 2; i++) {
if (lbl_1_data_C10[1][i] != -1) {
if (Hu3DMotionTimeGet(lbl_1_data_C20) >= lbl_1_data_C10[0][i]) {
OSReport("KE-System TIME:%d\n", lbl_1_data_C10[0][i]);
HuAudFXPlay(81);
lbl_1_data_C10[1][i] = -1;
}
}
}
if (Hu3DMotionTimeGet(lbl_1_data_C20) <= 10) {
for (i = 0; i < 2; i++) {
lbl_1_data_C10[1][i] = 1;
}
}
}
}
void fn_1_1256C(Process *arg0, s32 arg1)
{
lbl_1_bss_790 = arg0;
lbl_1_bss_860.unk0C = arg1;
fn_1_C30();
lbl_1_bss_860.unk100 = fn_1_3668(255);
fn_1_2828(lbl_1_bss_790, fn_1_15CDC);
fn_1_3754();
fn_1_15668(arg1);
HuPrcChildCreate(fn_1_1449C, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_14C40, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_153A8, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_159F0, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_13BB8, 100, 8192, 0, HuPrcCurrentGet());
}
void fn_1_12690(omObjData *object)
{
if (object->work[2]) {
object->work[2]--;
return;
}
if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) {
fn_1_1DFC(object, 1, object->work[1], 15, 1);
object->work[0] = object->work[1] = object->work[2] = 0;
}
}
void fn_1_1271C(void)
{
int posX = 16;
int posY = 40;
GXColor winColor = { 0, 0, 128, 128 };
int i;
while (1) {
fn_1_BC8();
printWin(posX, posY, 220, 130, &winColor);
if (lbl_1_bss_838.unk04 == NULL) {
print8(posX, posY, 1, "PROC_MAIN -> FALSE");
}
else {
print8(posX, posY, 1, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_810.unk04 == NULL) {
print8(posX, posY + 10, 1, "PROC_MAP -> FALSE");
}
else {
print8(posX, posY + 10, 1, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_7E8.unk04 == NULL) {
print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE");
}
else {
print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE");
}
if (lbl_1_bss_7C0.unk04 == NULL) {
print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE");
}
else {
print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE");
}
if (lbl_1_bss_798.unk04 == NULL) {
print8(posX, posY + 40, 1, "PROC_PLAYER -> FALSE");
}
else {
print8(posX, posY + 40, 1, "PROC_PLAYER -> TRUE");
}
print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_860.unk00, lbl_1_bss_860.unk0C);
print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_860.unk30[i].unk00, lbl_1_bss_860.unk30[i].unk04,
lbl_1_bss_860.unk30[i].unk08, lbl_1_bss_860.unk30[i].unk0C, lbl_1_bss_860.unk30[i].unk14, lbl_1_bss_860.unk30[i].unk10);
}
}
}
void fn_1_12AC8(void)
{
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
fn_1_BE8(30);
}
void fn_1_12B10(void)
{
lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C);
HuAudFXPlay(lbl_1_data_0[6][1]);
fn_1_14A9C(4, 1, 15, 0, 1);
fn_1_1D4C(lbl_1_bss_860.unk04, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 0);
fn_1_6D78(lbl_1_bss_860.unk04, 0x1F0014, 0, lbl_1_bss_7E8.unk00->model[1]);
HuAudFXPlay(lbl_1_data_0[6][2]);
fn_1_1DFC(lbl_1_bss_7E8.unk00, 1, 5, 10, 1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0015);
fn_1_1AFC(lbl_1_bss_860.unk04, -1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x250004);
fn_1_15134(1, -1, 15, 1, 0);
fn_1_1A94(lbl_1_bss_860.unk04);
lbl_1_bss_7E8.unk04 = (void *)fn_1_14B48;
fn_1_BE8(60);
fn_1_1DFC(lbl_1_bss_798.unk00, 1, 4, 15, 0);
fn_1_BE8(16);
while (1) {
fn_1_BC8();
if (Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 20) {
break;
}
}
Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0);
while (1) {
fn_1_BC8();
if (lbl_1_bss_7E8.unk04 == NULL) {
break;
}
}
fn_1_BE8(30);
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_15D68);
lbl_1_bss_7C0.unk04 = (void *)fn_1_152C4;
fn_1_BE8(80);
Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 1);
fn_1_1DFC(lbl_1_bss_798.unk00, 1, 1, 15, 1);
while (1) {
fn_1_BC8();
if (lbl_1_bss_7C0.unk04 == NULL) {
break;
}
}
}
void fn_1_12DD4(void)
{
lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C);
lbl_1_bss_78[0] = HuAudSeqPlay(56);
HuAudFXPlay(lbl_1_data_0[5][0]);
fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 4, 15, 0);
fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0016);
fn_1_1AFC(lbl_1_bss_860.unk04, -1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x250004);
HuAudFXPlay(lbl_1_data_0[5][0]);
fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 3, 15, 1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0017);
fn_1_1AFC(lbl_1_bss_860.unk04, -1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x250004);
HuAudFXPlay(lbl_1_data_0[5][0]);
fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0018);
fn_1_1AFC(lbl_1_bss_860.unk04, -1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x250004);
fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 1, 15, 1);
fn_1_1A94(lbl_1_bss_860.unk04);
fn_1_BE8(60);
lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C);
HuAudFXPlay(lbl_1_data_0[5][0]);
fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 3, 15, 1);
fn_1_1D4C(lbl_1_bss_860.unk04, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 0);
fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0019);
fn_1_1AFC(lbl_1_bss_860.unk04, -1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x250004);
HuAudFXPlay(lbl_1_data_0[5][1]);
fn_1_1D18(lbl_1_bss_860.unk04, 0x1F001A);
fn_1_1AFC(lbl_1_bss_860.unk04, -1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x250004);
lbl_1_bss_7C0.unk04 = (void *)fn_1_151E0;
fn_1_1D18(lbl_1_bss_860.unk04, 0x1F001B);
fn_1_1AFC(lbl_1_bss_860.unk04, -1);
fn_1_1D18(lbl_1_bss_860.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_860.unk04);
while (1) {
fn_1_BC8();
if (lbl_1_bss_7C0.unk04 == NULL) {
break;
}
}
}
void fn_1_13150(omObjData *arg0, StructBss16C *arg1)
{
int streamNo = HuAudSStreamPlay(7);
while (1) {
fn_1_BC8();
if (HuAudSStreamStatGet(streamNo) == 0) {
break;
}
}
HuAudSeqPause(lbl_1_bss_78[0], 0, 1000);
arg1->unk04 = NULL;
}
void fn_1_131C0(omObjData *arg0, StructBss16C *arg1)
{
int presentSe = (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6) + 5;
fn_1_BE8(150);
OSReport("########## PRESENT_SE : %d\n", presentSe);
HuAudFXPlay(presentSe + 2260);
fn_1_1DFC(lbl_1_bss_810.unk00, 7, 7, 1, 0);
arg1->unk04 = NULL;
}
void fn_1_13264(void)
{
int i;
fn_1_1DFC(lbl_1_bss_798.unk00, 1, 2, 15, 1);
for (i = 0; i < 30; i++) {
fn_1_BC8();
if (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 != 5) {
Hu3DData[lbl_1_bss_798.unk00->model[1]].pos.x = fn_1_864(120, 80, i, 30);
}
Hu3DData[lbl_1_bss_798.unk00->model[1]].rot.y = fn_1_864(-60, -90, i, 30);
}
fn_1_1DFC(lbl_1_bss_798.unk00, 1, 5, 5, 0);
fn_1_BE8(10);
while (1) {
fn_1_BC8();
if (Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 30) {
break;
}
}
Hu3DModelPosSet(lbl_1_bss_810.unk00->model[5], 0, 0, 0);
Hu3DModelHookSet(
lbl_1_bss_798.unk00->model[1], CharModelHookNameGet(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 1, 1), lbl_1_bss_810.unk00->model[5]);
fn_1_BE8(60);
lbl_1_bss_810.unk04 = (void *)fn_1_13FB4;
HuAudFXPlay(163);
HuAudCharVoicePlay(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 296);
fn_1_1DFC(lbl_1_bss_810.unk00, 6, 6, 0, 0);
Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[6], 1);
Hu3DModelAttrSet(lbl_1_bss_810.unk00->model[5], 1);
fn_1_1DFC(lbl_1_bss_798.unk00, 1, 6, 5, 0);
HuAudSeqPause(lbl_1_bss_78[0], 1, 1000);
WipeColorSet(255, 255, 255);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
while (1) {
fn_1_BC8();
if (!WipeStatGet()) {
break;
}
}
Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0);
Hu3DMotionTimeSet(lbl_1_bss_798.unk00->model[1], 50);
Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[7], 1);
Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[8], 1);
fn_1_1DFC(lbl_1_bss_810.unk00, 8, 8, 0, 1);
fn_1_BE8(30);
HuAudFXPlay(169);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
while (1) {
fn_1_BC8();
if (!WipeStatGet()) {
break;
}
}
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_15F70);
fn_1_BE8(60);
lbl_1_bss_798.unk04 = (void *)fn_1_131C0;
lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C);
lbl_1_bss_7C0.unk04 = (void *)fn_1_13150;
fn_1_1D4C(lbl_1_bss_860.unk04, (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6) + 0x32000B, 0);
fn_1_6DBC(lbl_1_bss_860.unk04, 0x320086, 0, 300);
fn_1_1D18(lbl_1_bss_860.unk04, 0x250004);
fn_1_1A94(lbl_1_bss_860.unk04);
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_15E58);
lbl_1_bss_810.unk04 = (void *)fn_1_140A0;
fn_1_BE8(30);
Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0.1f);
fn_1_BE8(180);
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
}
void fn_1_13828(void)
{
Hu3DAllKill();
HuSprClose();
HuSprInit();
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
fn_1_BE8(60);
SLCommonSet();
SLSaveBoardStory();
if (SLSaveFlagGet() == 1) {
SLSave();
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
lbl_1_bss_794 = TRUE;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_138CC(void)
{
omOvlHisData *var_r31;
msmSeStopAll(FALSE, 1000);
do {
fn_1_BC8();
} while (WipeStatGet() != 0);
CharModelKill(-1);
HuAudFXAllStop();
HuAudSStreamAllStop();
GWMGAvailSet(omMgIndexGet(58) + 401);
GWGameStat.present[lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5] = 1;
OSReport("########## PRESENTFLG CHR:%d, MAP:5, PRESENT:%d\n", lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10,
lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5);
var_r31 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY2, 20, var_r31->stat);
omOvlCallEx(OVL_PRESENT, 1, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5 + 1, 0);
}
void fn_1_13A18(omObjData *arg0, StructBss16C *arg1)
{
int temp = 0;
fn_1_12AC8();
fn_1_12B10();
fn_1_12DD4();
fn_1_13264();
fn_1_138CC();
arg1->unk04 = 0;
}
void fn_1_13BB8(void)
{
omObjData *obj;
lbl_1_bss_838.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL);
lbl_1_bss_838.unk04 = (void *)fn_1_13A18;
lbl_1_bss_838.unk00->data = &lbl_1_bss_838;
while (1) {
fn_1_BC8();
if (lbl_1_bss_838.unk04 != NULL) {
lbl_1_bss_838.unk04(obj, &lbl_1_bss_838);
}
}
}
void fn_1_13C6C(omObjData *object)
{
s32 charNo;
charNo = lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10;
object->model[7] = Hu3DModelCreateFile(lbl_1_data_850[charNo * 6 + 5].unk0);
object->motion[7] = Hu3DMotionIDGet(object->model[7]);
Hu3DModelPosSet(object->model[7], 0, 180, 825);
Hu3DModelAttrSet(object->model[7], 1);
Hu3DModelShadowSet(object->model[7]);
fn_1_1DFC(object, 7, 7, 0, 2);
HuDataDirClose(DATADIR_MSTORY4);
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52));
object->motion[1] = Hu3DMotionIDGet(object->model[1]);
Hu3DModelShadowMapObjSet(object->model[1], "base_story-base");
fn_1_1DFC(object, 1, 1, 0, 1);
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53));
object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54));
object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55));
fn_1_1DFC(object, 2, 3, 0, 2);
object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5B));
Hu3DModelPosSet(object->model[5], 0, 125, 800);
Hu3DModelAttrSet(object->model[5], 1);
Hu3DModelShadowSet(object->model[5]);
object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5D));
object->motion[6] = Hu3DMotionIDGet(object->model[6]);
Hu3DModelPosSet(object->model[6], 25, 125, 900);
Hu3DModelAttrSet(object->model[6], 1);
fn_1_1DFC(object, 6, 6, 0, 2);
object->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5F));
object->motion[8] = Hu3DMotionIDGet(object->model[8]);
Hu3DModelAttrSet(object->model[8], 1);
fn_1_1DFC(object, 8, 8, 0, 1);
}
void fn_1_13FB4(omObjData *arg0, StructBss16C *arg1)
{
Mtx matrix;
Hu3DData[arg0->model[7]].pos.y = fn_1_B08(180, 185, arg1->unk08++, 360);
Hu3DModelObjMtxGet(arg0->model[7], "effect", matrix);
Hu3DModelPosSet(arg0->model[8], matrix[0][3], matrix[1][3], matrix[2][3]);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_140A0(omObjData *arg0, StructBss16C *arg1)
{
Mtx matrix;
Hu3DData[arg0->model[7]].pos.y += arg1->unk0C / 100.0f;
Hu3DModelObjMtxGet(arg0->model[7], "effect", matrix);
Hu3DModelPosSet(arg0->model[8], matrix[0][3], matrix[1][3], matrix[2][3]);
arg1->unk0C += 2;
}
void fn_1_1416C(omObjData *arg0, StructBss16C *arg1)
{
int i;
Vec pos;
float rotY;
Hu3DModelPosSet(arg0->model[5], -180, 100, 800);
Hu3DModelRotSet(arg0->model[5], 0, 0, 0);
Hu3DModelAttrReset(arg0->model[5], 1);
for (i = 0; i < 60; i++) {
fn_1_BC8();
if (i == 30) {
HuAudFXPlay(151);
}
if (i <= 30) {
pos.y = fn_1_A4C(0, 100, i + 30, 60);
pos.x = fn_1_864(-180, -45, i, 30);
rotY = fn_1_984(0, -90, i, 30);
}
else {
pos.x = fn_1_864(-45, 0, i - 30, 30);
pos.y = fn_1_A4C(0, 25, i - 30, 30);
rotY = fn_1_984(-90, -360, i - 30, 30);
}
Hu3DModelPosSet(arg0->model[5], pos.x, pos.y, 800);
Hu3DModelRotSet(arg0->model[5], 0, rotY, 0);
}
arg1->unk04 = NULL;
}
void fn_1_1449C(void)
{
omObjData *obj;
lbl_1_bss_810.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL);
lbl_1_bss_810.unk04 = NULL;
lbl_1_bss_810.unk00->data = &lbl_1_bss_810;
fn_1_13C6C(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_810.unk04 != NULL) {
lbl_1_bss_810.unk04(obj, &lbl_1_bss_810);
}
}
}
void fn_1_14868(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x64 : 0x68));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6E : 0x6F));
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6F : 0x70));
object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C));
Hu3DModelPosSet(object->model[1], -180, 0, 800);
Hu3DModelRotSet(object->model[1], 0, 60, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 3, 0, 1);
lbl_1_data_C20 = object->model[1];
lbl_1_data_C24[0] = object->motion[2];
lbl_1_data_C24[1] = object->motion[2];
HuPrcChildCreate(fn_1_123C8, 100, 8192, 0, HuPrcCurrentGet());
}
void fn_1_14A9C(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_7E8.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_7E8.unk00->work[0] = arg4;
lbl_1_bss_7E8.unk00->work[1] = arg1;
lbl_1_bss_7E8.unk00->work[2] = arg2 + 1;
}
void fn_1_14B48(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { -1000, 0, 810 };
lbl_1_bss_810.unk04 = (void *)fn_1_1416C;
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, -1, 45, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_14C40(void)
{
omObjData *obj;
lbl_1_bss_7E8.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL);
lbl_1_bss_7E8.unk04 = NULL;
lbl_1_bss_7E8.unk00->data = &lbl_1_bss_810;
fn_1_14868(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_7E8.unk04 != NULL) {
lbl_1_bss_7E8.unk04(obj, &lbl_1_bss_7E8);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_14F6C(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E));
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x86 : 0x81));
Hu3DModelPosSet(object->model[1], -600, 0, 800);
Hu3DModelRotSet(object->model[1], 0, 60, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13);
}
void fn_1_15134(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_7C0.unk00->work[0] = arg4;
lbl_1_bss_7C0.unk00->work[1] = arg1;
lbl_1_bss_7C0.unk00->work[2] = arg2 + 1;
}
void fn_1_151E0(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { -800, 0, 800 };
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, 60, 60, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_152C4(omObjData *arg0, StructBss16C *arg1)
{
Vec pos = { -120, 0, 800 };
fn_1_1DFC(arg0, 1, 2, 15, 1);
fn_1_2D00(arg0, 1, pos, 60, 60, 10);
fn_1_1DFC(arg0, 1, 1, 15, 1);
arg1->unk04 = NULL;
}
void fn_1_153A8(void)
{
omObjData *obj;
lbl_1_bss_7C0.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL);
lbl_1_bss_7C0.unk04 = NULL;
lbl_1_bss_7C0.unk00->data = &lbl_1_bss_7C0;
fn_1_14F6C(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_7C0.unk04 != NULL) {
lbl_1_bss_7C0.unk04(obj, &lbl_1_bss_7C0);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_15668(int arg0)
{
int i;
int order[4];
order[0] = 0;
for (i = 1; i < 4; i++) {
order[i] = order[i - 1] + 1;
if (order[i] >= 4) {
order[i] = 0;
}
if (arg0 == order[i]) {
lbl_1_bss_860.unk00 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_357C(&lbl_1_bss_860.unk30[i], order[i]);
}
}
void fn_1_1574C(omObjData *object)
{
int charNo = lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10;
object->model[1] = CharModelCreate(charNo, 1);
object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00));
object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x28) + charNo);
object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x30) + charNo);
object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x38) + charNo);
object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x00) + charNo);
CharModelMotionDataClose(charNo);
Hu3DModelPosSet(object->model[1], 120, 0, 800);
Hu3DModelRotSet(object->model[1], 0, -60, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 3, 0, 1);
}
void fn_1_15944(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_798.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_798.unk00->work[0] = arg4;
lbl_1_bss_798.unk00->work[1] = arg1;
lbl_1_bss_798.unk00->work[2] = arg2 + 1;
}
void fn_1_159F0(void)
{
omObjData *obj;
lbl_1_bss_798.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL);
lbl_1_bss_798.unk04 = NULL;
lbl_1_bss_798.unk00->data = &lbl_1_bss_798;
fn_1_1574C(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_798.unk04 != NULL) {
lbl_1_bss_798.unk04(obj, &lbl_1_bss_798);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_15CDC(void)
{
StructBss24 *work = &lbl_1_bss_24;
work->unk08.x = 0;
work->unk08.y = 125;
work->unk08.z = 0;
work->unk20.x = -5;
work->unk20.y = 0;
work->unk20.z = 0;
work->unk38 = 1750;
}
void fn_1_15D68(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
temp.unk08.x = 0;
temp.unk08.y = 100;
temp.unk08.z = 0;
temp.unk20.x = 0;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 1400;
fn_1_4FEC(work, &temp, work->unk40++, 120, 10);
}
void fn_1_15E58(void)
{
StructBss24 *work = &lbl_1_bss_24;
work->unk14 = 0;
work->unk18 = Hu3DData[lbl_1_bss_810.unk00->model[7]].pos.y;
work->unk1C = 0;
work->unk2C = 0;
work->unk30 = 0;
work->unk34 = 0;
work->unk3C = fn_1_864(1200, 1400, work->unk40++, 240);
fn_1_3B04(work, 30);
}
void fn_1_15F70(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
temp.unk08.x = 0;
temp.unk08.y = 160;
temp.unk08.z = 0;
temp.unk20.x = 0;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 1200;
fn_1_6004(work, &temp, work->unk40++, 10, 5);
}

View file

@ -0,0 +1,510 @@
#include "REL/mstory2Dll.h"
#include "game/armem.h"
#include "game/board/main.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ s32 unk0C;
/* 0x010 */ s32 unk10;
/* 0x014 */ s32 unk14;
/* 0x018 */ char unk18[0x18];
/* 0x030 */ StructFn357C unk30[4];
/* 0x100 */ s32 unk100;
} StructBssA34; // Size 0x104
StructBssA34 lbl_1_bss_A34;
StructBss16C lbl_1_bss_A0C;
StructBss16C lbl_1_bss_9E4;
StructBss16C lbl_1_bss_9BC;
StructBss16C lbl_1_bss_994;
StructBss16C lbl_1_bss_96C;
Process *lbl_1_bss_968;
void fn_1_16FC0(void);
void fn_1_17338(void);
void fn_1_1774C(int arg0, int arg1, int arg2, int arg3, int arg4);
void fn_1_177F8(void);
void fn_1_17C44(void);
void fn_1_17E64(s32 arg0);
void fn_1_180D8(int arg0, int arg1, int arg2, int arg3, int arg4);
void fn_1_18184(void);
void fn_1_18408(void);
void fn_1_18494(void);
void fn_1_16060(Process *arg0, s32 arg1)
{
lbl_1_bss_968 = arg0;
lbl_1_bss_A34.unk0C = arg1;
fn_1_C30();
fn_1_3668(255);
fn_1_2828(lbl_1_bss_968, fn_1_18408);
fn_1_3754();
fn_1_17E64(arg1);
HuPrcChildCreate(fn_1_17338, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_177F8, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_17C44, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_18184, 100, 8192, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_16FC0, 100, 8192, 0, HuPrcCurrentGet());
}
void fn_1_16178(omObjData *object)
{
if (object->work[2]) {
object->work[2]--;
return;
}
if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) {
fn_1_1DFC(object, 1, object->work[1], 15, 1);
object->work[0] = object->work[1] = object->work[2] = 0;
}
}
void fn_1_16204(void)
{
int posX = 16;
int posY = 40;
GXColor winColor = { 0, 0, 128, 128 };
int i;
while (1) {
fn_1_BC8();
printWin(posX, posY, 220, 130, &winColor);
if (lbl_1_bss_A0C.unk04 == NULL) {
print8(posX, posY, 1, "PROC_MAIN -> FALSE");
}
else {
print8(posX, posY, 1, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_9E4.unk04 == NULL) {
print8(posX, posY + 10, 1, "PROC_MAP -> FALSE");
}
else {
print8(posX, posY + 10, 1, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_9BC.unk04 == NULL) {
print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE");
}
else {
print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE");
}
if (lbl_1_bss_994.unk04 == NULL) {
print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE");
}
else {
print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE");
}
if (lbl_1_bss_96C.unk04 == NULL) {
print8(posX, posY + 40, 1, "PROC_PLAYER -> FALSE");
}
else {
print8(posX, posY + 40, 1, "PROC_PLAYER -> TRUE");
}
print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_A34.unk00, lbl_1_bss_A34.unk0C);
print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_A34.unk30[i].unk00, lbl_1_bss_A34.unk30[i].unk04,
lbl_1_bss_A34.unk30[i].unk08, lbl_1_bss_A34.unk30[i].unk0C, lbl_1_bss_A34.unk30[i].unk14, lbl_1_bss_A34.unk30[i].unk10);
}
}
}
void fn_1_165B0(void)
{
lbl_1_bss_78[0] = HuAudSeqPlay(52);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet());
fn_1_BE8(60);
}
void fn_1_1661C(void)
{
lbl_1_bss_A34.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_A34.unk0C);
fn_1_1774C(2, 1, 15, 0, 1);
fn_1_180D8(2, 3, 15, 0, 1);
HuAudCharVoicePlay(lbl_1_bss_A34.unk30[lbl_1_bss_A34.unk00].unk10, 302);
fn_1_6D78(lbl_1_bss_A34.unk04, 0x1F0010, -1, lbl_1_bss_9BC.unk00->model[1]);
fn_1_1D18(lbl_1_bss_A34.unk04, 0x250004);
fn_1_1774C(1, -1, 15, 1, 0);
fn_1_1A94(lbl_1_bss_A34.unk04);
}
int fn_1_1670C(void)
{
int result = 0;
HuWinInsertMesSet(lbl_1_bss_A34.unk04, 0x1E003C, 3);
fn_1_1D18(lbl_1_bss_A34.unk04, 0x1E002D);
fn_1_1AFC(lbl_1_bss_A34.unk04, 5);
lbl_1_bss_A34.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_A34.unk0C);
fn_1_1D18(lbl_1_bss_A34.unk08, 0x1E0035);
result = fn_1_1C64(lbl_1_bss_A34.unk08);
fn_1_1D18(lbl_1_bss_A34.unk08, 0x250004);
fn_1_71DC(lbl_1_bss_A34.unk08);
if (result) {
HuAudFXPlay(lbl_1_data_0[6][2]);
fn_1_1774C(3, 1, 15, 1, 0);
fn_1_1D18(lbl_1_bss_A34.unk04, 0x1F0012);
fn_1_1AFC(lbl_1_bss_A34.unk04, -1);
fn_1_1D18(lbl_1_bss_A34.unk04, 0x250004);
fn_1_1774C(1, -1, 15, 1, 0);
fn_1_180D8(4, 1, 15, 0, 1);
}
return result;
}
int fn_1_168B0(void)
{
int result = 0;
fn_1_1D18(lbl_1_bss_A34.unk04, 0x1E0005);
fn_1_1AFC(lbl_1_bss_A34.unk04, 5);
lbl_1_bss_A34.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_A34.unk0C);
fn_1_1D18(lbl_1_bss_A34.unk08, 0x1E0035);
result = fn_1_1BA8(lbl_1_bss_A34.unk08, 1);
fn_1_1D18(lbl_1_bss_A34.unk08, 0x250004);
fn_1_71DC(lbl_1_bss_A34.unk08);
return result;
}
void fn_1_16984(void)
{
HuAudSeqFadeOut(lbl_1_bss_78[0], 3000);
fn_1_3854(&lbl_1_bss_24);
fn_1_2750(fn_1_18494);
fn_1_BE8(150);
}
void fn_1_169D4(void) { }
void fn_1_169D8(int arg0)
{
omOvlHisData *his;
if (arg0 != 0) {
HuAudSeqFadeOut(lbl_1_bss_78[0], 1000);
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
do {
fn_1_BC8();
} while (WipeStatGet() != 0);
CharModelKill(-1);
his = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY2, 3, his->stat);
if (arg0 == 0) {
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
GWMGAvailSet(450);
GWSystem.mg_next = 450 - 401;
omOvlCallEx(OVL_M450, 1, 0, 0);
}
else {
HuAudFadeOut(1);
omOvlReturnEx(1, 1);
}
}
void fn_1_16ACC(omObjData *arg0, StructBss16C *arg1)
{
int mode = 0;
fn_1_165B0();
fn_1_1661C();
lbl_1_bss_A34.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_A34.unk0C);
while (1) {
fn_1_BC8();
if (fn_1_1670C()) {
mode = 0;
break;
}
else if (fn_1_168B0()) {
mode = 1;
break;
}
}
fn_1_1A94(lbl_1_bss_A34.unk04);
switch (mode) {
case 0:
fn_1_16984();
break;
case 1:
break;
}
fn_1_169D8(mode);
arg1->unk04 = NULL;
}
void fn_1_16FC0(void)
{
omObjData *obj;
lbl_1_bss_A0C.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL);
lbl_1_bss_A0C.unk04 = (void *)fn_1_16ACC;
lbl_1_bss_A0C.unk00->data = &lbl_1_bss_A0C;
while (1) {
fn_1_BC8();
if (lbl_1_bss_A0C.unk04 != NULL) {
lbl_1_bss_A0C.unk04(obj, &lbl_1_bss_A0C);
}
}
}
void fn_1_17074(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52));
object->motion[1] = Hu3DMotionIDGet(object->model[1]);
Hu3DModelShadowMapObjSet(object->model[1], "base_story-base");
fn_1_1DFC(object, 1, 1, 0, 1);
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53));
object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54));
object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55));
fn_1_1DFC(object, 2, 2, 0, 2);
object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x59));
object->motion[5] = Hu3DMotionIDGet(object->model[5]);
Hu3DModelPosSet(object->model[5], 0, 80, 460);
Hu3DModelShadowSet(object->model[5]);
fn_1_1DFC(object, 5, 5, 0, 2);
object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5A));
object->motion[6] = Hu3DMotionIDGet(object->model[6]);
Hu3DModelHookSet(object->model[5], "koopasgbox_fix-effect_fook2", object->model[6]);
fn_1_1DFC(object, 6, 6, 0, 2);
}
void fn_1_1727C(omObjData *arg0, StructBss16C *arg1)
{
Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_17338(void)
{
omObjData *obj;
lbl_1_bss_9E4.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL);
lbl_1_bss_9E4.unk04 = (void *)fn_1_1727C;
lbl_1_bss_9E4.unk00->data = &lbl_1_bss_9E4;
fn_1_17074(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_9E4.unk04 != NULL) {
lbl_1_bss_9E4.unk04(obj, &lbl_1_bss_9E4);
}
}
}
void fn_1_175CC(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67));
object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A));
object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C));
Hu3DModelPosSet(object->model[1], 0, 0, 200);
Hu3DModelRotSet(object->model[1], 0, 0, 0);
Hu3DModelScaleSet(object->model[1], 1.6f, 1.6f, 1.6f);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
}
void fn_1_1774C(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_9BC.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_9BC.unk00->work[0] = arg4;
lbl_1_bss_9BC.unk00->work[1] = arg1;
lbl_1_bss_9BC.unk00->work[2] = arg2 + 1;
}
void fn_1_177F8(void)
{
omObjData *obj;
lbl_1_bss_9BC.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL);
lbl_1_bss_9BC.unk04 = NULL;
lbl_1_bss_9BC.unk00->data = &lbl_1_bss_9E4;
fn_1_175CC(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_9BC.unk04 != NULL) {
lbl_1_bss_9BC.unk04(obj, &lbl_1_bss_9BC);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_17A70(omObjData *object)
{
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B));
object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C));
Hu3DModelPosSet(object->model[1], -120, 0, 800);
Hu3DModelRotSet(object->model[1], 0, 135, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
}
void fn_1_17B98(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_994.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_994.unk00->work[0] = arg4;
lbl_1_bss_994.unk00->work[1] = arg1;
lbl_1_bss_994.unk00->work[2] = arg2 + 1;
}
void fn_1_17C44(void)
{
omObjData *obj;
lbl_1_bss_994.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL);
lbl_1_bss_994.unk04 = NULL;
lbl_1_bss_994.unk00->data = &lbl_1_bss_994;
fn_1_17A70(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_994.unk04 != NULL) {
lbl_1_bss_994.unk04(obj, &lbl_1_bss_994);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_17E64(s32 arg0)
{
int i;
int order[4];
order[0] = 0;
for (i = 1; i < 4; i++) {
order[i] = order[i - 1] + 1;
if (order[i] >= 4) {
order[i] = 0;
}
if (arg0 == order[i]) {
lbl_1_bss_A34.unk00 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_357C(&lbl_1_bss_A34.unk30[i], order[i]);
}
}
void fn_1_17F48(omObjData *object)
{
int charNo = lbl_1_bss_A34.unk30[lbl_1_bss_A34.unk00].unk10;
object->model[1] = CharModelCreate(charNo, 1);
object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00));
object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18));
object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x34));
object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48));
CharModelVoiceEnableSet(charNo, object->motion[2], FALSE);
CharModelMotionDataClose(charNo);
Hu3DModelPosSet(object->model[1], 120, 0, 800);
Hu3DModelRotSet(object->model[1], 0, -135, 0);
Hu3DModelScaleSet(object->model[1], 1, 1, 1);
Hu3DModelShadowSet(object->model[1]);
fn_1_1DFC(object, 1, 1, 0, 1);
}
void fn_1_180D8(int arg0, int arg1, int arg2, int arg3, int arg4)
{
fn_1_1DFC(lbl_1_bss_96C.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_96C.unk00->work[0] = arg4;
lbl_1_bss_96C.unk00->work[1] = arg1;
lbl_1_bss_96C.unk00->work[2] = arg2 + 1;
}
void fn_1_18184(void)
{
omObjData *obj;
lbl_1_bss_96C.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL);
lbl_1_bss_96C.unk04 = NULL;
lbl_1_bss_96C.unk00->data = &lbl_1_bss_96C;
fn_1_17F48(obj);
while (1) {
fn_1_BC8();
if (lbl_1_bss_96C.unk04 != NULL) {
lbl_1_bss_96C.unk04(obj, &lbl_1_bss_96C);
}
if (obj->work[0]) {
if (obj->work[2]) {
obj->work[2]--;
}
else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) {
fn_1_1DFC(obj, 1, obj->work[1], 15, 1);
obj->work[0] = obj->work[1] = obj->work[2] = 0;
}
}
}
}
void fn_1_18408(void)
{
StructBss24 *work = &lbl_1_bss_24;
work->unk08.x = 0;
work->unk08.y = 125;
work->unk08.z = 0;
work->unk20.x = -5;
work->unk20.y = 0;
work->unk20.z = 0;
work->unk38 = 1750;
}
void fn_1_18494(void)
{
StructBss24 *work = &lbl_1_bss_24;
StructBss24 temp;
if (work->unk40 == 50) {
fn_1_1DFC(lbl_1_bss_9E4.unk00, 5, 5, 0, 0);
fn_1_1DFC(lbl_1_bss_9E4.unk00, 6, 6, 0, 0);
HuAudFXPlay(161);
}
temp.unk08.x = 0;
temp.unk08.y = 130;
temp.unk08.z = 460;
temp.unk20.x = 0;
temp.unk20.y = 0;
temp.unk20.z = 0;
temp.unk38 = 150;
fn_1_4FEC(work, &temp, work->unk40, 180, 10);
if (work->unk40++ >= 90) {
if (work->unk40 == 91) {
lbl_1_bss_88[0] = HuAudFXPlay(32);
}
work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90);
Hu3DData[lbl_1_bss_9E4.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90);
}
}

122
src/REL/mstory2Dll/save.c Normal file
View file

@ -0,0 +1,122 @@
#include "REL/mstoryDll.h"
#include "game/data.h"
#include "game/esprite.h"
#include "game/flag.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/saveload.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
s32 lbl_1_bss_D14;
Process *lbl_1_bss_D10;
s32 fn_1_1B560(s32 arg0)
{
if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) {
return 1;
}
if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) {
return 1;
}
if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) {
return 1;
}
if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) {
return 1;
}
if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) {
return 1;
}
if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) {
return 1;
}
return 0;
}
void fn_1_1B64C(void)
{
float sp8[2];
s32 temp_r30;
s32 var_r29;
s32 var_r31;
temp_r30 = 1;
Hu3DAllKill();
HuSprClose();
HuSprInit();
if (SLSaveFlagGet() == 0) {
lbl_1_bss_D14 = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
espInit();
HuPrcVSleep();
var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0);
espPosSet(var_r29, 288.0f, 240.0f);
espAttrReset(var_r29, 4);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
if (SLSaveFlagGet() == 1) {
HuWinInit(1);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22));
var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2);
winData[var_r31].active_pad = 1;
HuWinAttrSet(var_r31, 0x10);
HuWinExAnimIn(var_r31);
HuWinMesSet(var_r31, MAKE_MESSID(30, 22));
temp_r30 = HuWinChoiceGet(var_r31, 0);
HuWinExAnimOut(var_r31);
HuWinExCleanup(var_r31);
if (SLSaveFlagGet() == 1 && temp_r30 == 0) {
#if VERSION_REV1
GWGameStat.story_continue = 1;
#endif
if (omovlstat) {
GWGameStat.story_continue = 0;
}
SLCommonSet();
SLSaveBoardStory();
SLSave();
}
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
lbl_1_bss_D14 = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_1B870(void)
{
_SetFlag(9);
HuPrcChildCreate(fn_1_1B64C, 100, 0x2000, 0, HuPrcCurrentGet());
do {
fn_1_BC8();
} while (lbl_1_bss_D14 != 1);
if (omovlstat == 0) {
omOvlGotoEx(OVL_MSTORY2, 1, 4, 0);
}
else {
omOvlReturnEx(omovlhisidx, 1);
}
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_1B90C(Process *arg0)
{
lbl_1_bss_D10 = arg0;
HuPrcChildCreate(fn_1_1B870, 100, 0x2000, 0, HuPrcCurrentGet());
}

View file

@ -583,7 +583,7 @@ void fn_1_13A0(void)
}
}
character = GWPlayerCfg[0].character;
GWSystem.unk0B[1] = character;
GWSystem.unk0C = character;
GWPlayer[0].character = GWPlayerCfg[0].character;
GWPlayer[1].character = GWPlayerCfg[1].character;
GWPlayer[2].character = GWPlayerCfg[2].character;

622
src/REL/mstoryDll/board_clear.c Executable file
View file

@ -0,0 +1,622 @@
#include "REL/mstoryDll.h"
#include "game/chrman.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/printfunc.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ char unk0C[4];
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
/* 0x18 */ char unk18[0x1C];
/* 0x34 */ StructFn352C unk34[4];
} StructBss1C4; // Size 0x104
void fn_1_8A44(void);
void fn_1_8DC0(omObjData* arg0, StructBss19C* arg1);
void fn_1_8E6C(omObjData* arg0, StructBss19C* arg1);
void fn_1_8F68(void);
void fn_1_92D4(s32 arg0);
void fn_1_9718(omObjData* arg0, StructBss19C* arg1);
void fn_1_98A4(omObjData* arg0, StructBss19C* arg1);
void fn_1_992C(void);
void fn_1_A008(omObjData* arg0, StructBss19C* arg1);
void fn_1_A0EC(void);
void fn_1_A478(void);
void fn_1_A504(void);
void fn_1_A5F4(void);
StructBss1C4 lbl_1_bss_1C4;
StructBss19C lbl_1_bss_19C;
StructBss19C lbl_1_bss_174;
StructBss19C lbl_1_bss_D4[4];
StructBss19C lbl_1_bss_AC;
Process* lbl_1_bss_A8;
s32 lbl_1_data_190[][4] = {
{ MAKE_MESSID(30, 17), MAKE_MESSID(30, 23), MAKE_MESSID(30, 62), MAKE_MESSID(30, 63) },
{ MAKE_MESSID(30, 18), MAKE_MESSID(30, 24), MAKE_MESSID(30, 64), MAKE_MESSID(30, 65) },
{ MAKE_MESSID(30, 19), MAKE_MESSID(30, 25), MAKE_MESSID(30, 66), MAKE_MESSID(30, 67) },
{ MAKE_MESSID(30, 20), MAKE_MESSID(30, 26), MAKE_MESSID(30, 68), MAKE_MESSID(30, 69) },
{ MAKE_MESSID(30, 21), MAKE_MESSID(30, 27), MAKE_MESSID(30, 70), MAKE_MESSID(30, 71) }
};
s32 lbl_1_data_1E0[][3] = {
{ MAKE_MESSID(30, 101), MAKE_MESSID(30, 102), MAKE_MESSID(30, 103) },
{ MAKE_MESSID(30, 104), MAKE_MESSID(30, 105), MAKE_MESSID(30, 106) },
{ MAKE_MESSID(30, 107), MAKE_MESSID(30, 108), MAKE_MESSID(30, 109) },
{ MAKE_MESSID(30, 110), MAKE_MESSID(30, 111), MAKE_MESSID(30, 112) },
{ MAKE_MESSID(30, 113), MAKE_MESSID(30, 114), MAKE_MESSID(30, 115) }
};
void fn_1_7090(s32 arg0, StructBss19C* arg1) {
fn_1_BAC(10);
fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 5, 15, 0);
fn_1_BAC(5);
HuAudCharVoicePlay(lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10, 0x128);
fn_1_BAC(25);
arg1->unk04 = 0;
}
void fn_1_7134(s32 arg0, StructBss19C* arg1) {
float temp_f31;
float temp_f30;
float temp_f29;
s32 i;
temp_f29 = Hu3DData[lbl_1_bss_174.unk00->model[7]].pos.y;
for (i = 0; i <= 30; i++) {
fn_1_B8C();
temp_f31 = fn_1_870(temp_f29, 1000.0f, i, 30.0f);
temp_f30 = fn_1_870(0.0f, 1800.0f, i, 30.0f);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f31, 800.0f);
Hu3DModelRotSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f30, 0.0f);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[8], 0.0f, temp_f31 + 15.0f, 775.0f);
}
arg1->unk04 = 0;
}
void fn_1_731C(s32 arg0) {
float temp_f31;
float temp_f30;
s32 var_r30;
s32 i;
var_r30 = arg0;
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[6], HU3D_ATTR_DISPOFF);
for (i = 0; i < 4; i++) {
if (lbl_1_bss_1C4.unk34[i].unk00 != lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk00) {
Hu3DModelAttrSet(lbl_1_bss_D4[i].unk00->model[1], HU3D_ATTR_DISPOFF);
}
Hu3DModelAttrSet(lbl_1_bss_D4[i].unk00->model[2], HU3D_ATTR_DISPOFF);
}
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[var_r30][0]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_1C4.unk08);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, 1000.0f, 640.0f);
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[7], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[8], HU3D_ATTR_DISPOFF);
for (i = 0; i <= 180; i++) {
fn_1_B8C();
temp_f31 = fn_1_948(1000.0f, 150.0f, i, 180.0f);
temp_f30 = fn_1_948(1800.0f, 0.0f, i, 180.0f);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f31, 800.0f);
Hu3DModelRotSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f30, 0.0f);
Hu3DModelPosSet(lbl_1_bss_174.unk00->model[8], 0.0f, temp_f31 + 15.0f, 775.0f);
}
lbl_1_bss_174.unk04 = (void*) fn_1_8E6C;
fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 6, 15, 0);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_98A4;
fn_1_BAC(40);
HuAudSeqFadeOut(lbl_1_bss_58[0], 1000);
fn_1_BAC(50);
lbl_1_bss_58[1] = HuAudSeqPlay(0x35);
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[var_r30][1]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_1C4.unk08);
fn_1_BAC(30);
fn_1_1DCC(lbl_1_bss_174.unk00, 2, 3, 0, 0);
lbl_1_bss_174.unk04 = (void*) fn_1_8DC0;
fn_1_BAC(30);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_7090;
fn_1_BAC(90);
lbl_1_bss_AC.unk04 = (void*) fn_1_7134;
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 5, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[lbl_1_bss_1C4.unk00][2]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
fn_1_1A64(lbl_1_bss_1C4.unk08);
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1C4.unk00][3]);
}
void fn_1_79B8(Process* arg0, s32 arg1, s32 arg2) {
s32 i;
lbl_1_bss_A8 = arg0;
lbl_1_bss_1C4.unk00 = arg1;
lbl_1_bss_1C4.unk10 = arg2;
fn_1_BF4();
fn_1_3618(0xFF);
fn_1_27E8(lbl_1_bss_A8, fn_1_A478);
fn_1_3704();
fn_1_92D4(arg2);
HuPrcChildCreate(fn_1_8F68, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_A0EC, 100, 0x2000, 0, HuPrcCurrentGet());
for (i = 0; i < 4; i++) {
HuPrcChildCreate(fn_1_992C, 100, 0x2000, 0, HuPrcCurrentGet());
}
HuPrcChildCreate(fn_1_8A44, 100, 0x2000, 0, HuPrcCurrentGet());
}
void fn_1_7AE0(void) {
s32 var_r30 = 16;
s32 var_r29 = 40;
GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 };
s32 i;
while (TRUE) {
fn_1_B8C();
fontcolor = FONT_COLOR_WHITE;
printWin(var_r30, var_r29, 220, 150, &sp10);
if (lbl_1_bss_19C.unk04 == NULL) {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE");
} else {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_174.unk04 == NULL) {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE");
} else {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE");
}
for (i = 0; i < 4; i++) {
if (lbl_1_bss_D4[i].unk04 == NULL) {
print8(var_r30, i * 10 + (var_r29 + 20), 1.0f, "PROC_PLAYER%d -> FALSE", i);
} else {
print8(var_r30, i * 10 + (var_r29 + 20), 1.0f, "PROC_PLAYER%d -> TRUE", i);
}
}
if (lbl_1_bss_AC.unk04 == NULL) {
print8(var_r30, var_r29 + 60, 1.0f, "PROC_SUB -> FALSE");
} else {
print8(var_r30, var_r29 + 60, 1.0f, "PROC_SUB -> TRUE");
}
print8(var_r30, var_r29 + 80, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_1C4.unk00, lbl_1_bss_1C4.unk04, lbl_1_bss_1C4.unk10);
print8(var_r30, var_r29 + 100, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(var_r30, var_r29 + 110 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i,
lbl_1_bss_1C4.unk34[i].unk00, lbl_1_bss_1C4.unk34[i].unk04, lbl_1_bss_1C4.unk34[i].unk08,
lbl_1_bss_1C4.unk34[i].unk0C, lbl_1_bss_1C4.unk34[i].unk14, lbl_1_bss_1C4.unk34[i].unk10);
}
}
}
void fn_1_7E70(void) {
lbl_1_bss_58[0] = HuAudSeqPlay(0x33);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
}
void fn_1_7ECC(void) {
s32 spC = 0;
s32 sp8 = 0;
lbl_1_bss_1C4.unk08 = fn_1_1834(0, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1);
fn_1_1D1C(lbl_1_bss_1C4.unk08, lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10, 0);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][0]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_1C4.unk08);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_9718;
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_A504);
do {
fn_1_B8C();
} while (lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 != NULL);
do {
fn_1_B8C();
} while (lbl_1_bss_AC.unk04 != NULL);
}
void fn_1_8090(void) {
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][2]);
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_1C4.unk08);
fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 6, 15, 0);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_98A4;
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[6], HU3D_ATTR_DISPOFF);
fn_1_BAC(180);
HuAudSeqFadeOut(lbl_1_bss_58[0], 1000);
fn_1_1DCC(lbl_1_bss_174.unk00, 2, 3, 0, 0);
fn_1_BAC(75);
lbl_1_bss_58[1] = HuAudSeqPlay(0x35);
lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10);
fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 4, 15, 1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][3]);
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = NULL;
lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_7090;
fn_1_1ACC(lbl_1_bss_1C4.unk08, -1);
fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4));
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1C4.unk00][3]);
fn_1_1A64(lbl_1_bss_1C4.unk08);
do {
fn_1_B8C();
} while (lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 != NULL);
}
void fn_1_83B0(void) {
fn_1_BAC(60);
HuAudSeqFadeOut(lbl_1_bss_58[1], 3000);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_A5F4);
fn_1_BAC(150);
}
void fn_1_8408(void) {
omOvlHisData* var_r30;
u16 sp8[] = { 53, 56, 55, 54, 57 };
s32 sp14[] = { 9, 14, 10, 11, 12 };
s32 var_r29;
s32 var_r28;
s32 i;
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
CharModelKill(-1);
MGSeqKillAll();
var_r29 = lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10;
var_r28 = lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk14;
GWPlayerCfg[lbl_1_bss_1C4.unk04].character = GWPlayerCfg->character;
GWPlayerCfg[lbl_1_bss_1C4.unk04].pad_idx = GWPlayerCfg->pad_idx;
GWPlayerCfg[lbl_1_bss_1C4.unk04].group = GWPlayerCfg->group;
GWPlayerCfg[lbl_1_bss_1C4.unk04].iscom = GWPlayerCfg->iscom;
GWPlayerCfg->character = var_r29;
GWPlayerCfg->pad_idx = var_r28;
GWPlayerCfg->group = 0;
GWPlayerCfg->iscom = 0;
for (i = 0; i < 4; i++) {
GWPlayer[i].character = GWPlayerCfg[i].character;
GWPlayer[i].port = GWPlayerCfg[i].pad_idx;
GWPlayer[i].com = GWPlayerCfg[i].iscom;
GWPlayer[i].team = GWPlayerCfg[i].group;
}
GWPlayerCfg[1].character = sp14[GWSystem.board];
for (i = 1; i < 4; i++) {
GWPlayerCfg[i].iscom = GWPlayerCfg[i].group = 1;
}
var_r30 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY, 2, var_r30->stat);
OSReport("########## dllno - %d\n", sp8[GWSystem.board], GWSystem.board);
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
omOvlCallEx(sp8[GWSystem.board], 1, 0, 0);
while (TRUE) {
fn_1_B8C();
}
}
void fn_1_87DC(s32 arg0, StructBss19C* arg1) {
fn_1_7E70();
fn_1_7ECC();
fn_1_731C(lbl_1_bss_1C4.unk00);
fn_1_83B0();
fn_1_8408();
arg1->unk04 = NULL;
}
void fn_1_8A44(void) {
omObjData* var_r31;
var_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_19C.unk00 = var_r31;
lbl_1_bss_19C.unk04 = (void*) fn_1_87DC;
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_19C.unk04 != NULL) {
lbl_1_bss_19C.unk04(var_r31, &lbl_1_bss_19C);
}
}
}
void fn_1_8AE0(omObjData* arg0) {
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base");
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60));
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61));
fn_1_1DCC(arg0, 2, 2, 0, 2);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57));
arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 76 + lbl_1_bss_1C4.unk00));
arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]);
Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f);
Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(arg0->model[5]);
fn_1_1DCC(arg0, 5, 5, 0, 2);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 75));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelHookSet(arg0->model[5], "stargbox_fix-effect_fook1", arg0->model[6]);
Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 6, 6, 0, 2);
arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 81));
Hu3DModelAttrSet(arg0->model[7], HU3D_ATTR_DISPOFF);
arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 96));
arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]);
Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 8, 8, 0, 1);
}
void fn_1_8DC0(omObjData* arg0, StructBss19C* arg1) {
Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg0->work[0]++, 360.0f);
if (arg0->work[0] >= 360) {
arg0->work[0] = 0;
}
}
void fn_1_8E6C(omObjData* arg0, StructBss19C* arg1) {
Hu3DData[arg0->model[7]].pos.y += fn_1_ACC(0.0f, 0.25f, arg0->work[0]++, 360.0f);
Hu3DData[arg0->model[8]].pos.y = Hu3DData[arg0->model[7]].pos.y + 15.0f;
if (arg0->work[0] >= 360) {
arg0->work[0] = 0;
}
}
void fn_1_8F68(void) {
omObjData* temp_r31;
temp_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_174.unk00 = temp_r31;
lbl_1_bss_174.unk04 = (void*) fn_1_8DC0;
lbl_1_bss_174.unk00->data = &lbl_1_bss_174;
fn_1_8AE0(temp_r31);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_174.unk04 != NULL) {
lbl_1_bss_174.unk04(temp_r31, &lbl_1_bss_174);
}
}
}
void fn_1_92D4(s32 arg0) {
s32 spC[4];
s32 i;
spC[0] = 0;
for (i = 1; i < 4; i++) {
spC[i] = spC[i - 1] + 1;
if (spC[i] >= 4) {
spC[i] = 0;
}
if (arg0 == spC[i]) {
lbl_1_bss_1C4.unk04 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_352C(&lbl_1_bss_1C4.unk34[i], spC[i]);
}
for (i = 0; i < 4; i++) {
lbl_1_bss_1C4.unk34[i].unk18 = GWPlayer[spC[i]].rank + 1;
}
}
Vec lbl_1_data_354[] = {
{ -300.0f, 0.0f, 460.0f },
{ -100.0f, -30.0f, 460.0f },
{ 100.0f, -60.0f, 460.0f },
{ 300.0f, -90.0f, 460.0f }
};
void fn_1_9408(omObjData* arg0, s32 arg1) {
s32 var_r30;
s32 temp_r29;
var_r30 = arg1;
temp_r29 = lbl_1_bss_1C4.unk34[var_r30].unk10;
arg0->model[1] = CharModelCreate(temp_r29, 4);
arg0->motion[1] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[2] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3));
arg0->motion[3] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 5));
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 48 + temp_r29));
arg0->motion[5] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109));
arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 40 + temp_r29));
CharModelMotionDataClose(temp_r29);
Hu3DModelPosSet(arg0->model[1], lbl_1_data_354[var_r30].x, lbl_1_data_354[lbl_1_bss_1C4.unk34[var_r30].unk18 - 1].y + 90.0f, lbl_1_data_354[var_r30].z - 15.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 62));
Hu3DModelPosSet(arg0->model[2], lbl_1_data_354[var_r30].x, lbl_1_data_354[lbl_1_bss_1C4.unk34[var_r30].unk18 - 1].y, lbl_1_data_354[var_r30].z);
if (lbl_1_bss_1C4.unk34[var_r30].unk18 == 4) {
Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF);
}
Hu3DModelShadowMapSet(arg0->model[2]);
Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f);
}
void fn_1_9718(omObjData* arg0, StructBss19C* arg1) {
Vec sp20 = { 120.0f, 0.0f, 670.0f };
fn_1_2908(arg0, 1, sp20, -1.0f, 30.0f, 10.0f);
lbl_1_bss_AC.unk04 = (void*) fn_1_A008;
fn_1_1DCC(lbl_1_bss_174.unk00, 2, 2, 0, 0);
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp20, -45.0f, 30.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
fn_1_2224(lbl_1_bss_174.unk00, 2, 2, 0);
arg1->unk04 = 0;
}
void fn_1_98A4(omObjData* arg0, StructBss19C* arg1) {
if (arg0->motion[6] == Hu3DMotionIDGet(arg0->model[1]) && Hu3DMotionEndCheck(arg0->model[1])) {
fn_1_1DCC(arg0, 1, 4, 15, 1);
arg1->unk04 = 0;
}
}
void fn_1_992C(void) {
omObjData* temp_r3;
s32 temp_r30;
temp_r30 = lbl_1_bss_1C4.unk14++;
temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_D4[temp_r30].unk00 = temp_r3;
lbl_1_bss_D4[temp_r30].unk04 = NULL;
lbl_1_bss_D4[temp_r30].unk00->data = &lbl_1_bss_D4[temp_r30];
fn_1_9408(temp_r3, temp_r30);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_D4[temp_r30].unk04 != NULL) {
lbl_1_bss_D4[temp_r30].unk04(temp_r3, &lbl_1_bss_D4[temp_r30]);
}
}
}
void fn_1_9D08(omObjData* arg0, s32 arg1) {
s32 sp1C[] = {
DATA_MAKE_NUM(DATADIR_MSTORY, 97),
DATA_MAKE_NUM(DATADIR_MSTORY, 108),
DATA_MAKE_NUM(DATADIR_MSTORY, 116),
DATA_MAKE_NUM(DATADIR_MSTORY, 124),
DATA_MAKE_NUM(DATADIR_MSTORY, 131)
};
s32 sp30[][5] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY, 98), DATA_MAKE_NUM(DATADIR_MSTORY, 100), DATA_MAKE_NUM(DATADIR_MSTORY, 101), DATA_MAKE_NUM(DATADIR_MSTORY, 103), DATA_MAKE_NUM(DATADIR_MSTORY, 104) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 109), DATA_MAKE_NUM(DATADIR_MSTORY, 111), DATA_MAKE_NUM(DATADIR_MSTORY, 112), DATA_MAKE_NUM(DATADIR_MSTORY, 114), DATA_MAKE_NUM(DATADIR_MSTORY, 115) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 117), DATA_MAKE_NUM(DATADIR_MSTORY, 119), DATA_MAKE_NUM(DATADIR_MSTORY, 120), DATA_MAKE_NUM(DATADIR_MSTORY, 122), DATA_MAKE_NUM(DATADIR_MSTORY, 123) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 125), DATA_MAKE_NUM(DATADIR_MSTORY, 126), DATA_MAKE_NUM(DATADIR_MSTORY, 127), DATA_MAKE_NUM(DATADIR_MSTORY, 129), DATA_MAKE_NUM(DATADIR_MSTORY, 130) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 132), DATA_MAKE_NUM(DATADIR_MSTORY, 134), DATA_MAKE_NUM(DATADIR_MSTORY, 135), DATA_MAKE_NUM(DATADIR_MSTORY, 137), DATA_MAKE_NUM(DATADIR_MSTORY, 138) }
};
arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]);
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]);
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]);
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]);
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]);
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]);
Hu3DModelPosSet(arg0->model[1], -300.0f, 0.0f, 890.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
if (arg1 == 3) {
Hu3DData[arg0->model[1]].pos.y = 50.0f;
}
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 5, 0, 1);
{
s32 sp8[] = { 9, 14, 10, 11, 12 };
if (arg1 != 3) {
CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]);
}
}
}
void fn_1_A008(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { -120.0f, 0.0f, 670.0f };
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, 45.0f, 60.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_A0EC(void) {
omObjData* temp_r3;
s32 temp_r30;
temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_AC.unk00 = temp_r3;
lbl_1_bss_AC.unk04 = NULL;
lbl_1_bss_AC.unk00->data = &lbl_1_bss_AC;
temp_r30 = lbl_1_bss_1C4.unk00;
fn_1_9D08(temp_r3, temp_r30);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_AC.unk04 != NULL) {
lbl_1_bss_AC.unk04(temp_r3, &lbl_1_bss_AC);
}
}
}
void fn_1_A478(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk08.x = 0.0f;
var_r31->unk08.y = 170.0f;
var_r31->unk08.z = 0.0f;
var_r31->unk20.x = -5.0f;
var_r31->unk20.y = 0.0f;
var_r31->unk20.z = 0.0f;
var_r31->unk38 = 1700.0f;
}
void fn_1_A504(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 125.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = -5.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1750.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f);
}
void fn_1_A5F4(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
if (var_r31->unk40 == 50) {
fn_1_1DCC(lbl_1_bss_174.unk00, 5, 5, 0, 0);
fn_1_1DCC(lbl_1_bss_174.unk00, 6, 6, 0, 0);
HuAudFXPlay(0xA1);
}
sp8.unk08.x = 0.0f;
sp8.unk08.y = 130.0f;
sp8.unk08.z = 460.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 150.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f);
if (var_r31->unk40++ >= 90) {
if (var_r31->unk40 == 91) {
lbl_1_bss_68 = HuAudFXPlay(0x21);
}
var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f);
Hu3DData[lbl_1_bss_174.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f);
}
}

817
src/REL/mstoryDll/board_miss.c Executable file
View file

@ -0,0 +1,817 @@
#include "REL/mstoryDll.h"
#include "game/armem.h"
#include "game/audio.h"
#include "game/board/main.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/printfunc.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ s32 unk0C;
/* 0x010 */ s32 unk10;
/* 0x014 */ s32 unk14;
/* 0x018 */ char unk18[0x1C];
/* 0x034 */ StructFn352C unk34[4];
/* 0x104 */ float unk104;
} StructBss450; // Size 0x108
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ char unk0C[4];
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
} StructBss2D0; // Size 0x18
void fn_1_C360(void);
void fn_1_C7C4(void);
void fn_1_CE48(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4);
void fn_1_CEF4(omObjData* arg0, StructBss19C* arg1);
void fn_1_D180(void);
void fn_1_D57C(s32 arg0);
void fn_1_DAA4(omObjData* arg0, StructBss19C* arg1);
void fn_1_DC08(omObjData* arg0, StructBss19C* arg1);
void fn_1_DD20(omObjData* arg0, StructBss19C* arg1);
void fn_1_DE04(void);
void fn_1_E228(void);
void fn_1_E2B4(void);
void fn_1_E3E4(void);
void fn_1_E620(void);
StructBss450 lbl_1_bss_450;
StructBss19C lbl_1_bss_428;
StructBss19C lbl_1_bss_400;
StructBss19C lbl_1_bss_3D8;
StructBss19C lbl_1_bss_338[4];
AnimData* lbl_1_bss_330[2];
StructBss2D0 lbl_1_bss_2D0[4];
s32 lbl_1_bss_2CC;
Process* lbl_1_bss_2C8;
s32 lbl_1_data_388[][4] = {
{ MAKE_MESSID(30, 28), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 29), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 30), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 31), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 32), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }
};
s32 lbl_1_data_3D8[] = {
DATADIR_W01,
DATADIR_W02,
DATADIR_W03,
DATADIR_W04,
DATADIR_W05,
DATADIR_W06,
DATADIR_W10,
DATADIR_MARIOMDL1,
DATADIR_LUIGIMDL1,
DATADIR_PEACHMDL1,
DATADIR_YOSHIMDL1,
DATADIR_WARIOMDL1,
DATADIR_DONKEYMDL1,
DATADIR_DAISYMDL1,
DATADIR_WALUIGIMDL1
};
void fn_1_A830(void) {
s32 temp_r3;
temp_r3 = HuDataDirReadAsync(DATADIR_BOARD);
if (temp_r3 != -1) {
while (HuDataGetAsyncStat(temp_r3) == 0) {
HuPrcVSleep();
}
}
HuAR_MRAMtoARAM(DATADIR_BOARD);
while (HuARDMACheck()) {
HuPrcVSleep();
}
HuDataDirClose(DATADIR_BOARD);
temp_r3 = HuDataDirReadAsync(lbl_1_data_3D8[GWSystem.board]);
if (temp_r3 != -1) {
while (HuDataGetAsyncStat(temp_r3) == 0) {
HuPrcVSleep();
}
}
lbl_1_bss_2CC = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_A8F8(void) {
s32 i;
s32 j;
lbl_1_bss_2D0[0].unk00 = 0;
lbl_1_bss_2D0[0].unk04 = 0;
lbl_1_bss_2D0[0].unk10 = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk10;
lbl_1_bss_2D0[0].unk14 = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk14;
lbl_1_bss_2D0[0].unk08 = 0;
for (i = 1; i < 4; i++) {
lbl_1_bss_2D0[i].unk10 = -1;
lbl_1_bss_2D0[i].unk14 = i;
lbl_1_bss_2D0[i].unk08 = 1;
}
for (i = 1; i < 4; i++) {
do {
lbl_1_bss_2D0[i].unk10 = rand8() % 8;
for (j = 0; j < 4; j++) {
if (i != j && lbl_1_bss_2D0[j].unk10 != -1 && lbl_1_bss_2D0[i].unk10 == lbl_1_bss_2D0[j].unk10) {
break;
}
}
} while (j != 4);
}
for (i = 0; i < 4; i++) {
GWPlayerCfg[i].character = lbl_1_bss_2D0[i].unk10;
GWPlayerCfg[i].pad_idx = lbl_1_bss_2D0[i].unk14;
GWPlayerCfg[i].group = 0;
GWPlayerCfg[i].iscom = lbl_1_bss_2D0[i].unk08;
}
BoardSaveInit(GWSystem.board);
CharKill(-1);
HuDataDirClose(DATADIR_MSTORY);
HuPrcChildCreate(fn_1_A830, 100, 0x3000, 0, lbl_1_bss_2C8);
}
void fn_1_ABAC(void) {
omOvlHisData* var_r30;
s32 sp8[] = { OVL_W01, OVL_W02, OVL_W03, OVL_W04, OVL_W05, OVL_W06, OVL_W10 };
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (WipeStatGet() != 0) {
fn_1_B8C();
}
CharModelKill(-1);
MGSeqKillAll();
var_r30 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY3, 0, var_r30->stat);
do {
fn_1_B8C();
} while (lbl_1_bss_2CC != 1);
CharARAMOpen(GWPlayerCfg[0].character);
CharARAMOpen(GWPlayerCfg[1].character);
CharARAMOpen(GWPlayerCfg[2].character);
CharARAMOpen(GWPlayerCfg[3].character);
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
omOvlCallEx(sp8[GWSystem.board], 1, 0, 0);
while (TRUE) {
fn_1_B8C();
}
}
void fn_1_ACFC(Process* arg0, s32 arg1, s32 arg2) {
s32 i;
lbl_1_bss_2C8 = arg0;
lbl_1_bss_450.unk04 = arg2;
lbl_1_bss_450.unk10 = arg2;
lbl_1_bss_450.unk00 = arg1;
fn_1_BF4();
fn_1_3618(0xFF);
fn_1_27E8(lbl_1_bss_2C8, fn_1_E228);
fn_1_3704();
fn_1_D57C(arg2);
HuPrcChildCreate(fn_1_C7C4, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_D180, 100, 0x2000, 0, HuPrcCurrentGet());
for (i = 0; i < 4; i++) {
HuPrcChildCreate(fn_1_DE04, 100, 0x2000, 0, HuPrcCurrentGet());
}
HuPrcChildCreate(fn_1_C360, 100, 0x2000, 0, HuPrcCurrentGet());
}
void fn_1_AE30(omObjData* arg0) {
if (arg0->work[2] != 0) {
arg0->work[2]--;
return;
}
if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) {
fn_1_1DCC(arg0, 1, arg0->work[1], 15, 1);
arg0->work[0] = arg0->work[1] = arg0->work[2] = 0;
}
}
void fn_1_AEBC(void) {
s32 var_r30 = 16;
s32 var_r29 = 40;
GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 };
s32 i;
while (TRUE) {
fn_1_B8C();
printWin(var_r30, var_r29, 220, 160, &sp10);
if (lbl_1_bss_428.unk04 == NULL) {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE");
} else {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_400.unk04 == NULL) {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE");
} else {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_3D8.unk04 == NULL) {
print8(var_r30, var_r29 + 30, 1.0f, "PROC_MKOOPA -> FALSE");
} else {
print8(var_r30, var_r29 + 30, 1.0f, "PROC_MKOOPA -> TRUE");
}
for (i = 0; i < 4; i++) {
if (lbl_1_bss_338[i].unk04 == NULL) {
print8(var_r30, i * 10 + (var_r29 + 40), 1.0f, "PROC_PLAYER%d -> FALSE", i);
} else {
print8(var_r30, i * 10 + (var_r29 + 40), 1.0f, "PROC_PLAYER%d -> TRUE", i);
}
}
print8(var_r30, var_r29 + 90, 1.0f, "P:%d W:%d", lbl_1_bss_450.unk04, lbl_1_bss_450.unk10);
print8(var_r30, var_r29 + 110, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(var_r30, var_r29 + 120 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i,
lbl_1_bss_450.unk34[i].unk00, lbl_1_bss_450.unk34[i].unk04, lbl_1_bss_450.unk34[i].unk08,
lbl_1_bss_450.unk34[i].unk0C, lbl_1_bss_450.unk34[i].unk14, lbl_1_bss_450.unk34[i].unk10);
}
}
}
void fn_1_B230(void) {
lbl_1_bss_58[0] = HuAudSeqPlay(0x34);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
}
void fn_1_B28C(void) {
s32 i;
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_450.unk00][1]);
lbl_1_bss_450.unk08 = fn_1_1834(0, 0, 21, 2, lbl_1_bss_450.unk10);
fn_1_CE48(3, -1, 15, 1, 0);
fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][0]);
fn_1_1ACC(lbl_1_bss_450.unk08, -1);
fn_1_1CE8(lbl_1_bss_450.unk08, MAKE_MESSID(37, 4));
fn_1_CE48(1, -1, 15, 1, 0);
fn_1_1A64(lbl_1_bss_450.unk08);
for (i = 0; i < 4; i++) {
lbl_1_bss_338[i].unk04 = (void*) fn_1_DAA4;
}
do {
fn_1_B8C();
for (i = 0; i < 4; i++) {
if (lbl_1_bss_338[i].unk04 != NULL) {
break;
}
}
} while (i != 4);
lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 = (void*) fn_1_DC08;
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_E2B4);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 == NULL) {
break;
}
}
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_3D8.unk04 == NULL) {
break;
}
}
fn_1_BAC(30);
}
BOOL fn_1_B4A0(void) {
BOOL temp_r31 = FALSE;
fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][1]);
fn_1_1ACC(lbl_1_bss_450.unk08, 5);
lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1C34(lbl_1_bss_450.unk0C);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_450.unk0C);
return temp_r31;
}
BOOL fn_1_B588(void) {
BOOL temp_r31 = FALSE;
fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][2]);
fn_1_1ACC(lbl_1_bss_450.unk08, 5);
lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1C34(lbl_1_bss_450.unk0C);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_450.unk0C);
return temp_r31;
}
BOOL fn_1_B670(void) {
BOOL temp_r31 = FALSE;
fn_1_CE48(3, -1, 15, 1, 0);
fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][3]);
fn_1_1ACC(lbl_1_bss_450.unk08, 5);
fn_1_CE48(1, -1, 15, 1, 0);
lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1B78(lbl_1_bss_450.unk0C, 1);
fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_450.unk0C);
return temp_r31;
}
void fn_1_B78C(void) {
fn_1_BAC(60);
fn_1_A8F8();
Hu3DModelAttrReset(lbl_1_bss_400.unk00->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_400.unk00->model[6], HU3D_ATTR_DISPOFF);
fn_1_1DCC(lbl_1_bss_400.unk00, 2, 3, 0, 0);
fn_1_BAC(30);
fn_1_1DCC(lbl_1_bss_3D8.unk00, 1, 4, 15, 0);
fn_1_BAC(30);
fn_1_1DCC(lbl_1_bss_338[lbl_1_bss_450.unk04].unk00, 1, 3, 15, 0);
fn_1_2224(lbl_1_bss_400.unk00, 2, 3, 0);
fn_1_BAC(60);
HuAudSeqFadeOut(lbl_1_bss_58[0], 3000);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_E3E4);
fn_1_BAC(150);
}
void fn_1_B8C8(void) {
}
void fn_1_B8CC(void) {
fn_1_1DCC(lbl_1_bss_400.unk00, 2, 3, 0, 0);
fn_1_2224(lbl_1_bss_400.unk00, 2, 3, 0);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_E620);
lbl_1_bss_3D8.unk04 = (void*) fn_1_CEF4;
lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 = (void*) fn_1_DD20;
do {
fn_1_B8C();
} while (lbl_1_bss_3D8.unk04 != NULL);
fn_1_1DCC(lbl_1_bss_400.unk00, 2, 2, 0, 0);
fn_1_2224(lbl_1_bss_400.unk00, 2, 2, 0);
}
void fn_1_B9D0(s32 arg0) {
s32 i;
fn_1_BAC(60);
HuAudSeqFadeOut(lbl_1_bss_58[0], 1000);
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (TRUE) {
fn_1_B8C();
if (WipeStatGet() == 0) {
break;
}
}
CharModelKill(-1);
HuAudFadeOut(1);
if (arg0 == 1) {
omOvlReturnEx(1, 1);
} else {
GWPlayerCfg->group = 0;
GWPlayerCfg->character = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk10;
GWPlayerCfg->pad_idx = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk14;
GWPlayerCfg->iscom = 0;
for (i = 0; i < 4; i++) {
GWPlayer[i].character = GWPlayerCfg[i].character;
GWPlayer[i].port = GWPlayerCfg[i].pad_idx;
GWPlayer[i].com = GWPlayerCfg[i].iscom;
GWPlayer[i].team = GWPlayerCfg[i].group;
}
omOvlGotoEx(OVL_MENT, 1, 10, 0);
}
while (TRUE) {
fn_1_B8C();
}
}
void fn_1_BBD8(s32 arg0, StructBss19C* arg1) {
s32 i;
s32 var_r30 = 0;
fn_1_B230();
fn_1_B28C();
lbl_1_bss_450.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_450.unk10);
while (TRUE) {
fn_1_B8C();
if (fn_1_B4A0()) {
var_r30 = 0;
break;
}
if (fn_1_B588()) {
var_r30 = 2;
break;
}
if (fn_1_B670()) {
var_r30 = 1;
break;
}
}
fn_1_1A64(lbl_1_bss_450.unk08);
for (i = 0; i < 4; i++) {
if (lbl_1_bss_450.unk34[i].unk00 != lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk00) {
Hu3DModelAttrSet(lbl_1_bss_338[i].unk00->model[1], HU3D_ATTR_DISPOFF);
}
Hu3DModelAttrSet(lbl_1_bss_338[i].unk00->model[2], HU3D_ATTR_DISPOFF);
}
switch (var_r30) {
case 1:
fn_1_B8C8();
break;
case 0:
fn_1_B78C();
break;
case 2:
fn_1_B8CC();
break;
}
switch (var_r30) {
case 0:
fn_1_ABAC();
break;
case 1:
case 2:
fn_1_B9D0(var_r30);
/* fallthrough */
default:
arg1->unk04 = 0;
break;
}
}
void fn_1_C360(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_428.unk00 = temp_r3;
lbl_1_bss_428.unk04 = (void*) fn_1_BBD8;
lbl_1_bss_428.unk00->data = &lbl_1_bss_428;
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_428.unk04 != NULL) {
lbl_1_bss_428.unk04(temp_r3, &lbl_1_bss_428);
}
}
}
void fn_1_C414(omObjData* arg0, s32 arg1) {
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base");
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60));
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61));
fn_1_1DCC(arg0, 2, 2, 0, 2);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57));
arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 63));
arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]);
Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f);
Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(arg0->model[5]);
fn_1_1DCC(arg0, 5, 5, 0, 2);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 64));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelHookSet(arg0->model[5], "partybox_fix2-effect_fook1", arg0->model[6]);
Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 6, 6, 0, 2);
lbl_1_bss_330[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 65 + arg1 * 2), MEMORY_DEFAULT_NUM));
lbl_1_bss_330[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 66 + arg1 * 2), MEMORY_DEFAULT_NUM));
Hu3DAnimCreate(lbl_1_bss_330[0], lbl_1_bss_400.unk00->model[5], "ys26_p0");
Hu3DAnimCreate(lbl_1_bss_330[1], lbl_1_bss_400.unk00->model[5], "ys26_p1");
}
void fn_1_C708(omObjData* arg0, StructBss19C* arg1) {
Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg1->unk08++, 360.0f);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_C7C4(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_400.unk00 = temp_r3;
lbl_1_bss_400.unk04 = (void*) fn_1_C708;
lbl_1_bss_400.unk00->data = &lbl_1_bss_400;
fn_1_C414(temp_r3, lbl_1_bss_450.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_400.unk04 != NULL) {
lbl_1_bss_400.unk04(temp_r3, &lbl_1_bss_400);
}
}
}
void fn_1_CB48(omObjData* arg0, s32 arg1) {
s32 sp1C[] = {
DATA_MAKE_NUM(DATADIR_MSTORY, 0x61),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x6C),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x74),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x7C),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x83)
};
s32 sp30[][5] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x62), DATA_MAKE_NUM(DATADIR_MSTORY, 0x64), DATA_MAKE_NUM(DATADIR_MSTORY, 0x65), DATA_MAKE_NUM(DATADIR_MSTORY, 0x67), DATA_MAKE_NUM(DATADIR_MSTORY, 0x68) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x6D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x6F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x70), DATA_MAKE_NUM(DATADIR_MSTORY, 0x72), DATA_MAKE_NUM(DATADIR_MSTORY, 0x73) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x75), DATA_MAKE_NUM(DATADIR_MSTORY, 0x77), DATA_MAKE_NUM(DATADIR_MSTORY, 0x78), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7A), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7B) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x7D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7E), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x81), DATA_MAKE_NUM(DATADIR_MSTORY, 0x82) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x84), DATA_MAKE_NUM(DATADIR_MSTORY, 0x86), DATA_MAKE_NUM(DATADIR_MSTORY, 0x87), DATA_MAKE_NUM(DATADIR_MSTORY, 0x89), DATA_MAKE_NUM(DATADIR_MSTORY, 0x8A) }
};
arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]);
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]);
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]);
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]);
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]);
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]);
Hu3DModelPosSet(arg0->model[1], -300.0f, 0.0f, 890.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
if (arg1 == 3) {
Hu3DData[arg0->model[1]].pos.y = 50.0f;
}
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
{
s32 sp8[] = { 9, 14, 10, 11, 12 };
if (arg1 != 3) {
CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]);
}
}
}
void fn_1_CE48(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
fn_1_1DCC(lbl_1_bss_3D8.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_3D8.unk00->work[0] = arg4;
lbl_1_bss_3D8.unk00->work[1] = arg1;
lbl_1_bss_3D8.unk00->work[2] = arg2 + 1;
}
void fn_1_CEF4(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { 0.0f, 0.0f, 460.0f };
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, 0.0f, 60.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_CFD8(omObjData* arg0, StructBss19C* arg1) {
s32 i;
for (i = 0; i < 15; i++) {
fn_1_B8C();
Hu3DData[arg0->model[1]].rot.y = fn_1_828(0.0f, 135.0f, i, 15.0f);
}
arg1->unk04 = 0;
}
void fn_1_D09C(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { -120.0f, 0.0f, 670.0f };
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, 45.0f, 60.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_D180(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_3D8.unk00 = temp_r3;
lbl_1_bss_3D8.unk04 = NULL;
lbl_1_bss_3D8.unk00->data = &lbl_1_bss_3D8;
fn_1_CB48(temp_r3, lbl_1_bss_450.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_3D8.unk04 != NULL) {
lbl_1_bss_3D8.unk04(temp_r3, &lbl_1_bss_3D8);
}
if (temp_r3->work[0] != 0) {
fn_1_AE30(temp_r3);
}
}
}
void fn_1_D57C(s32 arg0) {
s32 spC[4];
s32 i;
spC[0] = 0;
for (i = 1; i < 4; i++) {
spC[i] = spC[i - 1] + 1;
if (spC[i] >= 4) {
spC[i] = 0;
}
if (arg0 == spC[i]) {
lbl_1_bss_450.unk04 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_352C(&lbl_1_bss_450.unk34[i], spC[i]);
}
for (i = 0; i < 4; i++) {
lbl_1_bss_450.unk34[i].unk18 = GWPlayer[spC[i]].rank + 1;
}
}
Vec lbl_1_data_540[] = {
{ -300.0f, 0.0f, 460.0f },
{ -100.0f, -30.0f, 460.0f },
{ 100.0f, -60.0f, 460.0f },
{ 300.0f, -90.0f, 460.0f }
};
void fn_1_D6B0(omObjData* arg0, s32 arg1) {
s32 var_r30;
s32 temp_r28;
var_r30 = arg1;
temp_r28 = lbl_1_bss_450.unk34[var_r30].unk10;
arg0->model[1] = CharModelCreate(lbl_1_bss_450.unk34[arg1].unk10, 4);
arg0->motion[1] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[2] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3));
arg0->motion[3] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109));
CharModelMotionDataClose(temp_r28);
Hu3DModelPosSet(arg0->model[1], lbl_1_data_540[var_r30].x, 90.0f + lbl_1_data_540[lbl_1_bss_450.unk34[var_r30].unk18 - 1].y, lbl_1_data_540[var_r30].z - 15.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 62));
Hu3DModelPosSet(arg0->model[2], lbl_1_data_540[var_r30].x, lbl_1_data_540[lbl_1_bss_450.unk34[var_r30].unk18 - 1].y, lbl_1_data_540[var_r30].z);
if (lbl_1_bss_450.unk34[var_r30].unk18 == 4) {
Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF);
}
Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f);
Hu3DModelShadowMapSet(arg0->model[2]);
}
void fn_1_D9A8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
fn_1_1DCC(lbl_1_bss_338[lbl_1_bss_450.unk04].unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[0] = arg4;
lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[1] = arg1;
lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[2] = arg2 + 1;
}
void fn_1_DAA4(omObjData* arg0, StructBss19C* arg1) {
float temp_f31;
s32 i;
temp_f31 = Hu3DData[arg0->model[1]].pos.y;
for (i = 0; i < 60; i++) {
fn_1_B8C();
Hu3DData[arg0->model[1]].pos.y = fn_1_948(temp_f31, 0.0f, i, 60.0f);
Hu3DData[arg0->model[2]].pos.y = fn_1_948(temp_f31 - 90.0f, -90.0f, i, 60.0f);
}
Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF);
arg1->unk04 = 0;
}
void fn_1_DC08(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { 120.0f, 0.0f, 670.0f };
lbl_1_bss_3D8.unk04 = (void*) fn_1_D09C;
fn_1_1DCC(lbl_1_bss_400.unk00, 2, 2, 0, 0);
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, -45.0f, 30.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_DD20(omObjData* arg0, StructBss19C* arg1) {
Vec sp14 = { 600.0f, 0.0f, 700.0f };
fn_1_1DCC(arg0, 1, 2, 15, 1);
fn_1_2CB0(arg0, 1, sp14, -45.0f, 30.0f, 10.0f);
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_DE04(void) {
omObjData* temp_r3;
s32 temp_r30;
temp_r30 = lbl_1_bss_450.unk14++;
temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL);
lbl_1_bss_338[temp_r30].unk00 = temp_r3;
lbl_1_bss_338[temp_r30].unk04 = NULL;
lbl_1_bss_338[temp_r30].unk00->data = lbl_1_bss_338;
fn_1_D6B0(temp_r3, temp_r30);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_338[temp_r30].unk04 != NULL) {
lbl_1_bss_338[temp_r30].unk04(temp_r3, &lbl_1_bss_338[temp_r30]);
}
if (temp_r3->work[0] != 0) {
fn_1_AE30(temp_r3);
}
}
}
void fn_1_E228(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk08.x = 0.0f;
var_r31->unk08.y = 170.0f;
var_r31->unk08.z = 0.0f;
var_r31->unk20.x = -5.0f;
var_r31->unk20.y = 0.0f;
var_r31->unk20.z = 0.0f;
var_r31->unk38 = 1700.0f;
}
void fn_1_E2B4(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 125.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = -5.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1750.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f);
if (lbl_1_bss_450.unk104 != 0.0f) {
var_r31->unk08.y = 125.0f + lbl_1_bss_450.unk104;
}
}
void fn_1_E3E4(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
if (var_r31->unk40 == 50) {
fn_1_1DCC(lbl_1_bss_400.unk00, 5, 5, 0, 0);
fn_1_1DCC(lbl_1_bss_400.unk00, 6, 6, 0, 0);
HuAudFXPlay(0xA1);
}
sp8.unk08.x = 0.0f;
sp8.unk08.y = 100.0f;
sp8.unk08.z = 460.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 125.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f);
if (var_r31->unk40++ >= 90) {
if (var_r31->unk40 == 91) {
lbl_1_bss_68 = HuAudFXPlay(0x21);
}
var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f);
Hu3DData[lbl_1_bss_400.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f);
}
}
void fn_1_E620(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 220.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1600.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f);
}

1012
src/REL/mstoryDll/main.c Executable file

File diff suppressed because it is too large Load diff

691
src/REL/mstoryDll/mg_clear.c Executable file
View file

@ -0,0 +1,691 @@
#include "REL/mstoryDll.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/flag.h"
#include "game/gamework.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/objsub.h"
#include "game/printfunc.h"
#include "game/saveload.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x000 */ s32 unk00;
/* 0x004 */ s32 unk04;
/* 0x008 */ s32 unk08;
/* 0x00C */ char unk0C[4];
/* 0x010 */ s32 unk10;
/* 0x014 */ char unk14[0x20];
/* 0x034 */ StructFn352C unk34[4];
/* 0x104 */ s32 unk104;
} StructBss608; // Size 0x108
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ s32 unk10;
} StructData570; // Size 0x14
void fn_1_FD1C(void);
void fn_1_10298(omObjData* arg0, StructBss19C* arg1);
void fn_1_10384(omObjData* arg0, StructBss19C* arg1);
void fn_1_10450(omObjData* arg0, StructBss19C* arg1);
void fn_1_1054C(void);
void fn_1_108F8(void);
void fn_1_10C6C(s32 arg0);
void fn_1_10FD0(void);
void fn_1_112A0(void);
void fn_1_1132C(void);
void fn_1_1141C(void);
void fn_1_11534(void);
StructBss608 lbl_1_bss_608;
StructBss19C lbl_1_bss_5E0;
StructBss19C lbl_1_bss_5B8;
StructBss19C lbl_1_bss_590;
StructBss19C lbl_1_bss_568;
AnimData* lbl_1_bss_560[2];
s32 lbl_1_bss_55C;
Process* lbl_1_bss_558;
StructData570 lbl_1_data_570[] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 },
{ DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 }
};
s32 lbl_1_data_930[][4] = {
{ MAKE_MESSID(30, 72), MAKE_MESSID(30, 73) },
{ MAKE_MESSID(30, 74), MAKE_MESSID(30, 75) },
{ MAKE_MESSID(30, 76), MAKE_MESSID(30, 77) },
{ MAKE_MESSID(30, 78), MAKE_MESSID(30, 79) },
{ MAKE_MESSID(30, 80), MAKE_MESSID(30, 81) }
};
void fn_1_E710(Process* arg0, s32 arg1, s32 arg2) {
lbl_1_bss_558 = arg0;
lbl_1_bss_608.unk00 = arg1;
lbl_1_bss_608.unk10 = arg2;
fn_1_BF4();
lbl_1_bss_608.unk104 = fn_1_3618(0xFF);
fn_1_27E8(lbl_1_bss_558, fn_1_112A0);
fn_1_3704();
fn_1_10C6C(arg2);
HuPrcChildCreate(fn_1_1054C, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_108F8, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_10FD0, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_FD1C, 100, 0x2000, 0, HuPrcCurrentGet());
}
void fn_1_E828(omObjData* arg0) {
if (arg0->work[2] != 0) {
arg0->work[2]--;
return;
}
if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) {
fn_1_1DCC(arg0, 1, arg0->work[1], 15, 1);
arg0->work[0] = arg0->work[1] = arg0->work[2] = 0;
}
}
void fn_1_E8B4(void) {
s32 var_r30 = 16;
s32 var_r29 = 40;
GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 };
s32 i;
while (TRUE) {
fn_1_B8C();
printWin(var_r30, var_r29, 220, 130, &sp10);
if (lbl_1_bss_5E0.unk04 == NULL) {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE");
} else {
print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_5B8.unk04 == NULL) {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE");
} else {
print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_590.unk04 == NULL) {
print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> FALSE");
} else {
print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> TRUE");
}
if (lbl_1_bss_568.unk04 == NULL) {
print8(var_r30, var_r29 + 30, 1.0f, "PROC_PLAYER -> FALSE");
} else {
print8(var_r30, var_r29 + 30, 1.0f, "PROC_PLAYER -> TRUE");
}
print8(var_r30, var_r29 + 60, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_608.unk00, lbl_1_bss_608.unk04, lbl_1_bss_608.unk10);
print8(var_r30, var_r29 + 80, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(var_r30, var_r29 + 90 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i,
lbl_1_bss_608.unk34[i].unk00, lbl_1_bss_608.unk34[i].unk04, lbl_1_bss_608.unk34[i].unk08,
lbl_1_bss_608.unk34[i].unk0C, lbl_1_bss_608.unk34[i].unk14, lbl_1_bss_608.unk34[i].unk10);
}
}
}
void fn_1_EC00(void) {
lbl_1_bss_58[0] = HuAudSeqPlay(0x36);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
}
void fn_1_EC5C(void) {
lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10);
fn_1_1D1C(lbl_1_bss_608.unk08, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 0);
fn_1_1CE8(lbl_1_bss_608.unk08, lbl_1_data_930[lbl_1_bss_608.unk00][0]);
fn_1_1ACC(lbl_1_bss_608.unk08, -1);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_608.unk08);
fn_1_1DCC(lbl_1_bss_5B8.unk00, 2, 2, 0, 0);
fn_1_BAC(90);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 4, 15, 0);
fn_1_BAC(30);
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 4, 15, 0);
fn_1_2224(lbl_1_bss_5B8.unk00, 2, 2, 0);
fn_1_BAC(60);
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 1, 84, 1);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 84, 1);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_1132C);
lbl_1_bss_5B8.unk04 = (void*) fn_1_10450;
do {
fn_1_B8C();
} while (lbl_1_bss_5B8.unk04 != NULL);
fn_1_BAC(10);
lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 3, 15, 1);
if (lbl_1_bss_608.unk00 == 0) {
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_608.unk00][2]);
} else {
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_608.unk00][0]);
}
fn_1_1D1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + 5) + lbl_1_bss_608.unk00, 2);
fn_1_1CE8(lbl_1_bss_608.unk08, lbl_1_data_930[lbl_1_bss_608.unk00][1]);
fn_1_1ACC(lbl_1_bss_608.unk08, -1);
fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_608.unk08);
}
void fn_1_EFE0(s32 arg0, StructBss19C* arg1) {
s32 temp_r31;
temp_r31 = HuAudSStreamPlay(7);
do {
fn_1_B8C();
} while (HuAudSStreamStatGet(temp_r31) != 0);
HuAudSeqPause(lbl_1_bss_58[0], 0, 1000);
arg1->unk04 = 0;
}
void fn_1_F050(omObjData* arg0, StructBss19C* arg1) {
s32 temp_r31;
temp_r31 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00;
fn_1_BAC(150);
OSReport("########## PRESENT_SE : %d\n", temp_r31);
HuAudFXPlay(0x8D4 + temp_r31);
if (lbl_1_data_570[lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00].unk04 == 1) {
fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 7, 0, 0);
fn_1_BAC(60);
fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 12, 0, 1);
} else {
fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 7, 1, 0);
}
arg1->unk04 = 0;
}
void fn_1_F19C(void) {
s32 i;
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 2, 15, 1);
for (i = 0; i < 30; i++) {
fn_1_B8C();
if (lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 != 5) {
Hu3DData[lbl_1_bss_568.unk00->model[1]].pos.x = fn_1_828(120.0f, 80.0f, i, 30.0f);
}
Hu3DData[lbl_1_bss_568.unk00->model[1]].rot.y = fn_1_828(-60.0f, -90.0f, i, 30.0f);
}
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 5, 5, 0);
while (TRUE) {
fn_1_B8C();
if (Hu3DMotionTimeGet(lbl_1_bss_568.unk00->model[1]) >= 35.0f) {
break;
}
}
Hu3DModelPosSet(lbl_1_bss_5B8.unk00->model[5], 0.0f, 0.0f, 0.0f);
Hu3DModelHookReset(lbl_1_bss_5B8.unk00->model[9]);
Hu3DModelHookSet(lbl_1_bss_568.unk00->model[1], CharModelHookNameGet(lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 1, 1), lbl_1_bss_5B8.unk00->model[5]);
fn_1_BAC(60);
lbl_1_bss_5B8.unk04 = (void*) fn_1_10298;
HuAudFXPlay(0xA3);
HuAudCharVoicePlay(lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 0x128);
fn_1_1DCC(lbl_1_bss_5B8.unk00, 6, 6, 0, 0);
Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[6], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(lbl_1_bss_5B8.unk00->model[5], HU3D_ATTR_DISPOFF);
fn_1_1DCC(lbl_1_bss_568.unk00, 1, 6, 5, 0);
HuAudSeqPause(lbl_1_bss_58[0], 1, 1000);
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
Hu3DMotionSpeedSet(lbl_1_bss_568.unk00->model[1], 0.0f);
Hu3DMotionTimeSet(lbl_1_bss_568.unk00->model[1], 50.0f);
Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[7], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[8], HU3D_ATTR_DISPOFF);
fn_1_1DCC(lbl_1_bss_5B8.unk00, 8, 8, 0, 1);
fn_1_BAC(30);
HuAudFXPlay(0xA9);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_11534);
fn_1_BAC(60);
lbl_1_bss_568.unk04 = (void*) fn_1_F050;
lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10);
lbl_1_bss_590.unk04 = (void*) fn_1_EFE0;
fn_1_1D1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + 6) + lbl_1_bss_608.unk00, 0);
fn_1_6C1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, 134), 0, 300);
fn_1_1CE8(lbl_1_bss_608.unk08, MAKE_MESSID(37, 4));
fn_1_1A64(lbl_1_bss_608.unk08);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_1141C);
lbl_1_bss_5B8.unk04 = (void*) fn_1_10384;
fn_1_BAC(30);
Hu3DMotionSpeedSet(lbl_1_bss_568.unk00->model[1], 0.1f);
fn_1_BAC(180);
WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
}
s32 fn_1_F780(s32 arg0) {
if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) {
return 1;
}
if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) {
return 1;
}
if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) {
return 1;
}
if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) {
return 1;
}
if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) {
return 1;
}
if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) {
return 1;
}
return 0;
}
void fn_1_F86C(void) {
Hu3DAllKill();
HuSprClose();
HuSprInit();
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
fn_1_BAC(60);
SLCommonSet();
SLSaveBoardStory();
if (SLSaveFlagGet() == 1) {
SLSave();
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
lbl_1_bss_55C = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_F910(void) {
omOvlHisData* var_r31;
msmSeStopAll(FALSE, 1000);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
CharModelKill(-1);
HuAudFXAllStop();
HuAudSStreamAllStop();
{
s32 sp8[] = { 53, 56, 55, 54, 57 };
GWMGAvailSet(omMgIndexGet(sp8[lbl_1_bss_608.unk00]) + 0x191);
}
GWGameStat.present[lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00] = 1;
OSReport("########## PRESENTFLG CHR:%d, MAP:%d, PRESENT:%d\n", lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, lbl_1_bss_608.unk00, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00);
var_r31 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY, 20, var_r31->stat);
omOvlCallEx(OVL_PRESENT, 1, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00 + 1, 0);
}
void fn_1_FAE4(omObjData* arg0, StructBss19C* arg1) {
s32 sp8 = 0;
lbl_1_bss_58[0] = HuAudSeqPlay(0x36);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
fn_1_EC5C();
fn_1_F19C();
fn_1_F910();
arg1->unk04 = 0;
}
void fn_1_FD1C(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL);
lbl_1_bss_5E0.unk00 = temp_r3;
lbl_1_bss_5E0.unk04 = (void*) fn_1_FAE4;
lbl_1_bss_5E0.unk00->data = &lbl_1_bss_5E0;
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_5E0.unk04 != NULL) {
lbl_1_bss_5E0.unk04(temp_r3, &lbl_1_bss_5E0);
}
}
}
void fn_1_FDD0(omObjData* arg0, s32 arg1) {
s32 temp_r29;
temp_r29 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10;
arg0->model[7] = Hu3DModelCreateFile(lbl_1_data_570[temp_r29 * 6 + arg1].unk00);
arg0->motion[7] = Hu3DMotionIDGet(arg0->model[7]);
if (lbl_1_data_570[temp_r29 * 6 + arg1].unk04 == 1) {
arg0->motion[12] = Hu3DJointMotionFile(arg0->model[7], DATA_MAKE_NUM(DATADIR_MSTORY4, 48));
}
Hu3DModelPosSet(arg0->model[7], 0.0f, 180.0f, 825.0f);
Hu3DModelAttrSet(arg0->model[7], HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(arg0->model[7]);
fn_1_1DCC(arg0, 7, 7, 0, 2);
HuDataDirClose(DATADIR_MSTORY4);
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base");
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61));
fn_1_1DCC(arg0, 2, 2, 0, 2);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57));
arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 81));
Hu3DModelShadowSet(arg0->model[5]);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 83));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelPosSet(arg0->model[6], 25.0f, 125.0f, 900.0f);
Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 6, 6, 0, 2);
arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 96));
arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]);
Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF);
fn_1_1DCC(arg0, 8, 8, 0, 2);
arg0->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 84));
arg0->motion[9] = Hu3DMotionIDGet(arg0->model[9]);
Hu3DModelPosSet(arg0->model[9], 0.0f, 0.0f, 460.0f);
Hu3DModelShadowSet(arg0->model[9]);
fn_1_1DCC(arg0, 9, 9, 0, 2);
Hu3DModelHookSet(arg0->model[9], "carrier2-target0", arg0->model[5]);
lbl_1_bss_560[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 85 + arg1 * 2), MEMORY_DEFAULT_NUM));
lbl_1_bss_560[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 86 + arg1 * 2), MEMORY_DEFAULT_NUM));
Hu3DAnimCreate(lbl_1_bss_560[0], lbl_1_bss_5B8.unk00->model[5], "cylinder3");
Hu3DAnimCreate(lbl_1_bss_560[1], lbl_1_bss_5B8.unk00->model[5], "wakuwaku");
}
void fn_1_10298(omObjData* arg0, StructBss19C* arg1) {
Mtx sp8;
Hu3DData[arg0->model[7]].pos.y = fn_1_ACC(180.0f, 185.0f, arg1->unk08++, 360.0f);
Hu3DModelObjMtxGet(arg0->model[7], "effect", sp8);
Hu3DModelPosSet(arg0->model[8], sp8[0][3], sp8[1][3], sp8[2][3]);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_10384(omObjData* arg0, StructBss19C* arg1) {
Mtx sp8;
Hu3DData[arg0->model[7]].pos.y += arg1->unk0C / 100.0f;
Hu3DModelObjMtxGet(arg0->model[7], "effect", sp8);
Hu3DModelPosSet(arg0->model[8], sp8[0][3], sp8[1][3], sp8[2][3]);
arg1->unk0C += 2;
}
void fn_1_10450(omObjData* arg0, StructBss19C* arg1) {
fn_1_1DCC(arg0, 9, 9, 0, 1);
while (TRUE) {
fn_1_B8C();
Hu3DData[arg0->model[9]].pos.z += 2.5f;
if (Hu3DData[arg0->model[9]].pos.z >= 670.0f) {
break;
}
}
Hu3DData[arg0->model[9]].pos.z = 670.0f;
Hu3DMotionSpeedSet(arg0->model[9], 0.0f);
arg1->unk04 = 0;
}
void fn_1_1054C(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL);
lbl_1_bss_5B8.unk00 = temp_r3;
lbl_1_bss_5B8.unk04 = NULL;
fn_1_FDD0(temp_r3, lbl_1_bss_608.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_5B8.unk04 != NULL) {
lbl_1_bss_5B8.unk04(temp_r3, &lbl_1_bss_5B8);
}
}
}
void fn_1_105F8(omObjData* arg0, s32 arg1) {
s32 sp1C[] = {
DATA_MAKE_NUM(DATADIR_MSTORY, 0x0061),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x006C),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x0074),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x007C),
DATA_MAKE_NUM(DATADIR_MSTORY, 0x0083)
};
s32 sp30[][5] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x0062), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0064), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0065), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0067), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0068) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x006D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x006F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0070), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0072), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0073) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x0075), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0077), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0078), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007A), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007B) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x007D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007E), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0081), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0082) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x0084), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0086), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0087), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0089), DATA_MAKE_NUM(DATADIR_MSTORY, 0x008A) }
};
arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]);
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]);
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]);
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]);
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]);
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]);
Hu3DModelPosSet(arg0->model[1], -120.0f, 0.0f, 670.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
if (arg1 == 3) {
Hu3DData[arg0->model[1]].pos.y = 50.0f;
}
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 5, 0, 1);
{
s32 sp8[] = { 9, 14, 10, 11, 12 };
if (arg1 != 3) {
CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]);
}
}
}
void fn_1_108F8(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL);
lbl_1_bss_590.unk00 = temp_r3;
lbl_1_bss_590.unk04 = NULL;
fn_1_105F8(temp_r3, lbl_1_bss_608.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_590.unk04 != NULL) {
lbl_1_bss_590.unk04(temp_r3, &lbl_1_bss_590);
}
}
}
void fn_1_10C6C(s32 arg0) {
s32 spC[4];
s32 i;
spC[0] = 0;
for (i = 1; i < 4; i++) {
spC[i] = spC[i - 1] + 1;
if (spC[i] >= 4) {
spC[i] = 0;
}
if (arg0 == spC[i]) {
lbl_1_bss_608.unk04 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_352C(&lbl_1_bss_608.unk34[i], spC[i]);
}
}
void fn_1_10D50(omObjData* arg0, s32 arg1) {
s32 temp_r30;
temp_r30 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10;
arg0->model[1] = CharModelCreate(temp_r30, 1);
arg0->motion[1] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[2] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2));
arg0->motion[3] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 53));
arg0->motion[4] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109));
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 24 + temp_r30));
arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 32 + temp_r30));
CharModelMotionDataClose(temp_r30);
Hu3DModelPosSet(arg0->model[1], 120.0f, 0.0f, 670.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, -60.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
}
void fn_1_10F24(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
fn_1_1DCC(lbl_1_bss_568.unk00, 1, arg0, arg2, arg3);
if (arg3 == 1) {
arg4 = 0;
}
lbl_1_bss_568.unk00->work[0] = arg4;
lbl_1_bss_568.unk00->work[1] = arg1;
lbl_1_bss_568.unk00->work[2] = arg2 + 1;
}
void fn_1_10FD0(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL);
lbl_1_bss_568.unk00 = temp_r3;
lbl_1_bss_568.unk04 = NULL;
lbl_1_bss_568.unk00->data = &lbl_1_bss_568;
fn_1_10D50(temp_r3, lbl_1_bss_608.unk04); // Second argument required to match.
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_568.unk04 != NULL) {
lbl_1_bss_568.unk04(temp_r3, &lbl_1_bss_568);
}
if (temp_r3->work[0] != 0) {
fn_1_E828(temp_r3);
}
}
}
void fn_1_112A0(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk08.x = 0.0f;
var_r31->unk08.y = 125.0f;
var_r31->unk08.z = 0.0f;
var_r31->unk20.x = -5.0f;
var_r31->unk20.y = 0.0f;
var_r31->unk20.z = 0.0f;
var_r31->unk38 = 1750.0f;
}
void fn_1_1132C(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 100.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1400.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 120.0f, 10.0f);
}
void fn_1_1141C(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk14 = 0.0f;
var_r31->unk18 = Hu3DData[lbl_1_bss_5B8.unk00->model[7]].pos.y;
var_r31->unk1C = 0.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk34 = 0.0f;
var_r31->unk3C = fn_1_828(1100.0f, 1400.0f, var_r31->unk40++, 240.0f);
fn_1_3ABC(var_r31, 30.0f);
}
void fn_1_11534(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
sp8.unk08.x = 0.0f;
sp8.unk08.y = 160.0f;
sp8.unk08.z = 0.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 1100.0f;
fn_1_61E8(var_r31, &sp8, var_r31->unk40++, 10.0f, 5.0f);
}

446
src/REL/mstoryDll/mg_miss.c Executable file
View file

@ -0,0 +1,446 @@
#include "REL/mstoryDll.h"
#include "game/chrman.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/printfunc.h"
#include "game/window.h"
#include "game/wipe.h"
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ s32 unk10;
/* 0x14 */ char unk14[0x20];
/* 0x34 */ StructFn352C unk34[4];
} StructBss7B4; // Size 0x104
void fn_1_12630(void);
void fn_1_129D4(void);
void fn_1_12C94(s32 arg0);
void fn_1_12F20(omObjData* arg0, StructBss19C* arg1);
void fn_1_12FA8(omObjData*, StructBss19C* arg1);
void fn_1_130C0(void);
void fn_1_13570(void);
void fn_1_13880(void);
void fn_1_1390C(void);
StructBss7B4 lbl_1_bss_7B4;
StructBss19C lbl_1_bss_78C;
StructBss19C lbl_1_bss_764;
StructBss19C lbl_1_bss_73C;
StructBss19C lbl_1_bss_714;
Process* lbl_1_bss_710;
s32 lbl_1_data_AF8[][3] = {
{ MAKE_MESSID(30, 40), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 41), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 42), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 43), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) },
{ MAKE_MESSID(30, 44), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }
};
void fn_1_11624(Process* arg0, s32 arg1, s32 arg2) {
lbl_1_bss_710 = arg0;
lbl_1_bss_7B4.unk00 = arg1;
lbl_1_bss_7B4.unk10 = arg2;
fn_1_BF4();
fn_1_3618(0xFF);
fn_1_27E8(lbl_1_bss_710, fn_1_13880);
fn_1_3704();
fn_1_12C94(arg2);
HuPrcChildCreate(fn_1_129D4, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_130C0, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_13570, 100, 0x2000, 0, HuPrcCurrentGet());
HuPrcChildCreate(fn_1_12630, 100, 0x2000, 0, HuPrcCurrentGet());
}
void fn_1_11730(void) {
s32 var_r31 = 16;
s32 var_r30 = 40;
GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 };
s32 i;
while (TRUE) {
fn_1_B8C();
fontcolor = FONT_COLOR_WHITE;
printWin(var_r31, var_r30, 220, 120, &sp10);
if (lbl_1_bss_78C.unk04 == NULL) {
print8(var_r31, var_r30, 1.0f, "PROC_MAIN -> FALSE");
} else {
print8(var_r31, var_r30, 1.0f, "PROC_MAIN -> TRUE");
}
if (lbl_1_bss_764.unk04 == NULL) {
print8(var_r31, var_r30 + 10, 1.0f, "PROC_MAP -> FALSE");
} else {
print8(var_r31, var_r30 + 10, 1.0f, "PROC_MAP -> TRUE");
}
if (lbl_1_bss_73C.unk04 == NULL) {
print8(var_r31, var_r30 + 20, 1.0f, "PROC_PLAYER -> FALSE");
} else {
print8(var_r31, var_r30 + 20, 1.0f, "PROC_PLAYER -> TRUE");
}
if (lbl_1_bss_714.unk04 == NULL) {
print8(var_r31, var_r30 + 30, 1.0f, "PROC_SUB -> FALSE");
} else {
print8(var_r31, var_r30 + 30, 1.0f, "PROC_SUB -> TRUE");
}
print8(var_r31, var_r30 + 50, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_7B4.unk00, lbl_1_bss_7B4.unk04, lbl_1_bss_7B4.unk10);
print8(var_r31, var_r30 + 70, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (i = 0; i < 4; i++) {
print8(var_r31, var_r30 + 80 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i,
lbl_1_bss_7B4.unk34[i].unk00, lbl_1_bss_7B4.unk34[i].unk04, lbl_1_bss_7B4.unk34[i].unk08,
lbl_1_bss_7B4.unk34[i].unk0C, lbl_1_bss_7B4.unk34[i].unk14, lbl_1_bss_7B4.unk34[i].unk10);
}
}
}
void fn_1_11A8C(void) {
lbl_1_bss_58[0] = HuAudSeqPlay(0x34);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
}
void fn_1_11AE8(void) {
s32 spC = 0;
s32 sp8 = 0;
fn_1_1DCC(lbl_1_bss_73C.unk00, 1, 2, 15, 0);
lbl_1_bss_73C.unk04 = (void*) fn_1_12F20;
HuAudFXPlay(lbl_1_data_0[lbl_1_bss_7B4.unk00][1]);
HuAudCharVoicePlay(lbl_1_bss_7B4.unk34[lbl_1_bss_7B4.unk04].unk10, 0x12E);
lbl_1_bss_7B4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_7B4.unk10);
fn_1_1DCC(lbl_1_bss_714.unk00, 1, 2, 15, 1);
fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][0]);
fn_1_1ACC(lbl_1_bss_7B4.unk08, -1);
fn_1_1CE8(lbl_1_bss_7B4.unk08, MAKE_MESSID(37, 4));
fn_1_1DCC(lbl_1_bss_714.unk00, 1, 1, 15, 1);
fn_1_1A64(lbl_1_bss_7B4.unk08);
}
BOOL fn_1_11C6C(void) {
BOOL temp_r31 = FALSE;
HuWinInsertMesSet(lbl_1_bss_7B4.unk08, MAKE_MESSID(30, 54) + lbl_1_bss_7B4.unk00, 3);
fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][1]);
fn_1_1ACC(lbl_1_bss_7B4.unk08, 5);
lbl_1_bss_7B4.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_7B4.unk10);
fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1C34(lbl_1_bss_7B4.unk0C);
fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_7B4.unk0C);
if (temp_r31) {
fn_1_1DCC(lbl_1_bss_73C.unk00, 1, 4, 15, 0);
lbl_1_bss_73C.unk04 = NULL;
fn_1_1DCC(lbl_1_bss_714.unk00, 1, 3, 15, 1);
}
return temp_r31;
}
BOOL fn_1_11DD8(void) {
s32 temp_r31 = FALSE;
fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][2]);
fn_1_1ACC(lbl_1_bss_7B4.unk08, 5);
lbl_1_bss_7B4.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_7B4.unk10);
fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(30, 53));
temp_r31 = fn_1_1B78(lbl_1_bss_7B4.unk0C, 1);
fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(37, 4));
fn_1_7028(lbl_1_bss_7B4.unk0C);
return temp_r31;
}
void fn_1_11EC4(void) {
lbl_1_bss_73C.unk04 = (void*) fn_1_12FA8;
HuAudSeqFadeOut(lbl_1_bss_58[0], 3000);
fn_1_3804(&lbl_1_bss_4);
fn_1_2710(fn_1_1390C);
fn_1_BAC(150);
}
void fn_1_11F28(void) {
}
void fn_1_11F2C(s32 arg0) {
omOvlHisData* var_r30;
OverlayID sp8[] = { OVL_M445, OVL_M448, OVL_M447, OVL_M446, OVL_M449 };
if (arg0 != 0) {
fn_1_BAC(60);
HuAudSeqFadeOut(lbl_1_bss_58[0], 1000);
}
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
do {
fn_1_B8C();
} while (WipeStatGet() != 0);
fn_1_BAC(60);
CharModelKill(-1);
var_r30 = omOvlHisGet(0);
omOvlHisChg(0, OVL_MSTORY, 2, var_r30->stat);
if (arg0 == 0) {
HuAudSeqAllFadeOut(1000);
HuAudSStreamAllFadeOut(1000);
omOvlCallEx(sp8[GWSystem.board], 1, 0, 0);
} else {
HuAudFadeOut(1);
omOvlReturnEx(1, 1);
}
}
void fn_1_12070(omObjData* arg0, StructBss19C* arg1) {
s32 var_r31;
fn_1_11A8C();
fn_1_11AE8();
lbl_1_bss_7B4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_7B4.unk10);
while (TRUE) {
fn_1_B8C();
if (fn_1_11C6C()) {
var_r31 = 0;
break;
}
if (fn_1_11DD8()) {
var_r31 = 1;
break;
}
}
fn_1_1A64(lbl_1_bss_7B4.unk08);
fn_1_BAC(60);
switch (var_r31) {
case 0:
fn_1_11EC4();
break;
case 1:
fn_1_11F28();
break;
}
fn_1_11F2C(var_r31);
arg1->unk04 = NULL;
}
void fn_1_12630(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL);
lbl_1_bss_78C.unk00 = temp_r3;
lbl_1_bss_78C.unk04 = (void*) fn_1_12070;
lbl_1_bss_78C.unk00->data = &lbl_1_bss_78C;
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_78C.unk04 != NULL) {
lbl_1_bss_78C.unk04(temp_r3, &lbl_1_bss_78C);
}
}
}
void fn_1_126E4(omObjData* arg0) {
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 0, 0, 2);
Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base");
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60));
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61));
fn_1_1DCC(arg0, 2, 2, 0, 2);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57));
arg0->model[5] = Hu3DModelCreateFile(lbl_1_bss_7B4.unk00 + DATA_MAKE_NUM(DATADIR_MSTORY, 76));
arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]);
Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f);
Hu3DModelShadowSet(arg0->model[5]);
fn_1_1DCC(arg0, 5, 5, 0, 2);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 75));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelHookSet(arg0->model[5], "stargbox_fix-effect_fook1", arg0->model[6]);
fn_1_1DCC(arg0, 6, 6, 0, 2);
}
void fn_1_12918(omObjData* arg0, StructBss19C* arg1) {
Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg1->unk08++, 360.0f);
if (arg1->unk08 >= 360) {
arg1->unk08 = 0;
}
}
void fn_1_129D4(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL);
lbl_1_bss_764.unk00 = temp_r3;
lbl_1_bss_764.unk04 = (void*) fn_1_12918;
lbl_1_bss_764.unk00->data = &lbl_1_bss_764;
fn_1_126E4(temp_r3);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_764.unk04 != NULL) {
lbl_1_bss_764.unk04(temp_r3, &lbl_1_bss_764);
}
}
}
void fn_1_12C94(s32 arg0) {
s32 spC[4];
s32 i;
spC[0] = 0;
for (i = 1; i < 4; i++) {
spC[i] = spC[i - 1] + 1;
if (spC[i] >= 4) {
spC[i] = 0;
}
if (arg0 == spC[i]) {
lbl_1_bss_7B4.unk04 = i;
}
}
for (i = 0; i < 4; i++) {
fn_1_352C(&lbl_1_bss_7B4.unk34[i], spC[i]);
}
}
void fn_1_12D78(omObjData* arg0) {
s32 temp_r30;
temp_r30 = lbl_1_bss_7B4.unk34[lbl_1_bss_7B4.unk04].unk10;
arg0->model[1] = CharModelCreate(temp_r30, 1);
arg0->motion[1] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[2] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 24));
arg0->motion[3] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 52));
arg0->motion[4] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72));
arg0->motion[5] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 53));
CharModelVoiceEnableSet(temp_r30, arg0->motion[2], 0);
CharModelMotionDataClose(temp_r30);
Hu3DModelPosSet(arg0->model[1], 120.0f, 0.0f, 670.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, -45.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
}
void fn_1_12F20(omObjData* arg0, StructBss19C* arg1) {
if (arg0->motion[2] == Hu3DMotionIDGet(arg0->model[1]) && Hu3DMotionEndCheck(arg0->model[1])) {
fn_1_1DCC(arg0, 1, 3, 15, 1);
arg1->unk04 = 0;
}
}
void fn_1_12FA8(omObjData* arg0, StructBss19C* arg1) {
s32 i;
fn_1_BAC(10);
fn_1_1DCC(arg0, 1, 5, 15, 0);
fn_1_B8C();
Hu3DMotionTimeSet(arg0->model[1], 60.0f);
for (i = 0; i < 50; i++) {
fn_1_B8C();
Hu3DData[arg0->model[1]].rot.y = fn_1_828(-60.0f, -120.0f, i, 60.0f);
}
fn_1_1DCC(arg0, 1, 1, 15, 1);
arg1->unk04 = 0;
}
void fn_1_130C0(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL);
lbl_1_bss_73C.unk00 = temp_r3;
lbl_1_bss_73C.unk04 = NULL;
lbl_1_bss_73C.unk00->data = &lbl_1_bss_73C;
fn_1_12D78(temp_r3);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_73C.unk04 != NULL) {
lbl_1_bss_73C.unk04(temp_r3, &lbl_1_bss_73C);
}
}
}
void fn_1_132EC(omObjData* arg0, s32 arg1) {
s32 sp8[] = {
DATA_MAKE_NUM(DATADIR_MSTORY, 97),
DATA_MAKE_NUM(DATADIR_MSTORY, 108),
DATA_MAKE_NUM(DATADIR_MSTORY, 116),
DATA_MAKE_NUM(DATADIR_MSTORY, 124),
DATA_MAKE_NUM(DATADIR_MSTORY, 131)
};
s32 sp1C[][3] = {
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x62), DATA_MAKE_NUM(DATADIR_MSTORY, 0x65), DATA_MAKE_NUM(DATADIR_MSTORY, 0x67) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x6D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x70), DATA_MAKE_NUM(DATADIR_MSTORY, 0x72) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x75), DATA_MAKE_NUM(DATADIR_MSTORY, 0x78), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7A) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x7D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x81) },
{ DATA_MAKE_NUM(DATADIR_MSTORY, 0x84), DATA_MAKE_NUM(DATADIR_MSTORY, 0x87), DATA_MAKE_NUM(DATADIR_MSTORY, 0x89) }
};
arg0->model[1] = Hu3DModelCreateFile(sp8[arg1]);
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][0]);
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][1]);
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][2]);
Hu3DModelPosSet(arg0->model[1], -120.0f, 0.0f, 670.0f);
Hu3DModelRotSet(arg0->model[1], 0.0f, 45.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
if (arg1 == 3) {
Hu3DData[arg0->model[1]].pos.y = 50.0f;
}
Hu3DModelShadowSet(arg0->model[1]);
fn_1_1DCC(arg0, 1, 1, 0, 1);
}
void fn_1_13570(void) {
omObjData* temp_r3;
temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL);
lbl_1_bss_714.unk00 = temp_r3;
lbl_1_bss_714.unk04 = NULL;
lbl_1_bss_714.unk00->data = &lbl_1_bss_714;
fn_1_132EC(temp_r3, lbl_1_bss_7B4.unk00);
while (TRUE) {
fn_1_B8C();
if (lbl_1_bss_714.unk04 != NULL) {
lbl_1_bss_714.unk04(temp_r3, &lbl_1_bss_714);
}
}
}
void fn_1_13880(void) {
StructBss4* var_r31;
var_r31 = &lbl_1_bss_4;
var_r31->unk08.x = 0.0f;
var_r31->unk08.y = 125.0f;
var_r31->unk08.z = 0.0f;
var_r31->unk20.x = -5.0f;
var_r31->unk20.y = 0.0f;
var_r31->unk20.z = 0.0f;
var_r31->unk38 = 1750.0f;
}
void fn_1_1390C(void) {
StructBss4* var_r31;
StructBss4 sp8;
var_r31 = &lbl_1_bss_4;
if (var_r31->unk40 == 50) {
fn_1_1DCC(lbl_1_bss_764.unk00, 5, 5, 0, 0);
fn_1_1DCC(lbl_1_bss_764.unk00, 6, 6, 0, 0);
HuAudFXPlay(0xA1);
}
sp8.unk08.x = 0.0f;
sp8.unk08.y = 130.0f;
sp8.unk08.z = 460.0f;
sp8.unk20.x = 0.0f;
sp8.unk20.y = 0.0f;
sp8.unk20.z = 0.0f;
sp8.unk38 = 150.0f;
fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f);
if (var_r31->unk40++ >= 90) {
if (var_r31->unk40 == 91) {
lbl_1_bss_68 = HuAudFXPlay(0x21);
}
var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f);
Hu3DData[lbl_1_bss_764.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f);
}
}

128
src/REL/mstoryDll/save.c Executable file
View file

@ -0,0 +1,128 @@
#include "REL/mstoryDll.h"
#include "game/data.h"
#include "game/esprite.h"
#include "game/flag.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/saveload.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
s32 lbl_1_bss_8BC;
Process *lbl_1_bss_8B8;
s32 fn_1_13B48(s32 arg0)
{
if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) {
return 1;
}
if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) {
return 1;
}
if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) {
return 1;
}
if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) {
return 1;
}
if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) {
return 1;
}
if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) {
return 1;
}
return 0;
}
void fn_1_13C34(void)
{
float sp8[2];
s32 temp_r30;
s32 var_r29;
s32 var_r31;
temp_r30 = 1;
Hu3DAllKill();
HuSprClose();
HuSprInit();
if (SLSaveFlagGet() == 0) {
lbl_1_bss_8BC = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
espInit();
HuPrcVSleep();
var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0);
espPosSet(var_r29, 288.0f, 240.0f);
espAttrReset(var_r29, 4);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
if (SLSaveFlagGet() == 1) {
HuWinInit(1);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22));
var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2);
winData[var_r31].active_pad = 1;
HuWinAttrSet(var_r31, 0x10);
HuWinExAnimIn(var_r31);
HuWinMesSet(var_r31, MAKE_MESSID(30, 22));
temp_r30 = HuWinChoiceGet(var_r31, 0);
HuWinExAnimOut(var_r31);
HuWinExCleanup(var_r31);
if (SLSaveFlagGet() == 1 && temp_r30 == 0) {
#if VERSION_REV1
GWGameStat.story_continue = 1;
#endif
SLCommonSet();
SLSaveBoardStory();
SLSave();
}
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
lbl_1_bss_8BC = 1;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_13E2C(void)
{
_SetFlag(9);
if (_CheckFlag(FLAG_ID_MAKE(0, 2)) && _CheckFlag(FLAG_ID_MAKE(0, 3)) && _CheckFlag(FLAG_ID_MAKE(0, 4)) && _CheckFlag(FLAG_ID_MAKE(0, 5))
&& _CheckFlag(FLAG_ID_MAKE(0, 6))) {
OSReport(
"########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9));
HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet());
do {
fn_1_B8C();
} while (lbl_1_bss_8BC != 1);
omOvlGotoEx(OVL_MSTORY2, 1, 0, 0);
}
else {
OSReport(
"########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9));
HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet());
do {
fn_1_B8C();
} while (lbl_1_bss_8BC != 1);
omOvlGotoEx(OVL_MENT, 1, 10, 0);
}
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_14150(Process *arg0)
{
lbl_1_bss_8B8 = arg0;
HuPrcChildCreate(fn_1_13E2C, 100, 0x2000, 0, HuPrcCurrentGet());
}

View file

@ -10,7 +10,7 @@
#include "game/window.h"
#include "dolphin.h"
#include "math.h"
#include "ext_math.h"
#include "version.h"
#ifndef __MWERKS__
@ -208,8 +208,8 @@ static void ExecRecord(omObjData *object)
Hu3DModelAttrReset(work->hand->model[0], HU3D_ATTR_DISPOFF);
work->cameraDoneF = TRUE;
}
pos.x = 505.0 * -sin(305 * M_PI / 180.0);
pos.z = 505.0 * cos(305 * M_PI / 180.0);
pos.x = 505.0 * -sind(305);
pos.z = 505.0 * cosd(305);
pos.y = 144.0f - 14.0f * work->recordType;
omSetTra(work->hand, pos.x, pos.y, pos.z);
object->unk10 = 3;

View file

@ -1,5 +1,5 @@
#include "dolphin.h"
#include "math.h"
#include "ext_math.h"
#include "game/armem.h"
#include "game/audio.h"
@ -503,7 +503,7 @@ void fn_1_7F98(void)
}
delay = (lbl_1_bss_174) ? 3 : 10;
for (time = 0; time <= delay; time++) {
float scale = sin(M_PI * ((90.0 / delay) * time) / 180.0);
float scale = sind((90.0 / delay) * time);
for (i = 0; i < 4; i++) {
HuSprGrpScaleSet(lbl_1_bss_19E0[i], scale, scale);
}

View file

@ -14,7 +14,7 @@
#include "game/window.h"
#include "game/wipe.h"
#include "math.h"
#include "ext_math.h"
#include "REL/resultdll.h"
@ -498,7 +498,7 @@ void fn_1_1F4C(void)
}
temp_r29 = (lbl_1_bss_174) ? 3 : 10;
for (temp_r30 = 0; temp_r30 <= temp_r29; temp_r30++) {
temp_f31 = sin(M_PI * ((90.0 / temp_r29) * temp_r30) / 180.0);
temp_f31 = sind((90.0 / temp_r29) * temp_r30);
for (i = 0; i < 4; i++) {
HuSprGrpScaleSet(lbl_1_bss_3A[i], temp_f31, temp_f31);
}
@ -512,8 +512,8 @@ void fn_1_1F4C(void)
if (GWPlayerCoinWinGet(lbl_1_bss_4A[i]) >= 10) {
HuSprAttrReset(lbl_1_bss_9C, i, 4);
}
HuSprScaleSet(lbl_1_bss_9C, i, sin(M_PI * ((120.0f / 14.0f) * temp_r28) / 180.0) * (0.8 * (1.0 / sin((M_PI * 2) / 3))),
0.8 * (sin(M_PI * ((120.0f / 14.0f) * temp_r28) / 180.0) * (1.0 / sin((M_PI * 2) / 3))));
HuSprScaleSet(lbl_1_bss_9C, i, sind((120.0f / 14.0f) * temp_r28) * (0.8 * (1.0 / sin((M_PI * 2) / 3))),
0.8 * (sind((120.0f / 14.0f) * temp_r28) * (1.0 / sin((M_PI * 2) / 3))));
}
temp_r28 += (lbl_1_bss_174) ? 2 : 1;
HuPrcVSleep();
@ -603,7 +603,7 @@ void fn_1_1F4C(void)
}
temp_r29 = (lbl_1_bss_174) ? 3 : 10;
for (temp_r30 = 0; temp_r30 <= temp_r29; temp_r30++) {
temp_f31 = cos(M_PI * ((90.0 / temp_r29) * temp_r30) / 180.0);
temp_f31 = cosd((90.0 / temp_r29) * temp_r30);
for (i = 0; i < 4; i++) {
HuSprGrpScaleSet(lbl_1_bss_3A[i], temp_f31, temp_f31);
}
@ -686,12 +686,12 @@ void fn_1_2ADC(void)
temp_r27 = temp_r28 - (i * 20);
if (temp_r27 <= 20) {
if (temp_r27 <= 10) {
HuSprScaleSet(lbl_1_bss_52, i, 1.0f, cos(M_PI * (9.0f * temp_r27) / 180.0));
HuSprScaleSet(lbl_1_bss_52, i, 1.0f, cosd(9.0f * temp_r27));
}
else {
HuSprAttrSet(lbl_1_bss_52, i, 4);
HuSprAttrReset(lbl_1_data_380, i, 4);
HuSprScaleSet(lbl_1_data_380, i, 1.0f, sin(M_PI * (9.0f * (temp_r27 - 10)) / 180.0));
HuSprScaleSet(lbl_1_data_380, i, 1.0f, sind(9.0f * (temp_r27 - 10)));
}
temp_f31 = temp_r27 / 20.0f;
temp_r29 = GWStarsGet(sp28[i]) + (temp_f31 * (GWStarsGet(lbl_1_bss_4A[i]) - GWStarsGet(sp28[i])));
@ -741,7 +741,7 @@ void fn_1_2ADC(void)
}
if (temp_r28 <= 10) {
for (i = 0; i < 4; i++) {
HuSprScaleSet(lbl_1_bss_9C, i, cos(M_PI * (9.0f * temp_r28) / 180.0), cos(M_PI * (9.0f * temp_r28) / 180.0));
HuSprScaleSet(lbl_1_bss_9C, i, cosd(9.0f * temp_r28), cosd(9.0f * temp_r28));
}
}
else {
@ -1264,27 +1264,27 @@ void fn_1_5880(omObjData *object)
CZoom += HuPadTrigL[0] / 2;
CZoom -= HuPadTrigR[0] / 2;
pos.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
pos.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
pos.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
pos.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x));
pos.y = Center.y + CZoom * -sind(CRot.x);
pos.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x));
offset.x = Center.x - pos.x;
offset.y = Center.y - pos.y;
offset.z = Center.z - pos.z;
dir.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
dir.y = cos((M_PI * CRot.x) / 180.0);
dir.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
dir.x = (sind(CRot.y) * sind(CRot.x));
dir.y = cosd(CRot.x);
dir.z = (cosd(CRot.y) * sind(CRot.x));
z_rot = CRot.z;
y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0))
+ dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0))
+ dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0));
y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot))
+ dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot))
+ dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot));
y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0))
+ dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0))
+ dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0));
y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot))
+ dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot))
+ dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot));
y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0))
+ (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0))
+ dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0)));
y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot))
+ (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot))
+ dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot)));
VECCrossProduct(&dir, &offset, &offset);
VECNormalize(&offset, &offset);

View file

@ -12,6 +12,8 @@
#include "game/pad.h"
#include "game/wipe.h"
#include "ext_math.h"
// structs
typedef struct w03UnkStruct5 {
@ -172,8 +174,8 @@ void fn_1_3304(void)
var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x02000000);
BoardSpacePosGet(0, var_r31, &sp8);
temp_f31 = 0.0f;
sp8.x = sp8.x + (-300.0 * sin((M_PI * temp_f31) / 180.0));
sp8.z = sp8.z + (-300.0 * cos((M_PI * temp_f31) / 180.0));
sp8.x += -300.0 * sind(temp_f31);
sp8.z += -300.0 * cosd(temp_f31);
sp8.y = 45.0f + sp8.y;
BoardModelPosSetV(lbl_1_data_310, &sp8);
BoardModelMotionStart(lbl_1_data_310, 2, 0x40000001);
@ -211,7 +213,7 @@ s32 fn_1_3478(s32 arg0)
temp = BoardSpaceLinkFlagSearch(0, temp_r28, 0x02000000);
BoardSpacePosGet(0, temp, &sp38);
VECSubtract(&sp38, &sp2C, &sp20);
float_temp = atan2(sp20.x, sp20.z) / M_PI * 180.0f;
float_temp = atan2d(sp20.x, sp20.z);
BoardPlayerMotBlendSet(arg0, (float_temp), 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
@ -473,8 +475,8 @@ void fn_1_3F5C(s32 arg0)
var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x02000000);
BoardSpacePosGet(0, var_r31, &sp8);
temp_f31 = 0.0f;
sp8.x = (sp8.x + (-300.0 * sin((M_PI * temp_f31) / 180.0f)));
sp8.z = (sp8.z + (-300.0 * cos((M_PI * temp_f31) / 180.0f)));
sp8.x += -300.0 * sind(temp_f31);
sp8.z += -300.0 * cosd(temp_f31);
sp8.y = 45.0f + sp8.y;
BoardModelPosSetV(lbl_1_data_310, &sp8);
BoardModelMotionStart(lbl_1_data_310, 2, 0x40000001);
@ -589,7 +591,7 @@ void fn_1_4424(w03StructUnk2 *arg0)
VECSubtract(&sp60, &sp6C, &sp3C);
}
sp10_2 = 180.0f * (atan2(-sp3C.x, -sp3C.z) / M_PI);
sp10_2 = atan2d(-sp3C.x, -sp3C.z);
BoardModelMotionStart(lbl_1_data_314, 0, 0U);
BoardModelMotionSpeedSet(lbl_1_data_314, 8.0f);
HuPrcSleep(1);
@ -604,7 +606,7 @@ void fn_1_4424(w03StructUnk2 *arg0)
for (i = var_r25 = 0; i < 20;) {
Hu3DMotionExec(temp_r23, temp_r28->unk_08, temp_r28->unk_64, 0);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_314), temp_r22, &sp54);
temp_r28->unk_64 = (f32)(temp_r28->unk_64 + temp_r28->unk_68);
temp_r28->unk_64 += temp_r28->unk_68;
if (temp_r28->unk_64 > 400.0f) {
break;
@ -770,9 +772,9 @@ void fn_1_4D60(w03StructUnk2 *arg0)
temp_r31->unk_00 = 1;
temp_f31 = 360.0f * BoardRandFloat();
temp_f30 = 5.0f * BoardRandFloat();
temp_r31->unk_14.x = temp_f30 * sin((M_PI * temp_f31) / 180.0);
temp_r31->unk_14.x = temp_f30 * sind(temp_f31);
temp_r31->unk_14.y = 50.0f + (20.0f * BoardRandFloat());
temp_r31->unk_14.z = temp_f30 * cos((M_PI * temp_f31) / 180.0);
temp_r31->unk_14.z = temp_f30 * cosd(temp_f31);
temp_r31->unk_08.x = sp8.x;
temp_r31->unk_08.y = sp8.y;
temp_r31->unk_08.z = sp8.z;
@ -1084,11 +1086,11 @@ void fn_1_5C5C(omObjData *arg0, w03UnkStruct5 *arg1)
PSMTXTrans(sp80, sp44.x, sp44.y, sp44.z);
PSMTXConcat(sp80, sp50, sp80);
Hu3DMtxTransGet(sp80, &sp44);
MTXRotDeg(spB0, 'y', (180.0 * (atan2(-sp2C.x, -sp2C.z) / M_PI)));
MTXRotDeg(spB0, 'y', atan2d(-sp2C.x, -sp2C.z));
PSMTXConcat(spB0, spE0, sp110);
BoardModelMtxSet(lbl_1_data_310, &sp110);
BoardModelPosSetV(lbl_1_data_310, &sp44);
BoardCameraRotSet(-20.0f, (180.0 * (atan2(sp2C.x, sp2C.z) / M_PI)));
BoardCameraRotSet(-20.0f, atan2d(sp2C.x, sp2C.z));
}
void fn_1_602C(omObjData *arg0, w03UnkStruct5 *arg1)

View file

@ -10,6 +10,8 @@
#include "game/object.h"
#include "game/pad.h"
#include "ext_math.h"
// structs
typedef struct someBits3 { // make sure this is defined correctly
/* 0x00 */ struct {
@ -175,7 +177,7 @@ s32 fn_1_7D18(s32 arg0)
BoardSpacePosGet(0, temp_r28, &sp38);
VECSubtract(&sp38, &sp2C, &sp20);
VECNormalize(&sp20, &sp20);
BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI));
BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z));
HuPrcSleep(0x1E);
model = BoardModelIDGet(lbl_1_bss_C[7]);
Hu3DModelObjPosGet(model, "phei", &sp38);
@ -187,8 +189,8 @@ s32 fn_1_7D18(s32 arg0)
var_f31 = 39.0f;
}
sp38.x = sp38.x + (var_f31 * sin((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
sp38.z = sp38.z + (var_f31 * cos((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
sp38.x += var_f31 * sind(180.0f + BoardModelRotYGet(lbl_1_data_456));
sp38.z += var_f31 * cosd(180.0f + BoardModelRotYGet(lbl_1_data_456));
BoardPlayerPosGet(arg0, &sp2C);
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
@ -197,7 +199,7 @@ s32 fn_1_7D18(s32 arg0)
BoardModelPosGet(lbl_1_bss_C[10], &sp2C);
BoardPlayerPosGet(arg0, &sp38);
VECSubtract(&sp38, &sp2C, &sp20);
arctan = atan2(sp20.x, sp20.z) / M_PI * 180.0;
arctan = atan2d(sp20.x, sp20.z);
BoardModelRotYSet(lbl_1_bss_C[10], arctan);
HuPrcVSleep();
}
@ -589,7 +591,7 @@ void fn_1_9044(omObjData *arg0, someBits3 *arg1)
}
}
sp8.z = arg0->trans.x * sin((M_PI * arg0->trans.y) / 180.0);
sp8.z = arg0->trans.x * sind(arg0->trans.y);
BoardModelRotSetV(lbl_1_data_456, &sp8);
}
@ -626,7 +628,7 @@ void fn_1_9230(s32 arg0)
BoardModelPosGet(lbl_1_bss_C[10], &sp20);
BoardPlayerPosGet(arg0, &sp14);
VECSubtract(&sp14, &sp20, &sp8);
rotY = atan2(sp8.x, sp8.z) / M_PI * 180.0;
rotY = atan2d(sp8.x, sp8.z);
BoardModelRotYSet(lbl_1_bss_C[10], rotY);
HuPrcVSleep();
}
@ -773,8 +775,8 @@ void fn_1_97F8(s32 arg0)
}
temp_r31 = &temp_r30->unk_0C[i];
temp_r31->unk0 = 1;
temp_r31->unk8.x = sp8.x + (50.0f * sin((M_PI * var_f31) / 180.0));
temp_r31->unk8.z = sp8.z + (50.0f * cos((M_PI * var_f31) / 180.0));
temp_r31->unk8.x = sp8.x + (50.0f * sind(var_f31));
temp_r31->unk8.z = sp8.z + (50.0f * cosd(var_f31));
temp_r31->unk8.y = 600.0f + sp8.y + (500.0f * BoardRandFloat());
temp_r31->unk1 = 0;
temp_r31->unk4 = BoardRandFloat() * 360.0f;

View file

@ -255,7 +255,7 @@ s32 fn_1_9CF4(s32 arg0)
BoardSpacePosGet(0, temp_r29, &sp38);
VECSubtract(&sp38, &sp2C, &sp20);
VECNormalize(&sp20, &sp20);
BoardPlayerRotYSet(arg0, (f32)(180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)));
BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z));
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
while (GWPlayer[arg0].moving != 0) {
@ -288,11 +288,11 @@ void fn_1_9FE4(void)
f32 var_f31;
BoardModelPosGet(lbl_1_bss_C[11], &sp24);
sp18.x = (-3179.800048828125 + (200.0 * sin(0.0)));
sp18.z = (-907.7000122070313 + 200.0 * cos(0.0));
sp18.x = -3179.8f + 200.0 * sin(0.0);
sp18.z = -907.7f + 200.0 * cos(0.0);
sp18.y = sp24.y;
VECSubtract(&sp18, &sp24, &spC);
temp_f30 = (atan2(spC.z, spC.x) / M_PI * 180.0);
temp_f30 = atan2d(spC.z, spC.x);
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, HU3D_MOTATTR_LOOP);
@ -861,7 +861,7 @@ void fn_1_B748(omObjData *arg0, someBits2 *arg1)
BoardModelPosSetV(temp_r29, &sp8);
BoardModelRotYSet(temp_r29, 8.0f + BoardModelRotYGet(temp_r29));
BoardModelScaleGet(temp_r29, &sp14);
sp14.x = sp14.y = sp14.z = cos(M_PI * temp_f0 / 180.0);
sp14.x = sp14.y = sp14.z = cosd(temp_f0);
BoardModelScaleSetV(temp_r29, &sp14);
arg1->unk1 += 4;
return;

View file

@ -6,6 +6,8 @@
#include "game/board/player.h"
#include "game/hsfdraw.h"
#include "ext_math.h"
//BSS
char lbl_1_bss_130[8];
omObjData* lbl_1_bss_12C;
@ -167,7 +169,7 @@ s32 fn_1_6898(s32 arg0) {
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "hei01", &sp20);
BoardPlayerPosGet(arg0, &sp14);
VECSubtract(&sp20, &sp14, &sp8);
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / M_PI);
temp_f31 = atan2d(sp8.x, sp8.z);
BoardCameraTargetModelSet(lbl_1_data_388);
BoardPlayerMotBlendSet(arg0, temp_f31, 15);
@ -456,10 +458,10 @@ void fn_1_767C(omObjData* arg0) {
if ((lbl_1_data_388 != -1) && (lbl_1_bss_124 == 0)) {
temp_r31->unk_04 += 3.0f;
if (temp_r31->unk_04 >= 360.0f) {
temp_r31->unk_04 = (f32) (temp_r31->unk_04 - 360.0f);
temp_r31->unk_04 -= 360.0f;
}
BoardModelPosGet(lbl_1_data_388, &sp8);
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((M_PI * (f64) temp_r31->unk_04) / 180.0))));
sp8.y += 0.25 * (2.0 * sind(temp_r31->unk_04));
BoardModelPosSetV(lbl_1_data_388, &sp8);
}
}

View file

@ -13,6 +13,8 @@
#include "game/board/main.h"
#include "game/objsub.h"
#include "ext_math.h"
void fn_1_1358(void);
void fn_1_152C(void);
s32 fn_1_15E8(void);
@ -26,7 +28,6 @@ void fn_1_2AC0(void);
void fn_1_2818(void);
void fn_1_2A40(void);
void fn_1_2B44(void);
double atan2(double y, double x);
//data
s16 lbl_1_data_280 = -1;
@ -155,7 +156,7 @@ s32 fn_1_1650(s32 arg0) {
BoardSpacePosGet(0, temp2, &sp38);
BoardPlayerPosGet(arg0, &sp2C);
VECSubtract(&sp38, &sp2C, &sp20);
temp = (atan2(-sp20.x, -sp20.z) / M_PI) * 180.0f;
temp = atan2d(-sp20.x, -sp20.z);
BoardPlayerRotYSet(arg0, temp);
sp14.x = 0.0f;
sp14.y = 100.0f;
@ -539,7 +540,7 @@ void fn_1_26E0(s32 arg0) {
BoardPlayerPosGet(arg0, &sp14);
VECSubtract(&sp20, &sp14, &sp8);
VECNormalize(&sp8, &sp8);
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / M_PI));
temp = atan2d(-sp8.x, -sp8.z);
BoardPlayerRotYSet(arg0, temp);
BoardCameraViewSet(1);
BoardCameraTargetPlayerSet(arg0);

View file

@ -11,6 +11,8 @@
#include "game/board/player.h"
#include "game/board/window.h"
#include "ext_math.h"
// bss
s16 lbl_1_bss_72[2];
s16 lbl_1_bss_6C[3];
@ -179,7 +181,7 @@ void fn_1_4034(s32 arg0)
var_r27 = arg0 + 1;
}
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_118), lbl_1_data_22C[var_r27], &sp34);
temp_f25 = (180.0 * (atan2((sp34.x - sp40.x), (sp34.z - sp40.z)) / M_PI));
temp_f25 = atan2d(sp34.x - sp40.x, sp34.z - sp40.z);
BoardModelMotionShiftSet(lbl_1_bss_64, 2, 0.0f, 10.0f, HU3D_MOTATTR_LOOP);
while (fn_1_1208(lbl_1_bss_64, temp_f25, 10.0f) == 0) {
@ -236,7 +238,7 @@ loop_37:
}
BoardModelPosGet(lbl_1_bss_64, &sp40);
BoardPlayerPosGet(lbl_1_bss_68, &sp28);
var_f27 = 180.0 * (atan2((sp40.x - sp28.x), (sp40.z - sp28.z)) / M_PI);
var_f27 = atan2d(sp40.x - sp28.x, sp40.z - sp28.z);
BoardPlayerMotBlendSet(lbl_1_bss_68, var_f27, 0xF);
while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) {
@ -352,7 +354,7 @@ void fn_1_4EB4(s32 arg1, s32 arg2, Vec *arg3)
BoardPlayerIdleSet(lbl_1_bss_68);
HuPrcSleep(8);
BoardSpacePosGet(0, arg2, &sp3C);
var_f28 = 180.0 * (atan2((sp3C.x - sp30.x), (sp3C.z - sp30.z)) / M_PI);
var_f28 = atan2d(sp3C.x - sp30.x, sp3C.z - sp30.z);
BoardPlayerMotBlendSet(lbl_1_bss_68, var_f28, 0xF);
while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) {
@ -486,7 +488,7 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec *arg2)
VECAdd(&sp58, &sp40, &sp58);
sp64 = sp58;
if (var_r29 == 0) {
sp58.y += 250.0 * sin((M_PI * var_f28) / 180.0);
sp58.y += 250.0 * sind(var_f28);
var_f28 -= 2.5f;
if (var_f28 < -540.0f) {
var_f28 = -540.0f;
@ -521,7 +523,7 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec *arg2)
var_r29--;
}
BoardModelPosSetV(lbl_1_bss_64, &sp58);
sp28.x = sp34.x = (45.0 * -sin((M_PI * var_f28) / 180.0));
sp28.x = sp34.x = 45.0 * -sind(var_f28);
BoardModelRotSetV(lbl_1_bss_64, &sp34);
BoardPlayerRotSetV(lbl_1_bss_68, &sp28);
sp4C = sp58;
@ -540,7 +542,7 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec *arg2)
BoardPlayerIdleSet(lbl_1_bss_68);
HuPrcSleep(8);
BoardSpacePosGet(0, arg1, &sp58);
var_f27 = (180.0 * (atan2((sp58.x - sp4C.x), (sp58.z - sp4C.z)) / M_PI));
var_f27 = atan2d(sp58.x - sp4C.x, sp58.z - sp4C.z);
BoardPlayerMotBlendSet(lbl_1_bss_68, var_f27, 0xF);
while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) {
@ -599,8 +601,8 @@ void fn_1_62AC(s32 arg0, Vec *arg1)
sp1C = sp28;
sp10 = sp28;
VECScale(&sp1C, &sp1C, sp8[arg0]);
sp1C.y += (250.0 * sin((M_PI * var_f31) / 180.0));
var_f30 = (250.0 * -cos((M_PI * var_f31) / 180.0));
sp1C.y += 250.0 * sind(var_f31);
var_f30 = 250.0 * -cosd(var_f31);
VECScale(&sp10, &sp10, var_f30);
VECAdd(&sp10, &sp1C, &sp1C);
VECAdd(&sp1C, &sp34, &sp1C);

View file

@ -10,6 +10,8 @@
#include "game/board/player.h"
#include "game/board/window.h"
#include "ext_math.h"
// data
s32 lbl_1_data_150[5] = {
DATA_MAKE_NUM(DATADIR_W05, 0x21), DATA_MAKE_NUM(DATADIR_W05, 0x22), DATA_MAKE_NUM(DATADIR_W05, 0x23),
@ -75,7 +77,7 @@ void fn_1_155C(void) {
temp_f30 = BoardPlayerRotYGet(lbl_1_bss_28);
BoardPlayerPosGet(lbl_1_bss_28, &sp58);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_118), "hotel1", &sp64);
temp_f31 = 180.0 * (atan2((sp64.x - sp58.x), (sp64.z - sp58.z)) / M_PI);
temp_f31 = atan2d(sp64.x - sp58.x, sp64.z - sp58.z);
BoardPlayerMotBlendSet(lbl_1_bss_28, temp_f31, 0xF);
BoardCameraViewSet(2);
@ -103,7 +105,7 @@ void fn_1_155C(void) {
HuPrcVSleep();
}
BoardModelPosSetV(lbl_1_bss_14[4], &sp28);
temp_f31 = (180.0 * (atan2((sp58.x - sp28.x), (sp58.z - sp28.z)) / M_PI));
temp_f31 = atan2d(sp58.x - sp28.x, sp58.z - sp28.z);
while (fn_1_1208(lbl_1_bss_14[4], temp_f31, 10.0f) == 0) {
HuPrcVSleep();
@ -266,13 +268,13 @@ void fn_1_1E44(void) {
HuPrcVSleep();
}
BoardModelPosSetV(lbl_1_bss_14[4], &sp2C);
temp_f31 = (180.0 * (atan2((sp50.x - sp2C.x), (sp50.z - sp2C.z)) / M_PI));
temp_f31 = atan2d(sp50.x - sp2C.x, sp50.z - sp2C.z);
while (fn_1_1208(lbl_1_bss_14[4], temp_f31, 10.0f) == 0) {
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, HU3D_MOTATTR_LOOP);
temp_f31 = 180.0 * (atan2((sp2C.x - sp50.x), (sp2C.z - sp50.z)) / M_PI);
temp_f31 = atan2d(sp2C.x - sp50.x, sp2C.z - sp50.z);
BoardPlayerMotBlendSet(lbl_1_bss_28, temp_f31, 0xF);
while (BoardPlayerMotBlendCheck(lbl_1_bss_28) == 0) {

View file

@ -14,6 +14,9 @@
#include "game/board/window.h"
#include "ext_math.h"
s16 lbl_1_bss_102[3];
s16 lbl_1_bss_100;
s16 lbl_1_bss_FE;
@ -226,7 +229,7 @@ void fn_1_9F24(omObjData *arg0)
temp_r31->unk_08++;
}
sp18 = temp_r31->unk_0C[temp_r31->unk_08];
var_f31 = (180.0 * (atan2((sp18.x - sp24.x), (sp18.z - sp24.z)) / M_PI));
var_f31 = atan2d(sp18.x - sp24.x, sp18.z - sp24.z);
BoardPlayerRotYSet(lbl_1_bss_C0, var_f31);
spC = temp_r31->unk_0C[temp_r31->unk_08];
spC.y += 50.0f;
@ -387,7 +390,7 @@ void fn_1_AB24(void)
spC = temp_r30->data;
BoardPlayerPosGet(lbl_1_bss_C0, &sp28);
BoardModelPosGet(lbl_1_bss_14[5], &sp1C);
var_f30 = (180.0 * (atan2((sp1C.z - sp28.z), (sp1C.x - sp28.x)) / M_PI));
var_f30 = atan2d(sp1C.z - sp28.z, sp1C.x - sp28.x);
BoardPlayerMotBlendSet(lbl_1_bss_C0, var_f30, 0xF);
while (BoardPlayerMotBlendCheck(lbl_1_bss_C0) == 0) {

View file

@ -12,6 +12,8 @@
#include "game/board/model.h"
#include "game/board/window.h"
#include "ext_math.h"
// data
s32 lbl_1_data_310[2] = { 0x79, 0x7A };
char *lbl_1_data_330[3] = { "suika1", "suika2", "suika3" };
@ -459,7 +461,7 @@ void fn_1_80D8(omObjData *arg0)
}
if ((spC != 0) || (sp10 != 0)) {
var_r29 = -1;
var_f31 = (180.0 * (atan2(spC, sp10) / M_PI));
var_f31 = atan2d(spC, sp10);
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
@ -695,7 +697,7 @@ void fn_1_896C(void)
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
BoardModelPosGet(lbl_1_bss_A4[var_r31], &sp18);
sp18.y = (sp18.y + (0.25 * sin((M_PI * var_f30) / 180.0)));
sp18.y += 0.25 * sind(var_f30);
BoardModelPosSetV(lbl_1_bss_A4[var_r31], &sp18);
}
}
@ -810,8 +812,8 @@ void fn_1_9268(ModelData *model, ParticleData *particle, f32 (*matrix)[4])
if (var_r28 != particle->unk_30) {
temp_f30 = 360.0f * (0.003921569f * (s32)(frand() & 0xFF));
temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (s32)(frand() & 0xFF))));
var_r31->unk34.x = sp8.x + (temp_f29 * sin((M_PI * temp_f30) / 180.0));
var_r31->unk34.z = sp8.z + (temp_f29 * cos((M_PI * temp_f30) / 180.0));
var_r31->unk34.x = sp8.x + temp_f29 * sind(temp_f30);
var_r31->unk34.z = sp8.z + temp_f29 * cosd(temp_f30);
var_r31->unk34.y = sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (s32)(frand() & 0xFF)))));
var_r31->unk08.x = 0.5f + (3.0f * (0.003921569f * (s32)(frand() & 0xFF)));
var_r31->unk08.y = 0.3f + (2.0f * (0.003921569f * (s32)(frand() & 0xFF)));

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,43 @@
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h"
u32 gTRKDispatchTableSize;
struct DispatchEntry {
int (*fn)(TRKBuffer*);
};
struct DispatchEntry gTRKDispatchTable[33] = {
{ &TRKDoUnsupported }, { &TRKDoConnect }, { &TRKDoDisconnect },
{ &TRKDoReset }, { &TRKDoVersions }, { &TRKDoSupportMask },
{ &TRKDoCPUType }, { &TRKDoUnsupported }, { &TRKDoUnsupported },
{ &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported },
{ &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported },
{ &TRKDoUnsupported }, { &TRKDoReadMemory }, { &TRKDoWriteMemory },
{ &TRKDoReadRegisters }, { &TRKDoWriteRegisters }, { &TRKDoUnsupported },
{ &TRKDoUnsupported }, { &TRKDoFlushCache }, { &TRKDoUnsupported },
{ &TRKDoContinue }, { &TRKDoStep }, { &TRKDoStop },
{ &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported },
{ &TRKDoUnsupported }, { &TRKDoUnsupported },
};
DSError TRKInitializeDispatcher()
{
gTRKDispatchTableSize = 32;
return DS_NoError;
}
DSError TRKDispatchMessage(TRKBuffer* buffer)
{
DSError error;
u8 command;
error = DS_DispatchError;
TRKSetBufferPosition(buffer, 0);
TRKReadBuffer1_ui8(buffer, &command);
if (command < gTRKDispatchTableSize) {
error = gTRKDispatchTable[command].fn(buffer);
}
return error;
}

View file

@ -0,0 +1,137 @@
#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h"
#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h"
#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h"
#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h"
#include "dolphin/ar.h"
#include "stddef.h"
#define EXCEPTIONMASK_ADDR 0x80000044
static u32 lc_base;
static u32 TRK_ISR_OFFSETS[15] = { PPC_SystemReset,
PPC_MachineCheck,
PPC_DataStorage,
PPC_InstructionStorage,
PPC_ExternalInterrupt,
PPC_Alignment,
PPC_Program,
PPC_FloatingPointUnavaiable,
PPC_Decrementer,
PPC_SystemCall,
PPC_Trace,
PPC_PerformanceMonitor,
PPC_InstructionAddressBreakpoint,
PPC_SystemManagementInterrupt,
PPC_ThermalManagementInterrupt };
__declspec(section ".init") void __TRK_reset(void) { __TRK_copy_vectors(); }
asm void InitMetroTRK()
{
#ifdef __MWERKS__ // clang-format off
nofralloc
addi r1, r1, -4
stw r3, 0(r1)
lis r3, gTRKCPUState@h
ori r3, r3, gTRKCPUState@l
stmw r0, ProcessorState_PPC.Default.GPR(r3) //Save the gprs
lwz r4, 0(r1)
addi r1, r1, 4
stw r1, ProcessorState_PPC.Default.GPR[1](r3)
stw r4, ProcessorState_PPC.Default.GPR[3](r3)
mflr r4
stw r4, ProcessorState_PPC.Default.LR(r3)
stw r4, ProcessorState_PPC.Default.PC(r3)
mfcr r4
stw r4, ProcessorState_PPC.Default.CR(r3)
//???
mfmsr r4
ori r3, r4, (1 << (31 - 16))
xori r3, r3, (1 << (31 - 16))
mtmsr r3
mtsrr1 r4 //Copy msr to srr1
//Save misc registers to gTRKCPUState
bl TRKSaveExtended1Block
lis r3, gTRKCPUState@h
ori r3, r3, gTRKCPUState@l
lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs
//Reset IABR and DABR
li r0, 0
mtspr 0x3f2, r0
mtspr 0x3f5, r0
//Restore stack pointer
lis r1, 0x80426008@h
ori r1, r1, 0x80426008@l
mr r3, r5
bl InitMetroTRKCommTable //Initialize comm table
/*
If InitMetroTRKCommTable returned 1 (failure), an invalid hardware
id or the id for GDEV was somehow passed. Since only BBA or NDEV
are supported, we return early. Otherwise, we proceed with
starting up TRK.
*/
cmpwi r3, 1
bne initCommTableSuccess
/*
BUG: The code probably orginally reloaded gTRKCPUState here, but
as is it will read the returned value of InitMetroTRKCommTable
as a TRKCPUState struct pointer, causing the CPU to return to
a garbage code address.
*/
lwz r4, ProcessorState_PPC.Default.LR(r3)
mtlr r4
lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs
blr
initCommTableSuccess:
b TRK_main //Jump to TRK_main
#endif // clang-format on
}
void EnableMetroTRKInterrupts(void) { EnableEXI2Interrupts(); }
u32 TRKTargetTranslate(u32 param_0)
{
if (param_0 >= lc_base) {
if ((param_0 < lc_base + 0x4000)
&& ((gTRKCPUState.Extended1.DBAT3U & 3) != 0)) {
return param_0;
}
}
return param_0 & 0x3FFFFFFF | 0x80000000;
}
extern u8 gTRKInterruptVectorTable[];
void TRK_copy_vector(u32 offset)
{
void* destPtr = (void*)TRKTargetTranslate(offset);
TRK_memcpy(destPtr, gTRKInterruptVectorTable + offset, 0x100);
TRK_flush_cache(destPtr, 0x100);
}
void __TRK_copy_vectors(void)
{
int i;
u32 mask;
mask = *(u32*)TRKTargetTranslate(0x44);
for (i = 0; i <= 14; ++i) {
if (mask & (1 << i)) {
TRK_copy_vector(TRK_ISR_OFFSETS[i]);
}
}
}
DSError TRKInitializeTarget()
{
gTRKState.isStopped = TRUE;
gTRKState.msr = __TRK_get_MSR();
lc_base = 0xE0000000;
return DS_NoError;
}

View file

@ -0,0 +1,116 @@
#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h"
#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h"
#include "OdemuExi2/odemuexi/DebuggerDriver.h"
#include "amcstubs/AmcExi2Stubs.h"
#include "PowerPC_EABI_Support/MetroTRK/trk.h"
DBCommTable gDBCommTable = {};
asm void TRKLoadContext(OSContext* ctx, u32)
{
#ifdef __MWERKS__ // clang-format off
nofralloc
lwz r0, OSContext.gpr[0](r3)
lwz r1, OSContext.gpr[1](r3)
lwz r2, OSContext.gpr[2](r3)
lhz r5, OSContext.state(r3)
rlwinm. r6, r5, 0, 0x1e, 0x1e
beq lbl_80371C1C
rlwinm r5, r5, 0, 0x1f, 0x1d
sth r5, OSContext.state(r3)
lmw r5, OSContext.gpr[5](r3)
b lbl_80371C20
lbl_80371C1C:
lmw r13, OSContext.gpr[13](r3)
lbl_80371C20:
mr r31, r3
mr r3, r4
lwz r4, OSContext.cr(r31)
mtcrf 0xff, r4
lwz r4, OSContext.lr(r31)
mtlr r4
lwz r4, OSContext.ctr(r31)
mtctr r4
lwz r4, OSContext.xer(r31)
mtxer r4
mfmsr r4
rlwinm r4, r4, 0, 0x11, 0xf //Turn off external exceptions
rlwinm r4, r4, 0, 0x1f, 0x1d //Turn off recoverable exception flag
mtmsr r4
mtsprg 1, r2
lwz r4, OSContext.gpr[3](r31)
mtsprg 2, r4
lwz r4, OSContext.gpr[4](r31)
mtsprg 3, r4
lwz r2, OSContext.srr0(r31)
lwz r4, OSContext.srr1(r31)
lwz r31, OSContext.gpr[31](r31)
b TRKInterruptHandler
#endif // clang-format on
}
void TRKEXICallBack(__OSInterrupt param_0, OSContext* ctx)
{
OSEnableScheduler();
TRKLoadContext(ctx, 0x500);
}
int InitMetroTRKCommTable(int hwId)
{
int result;
if (hwId == HARDWARE_GDEV) {
result = Hu_IsStub();
gDBCommTable.initialize_func = DBInitComm;
gDBCommTable.init_interrupts_func = DBInitInterrupts;
gDBCommTable.peek_func = DBQueryData;
gDBCommTable.read_func = DBRead;
gDBCommTable.write_func = DBWrite;
gDBCommTable.open_func = DBOpen;
gDBCommTable.close_func = DBClose;
} else {
result = AMC_IsStub();
gDBCommTable.initialize_func = EXI2_Init;
gDBCommTable.init_interrupts_func = EXI2_EnableInterrupts;
gDBCommTable.peek_func = EXI2_Poll;
gDBCommTable.read_func = EXI2_ReadN;
gDBCommTable.write_func = EXI2_WriteN;
gDBCommTable.open_func = EXI2_Reserve;
gDBCommTable.close_func = EXI2_Unreserve;
}
return result;
}
void TRKUARTInterruptHandler() { }
DSError TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2,
volatile u8** param_3)
{
gDBCommTable.initialize_func(param_3, TRKEXICallBack);
return DS_NoError;
}
void EnableEXI2Interrupts(void) { gDBCommTable.init_interrupts_func(); }
int TRKPollUART(void) { return gDBCommTable.peek_func(); }
UARTError TRKReadUARTN(void* bytes, u32 length)
{
int readErr = gDBCommTable.read_func(bytes, length);
return readErr == 0 ? 0 : -1;
}
UARTError TRKWriteUARTN(const void* bytes, u32 length)
{
int writeErr = gDBCommTable.write_func(bytes, length);
return writeErr == 0 ? 0 : -1;
}
void ReserveEXI2Port(void) { gDBCommTable.open_func(); }
void UnreserveEXI2Port(void) { gDBCommTable.close_func(); }
void TRK_board_display(char* str) { OSReport(str); }

View file

@ -0,0 +1,26 @@
#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h"
asm void TRK_flush_cache(register void* param_1, register int param_2)
{
#ifdef __MWERKS__ // clang-format off
nofralloc
lis r5, 0xFFFF
ori r5, r5, 0xFFF1
and r5, r5, param_1
subf r3, r5, param_1
add r4, param_2, r3
loop:
dcbst 0, r5
dcbf 0, r5
sync
icbi 0, r5
addic r5, r5, 8
addic. r4, r4, -8
bge loop
isync
blr
#endif // clang-format on
}

View file

@ -0,0 +1,17 @@
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h"
static DSError TRK_mainError;
DSError TRK_main(void)
{
TRK_mainError = TRKInitializeNub();
if (TRK_mainError == DS_NoError) {
TRKNubWelcome();
TRKNubMainLoop();
}
TRK_mainError = TRKTerminateNub();
return TRK_mainError;
}

View file

@ -0,0 +1,70 @@
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h"
#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h"
#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h"
void TRKHandleRequestEvent(TRKEvent* event)
{
TRKBuffer* buffer = TRKGetBuffer(event->msgBufID);
TRKDispatchMessage(buffer);
}
void TRKHandleSupportEvent(TRKEvent* event) { TRKTargetSupportRequest(); }
void TRKIdle()
{
if (TRKTargetStopped() == FALSE) {
TRKTargetContinue();
}
}
void TRKNubMainLoop(void)
{
void* msg;
TRKEvent event;
BOOL isShutdownRequested;
BOOL isNewInput;
isShutdownRequested = FALSE;
isNewInput = FALSE;
while (isShutdownRequested == FALSE) {
if (TRKGetNextEvent(&event) != FALSE) {
isNewInput = FALSE;
switch (event.eventType) {
case NUBEVENT_Null:
break;
case NUBEVENT_Request:
TRKHandleRequestEvent(&event);
break;
case NUBEVENT_Shutdown:
isShutdownRequested = TRUE;
break;
case NUBEVENT_Breakpoint:
case NUBEVENT_Exception:
TRKTargetInterrupt(&event);
break;
case NUBEVENT_Support:
TRKHandleSupportEvent(&event);
break;
}
TRKDestructEvent(&event);
continue;
}
if ((isNewInput == FALSE) || (*(u8*)gTRKInputPendingPtr != '\0')) {
isNewInput = TRUE;
TRKGetInput();
continue;
}
TRKIdle();
isNewInput = FALSE;
}
}

View file

@ -0,0 +1,83 @@
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h"
#include "dolphin/types.h"
void TRK_fill_mem(void *dest, int value, unsigned long length)
{
#define cDest ((unsigned char *)dest)
#define lDest ((unsigned long *)dest)
unsigned long val = (unsigned char)value;
unsigned long i;
lDest = (unsigned long *)dest;
cDest = (unsigned char *)dest;
cDest--;
if (length >= 32) {
i = ~(unsigned long)dest & 3;
if (i) {
length -= i;
do {
*++cDest = val;
} while (--i);
}
if (val) {
val |= val << 24 | val << 16 | val << 8;
}
lDest = (unsigned long *)(cDest + 1) - 1;
i = length >> 5;
if (i) {
do {
*++lDest = val;
*++lDest = val;
*++lDest = val;
*++lDest = val;
*++lDest = val;
*++lDest = val;
*++lDest = val;
*++lDest = val;
} while (--i);
}
i = (length & 31) >> 2;
if (i) {
do {
*++lDest = val;
} while (--i);
}
cDest = (unsigned char *)(lDest + 1) - 1;
length &= 3;
}
if (length) {
do {
*++cDest = val;
} while (--length);
}
#undef cDest
#undef lDest
}
__declspec(section ".init") void *TRK_memcpy(void *dst, const void *src, size_t n)
{
const char *p;
char *q;
for (p = (const char *)src - 1, q = (char *)dst - 1, n++; --n;)
*++q = *++p;
return dst;
}
__declspec(section ".init") void *TRK_memset(void *dst, int val, size_t n)
{
TRK_fill_mem(dst, val, n);
return dst;
}

View file

@ -0,0 +1,248 @@
#include "TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h"
#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h"
extern u8 gTRKRestoreFlags[9 + 3 /* padding */];
asm void TRKSaveExtended1Block()
{
#ifdef __MWERKS__ // clang-format off
nofralloc
lis r2, gTRKCPUState@h /* 0x8044F338@h */
ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */
mfsr r16, 0
mfsr r17, 1
mfsr r18, 2
mfsr r19, 3
mfsr r20, 4
mfsr r21, 5
mfsr r22, 6
mfsr r23, 7
mfsr r24, 8
mfsr r25, 9
mfsr r26, 0xa
mfsr r27, 0xb
mfsr r28, 0xc
mfsr r29, 0xd
mfsr r30, 0xe
mfsr r31, 0xf
stmw r16, 0x1a8(r2)
mftb r10, 0x10c
mftbu r11
mfspr r12, 0x3f0
mfspr r13, 0x3f1
mfspr r14, 0x1b
mfpvr r15
mfibatu r16, 0
mfibatl r17, 0
mfibatu r18, 1
mfibatl r19, 1
mfibatu r20, 2
mfibatl r21, 2
mfibatu r22, 3
mfibatl r23, 3
mfdbatu r24, 0
mfdbatl r25, 0
mfdbatu r26, 1
mfdbatl r27, 1
mfdbatu r28, 2
mfdbatl r29, 2
mfdbatu r30, 3
mfdbatl r31, 3
stmw r10, 0x1e8(r2)
mfspr r22, 0x19
mfdar r23
mfdsisr r24
mfspr r25, 0x110
mfspr r26, 0x111
mfspr r27, 0x112
mfspr r28, 0x113
li r29, 0
mfspr r30, 0x3f2
mfspr r31, 0x11a
stmw r22, 0x25c(r2)
mfspr r20, 0x390
mfspr r21, 0x391
mfspr r22, 0x392
mfspr r23, 0x393
mfspr r24, 0x394
mfspr r25, 0x395
mfspr r26, 0x396
mfspr r27, 0x397
mfspr r28, 0x398
mfspr r29, 0x399
mfspr r30, 0x39a
mfspr r31, 0x39b
stmw r20, 0x2fc(r2)
b lbl_80371340
mfspr r16, 0x3a0
mfspr r17, 0x3a7
mfspr r18, 0x3a8
mfspr r19, 0x3a9
mfspr r20, 0x3aa
mfspr r21, 0x3ab
mfspr r22, 0x3ac
mfspr r23, 0x3ad
mfspr r24, 0x3ae
mfspr r25, 0x3af
mfspr r26, 0x3b0
mfspr r27, 0x3b7
mfspr r28, 0x3bf
mfspr r29, 0x3f6
mfspr r30, 0x3f7
mfspr r31, 0x3ff
stmw r16, 0x2b8(r2)
lbl_80371340:
mfspr r19, 0x3f5
mfspr r20, 0x3b9
mfspr r21, 0x3ba
mfspr r22, 0x3bd
mfspr r23, 0x3be
mfspr r24, 0x3bb
mfspr r25, 0x3b8
mfspr r26, 0x3bc
mfspr r27, 0x3fc
mfspr r28, 0x3fd
mfspr r29, 0x3fe
mfspr r30, 0x3FB
mfspr r31, 0x3f9
stmw r19, 0x284(r2)
b end
mfspr r25, 0x3d0
mfspr r26, 0x3d1
mfspr r27, 0x3d2
mfspr r28, 0x3d3
mfspr r29, 0x3D4
mfspr r30, 0x3D5
mfspr r31, 0x3d6
stmw r25, 0x240(r2)
mfspr r31, 0x16
stw r31, 0x278(r2)
end:
blr
#endif // clang-format on
}
asm void TRKRestoreExtended1Block()
{
#ifdef __MWERKS__ // clang-format off
nofralloc
lis r2, gTRKCPUState@h /* 0x8044F338@h */
ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */
lis r5, gTRKRestoreFlags@h /* 0x803D3238@h */
ori r5, r5, gTRKRestoreFlags@l /* 0x803D3238@l */
lbz r3, 0(r5)
lbz r6, 1(r5)
li r0, 0
stb r0, 0(r5)
stb r0, 1(r5)
cmpwi r3, 0
beq lbl_803713E4
lwz r24, 0x1e8(r2)
lwz r25, 0x1ec(r2)
mttbl r24
mttbu r25
lbl_803713E4:
lmw r20, 0x2fc(r2)
mtspr 0x390, r20
mtspr 0x391, r21
mtspr 0x392, r22
mtspr 0x393, r23
mtspr 0x394, r24
mtspr 0x395, r25
mtspr 0x396, r26
mtspr 0x397, r27
mtspr 0x398, r28
mtspr 0x39a, r30
mtspr 0x39b, r31
b lbl_80371430
lmw r26, 0x2e0(r2)
mtspr 0x3b0, r26
mtspr 0x3b7, r27
mtspr 0x3f6, r29
mtspr 0x3f7, r30
mtspr 0x3ff, r31
lbl_80371430:
lmw r19, 0x284(r2)
mtspr 0x3f5, r19
mtspr 0x3b9, r20
mtspr 0x3ba, r21
mtspr 0x3bd, r22
mtspr 0x3be, r23
mtspr 0x3bb, r24
mtspr 0x3b8, r25
mtspr 0x3bc, r26
mtspr 0x3fc, r27
mtspr 0x3fd, r28
mtspr 0x3fe, r29
mtspr 0x3FB, r30
mtspr 0x3f9, r31
b lbl_8037149C
cmpwi r6, 0
beq lbl_8037147C
lwz r26, 0x278(r2)
mtspr 0x16, r26
lbl_8037147C:
lmw r25, 0x240(r2)
mtspr 0x3d0, r25
mtspr 0x3d1, r26
mtspr 0x3d2, r27
mtspr 0x3d3, r28
mtspr 0x3D4, r29
mtspr 0x3D5, r30
mtspr 0x3d6, r31
lbl_8037149C:
lmw r16, 0x1a8(r2)
mtsr 0, r16
mtsr 1, r17
mtsr 2, r18
mtsr 3, r19
mtsr 4, r20
mtsr 5, r21
mtsr 6, r22
mtsr 7, r23
mtsr 8, r24
mtsr 9, r25
mtsr 0xa, r26
mtsr 0xb, r27
mtsr 0xc, r28
mtsr 0xd, r29
mtsr 0xe, r30
mtsr 0xf, r31
lmw r12, 0x1f0(r2)
mtspr 0x3f0, r12
mtspr 0x3f1, r13
mtspr 0x1b, r14
mtspr 0x11f, r15
mtibatu 0, r16
mtibatl 0, r17
mtibatu 1, r18
mtibatl 1, r19
mtibatu 2, r20
mtibatl 2, r21
mtibatu 3, r22
mtibatl 3, r23
mtdbatu 0, r24
mtdbatl 0, r25
mtdbatu 1, r26
mtdbatl 1, r27
mtdbatu 2, r28
mtdbatl 2, r29
mtdbatu 3, r30
mtdbatl 3, r31
lmw r22, 0x25c(r2)
mtspr 0x19, r22
mtdar r23
mtdsisr r24
mtspr 0x110, r25
mtspr 0x111, r26
mtspr 0x112, r27
mtspr 0x113, r28
mtspr 0x3f2, r30
mtspr 0x11a, r31
blr
#endif // clang-format on
}
u32 TRKTargetCPUMinorType(void) { return 0x54; }

View file

@ -0,0 +1,9 @@
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h"
#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h"
#include "PowerPC_EABI_Support/MetroTRK/trk.h"
DSError TRKMessageSend(TRK_Msg* msg)
{
DSError write_err = TRKWriteUARTN(&msg->m_msg, msg->m_msgLength);
return DS_NoError;
}

View file

@ -0,0 +1,359 @@
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h"
#include "stddef.h"
TRKBuffer gTRKMsgBufs[3];
void TRKSetBufferUsed(TRKBuffer* msg, BOOL state) { msg->isInUse = state; }
DSError TRKInitializeMessageBuffers(void)
{
int i;
for (i = 0; i < 3; i++) {
TRKInitializeMutex(&gTRKMsgBufs[i]);
TRKAcquireMutex(&gTRKMsgBufs[i]);
TRKSetBufferUsed(&gTRKMsgBufs[i], FALSE);
TRKReleaseMutex(&gTRKMsgBufs[i]);
}
return DS_NoError;
}
DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg)
{
TRKBuffer* buf;
DSError error = DS_NoMessageBufferAvailable;
int i;
*outMsg = NULL;
for (i = 0; i < 3; i++) {
buf = TRKGetBuffer(i);
TRKAcquireMutex(buf);
if (!buf->isInUse) {
TRKResetBuffer(buf, TRUE);
TRKSetBufferUsed(buf, TRUE);
error = DS_NoError;
*outMsg = buf;
*msgID = i;
i = 3; // why not break? weird choice
}
TRKReleaseMutex(buf);
}
return error;
}
void* TRKGetBuffer(int idx)
{
TRKBuffer* buf = NULL;
if (idx >= 0 && idx < 3) {
buf = &gTRKMsgBufs[idx];
}
return buf;
}
void TRKReleaseBuffer(int idx)
{
TRKBuffer* msg;
if (idx != -1 && idx >= 0 && idx < 3) {
msg = &gTRKMsgBufs[idx];
TRKAcquireMutex(msg);
TRKSetBufferUsed(msg, FALSE);
TRKReleaseMutex(msg);
}
}
void TRKResetBuffer(TRKBuffer* msg, BOOL keepData)
{
msg->length = 0;
msg->position = 0;
if (!keepData) {
TRK_memset(msg->data, 0, TRKMSGBUF_SIZE);
}
}
DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos)
{
DSError error = DS_NoError;
if (pos > 0x880) {
error = DS_MessageBufferOverflow;
} else {
msg->position = pos;
// If the new position is past the current length,
// update the length
if (pos > msg->length) {
msg->length = pos;
}
}
return error;
}
DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length)
{
DSError error = DS_NoError; // r31
u32 bytesLeft;
// Return if no bytes to append
if (length == 0) {
return DS_NoError;
}
bytesLeft = 0x880 - msg->position;
// If there isn't enough space left in the buffer, change the number
// of bytes to append to the remaning number of bytes
if (bytesLeft < length) {
error = DS_MessageBufferOverflow;
length = bytesLeft;
}
if (length == 1) {
// If the length of bytes to append is 1, just copy the byte over
msg->data[msg->position] = ((u8*)data)[0];
} else {
// Otherwise, use memcpy
TRK_memcpy(msg->data + msg->position, data, length);
}
// Update the position and length
msg->position += length;
msg->length = msg->position;
return error;
}
DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length)
{
DSError error = DS_NoError;
unsigned int
bytesLeft; // this has to be unsigned int not u32 to match lmfao.
// Return if no bytes to read
if (length == 0) {
return DS_NoError;
}
bytesLeft = msg->length - msg->position;
// If the number of bytes to read exceeds the buffer length, change
// the length to the remaining number of bytes
if (length > bytesLeft) {
error = DS_MessageBufferReadError;
length = bytesLeft;
}
TRK_memcpy(data, msg->data + msg->position, length);
msg->position += length;
return error;
}
DSError TRKAppendBuffer1_ui16(TRKBuffer* buffer, const u16 data)
{
u8* bigEndianData;
u8* byteData;
u8 swapBuffer[sizeof(data)];
if (gTRKBigEndian) {
bigEndianData = (u8*)&data;
} else {
byteData = (u8*)&data;
bigEndianData = swapBuffer;
bigEndianData[0] = byteData[1];
bigEndianData[1] = byteData[0];
}
return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data));
}
DSError TRKAppendBuffer1_ui32(TRKBuffer* buffer, const u32 data)
{
u8* bigEndianData;
u8* byteData;
u8 swapBuffer[sizeof(data)];
if (gTRKBigEndian) {
bigEndianData = (u8*)&data;
} else {
byteData = (u8*)&data;
bigEndianData = swapBuffer;
bigEndianData[0] = byteData[3];
bigEndianData[1] = byteData[2];
bigEndianData[2] = byteData[1];
bigEndianData[3] = byteData[0];
}
return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data));
}
DSError TRKAppendBuffer1_ui64(TRKBuffer* buffer, const u64 data)
{
u8* bigEndianData;
u8* byteData;
u8 swapBuffer[sizeof(data)];
if (gTRKBigEndian) {
bigEndianData = (u8*)&data;
} else {
byteData = (u8*)&data;
bigEndianData = swapBuffer;
bigEndianData[0] = byteData[7];
bigEndianData[1] = byteData[6];
bigEndianData[2] = byteData[5];
bigEndianData[3] = byteData[4];
bigEndianData[4] = byteData[3];
bigEndianData[5] = byteData[2];
bigEndianData[6] = byteData[1];
bigEndianData[7] = byteData[0];
}
return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data));
}
DSError TRKAppendBuffer_ui8(TRKBuffer* buffer, const u8* data, int count)
{
DSError err;
int i;
for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) {
err = TRKAppendBuffer1_ui8(buffer, data[i]);
}
return err;
}
DSError TRKAppendBuffer_ui32(TRKBuffer* buffer, const u32* data, int count)
{
DSError err;
int i;
for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) {
err = TRKAppendBuffer1_ui32(buffer, data[i]);
}
return err;
}
DSError TRKReadBuffer1_ui8(TRKBuffer* buffer, u8* data)
{
return TRKReadBuffer(buffer, (void*)data, 1);
}
DSError TRKReadBuffer1_ui16(TRKBuffer* buffer, u16* data)
{
DSError err;
u8* bigEndianData;
u8* byteData;
u8 swapBuffer[sizeof(data)];
if (gTRKBigEndian) {
bigEndianData = (u8*)data;
} else {
bigEndianData = swapBuffer;
}
err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data));
if (!gTRKBigEndian && err == DS_NoError) {
byteData = (u8*)data;
byteData[0] = bigEndianData[1];
byteData[1] = bigEndianData[0];
}
return err;
}
DSError TRKReadBuffer1_ui32(TRKBuffer* buffer, u32* data)
{
DSError err;
u8* bigEndianData;
u8* byteData;
u8 swapBuffer[sizeof(data)];
if (gTRKBigEndian) {
bigEndianData = (u8*)data;
} else {
bigEndianData = swapBuffer;
}
err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data));
if (!gTRKBigEndian && err == DS_NoError) {
byteData = (u8*)data;
byteData[0] = bigEndianData[3];
byteData[1] = bigEndianData[2];
byteData[2] = bigEndianData[1];
byteData[3] = bigEndianData[0];
}
return err;
}
DSError TRKReadBuffer1_ui64(TRKBuffer* buffer, u64* data)
{
DSError err;
u8* bigEndianData;
u8* byteData;
u8 swapBuffer[sizeof(data)];
if (gTRKBigEndian) {
bigEndianData = (u8*)data;
} else {
bigEndianData = swapBuffer;
}
err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data));
if (!gTRKBigEndian && err == 0) {
byteData = (u8*)data;
byteData[0] = bigEndianData[7];
byteData[1] = bigEndianData[6];
byteData[2] = bigEndianData[5];
byteData[3] = bigEndianData[4];
byteData[4] = bigEndianData[3];
byteData[5] = bigEndianData[2];
byteData[6] = bigEndianData[1];
byteData[7] = bigEndianData[0];
}
return err;
}
DSError TRKReadBuffer_ui8(TRKBuffer* buffer, u8* data, int count)
{
DSError err;
int i;
for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) {
err = TRKReadBuffer1_ui8(buffer, &(data[i]));
}
return err;
}
DSError TRKReadBuffer_ui32(TRKBuffer* buffer, u32* data, int count)
{
DSError err;
s32 i;
for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) {
err = TRKReadBuffer1_ui32(buffer, &(data[i]));
}
return err;
}

View file

@ -0,0 +1,689 @@
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h"
#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h"
#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h"
#include "PowerPC_EABI_Support/MetroTRK/trk.h"
BOOL IsTRKConnected;
BOOL GetTRKConnected()
{
return IsTRKConnected;
}
void SetTRKConnected(BOOL connected)
{
IsTRKConnected = connected;
}
static void TRKMessageIntoReply(TRKBuffer* buffer, u8 ackCmd,
DSReplyError errSentInAck)
{
TRKResetBuffer(buffer, 1);
TRKAppendBuffer1_ui8(buffer, ackCmd);
TRKAppendBuffer1_ui8(buffer, errSentInAck);
}
DSError TRKSendACK(TRKBuffer* buffer)
{
DSError err;
int ackTries;
ackTries = 3;
do {
err = TRKMessageSend((TRK_Msg*)buffer);
--ackTries;
} while (err != DS_NoError && ackTries > 0);
return err;
}
DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID,
DSReplyError replyError)
{
TRKMessageIntoReply(buffer, commandID, replyError);
TRKSendACK(buffer);
return;
}
DSError TRKDoUnsupported(TRKBuffer* buffer)
{
return TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_UnsupportedCommandError);
}
DSError TRKDoConnect(TRKBuffer* buffer)
{
SetTRKConnected(TRUE);
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
}
DSError TRKDoDisconnect(TRKBuffer* buffer)
{
DSError error = DS_NoError;
TRKEvent event;
SetTRKConnected(FALSE);
if ((error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError))
== DS_NoError) {
TRKConstructEvent(&event, 1);
TRKPostEvent(&event);
}
return error;
}
DSError TRKDoReset(TRKBuffer* buffer)
{
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
__TRK_reset();
return DS_NoError;
}
DSError TRKDoVersions(TRKBuffer* buffer)
{
DSError error;
DSVersions versions;
if (buffer->length != 1) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
} else {
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
error = TRKTargetVersions(&versions);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, versions.kernelMajor);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, versions.kernelMinor);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, versions.protocolMajor);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, versions.protocolMinor);
if (error != DS_NoError)
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError);
else
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoSupportMask(TRKBuffer* buffer)
{
DSError error;
u8 mask[32];
if (buffer->length != 1) {
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
} else {
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
error = TRKTargetSupportMask(mask);
if (error == DS_NoError)
error = TRKAppendBuffer(buffer, mask, 32);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, 2);
if (error != DS_NoError)
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError);
else
TRKSendACK(buffer);
}
}
DSError TRKDoCPUType(TRKBuffer* buffer)
{
DSError error;
DSCPUType cputype;
if (buffer->length != 1) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
}
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
error = TRKTargetCPUType(&cputype);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, cputype.cpuMajor);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, cputype.cpuMinor);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, cputype.bigEndian);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, cputype.defaultTypeSize);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, cputype.fpTypeSize);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, cputype.extended1TypeSize);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui8(buffer, cputype.extended2TypeSize);
if (error != DS_NoError)
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError);
else
error = TRKSendACK(buffer);
return error;
}
DSError TRKDoReadMemory(TRKBuffer* buffer)
{
DSError error;
DSReplyError replyError;
u8 tempBuf[0x800];
u32 length;
u32 msg_start;
u16 msg_length;
u8 msg_options;
u8 msg_command;
if (buffer->length != 8) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command);
if (error == DS_NoError)
error = TRKReadBuffer1_ui8(buffer, &msg_options);
if (error == DS_NoError)
error = TRKReadBuffer1_ui16(buffer, &msg_length);
if (error == DS_NoError)
error = TRKReadBuffer1_ui32(buffer, &msg_start);
if (msg_options & 2) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_UnsupportedOptionError);
return error;
}
if (msg_length > 0x800) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
return error;
}
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error == DS_NoError) {
length = (u32)msg_length;
error = TRKTargetAccessMemory(
tempBuf, msg_start, &length,
(msg_options & 8) ? MEMACCESS_UserMemory : MEMACCESS_DebuggerMemory,
1);
msg_length = (u16)length;
if (error == DS_NoError)
error = TRKAppendBuffer1_ui16(buffer, msg_length);
if (error == DS_NoError)
error = TRKAppendBuffer(buffer, tempBuf, length);
}
if (error != DS_NoError) {
switch (error) {
case DS_CWDSException:
replyError = DSREPLY_CWDSException;
break;
case DS_InvalidMemory:
replyError = DSREPLY_InvalidMemoryRange;
break;
case DS_InvalidProcessID:
replyError = DSREPLY_InvalidProcessID;
break;
case DS_InvalidThreadID:
replyError = DSREPLY_InvalidThreadID;
break;
case DS_OSError:
replyError = DSREPLY_OSError;
break;
default:
replyError = DSREPLY_CWDSError;
break;
}
error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError);
} else {
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoWriteMemory(TRKBuffer* buffer)
{
DSError error;
DSReplyError replyError;
u8 tmpBuffer[0x800];
u32 length;
u32 msg_start;
u16 msg_length;
u8 msg_options;
u8 msg_command;
if (buffer->length <= 8) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command);
if (error == DS_NoError)
error = TRKReadBuffer1_ui8(buffer, &msg_options);
if (error == DS_NoError)
error = TRKReadBuffer1_ui16(buffer, &msg_length);
if (error == DS_NoError)
error = TRKReadBuffer1_ui32(buffer, &msg_start);
if (msg_options & 2) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_UnsupportedOptionError);
return error;
}
if ((buffer->length != msg_length + 8) || (msg_length > 0x800)) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
} else {
if (error == DS_NoError) {
length = (u32)msg_length;
error = TRKReadBuffer(buffer, tmpBuffer, length);
if (error == DS_NoError) {
error = TRKTargetAccessMemory(tmpBuffer, msg_start, &length,
(msg_options & 8)
? MEMACCESS_UserMemory
: MEMACCESS_DebuggerMemory,
FALSE);
}
msg_length = (u16)length;
}
if (error == DS_NoError)
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error == DS_NoError)
error = TRKAppendBuffer1_ui16(buffer, msg_length);
if (error != DS_NoError) {
switch (error) {
case DS_CWDSException:
replyError = DSREPLY_CWDSException;
break;
case DS_InvalidMemory:
replyError = DSREPLY_InvalidMemoryRange;
break;
case DS_InvalidProcessID:
replyError = DSREPLY_InvalidProcessID;
break;
case DS_InvalidThreadID:
replyError = DSREPLY_InvalidThreadID;
break;
case DS_OSError:
replyError = DSREPLY_OSError;
break;
default:
replyError = DSREPLY_CWDSError;
break;
}
error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError);
} else {
error = TRKSendACK(buffer);
}
}
return error;
}
DSError TRKDoReadRegisters(TRKBuffer* buffer)
{
DSError error;
DSReplyError replyError;
DSMessageRegisterOptions options;
u32 registerDataLength;
u16 msg_lastRegister;
u16 msg_firstRegister;
u8 msg_options;
u8 msg_command;
if (buffer->length != 6) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command);
if (error == DS_NoError)
error = TRKReadBuffer1_ui8(buffer, &msg_options);
if (error == DS_NoError)
error = TRKReadBuffer1_ui16(buffer, &msg_firstRegister);
if (error == DS_NoError)
error = TRKReadBuffer1_ui16(buffer, &msg_lastRegister);
if (msg_firstRegister > msg_lastRegister) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidRegisterRange);
return error;
}
if (error == DS_NoError)
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
options = (DSMessageRegisterOptions)msg_options;
switch (options) {
case DSREG_Default:
error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister,
buffer, &registerDataLength, TRUE);
break;
case DSREG_FP:
error = TRKTargetAccessFP(msg_firstRegister, msg_lastRegister, buffer,
&registerDataLength, TRUE);
break;
case DSREG_Extended1:
error = TRKTargetAccessExtended1(msg_firstRegister, msg_lastRegister,
buffer, &registerDataLength, TRUE);
break;
case DSREG_Extended2:
error = TRKTargetAccessExtended2(msg_firstRegister, msg_lastRegister,
buffer, &registerDataLength, TRUE);
break;
default:
error = DS_UnsupportedError;
break;
}
if (error != DS_NoError) {
switch (error) {
case DS_UnsupportedError:
replyError = DSREPLY_UnsupportedOptionError;
break;
case DS_InvalidRegister:
replyError = DSREPLY_InvalidRegisterRange;
break;
case DS_CWDSException:
replyError = DSREPLY_CWDSException;
break;
case DS_InvalidProcessID:
replyError = DSREPLY_InvalidProcessID;
break;
case DS_InvalidThreadID:
replyError = DSREPLY_InvalidThreadID;
break;
case DS_OSError:
replyError = DSREPLY_OSError;
break;
default:
replyError = DSREPLY_CWDSError;
}
error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError);
} else {
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoWriteRegisters(TRKBuffer* buffer)
{
DSError error;
DSReplyError replyError;
DSMessageRegisterOptions options;
u32 registerDataLength;
u16 msg_lastRegister;
u16 msg_firstRegister;
u8 msg_options;
u8 msg_command;
if (buffer->length <= 6) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command);
if (error == DS_NoError)
error = TRKReadBuffer1_ui8(buffer, &msg_options);
if (error == DS_NoError)
error = TRKReadBuffer1_ui16(buffer, &msg_firstRegister);
if (error == DS_NoError)
error = TRKReadBuffer1_ui16(buffer, &msg_lastRegister);
if (msg_firstRegister > msg_lastRegister) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidRegisterRange);
return error;
}
options = (DSMessageRegisterOptions)msg_options;
switch (options) {
case DSREG_Default:
error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister,
buffer, &registerDataLength, FALSE);
break;
case DSREG_FP:
error = TRKTargetAccessFP(msg_firstRegister, msg_lastRegister, buffer,
&registerDataLength, FALSE);
break;
case DSREG_Extended1:
error = TRKTargetAccessExtended1(msg_firstRegister, msg_lastRegister,
buffer, &registerDataLength, FALSE);
break;
case DSREG_Extended2:
error = TRKTargetAccessExtended2(msg_firstRegister, msg_lastRegister,
buffer, &registerDataLength, FALSE);
break;
default:
error = DS_UnsupportedError;
break;
}
if (error == DS_NoError)
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error != DS_NoError) {
switch (error) {
case DS_UnsupportedError:
replyError = DSREPLY_UnsupportedOptionError;
break;
case DS_InvalidRegister:
replyError = DSREPLY_InvalidRegisterRange;
break;
case DS_MessageBufferReadError:
replyError = DSREPLY_PacketSizeError;
break;
case DS_CWDSException:
replyError = DSREPLY_CWDSException;
break;
case DS_InvalidProcessID:
replyError = DSREPLY_InvalidProcessID;
break;
case DS_InvalidThreadID:
replyError = DSREPLY_InvalidThreadID;
break;
case DS_OSError:
replyError = DSREPLY_OSError;
break;
default:
replyError = DSREPLY_CWDSError;
}
error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError);
} else {
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoFlushCache(TRKBuffer* buffer)
{
DSError error;
DSReplyError replyErr;
u32 msg_end;
u32 msg_start;
u8 msg_options;
u8 msg_command;
if (buffer->length != 10) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command);
if (error == DS_NoError)
error = TRKReadBuffer1_ui8(buffer, &msg_options);
if (error == DS_NoError)
error = TRKReadBuffer1_ui32(buffer, &msg_start);
if (error == DS_NoError)
error = TRKReadBuffer1_ui32(buffer, &msg_end);
if (msg_start > msg_end) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidMemoryRange);
return error;
}
if (error == DS_NoError)
error = TRKTargetFlushCache(msg_options, (void*)msg_start,
(void*)msg_end);
if (error == DS_NoError)
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error != DS_NoError) {
switch (error) {
case DS_UnsupportedError:
replyErr = DSREPLY_UnsupportedOptionError;
break;
default:
replyErr = DSREPLY_CWDSError;
break;
}
error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyErr);
} else {
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoContinue(TRKBuffer* buffer)
{
DSError error;
error = TRKTargetStopped();
if (error == DS_NoError) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped);
return error;
}
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error == DS_NoError)
error = TRKTargetContinue();
return error;
}
DSError TRKDoStep(TRKBuffer* buffer)
{
DSError error;
u8 msg_command;
u8 msg_options;
u8 msg_count;
u32 msg_rangeStart;
u32 msg_rangeEnd;
u32 pc;
if (buffer->length < 3)
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command);
if (error == DS_NoError)
error = TRKReadBuffer1_ui8(buffer, &msg_options);
switch (msg_options) {
case DSSTEP_IntoCount:
case DSSTEP_OverCount:
if (error == DS_NoError)
TRKReadBuffer1_ui8(buffer, &msg_count);
if (msg_count >= 1) {
break;
}
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
case DSSTEP_IntoRange:
case DSSTEP_OverRange:
if (buffer->length != 10)
return TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_PacketSizeError);
if (error == DS_NoError)
error = TRKReadBuffer1_ui32(buffer, &msg_rangeStart);
if (error == DS_NoError)
error = TRKReadBuffer1_ui32(buffer, &msg_rangeEnd);
pc = TRKTargetGetPC();
if (pc >= msg_rangeStart && pc <= msg_rangeEnd) {
break;
}
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
default:
return TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_UnsupportedOptionError);
}
if (!TRKTargetStopped()) {
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped);
} else {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error == DS_NoError)
switch (msg_options) {
case DSSTEP_IntoCount:
case DSSTEP_OverCount:
error = TRKTargetSingleStep(msg_count,
(msg_options == DSSTEP_OverCount));
break;
case DSSTEP_IntoRange:
case DSSTEP_OverRange:
error = TRKTargetStepOutOfRange(
msg_rangeStart, msg_rangeEnd,
(msg_options == DSSTEP_OverRange));
break;
}
return error;
}
}
DSError TRKDoStop(TRKBuffer* b)
{
DSReplyError replyError;
switch (TRKTargetStop()) {
case DS_NoError:
replyError = DSREPLY_NoError;
break;
case DS_InvalidProcessID:
replyError = DSREPLY_InvalidProcessID;
break;
case DS_InvalidThreadID:
replyError = DSREPLY_InvalidThreadID;
break;
case DS_OSError:
replyError = DSREPLY_OSError;
break;
default:
replyError = DSREPLY_Error;
break;
}
return TRKStandardACK(b, DSMSG_ReplyACK, replyError);
}

Some files were not shown because too many files have changed in this diff Show more