Merge branch 'main' into main
This commit is contained in:
commit
eb91e8162a
234 changed files with 47605 additions and 9728 deletions
55
src/MSL_C.PPCEABI.bare.H/abort_exit.c
Normal file
55
src/MSL_C.PPCEABI.bare.H/abort_exit.c
Normal 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();
|
||||
}
|
||||
95
src/MSL_C.PPCEABI.bare.H/ansi_files.c
Normal file
95
src/MSL_C.PPCEABI.bare.H/ansi_files.c
Normal 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,
|
||||
},
|
||||
};
|
||||
41
src/MSL_C.PPCEABI.bare.H/buffer_io.c
Normal file
41
src/MSL_C.PPCEABI.bare.H/buffer_io.c
Normal 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;
|
||||
}
|
||||
85
src/MSL_C.PPCEABI.bare.H/ctype.c
Normal file
85
src/MSL_C.PPCEABI.bare.H/ctype.c
Normal 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];
|
||||
}
|
||||
114
src/MSL_C.PPCEABI.bare.H/direct_io.c
Normal file
114
src/MSL_C.PPCEABI.bare.H/direct_io.c
Normal 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);
|
||||
}
|
||||
3
src/MSL_C.PPCEABI.bare.H/e_asin.c
Normal file
3
src/MSL_C.PPCEABI.bare.H/e_asin.c
Normal 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); }
|
||||
145
src/MSL_C.PPCEABI.bare.H/e_atan2.c
Normal file
145
src/MSL_C.PPCEABI.bare.H/e_atan2.c
Normal 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(-,-) */
|
||||
}
|
||||
}
|
||||
3
src/MSL_C.PPCEABI.bare.H/errno.c
Normal file
3
src/MSL_C.PPCEABI.bare.H/errno.c
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h"
|
||||
|
||||
int errno;
|
||||
5
src/MSL_C.PPCEABI.bare.H/float.c
Normal file
5
src/MSL_C.PPCEABI.bare.H/float.c
Normal 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 };
|
||||
18
src/MSL_C.PPCEABI.bare.H/mbstring.c
Normal file
18
src/MSL_C.PPCEABI.bare.H/mbstring.c
Normal 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;
|
||||
}
|
||||
75
src/MSL_C.PPCEABI.bare.H/mem.c
Normal file
75
src/MSL_C.PPCEABI.bare.H/mem.c
Normal 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;
|
||||
}
|
||||
221
src/MSL_C.PPCEABI.bare.H/mem_funcs.c
Normal file
221
src/MSL_C.PPCEABI.bare.H/mem_funcs.c
Normal 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;
|
||||
}
|
||||
1
src/MSL_C.PPCEABI.bare.H/misc_io.c
Normal file
1
src/MSL_C.PPCEABI.bare.H/misc_io.c
Normal file
|
|
@ -0,0 +1 @@
|
|||
void __stdio_atexit(void) { }
|
||||
1076
src/MSL_C.PPCEABI.bare.H/printf.c
Normal file
1076
src/MSL_C.PPCEABI.bare.H/printf.c
Normal file
File diff suppressed because it is too large
Load diff
13
src/MSL_C.PPCEABI.bare.H/rand.c
Normal file
13
src/MSL_C.PPCEABI.bare.H/rand.c
Normal 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; }
|
||||
148
src/MSL_C.PPCEABI.bare.H/s_atan.c
Normal file
148
src/MSL_C.PPCEABI.bare.H/s_atan.c
Normal 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;
|
||||
}
|
||||
}
|
||||
58
src/MSL_C.PPCEABI.bare.H/s_frexp.c
Normal file
58
src/MSL_C.PPCEABI.bare.H/s_frexp.c
Normal 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;
|
||||
}
|
||||
34
src/MSL_C.PPCEABI.bare.H/scanf.c
Normal file
34
src/MSL_C.PPCEABI.bare.H/scanf.c
Normal 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;
|
||||
}
|
||||
258
src/MSL_C.PPCEABI.bare.H/string.c
Normal file
258
src/MSL_C.PPCEABI.bare.H/string.c
Normal 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;
|
||||
}
|
||||
199
src/MSL_C.PPCEABI.bare.H/strtoul.c
Normal file
199
src/MSL_C.PPCEABI.bare.H/strtoul.c
Normal 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;
|
||||
}
|
||||
39
src/MSL_C.PPCEABI.bare.H/w_atan2.c
Normal file
39
src/MSL_C.PPCEABI.bare.H/w_atan2.c
Normal 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
|
||||
}
|
||||
22
src/MSL_C.PPCEABI.bare.H/wchar_io.c
Normal file
22
src/MSL_C.PPCEABI.bare.H/wchar_io.c
Normal 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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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 } },
|
||||
|
|
|
|||
|
|
@ -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
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
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
569
src/REL/m430Dll/main.c
Normal 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
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
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
476
src/REL/m433Dll/main.c
Normal 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
827
src/REL/m433Dll/map.c
Normal 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
3584
src/REL/m433Dll/player.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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 },
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
629
src/REL/mstory2Dll/board_clear.c
Normal file
629
src/REL/mstory2Dll/board_clear.c
Normal 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);
|
||||
}
|
||||
}
|
||||
633
src/REL/mstory2Dll/board_entrance.c
Normal file
633
src/REL/mstory2Dll/board_entrance.c
Normal 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;
|
||||
}
|
||||
}
|
||||
848
src/REL/mstory2Dll/board_miss.c
Normal file
848
src/REL/mstory2Dll/board_miss.c
Normal 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
701
src/REL/mstory2Dll/ending.c
Normal 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
1238
src/REL/mstory2Dll/main.c
Normal file
File diff suppressed because it is too large
Load diff
842
src/REL/mstory2Dll/mg_clear.c
Normal file
842
src/REL/mstory2Dll/mg_clear.c
Normal 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);
|
||||
}
|
||||
510
src/REL/mstory2Dll/mg_miss.c
Normal file
510
src/REL/mstory2Dll/mg_miss.c
Normal 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
122
src/REL/mstory2Dll/save.c
Normal 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());
|
||||
}
|
||||
|
|
@ -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
622
src/REL/mstoryDll/board_clear.c
Executable 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
817
src/REL/mstoryDll/board_miss.c
Executable 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
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
691
src/REL/mstoryDll/mg_clear.c
Executable 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
446
src/REL/mstoryDll/mg_miss.c
Executable 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
128
src/REL/mstoryDll/save.c
Executable 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());
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
|
|
|
|||
2018
src/TRK_MINNOW_DOLPHIN/__exception.s
Normal file
2018
src/TRK_MINNOW_DOLPHIN/__exception.s
Normal file
File diff suppressed because it is too large
Load diff
43
src/TRK_MINNOW_DOLPHIN/dispatch.c
Normal file
43
src/TRK_MINNOW_DOLPHIN/dispatch.c
Normal 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;
|
||||
}
|
||||
137
src/TRK_MINNOW_DOLPHIN/dolphin_trk.c
Normal file
137
src/TRK_MINNOW_DOLPHIN/dolphin_trk.c
Normal 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;
|
||||
}
|
||||
116
src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c
Normal file
116
src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c
Normal 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); }
|
||||
26
src/TRK_MINNOW_DOLPHIN/flush_cache.c
Normal file
26
src/TRK_MINNOW_DOLPHIN/flush_cache.c
Normal 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
|
||||
}
|
||||
17
src/TRK_MINNOW_DOLPHIN/main_TRK.c
Normal file
17
src/TRK_MINNOW_DOLPHIN/main_TRK.c
Normal 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;
|
||||
}
|
||||
70
src/TRK_MINNOW_DOLPHIN/mainloop.c
Normal file
70
src/TRK_MINNOW_DOLPHIN/mainloop.c
Normal 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;
|
||||
}
|
||||
}
|
||||
83
src/TRK_MINNOW_DOLPHIN/mem_TRK.c
Normal file
83
src/TRK_MINNOW_DOLPHIN/mem_TRK.c
Normal 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;
|
||||
}
|
||||
248
src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c
Normal file
248
src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c
Normal 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; }
|
||||
9
src/TRK_MINNOW_DOLPHIN/msg.c
Normal file
9
src/TRK_MINNOW_DOLPHIN/msg.c
Normal 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;
|
||||
}
|
||||
359
src/TRK_MINNOW_DOLPHIN/msgbuf.c
Normal file
359
src/TRK_MINNOW_DOLPHIN/msgbuf.c
Normal 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;
|
||||
}
|
||||
689
src/TRK_MINNOW_DOLPHIN/msghndlr.c
Normal file
689
src/TRK_MINNOW_DOLPHIN/msghndlr.c
Normal 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, ®isterDataLength, TRUE);
|
||||
break;
|
||||
case DSREG_FP:
|
||||
error = TRKTargetAccessFP(msg_firstRegister, msg_lastRegister, buffer,
|
||||
®isterDataLength, TRUE);
|
||||
break;
|
||||
case DSREG_Extended1:
|
||||
error = TRKTargetAccessExtended1(msg_firstRegister, msg_lastRegister,
|
||||
buffer, ®isterDataLength, TRUE);
|
||||
break;
|
||||
case DSREG_Extended2:
|
||||
error = TRKTargetAccessExtended2(msg_firstRegister, msg_lastRegister,
|
||||
buffer, ®isterDataLength, 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, ®isterDataLength, FALSE);
|
||||
break;
|
||||
case DSREG_FP:
|
||||
error = TRKTargetAccessFP(msg_firstRegister, msg_lastRegister, buffer,
|
||||
®isterDataLength, FALSE);
|
||||
break;
|
||||
case DSREG_Extended1:
|
||||
error = TRKTargetAccessExtended1(msg_firstRegister, msg_lastRegister,
|
||||
buffer, ®isterDataLength, FALSE);
|
||||
break;
|
||||
case DSREG_Extended2:
|
||||
error = TRKTargetAccessExtended2(msg_firstRegister, msg_lastRegister,
|
||||
buffer, ®isterDataLength, 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
Loading…
Add table
Add a link
Reference in a new issue