Line numbies + a couple funx (#833)

* check_input_open_menus

* func_8003DA38

* some shiftability snibblets

* clean

* PR comments
This commit is contained in:
Ethan Roseman 2022-10-18 07:43:04 -04:00 committed by GitHub
parent b0afefafe0
commit 9e8f3eb36b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 62 additions and 620 deletions

View File

@ -1,9 +1,13 @@
#include "common.h" #include "common.h"
#include "sprite.h" #include "sprite.h"
#include "nu/nusys.h" #include "nu/nusys.h"
#include "ld_addrs.h"
// TODO generate this somehow, or prevent it from shifting. must be resolved at compile time #ifdef SHIFT
#define SPRITE_ROM_START _1943000_ROM_START + 0x10
#else
#define SPRITE_ROM_START 0x1943000 + 0x10 #define SPRITE_ROM_START 0x1943000 + 0x10
#endif
extern s32 spr_allocateBtlComponentsOnWorldHeap; extern s32 spr_allocateBtlComponentsOnWorldHeap;

View File

@ -2,31 +2,29 @@
#include "hud_element.h" #include "hud_element.h"
#include "world/partners.h" #include "world/partners.h"
#include "macros.h" #include "macros.h"
s16 D_8010C9C0;
char D_8010C9C4[0x4];
PopupMenu D_8010C9C8;
s16 D_8010CCF8;
s16 D_8010CCFA;
s16 D_8010CCFC;
s16 D_8010CCFE;
s16 D_8010CD00;
char D_8010CD04[0xC];
s16 D_8010CD10;
s16 D_8010CD12;
char D_8010CD14[0xA];
s32 D_8010CD20;
char D_8010CD24[0xC];
#include "common.h" #include "common.h"
#include "sprite.h" #include "sprite.h"
#include "pause/pause_common.h" #include "pause/pause_common.h"
#include "world/partners.h" #include "world/partners.h"
BSS s16 D_8010C9C0;
BSS char D_8010C9C4[0x4];
BSS PopupMenu D_8010C9C8;
BSS s16 D_8010CCF8;
BSS s16 D_8010CCFA;
BSS s16 D_8010CCFC;
BSS s16 D_8010CCFE;
BSS s16 D_8010CD00;
BSS char D_8010CD04[0xC];
BSS s16 D_8010CD10;
BSS s16 D_8010CD12;
BSS char D_8010CD14[0xA];
BSS s32 D_8010CD20;
BSS char D_8010CD24[0xC];
extern s32 D_8008EEC0[12]; extern s32 D_8008EEC0[12];
extern s32 D_8008EEF0[]; extern s32 D_8008EEF0[];
void func_800E6860(void) { void func_800E6860(void) {
PlayerStatus* playerStatus = &gPlayerStatus; PlayerStatus* playerStatus = &gPlayerStatus;
@ -132,7 +130,7 @@ s32 setup_partner_popup(PopupMenu* menu) {
for (i = 1; i < ARRAY_COUNT(D_8008EEC0); i++) { for (i = 1; i < ARRAY_COUNT(D_8008EEC0); i++) {
s32 partnerID = D_8008EEC0[i]; s32 partnerID = D_8008EEC0[i];
if (playerData->partners[partnerID].enabled && partnerID != PARTNER_GOOMPA) { if (playerData->partners[partnerID].enabled && partnerID != PARTNER_GOOMPA) {
PartnerPopupProperties* properties = &gPartnerPopupProperties[partnerID]; PartnerPopupProperties* properties = &gPartnerPopupProperties[partnerID];
@ -181,19 +179,23 @@ s32 setup_item_popup(PopupMenu* menu) {
return optionCount; return optionCount;
} }
// stack issues, yucky goto
#ifdef NON_MATCHING
void check_input_open_menus(void) { void check_input_open_menus(void) {
static s16 D_8010C9C0; static s16 D_8010C9C0;
PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus; PartnerActionStatus* partnerActionStatus;
PlayerStatus* playerStatus = &gPlayerStatus; PlayerStatus* playerStatus;
PlayerData* playerData = &gPlayerData; PlayerData* playerData;
PopupMenu* popup = &D_8010C9C8; PopupMenu* popup;
s32 flags; s32 flags;
s32 numEntries; s32 numEntries;
s32 pressedButtons; s32 pressedButtons;
s32 currentButtons; s32 currentButtons;
s8* partnerActionState;
partnerActionStatus = &gPartnerActionStatus;
playerStatus = &gPlayerStatus;
playerData = &gPlayerData;
popup = &D_8010C9C8;
if (gGameStatusPtr->disableScripts || if (gGameStatusPtr->disableScripts ||
(gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_IS_PEACH) || (gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_IS_PEACH) ||
@ -213,6 +215,7 @@ void check_input_open_menus(void) {
currentButtons = playerStatus->currentButtons; currentButtons = playerStatus->currentButtons;
pressedButtons = playerStatus->pressedButtons; pressedButtons = playerStatus->pressedButtons;
} }
partnerActionState = &partnerActionStatus->partnerActionState;
if (evt_get_variable(NULL, GB_StoryProgress) >= STORY_EPILOGUE) { if (evt_get_variable(NULL, GB_StoryProgress) >= STORY_EPILOGUE) {
currentButtons &= ~(BUTTON_C_LEFT | BUTTON_C_RIGHT); currentButtons &= ~(BUTTON_C_LEFT | BUTTON_C_RIGHT);
@ -301,7 +304,7 @@ block_17:
} }
create_popup_menu(popup); create_popup_menu(popup);
set_time_freeze_mode(TIME_FREEZE_PARTNER_MENU); set_time_freeze_mode(TIME_FREEZE_PARTNER_MENU);
if (partnerActionStatus->partnerActionState == 0) { if (*partnerActionState == 0) {
set_action_state(ACTION_STATE_IDLE); set_action_state(ACTION_STATE_IDLE);
} }
D_8010CD00++; D_8010CD00++;
@ -336,7 +339,7 @@ block_17:
break; break;
} }
D_8010C9C0 = TRUE; D_8010C9C0 = TRUE;
goto block_17; goto block_17; // TODO required to match
} }
} }
@ -346,7 +349,9 @@ block_17:
switch_to_partner(popup->userIndex[D_8010CCFC - 1]); switch_to_partner(popup->userIndex[D_8010CCFC - 1]);
break; break;
case 1: case 1:
use_consumable(popup->userIndex[D_8010CCFC - 1]); do {
use_consumable(popup->userIndex[D_8010CCFC - 1]);
} while (0); // todo required to match
gOverrideFlags |= GLOBAL_OVERRIDES_CANT_PICK_UP_ITEMS; gOverrideFlags |= GLOBAL_OVERRIDES_CANT_PICK_UP_ITEMS;
break; break;
} }
@ -370,9 +375,6 @@ block_17:
break; break;
} }
} }
#else
INCLUDE_ASM(s32, "7fd10_len_b40", check_input_open_menus);
#endif
void check_input_status_menu(void) { void check_input_status_menu(void) {
PlayerStatus* playerStatus = &gPlayerStatus; PlayerStatus* playerStatus = &gPlayerStatus;

View File

@ -1772,8 +1772,8 @@ void entity_reset_collision(Entity* entity) {
entity->flags &= ~ENTITY_FLAGS_DETECTED_COLLISION; entity->flags &= ~ENTITY_FLAGS_DETECTED_COLLISION;
} }
#ifdef NON_MATCHING #ifdef SHIFT
#define AREA_SPECIFIC_ENTITY_VRAM &entity_default_VRAM #define AREA_SPECIFIC_ENTITY_VRAM entity_default_VRAM
#else #else
#define AREA_SPECIFIC_ENTITY_VRAM 0x802BAE00 #define AREA_SPECIFIC_ENTITY_VRAM 0x802BAE00
#endif #endif

View File

@ -2,6 +2,7 @@
#include "npc.h" #include "npc.h"
#include "effects.h" #include "effects.h"
#include "sprite.h" #include "sprite.h"
#include "world/partners.h"
u8 D_80077BF0[] = { u8 D_80077BF0[] = {
1, 2, 1, 2,
@ -2069,8 +2070,6 @@ void func_8003D788(Npc* npc, s32 arg1) {
} }
} }
// floats suck
#ifdef NON_MATCHING
void func_8003DA38(Npc* npc, s32 arg1) { void func_8003DA38(Npc* npc, s32 arg1) {
f32 theta; f32 theta;
f32 sinTheta; f32 sinTheta;
@ -2078,7 +2077,11 @@ void func_8003DA38(Npc* npc, s32 arg1) {
f32 x, y, z; f32 x, y, z;
if (arg1 == 2 && D_80077C1E == 5) { if (arg1 == 2 && D_80077C1E == 5) {
fx_flower_splash(npc->pos.x, npc->pos.y + 14.0f, npc->pos.z, D_80077C18); x = npc->pos.x;
y = npc->pos.y + + 14.0f;
z = npc->pos.z;
fx_flower_splash(x, y, z, D_80077C18);
D_80077C18 = clamp_angle(D_80077C18 + 35.0f); D_80077C18 = clamp_angle(D_80077C18 + 35.0f);
D_80077C1E = 0; D_80077C1E = 0;
return; return;
@ -2103,9 +2106,6 @@ void func_8003DA38(Npc* npc, s32 arg1) {
D_80077C20 = D_80077C20 == 0; D_80077C20 = D_80077C20 == 0;
} }
} }
#else
INCLUDE_ASM(void, "npc", func_8003DA38, Npc* npc, s32 arg1);
#endif
// floats suqqz // floats suqqz
#ifdef NON_EQUIVALENT #ifdef NON_EQUIVALENT

View File

@ -6,7 +6,12 @@
#include "sprite.h" #include "sprite.h"
#include "model.h" #include "model.h"
#ifdef SHIFT
#define ASSET_TABLE_ROM_START mapfs_ROM_START
#else
#define ASSET_TABLE_ROM_START 0x1E40000 #define ASSET_TABLE_ROM_START 0x1E40000
#endif
#define ASSET_TABLE_HEADER_SIZE 0x20 #define ASSET_TABLE_HEADER_SIZE 0x20
#define ASSET_TABLE_FIRST_ENTRY (ASSET_TABLE_ROM_START + ASSET_TABLE_HEADER_SIZE) #define ASSET_TABLE_FIRST_ENTRY (ASSET_TABLE_ROM_START + ASSET_TABLE_HEADER_SIZE)

View File

@ -65,7 +65,7 @@ def write_ninja_rules(ninja: ninja_syntax.Writer, cpp: str, cppflags: str, extra
CPPFLAGS_272 = "-Iver/$version/build/include -Iinclude -Isrc -Iassets/$version -D_LANGUAGE_C -D_FINALROM " \ CPPFLAGS_272 = "-Iver/$version/build/include -Iinclude -Isrc -Iassets/$version -D_LANGUAGE_C -D_FINALROM " \
"-DVERSION=$version -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc" "-DVERSION=$version -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc"
cflags = f"-c -G0 -O2 -x c -B {BUILD_TOOLS}/cc/gcc/ {extra_cflags}" cflags = f"-c -G0 -O2 -gdwarf-2 -x c -B {BUILD_TOOLS}/cc/gcc/ {extra_cflags}"
cflags_272 = f"-c -G0 -mgp32 -mfp32 -mips3 {extra_cflags}" cflags_272 = f"-c -G0 -mgp32 -mfp32 -mips3 {extra_cflags}"
cflags_272 = cflags_272.replace("-ggdb3","-g1") cflags_272 = cflags_272.replace("-ggdb3","-g1")

View File

@ -4,6 +4,7 @@ import argparse
from collections import OrderedDict from collections import OrderedDict
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
import re
from typing import Optional from typing import Optional
import os import os
@ -74,8 +75,16 @@ def parse_map() -> OrderedDict[str, Symbol]:
syms: OrderedDict[str, Symbol] = OrderedDict() syms: OrderedDict[str, Symbol] = OrderedDict()
prev_sym = "" prev_sym = ""
prev_line = "" prev_line = ""
cur_sect = ""
sect_re = re.compile(r"\(\..*\)")
with open(map_file_path) as f: with open(map_file_path) as f:
for line in f: for line in f:
sect = sect_re.search(line)
if sect:
sect_str = sect.group(0)
if sect_str in ["(.text)", "(.data)", "(.rodata)", "(.bss)"]:
cur_sect = sect_str
if "load address" in line: if "load address" in line:
if "noload" in line or "noload" in prev_line: if "noload" in line or "noload" in prev_line:
ram_offset = None ram_offset = None
@ -101,6 +110,8 @@ def parse_map() -> OrderedDict[str, Symbol]:
elif "/" in fn: elif "/" in fn:
cur_file = fn cur_file = fn
else: else:
if cur_sect != "(.text)":
continue
syms[fn] = Symbol( syms[fn] = Symbol(
name=fn, name=fn,
rom_start=rom, rom_start=rom,

View File

@ -111,45 +111,3 @@ dlabel D_8010C9B0
dlabel D_8010C9B4 dlabel D_8010C9B4
.space 0x0000000c .space 0x0000000c
dlabel D_8010C9C0
.space 4
dlabel D_8010C9C4
.space 4
dlabel D_8010C9C8
.space 0x330
dlabel D_8010CCF8
.space 2
dlabel D_8010CCFA
.space 2
dlabel D_8010CCFC
.space 2
dlabel D_8010CCFE
.space 2
dlabel D_8010CD00
.space 4
dlabel D_8010CD04
.space 0xC
dlabel D_8010CD10
.space 2
dlabel D_8010CD12
.space 2
dlabel D_8010CD14
.space 0xC
dlabel D_8010CD20
.space 4
dlabel D_8010CD24
.space 0xC

View File

@ -1,403 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel jtbl_8010BF30
.word .L800E6DD8_80288, .L800E6F14_803C4, .L800E6FC8_80478, .L800E7044_804F4, .L800E7090_80540, .L800E726C_8071C, .L800E726C_8071C, .L800E726C_8071C, .L800E726C_8071C, .L800E726C_8071C, .L800E7208_806B8, 0
.section .text
glabel check_input_open_menus
/* 80194 800E6CE4 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 80198 800E6CE8 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 8019C 800E6CEC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 801A0 800E6CF0 AFB3001C */ sw $s3, 0x1c($sp)
/* 801A4 800E6CF4 3C138011 */ lui $s3, %hi(gPartnerActionStatus)
/* 801A8 800E6CF8 2673EBB0 */ addiu $s3, $s3, %lo(gPartnerActionStatus)
/* 801AC 800E6CFC AFB40020 */ sw $s4, 0x20($sp)
/* 801B0 800E6D00 3C148011 */ lui $s4, %hi(gPlayerStatus)
/* 801B4 800E6D04 2694EFC8 */ addiu $s4, $s4, %lo(gPlayerStatus)
/* 801B8 800E6D08 AFBF0024 */ sw $ra, 0x24($sp)
/* 801BC 800E6D0C AFB20018 */ sw $s2, 0x18($sp)
/* 801C0 800E6D10 AFB10014 */ sw $s1, 0x14($sp)
/* 801C4 800E6D14 AFB00010 */ sw $s0, 0x10($sp)
/* 801C8 800E6D18 80620078 */ lb $v0, 0x78($v1)
/* 801CC 800E6D1C 3C128011 */ lui $s2, %hi(D_8010C9C8)
/* 801D0 800E6D20 2652C9C8 */ addiu $s2, $s2, %lo(D_8010C9C8)
/* 801D4 800E6D24 14400151 */ bnez $v0, .L800E726C_8071C
/* 801D8 800E6D28 00000000 */ nop
/* 801DC 800E6D2C 9062007E */ lbu $v0, 0x7e($v1)
/* 801E0 800E6D30 30420001 */ andi $v0, $v0, 1
/* 801E4 800E6D34 1440014D */ bnez $v0, .L800E726C_8071C
/* 801E8 800E6D38 0000202D */ daddu $a0, $zero, $zero
/* 801EC 800E6D3C 3C05F5DE */ lui $a1, 0xf5de
/* 801F0 800E6D40 0C0B1EAF */ jal evt_get_variable
/* 801F4 800E6D44 34A50180 */ ori $a1, $a1, 0x180
/* 801F8 800E6D48 2403FF80 */ addiu $v1, $zero, -0x80
/* 801FC 800E6D4C 10430147 */ beq $v0, $v1, .L800E726C_8071C
/* 80200 800E6D50 00000000 */ nop
/* 80204 800E6D54 82620000 */ lb $v0, ($s3)
/* 80208 800E6D58 1040000A */ beqz $v0, .L800E6D84
/* 8020C 800E6D5C 00000000 */ nop
/* 80210 800E6D60 92620003 */ lbu $v0, 3($s3)
/* 80214 800E6D64 2442FFF9 */ addiu $v0, $v0, -7
/* 80218 800E6D68 2C420003 */ sltiu $v0, $v0, 3
/* 8021C 800E6D6C 10400005 */ beqz $v0, .L800E6D84
/* 80220 800E6D70 0000202D */ daddu $a0, $zero, $zero
/* 80224 800E6D74 8E710008 */ lw $s1, 8($s3)
/* 80228 800E6D78 8E70000C */ lw $s0, 0xc($s3)
/* 8022C 800E6D7C 08039B65 */ j .L800E6D94
/* 80230 800E6D80 3C05F5DE */ lui $a1, 0xf5de
.L800E6D84:
/* 80234 800E6D84 8E9100DC */ lw $s1, 0xdc($s4)
/* 80238 800E6D88 8E9000E0 */ lw $s0, 0xe0($s4)
/* 8023C 800E6D8C 0000202D */ daddu $a0, $zero, $zero
/* 80240 800E6D90 3C05F5DE */ lui $a1, 0xf5de
.L800E6D94:
/* 80244 800E6D94 0C0B1EAF */ jal evt_get_variable
/* 80248 800E6D98 34A50180 */ ori $a1, $a1, 0x180
/* 8024C 800E6D9C 28420060 */ slti $v0, $v0, 0x60
/* 80250 800E6DA0 14400003 */ bnez $v0, .L800E6DB0
/* 80254 800E6DA4 2402FFFC */ addiu $v0, $zero, -4
/* 80258 800E6DA8 02228824 */ and $s1, $s1, $v0
/* 8025C 800E6DAC 02028024 */ and $s0, $s0, $v0
.L800E6DB0:
/* 80260 800E6DB0 3C038011 */ lui $v1, %hi(D_8010CD00)
/* 80264 800E6DB4 8463CD00 */ lh $v1, %lo(D_8010CD00)($v1)
/* 80268 800E6DB8 2C62000B */ sltiu $v0, $v1, 0xb
/* 8026C 800E6DBC 1040012B */ beqz $v0, .L800E726C_8071C
/* 80270 800E6DC0 00031080 */ sll $v0, $v1, 2
/* 80274 800E6DC4 3C018011 */ lui $at, %hi(jtbl_8010BF30)
/* 80278 800E6DC8 00220821 */ addu $at, $at, $v0
/* 8027C 800E6DCC 8C22BF30 */ lw $v0, %lo(jtbl_8010BF30)($at)
/* 80280 800E6DD0 00400008 */ jr $v0
/* 80284 800E6DD4 00000000 */ nop
.L800E6DD8_80288:
/* 80288 800E6DD8 0220202D */ daddu $a0, $s1, $zero
/* 8028C 800E6DDC 0C039A77 */ jal can_pause
/* 80290 800E6DE0 0200282D */ daddu $a1, $s0, $zero
/* 80294 800E6DE4 10400121 */ beqz $v0, .L800E726C_8071C
/* 80298 800E6DE8 24020001 */ addiu $v0, $zero, 1
/* 8029C 800E6DEC 3C038011 */ lui $v1, %hi(D_8010CCF8)
/* 802A0 800E6DF0 2463CCF8 */ addiu $v1, $v1, %lo(D_8010CCF8)
/* 802A4 800E6DF4 A4620000 */ sh $v0, ($v1)
/* 802A8 800E6DF8 32020001 */ andi $v0, $s0, 1
/* 802AC 800E6DFC 54400001 */ bnel $v0, $zero, .L800E6E04
/* 802B0 800E6E00 A4600000 */ sh $zero, ($v1)
.L800E6E04:
/* 802B4 800E6E04 32021000 */ andi $v0, $s0, 0x1000
/* 802B8 800E6E08 10400002 */ beqz $v0, .L800E6E14
/* 802BC 800E6E0C 24020002 */ addiu $v0, $zero, 2
/* 802C0 800E6E10 A4620000 */ sh $v0, ($v1)
.L800E6E14:
/* 802C4 800E6E14 3C018011 */ lui $at, %hi(D_8010C9C0)
/* 802C8 800E6E18 A420C9C0 */ sh $zero, %lo(D_8010C9C0)($at)
.L800E6E1C:
/* 802CC 800E6E1C 3C038011 */ lui $v1, %hi(D_8010CCF8)
/* 802D0 800E6E20 8463CCF8 */ lh $v1, %lo(D_8010CCF8)($v1)
/* 802D4 800E6E24 10600005 */ beqz $v1, .L800E6E3C
/* 802D8 800E6E28 24020001 */ addiu $v0, $zero, 1
/* 802DC 800E6E2C 1062001F */ beq $v1, $v0, .L800E6EAC
/* 802E0 800E6E30 00000000 */ nop
/* 802E4 800E6E34 08039BB2 */ j .L800E6EC8
/* 802E8 800E6E38 00000000 */ nop
.L800E6E3C:
/* 802EC 800E6E3C 8E820000 */ lw $v0, ($s4)
/* 802F0 800E6E40 30420040 */ andi $v0, $v0, 0x40
/* 802F4 800E6E44 10400009 */ beqz $v0, .L800E6E6C
/* 802F8 800E6E48 00000000 */ nop
/* 802FC 800E6E4C 0C05272D */ jal sfx_play_sound
/* 80300 800E6E50 2404021D */ addiu $a0, $zero, 0x21d
/* 80304 800E6E54 3C028011 */ lui $v0, %hi(D_8010C9C0)
/* 80308 800E6E58 8442C9C0 */ lh $v0, %lo(D_8010C9C0)($v0)
/* 8030C 800E6E5C 10400103 */ beqz $v0, .L800E726C_8071C
/* 80310 800E6E60 00000000 */ nop
/* 80314 800E6E64 08039C72 */ j .L800E71C8
/* 80318 800E6E68 00000000 */ nop
.L800E6E6C:
/* 8031C 800E6E6C 0C039ADE */ jal setup_partner_popup
/* 80320 800E6E70 0240202D */ daddu $a0, $s2, $zero
/* 80324 800E6E74 104000FD */ beqz $v0, .L800E726C_8071C
/* 80328 800E6E78 24030001 */ addiu $v1, $zero, 1
/* 8032C 800E6E7C AE420324 */ sw $v0, 0x324($s2)
/* 80330 800E6E80 3C028011 */ lui $v0, %hi(gPlayerData)
/* 80334 800E6E84 2442F290 */ addiu $v0, $v0, %lo(gPlayerData)
/* 80338 800E6E88 80420012 */ lb $v0, 0x12($v0)
/* 8033C 800E6E8C AE430318 */ sw $v1, 0x318($s2)
/* 80340 800E6E90 00021080 */ sll $v0, $v0, 2
/* 80344 800E6E94 3C018009 */ lui $at, %hi(D_8008EEF0)
/* 80348 800E6E98 00220821 */ addu $at, $at, $v0
/* 8034C 800E6E9C 8C22EEF0 */ lw $v0, %lo(D_8008EEF0)($at)
/* 80350 800E6EA0 2442FFFF */ addiu $v0, $v0, -1
/* 80354 800E6EA4 08039BB2 */ j .L800E6EC8
/* 80358 800E6EA8 AE420328 */ sw $v0, 0x328($s2)
.L800E6EAC:
/* 8035C 800E6EAC 0C039B11 */ jal setup_item_popup
/* 80360 800E6EB0 0240202D */ daddu $a0, $s2, $zero
/* 80364 800E6EB4 104000ED */ beqz $v0, .L800E726C_8071C
/* 80368 800E6EB8 00000000 */ nop
/* 8036C 800E6EBC AE400318 */ sw $zero, 0x318($s2)
/* 80370 800E6EC0 AE420324 */ sw $v0, 0x324($s2)
/* 80374 800E6EC4 AE400328 */ sw $zero, 0x328($s2)
.L800E6EC8:
/* 80378 800E6EC8 8E820000 */ lw $v0, ($s4)
/* 8037C 800E6ECC 34420020 */ ori $v0, $v0, 0x20
/* 80380 800E6ED0 0C03805E */ jal disable_player_input
/* 80384 800E6ED4 AE820000 */ sw $v0, ($s4)
/* 80388 800E6ED8 0C03BD8A */ jal partner_disable_input
/* 8038C 800E6EDC 00000000 */ nop
/* 80390 800E6EE0 24020003 */ addiu $v0, $zero, 3
/* 80394 800E6EE4 3C018011 */ lui $at, %hi(D_8010CCFA)
/* 80398 800E6EE8 A422CCFA */ sh $v0, %lo(D_8010CCFA)($at)
/* 8039C 800E6EEC 92820015 */ lbu $v0, 0x15($s4)
/* 803A0 800E6EF0 24030001 */ addiu $v1, $zero, 1
/* 803A4 800E6EF4 3C018011 */ lui $at, %hi(D_8010CD00)
/* 803A8 800E6EF8 A423CD00 */ sh $v1, %lo(D_8010CD00)($at)
/* 803AC 800E6EFC 00021600 */ sll $v0, $v0, 0x18
/* 803B0 800E6F00 00021603 */ sra $v0, $v0, 0x18
/* 803B4 800E6F04 3C018011 */ lui $at, %hi(D_8010CCFE)
/* 803B8 800E6F08 A422CCFE */ sh $v0, %lo(D_8010CCFE)($at)
/* 803BC 800E6F0C 08039C9B */ j .L800E726C_8071C
/* 803C0 800E6F10 00000000 */ nop
.L800E6F14_803C4:
/* 803C4 800E6F14 0C039A41 */ jal func_800E6904
/* 803C8 800E6F18 00000000 */ nop
/* 803CC 800E6F1C 1040000B */ beqz $v0, .L800E6F4C
/* 803D0 800E6F20 00000000 */ nop
/* 803D4 800E6F24 0C04D07A */ jal is_picking_up_item
/* 803D8 800E6F28 00000000 */ nop
/* 803DC 800E6F2C 14400007 */ bnez $v0, .L800E6F4C
/* 803E0 800E6F30 00000000 */ nop
/* 803E4 800E6F34 3C028011 */ lui $v0, %hi(D_8010CCFE)
/* 803E8 800E6F38 8442CCFE */ lh $v0, %lo(D_8010CCFE)($v0)
/* 803EC 800E6F3C 82830015 */ lb $v1, 0x15($s4)
/* 803F0 800E6F40 0043102A */ slt $v0, $v0, $v1
/* 803F4 800E6F44 10400010 */ beqz $v0, .L800E6F88
/* 803F8 800E6F48 00000000 */ nop
.L800E6F4C:
/* 803FC 800E6F4C 8E820000 */ lw $v0, ($s4)
/* 80400 800E6F50 2403FFDF */ addiu $v1, $zero, -0x21
/* 80404 800E6F54 00431024 */ and $v0, $v0, $v1
/* 80408 800E6F58 0C038069 */ jal enable_player_input
/* 8040C 800E6F5C AE820000 */ sw $v0, ($s4)
/* 80410 800E6F60 0C03BD80 */ jal partner_enable_input
/* 80414 800E6F64 00000000 */ nop
/* 80418 800E6F68 3C028011 */ lui $v0, %hi(D_8010C9C0)
/* 8041C 800E6F6C 8442C9C0 */ lh $v0, %lo(D_8010C9C0)($v0)
/* 80420 800E6F70 3C018011 */ lui $at, %hi(D_8010CD00)
/* 80424 800E6F74 A420CD00 */ sh $zero, %lo(D_8010CD00)($at)
/* 80428 800E6F78 104000BC */ beqz $v0, .L800E726C_8071C
/* 8042C 800E6F7C 00000000 */ nop
/* 80430 800E6F80 08039C72 */ j .L800E71C8
/* 80434 800E6F84 00000000 */ nop
.L800E6F88:
/* 80438 800E6F88 3C038011 */ lui $v1, %hi(D_8010CCFA)
/* 8043C 800E6F8C 2463CCFA */ addiu $v1, $v1, %lo(D_8010CCFA)
/* 80440 800E6F90 94620000 */ lhu $v0, ($v1)
/* 80444 800E6F94 2442FFFF */ addiu $v0, $v0, -1
/* 80448 800E6F98 A4620000 */ sh $v0, ($v1)
/* 8044C 800E6F9C 00021400 */ sll $v0, $v0, 0x10
/* 80450 800E6FA0 144000B2 */ bnez $v0, .L800E726C_8071C
/* 80454 800E6FA4 24040002 */ addiu $a0, $zero, 2
/* 80458 800E6FA8 3C02800A */ lui $v0, %hi(gOverrideFlags)
/* 8045C 800E6FAC 2442A650 */ addiu $v0, $v0, %lo(gOverrideFlags)
/* 80460 800E6FB0 8C430000 */ lw $v1, ($v0)
/* 80464 800E6FB4 3C018011 */ lui $at, %hi(D_8010CD00)
/* 80468 800E6FB8 A424CD00 */ sh $a0, %lo(D_8010CD00)($at)
/* 8046C 800E6FBC 34630040 */ ori $v1, $v1, 0x40
/* 80470 800E6FC0 08039C9B */ j .L800E726C_8071C
/* 80474 800E6FC4 AC430000 */ sw $v1, ($v0)
.L800E6FC8_80478:
/* 80478 800E6FC8 3C038011 */ lui $v1, %hi(D_8010CCF8)
/* 8047C 800E6FCC 8463CCF8 */ lh $v1, %lo(D_8010CCF8)($v1)
/* 80480 800E6FD0 24020002 */ addiu $v0, $zero, 2
/* 80484 800E6FD4 1462000C */ bne $v1, $v0, .L800E7008
/* 80488 800E6FD8 00000000 */ nop
/* 8048C 800E6FDC 0C00CD3C */ jal set_game_mode
/* 80490 800E6FE0 2404000A */ addiu $a0, $zero, 0xa
/* 80494 800E6FE4 0C05272D */ jal sfx_play_sound
/* 80498 800E6FE8 240400C5 */ addiu $a0, $zero, 0xc5
/* 8049C 800E6FEC 2402000A */ addiu $v0, $zero, 0xa
/* 804A0 800E6FF0 3C018011 */ lui $at, %hi(D_8010CCFA)
/* 804A4 800E6FF4 A422CCFA */ sh $v0, %lo(D_8010CCFA)($at)
/* 804A8 800E6FF8 3C018011 */ lui $at, %hi(D_8010CD00)
/* 804AC 800E6FFC A422CD00 */ sh $v0, %lo(D_8010CD00)($at)
/* 804B0 800E7000 08039C9B */ j .L800E726C_8071C
/* 804B4 800E7004 00000000 */ nop
.L800E7008:
/* 804B8 800E7008 0C03D390 */ jal create_popup_menu
/* 804BC 800E700C 0240202D */ daddu $a0, $s2, $zero
/* 804C0 800E7010 0C009C22 */ jal set_time_freeze_mode
/* 804C4 800E7014 24040003 */ addiu $a0, $zero, 3
/* 804C8 800E7018 82620000 */ lb $v0, ($s3)
/* 804CC 800E701C 14400003 */ bnez $v0, .L800E702C
/* 804D0 800E7020 00000000 */ nop
/* 804D4 800E7024 0C039769 */ jal set_action_state
/* 804D8 800E7028 0000202D */ daddu $a0, $zero, $zero
.L800E702C:
/* 804DC 800E702C 3C038011 */ lui $v1, %hi(D_8010CD00)
/* 804E0 800E7030 2463CD00 */ addiu $v1, $v1, %lo(D_8010CD00)
/* 804E4 800E7034 94620000 */ lhu $v0, ($v1)
/* 804E8 800E7038 24420001 */ addiu $v0, $v0, 1
/* 804EC 800E703C 08039C9B */ j .L800E726C_8071C
/* 804F0 800E7040 A4620000 */ sh $v0, ($v1)
.L800E7044_804F4:
/* 804F4 800E7044 2402FFFF */ addiu $v0, $zero, -1
/* 804F8 800E7048 8643032C */ lh $v1, 0x32c($s2)
/* 804FC 800E704C 10620087 */ beq $v1, $v0, .L800E726C_8071C
/* 80500 800E7050 9644032C */ lhu $a0, 0x32c($s2)
/* 80504 800E7054 3C018011 */ lui $at, %hi(D_8010CCFC)
/* 80508 800E7058 A424CCFC */ sh $a0, %lo(D_8010CCFC)($at)
/* 8050C 800E705C 10600083 */ beqz $v1, .L800E726C_8071C
/* 80510 800E7060 00000000 */ nop
/* 80514 800E7064 0C03C4EC */ jal hide_popup_menu
/* 80518 800E7068 00000000 */ nop
/* 8051C 800E706C 3C028011 */ lui $v0, %hi(D_8010CD00)
/* 80520 800E7070 2442CD00 */ addiu $v0, $v0, %lo(D_8010CD00)
/* 80524 800E7074 94430000 */ lhu $v1, ($v0)
/* 80528 800E7078 2404000F */ addiu $a0, $zero, 0xf
/* 8052C 800E707C 3C018011 */ lui $at, %hi(D_8010CCFA)
/* 80530 800E7080 A424CCFA */ sh $a0, %lo(D_8010CCFA)($at)
/* 80534 800E7084 24630001 */ addiu $v1, $v1, 1
/* 80538 800E7088 08039C9B */ j .L800E726C_8071C
/* 8053C 800E708C A4430000 */ sh $v1, ($v0)
.L800E7090_80540:
/* 80540 800E7090 3C038011 */ lui $v1, %hi(D_8010CCFA)
/* 80544 800E7094 2463CCFA */ addiu $v1, $v1, %lo(D_8010CCFA)
/* 80548 800E7098 94620000 */ lhu $v0, ($v1)
/* 8054C 800E709C 2442FFFF */ addiu $v0, $v0, -1
/* 80550 800E70A0 A4620000 */ sh $v0, ($v1)
/* 80554 800E70A4 00021400 */ sll $v0, $v0, 0x10
/* 80558 800E70A8 14400070 */ bnez $v0, .L800E726C_8071C
/* 8055C 800E70AC 00000000 */ nop
/* 80560 800E70B0 0C03C54E */ jal destroy_popup_menu
/* 80564 800E70B4 00000000 */ nop
/* 80568 800E70B8 3C018011 */ lui $at, %hi(D_8010CD00)
/* 8056C 800E70BC A420CD00 */ sh $zero, %lo(D_8010CD00)($at)
/* 80570 800E70C0 0C038069 */ jal enable_player_input
/* 80574 800E70C4 00000000 */ nop
/* 80578 800E70C8 0C03BD80 */ jal partner_enable_input
/* 8057C 800E70CC 00000000 */ nop
/* 80580 800E70D0 3C108011 */ lui $s0, %hi(D_8010CCFC)
/* 80584 800E70D4 2610CCFC */ addiu $s0, $s0, %lo(D_8010CCFC)
/* 80588 800E70D8 86030000 */ lh $v1, ($s0)
/* 8058C 800E70DC 2402FFFE */ addiu $v0, $zero, -2
/* 80590 800E70E0 1462001B */ bne $v1, $v0, .L800E7150
/* 80594 800E70E4 00000000 */ nop
/* 80598 800E70E8 0C039ADE */ jal setup_partner_popup
/* 8059C 800E70EC 0240202D */ daddu $a0, $s2, $zero
/* 805A0 800E70F0 10400005 */ beqz $v0, .L800E7108
/* 805A4 800E70F4 240200FF */ addiu $v0, $zero, 0xff
/* 805A8 800E70F8 0C039B11 */ jal setup_item_popup
/* 805AC 800E70FC 0240202D */ daddu $a0, $s2, $zero
/* 805B0 800E7100 14400003 */ bnez $v0, .L800E7110
/* 805B4 800E7104 240200FF */ addiu $v0, $zero, 0xff
.L800E7108:
/* 805B8 800E7108 08039C54 */ j .L800E7150
/* 805BC 800E710C A6020000 */ sh $v0, ($s0)
.L800E7110:
/* 805C0 800E7110 3C048011 */ lui $a0, %hi(D_8010CCF8)
/* 805C4 800E7114 2484CCF8 */ addiu $a0, $a0, %lo(D_8010CCF8)
/* 805C8 800E7118 84830000 */ lh $v1, ($a0)
/* 805CC 800E711C 10600005 */ beqz $v1, .L800E7134
/* 805D0 800E7120 24020001 */ addiu $v0, $zero, 1
/* 805D4 800E7124 10620006 */ beq $v1, $v0, .L800E7140
/* 805D8 800E7128 24020001 */ addiu $v0, $zero, 1
/* 805DC 800E712C 08039C51 */ j .L800E7144
/* 805E0 800E7130 00000000 */ nop
.L800E7134:
/* 805E4 800E7134 24020001 */ addiu $v0, $zero, 1
/* 805E8 800E7138 08039C51 */ j .L800E7144
/* 805EC 800E713C A4820000 */ sh $v0, ($a0)
.L800E7140:
/* 805F0 800E7140 A4800000 */ sh $zero, ($a0)
.L800E7144:
/* 805F4 800E7144 3C018011 */ lui $at, %hi(D_8010C9C0)
/* 805F8 800E7148 08039B87 */ j .L800E6E1C
/* 805FC 800E714C A422C9C0 */ sh $v0, %lo(D_8010C9C0)($at)
.L800E7150:
/* 80600 800E7150 3C038011 */ lui $v1, %hi(D_8010CCFC)
/* 80604 800E7154 8463CCFC */ lh $v1, %lo(D_8010CCFC)($v1)
/* 80608 800E7158 240200FF */ addiu $v0, $zero, 0xff
/* 8060C 800E715C 1062001A */ beq $v1, $v0, .L800E71C8
/* 80610 800E7160 00000000 */ nop
/* 80614 800E7164 3C048011 */ lui $a0, %hi(D_8010CCF8)
/* 80618 800E7168 8484CCF8 */ lh $a0, %lo(D_8010CCF8)($a0)
/* 8061C 800E716C 10800005 */ beqz $a0, .L800E7184
/* 80620 800E7170 24020001 */ addiu $v0, $zero, 1
/* 80624 800E7174 1082000A */ beq $a0, $v0, .L800E71A0
/* 80628 800E7178 2462FFFF */ addiu $v0, $v1, -1
/* 8062C 800E717C 08039C72 */ j .L800E71C8
/* 80630 800E7180 00000000 */ nop
.L800E7184:
/* 80634 800E7184 2462FFFF */ addiu $v0, $v1, -1
/* 80638 800E7188 00021080 */ sll $v0, $v0, 2
/* 8063C 800E718C 02421021 */ addu $v0, $s2, $v0
/* 80640 800E7190 0C03AC5A */ jal switch_to_partner
/* 80644 800E7194 8C440108 */ lw $a0, 0x108($v0)
/* 80648 800E7198 08039C72 */ j .L800E71C8
/* 8064C 800E719C 00000000 */ nop
.L800E71A0:
/* 80650 800E71A0 00021080 */ sll $v0, $v0, 2
/* 80654 800E71A4 02421021 */ addu $v0, $s2, $v0
/* 80658 800E71A8 0C03A900 */ jal use_consumable
/* 8065C 800E71AC 8C440108 */ lw $a0, 0x108($v0)
/* 80660 800E71B0 3C04800A */ lui $a0, %hi(gOverrideFlags)
/* 80664 800E71B4 2484A650 */ addiu $a0, $a0, %lo(gOverrideFlags)
/* 80668 800E71B8 8C820000 */ lw $v0, ($a0)
/* 8066C 800E71BC 3C030020 */ lui $v1, 0x20
/* 80670 800E71C0 00431025 */ or $v0, $v0, $v1
/* 80674 800E71C4 AC820000 */ sw $v0, ($a0)
.L800E71C8:
/* 80678 800E71C8 0C039A18 */ jal func_800E6860
/* 8067C 800E71CC 00000000 */ nop
/* 80680 800E71D0 0000202D */ daddu $a0, $zero, $zero
/* 80684 800E71D4 2403FFDF */ addiu $v1, $zero, -0x21
/* 80688 800E71D8 8E820000 */ lw $v0, ($s4)
/* 8068C 800E71DC 3C05800A */ lui $a1, %hi(gOverrideFlags)
/* 80690 800E71E0 24A5A650 */ addiu $a1, $a1, %lo(gOverrideFlags)
/* 80694 800E71E4 00431024 */ and $v0, $v0, $v1
/* 80698 800E71E8 AE820000 */ sw $v0, ($s4)
/* 8069C 800E71EC 8CA20000 */ lw $v0, ($a1)
/* 806A0 800E71F0 2403FFBF */ addiu $v1, $zero, -0x41
/* 806A4 800E71F4 00431024 */ and $v0, $v0, $v1
/* 806A8 800E71F8 0C009C22 */ jal set_time_freeze_mode
/* 806AC 800E71FC ACA20000 */ sw $v0, ($a1)
/* 806B0 800E7200 08039C9B */ j .L800E726C_8071C
/* 806B4 800E7204 00000000 */ nop
.L800E7208_806B8:
/* 806B8 800E7208 3C038011 */ lui $v1, %hi(D_8010CCFA)
/* 806BC 800E720C 2463CCFA */ addiu $v1, $v1, %lo(D_8010CCFA)
/* 806C0 800E7210 94620000 */ lhu $v0, ($v1)
/* 806C4 800E7214 2442FFFF */ addiu $v0, $v0, -1
/* 806C8 800E7218 A4620000 */ sh $v0, ($v1)
/* 806CC 800E721C 00021400 */ sll $v0, $v0, 0x10
/* 806D0 800E7220 14400012 */ bnez $v0, .L800E726C_8071C
/* 806D4 800E7224 00000000 */ nop
/* 806D8 800E7228 0C039A18 */ jal func_800E6860
/* 806DC 800E722C 00000000 */ nop
/* 806E0 800E7230 2403FFDF */ addiu $v1, $zero, -0x21
/* 806E4 800E7234 8E820000 */ lw $v0, ($s4)
/* 806E8 800E7238 3C04800A */ lui $a0, %hi(gOverrideFlags)
/* 806EC 800E723C 2484A650 */ addiu $a0, $a0, %lo(gOverrideFlags)
/* 806F0 800E7240 3C018011 */ lui $at, %hi(D_8010CD00)
/* 806F4 800E7244 A420CD00 */ sh $zero, %lo(D_8010CD00)($at)
/* 806F8 800E7248 00431024 */ and $v0, $v0, $v1
/* 806FC 800E724C AE820000 */ sw $v0, ($s4)
/* 80700 800E7250 8C820000 */ lw $v0, ($a0)
/* 80704 800E7254 2403FFBF */ addiu $v1, $zero, -0x41
/* 80708 800E7258 00431024 */ and $v0, $v0, $v1
/* 8070C 800E725C 0C038069 */ jal enable_player_input
/* 80710 800E7260 AC820000 */ sw $v0, ($a0)
/* 80714 800E7264 0C03BD80 */ jal partner_enable_input
/* 80718 800E7268 00000000 */ nop
.L800E726C_8071C:
/* 8071C 800E726C 8FBF0024 */ lw $ra, 0x24($sp)
/* 80720 800E7270 8FB40020 */ lw $s4, 0x20($sp)
/* 80724 800E7274 8FB3001C */ lw $s3, 0x1c($sp)
/* 80728 800E7278 8FB20018 */ lw $s2, 0x18($sp)
/* 8072C 800E727C 8FB10014 */ lw $s1, 0x14($sp)
/* 80730 800E7280 8FB00010 */ lw $s0, 0x10($sp)
/* 80734 800E7284 03E00008 */ jr $ra
/* 80738 800E7288 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,135 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8003DA38
/* 18E38 8003DA38 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 18E3C 8003DA3C AFB00018 */ sw $s0, 0x18($sp)
/* 18E40 8003DA40 24020002 */ addiu $v0, $zero, 2
/* 18E44 8003DA44 AFBF0020 */ sw $ra, 0x20($sp)
/* 18E48 8003DA48 AFB1001C */ sw $s1, 0x1c($sp)
/* 18E4C 8003DA4C F7B80038 */ sdc1 $f24, 0x38($sp)
/* 18E50 8003DA50 F7B60030 */ sdc1 $f22, 0x30($sp)
/* 18E54 8003DA54 F7B40028 */ sdc1 $f20, 0x28($sp)
/* 18E58 8003DA58 14A20019 */ bne $a1, $v0, .L8003DAC0
/* 18E5C 8003DA5C 0080802D */ daddu $s0, $a0, $zero
/* 18E60 8003DA60 3C118007 */ lui $s1, %hi(D_80077C1E)
/* 18E64 8003DA64 26317C1E */ addiu $s1, $s1, %lo(D_80077C1E)
/* 18E68 8003DA68 86230000 */ lh $v1, ($s1)
/* 18E6C 8003DA6C 24020005 */ addiu $v0, $zero, 5
/* 18E70 8003DA70 14620013 */ bne $v1, $v0, .L8003DAC0
/* 18E74 8003DA74 00000000 */ nop
/* 18E78 8003DA78 C60C0038 */ lwc1 $f12, 0x38($s0)
/* 18E7C 8003DA7C 8E060040 */ lw $a2, 0x40($s0)
/* 18E80 8003DA80 C600003C */ lwc1 $f0, 0x3c($s0)
/* 18E84 8003DA84 3C014160 */ lui $at, 0x4160
/* 18E88 8003DA88 44817000 */ mtc1 $at, $f14
/* 18E8C 8003DA8C 3C108007 */ lui $s0, %hi(D_80077C18)
/* 18E90 8003DA90 26107C18 */ addiu $s0, $s0, %lo(D_80077C18)
/* 18E94 8003DA94 8E070000 */ lw $a3, ($s0)
/* 18E98 8003DA98 0C01BEE4 */ jal fx_flower_splash
/* 18E9C 8003DA9C 460E0380 */ add.s $f14, $f0, $f14
/* 18EA0 8003DAA0 C6000000 */ lwc1 $f0, ($s0)
/* 18EA4 8003DAA4 3C01420C */ lui $at, 0x420c
/* 18EA8 8003DAA8 44816000 */ mtc1 $at, $f12
/* 18EAC 8003DAAC 0C00A6C9 */ jal clamp_angle
/* 18EB0 8003DAB0 460C0300 */ add.s $f12, $f0, $f12
/* 18EB4 8003DAB4 E6000000 */ swc1 $f0, ($s0)
/* 18EB8 8003DAB8 0800F706 */ j .L8003DC18
/* 18EBC 8003DABC A6200000 */ sh $zero, ($s1)
.L8003DAC0:
/* 18EC0 8003DAC0 3C038007 */ lui $v1, %hi(D_80077C1E)
/* 18EC4 8003DAC4 24637C1E */ addiu $v1, $v1, %lo(D_80077C1E)
/* 18EC8 8003DAC8 94620000 */ lhu $v0, ($v1)
/* 18ECC 8003DACC 24420001 */ addiu $v0, $v0, 1
/* 18ED0 8003DAD0 A4620000 */ sh $v0, ($v1)
/* 18ED4 8003DAD4 00021400 */ sll $v0, $v0, 0x10
/* 18ED8 8003DAD8 00021403 */ sra $v0, $v0, 0x10
/* 18EDC 8003DADC 28420006 */ slti $v0, $v0, 6
/* 18EE0 8003DAE0 14400002 */ bnez $v0, .L8003DAEC
/* 18EE4 8003DAE4 24020005 */ addiu $v0, $zero, 5
/* 18EE8 8003DAE8 A4620000 */ sh $v0, ($v1)
.L8003DAEC:
/* 18EEC 8003DAEC 3C048007 */ lui $a0, %hi(D_80077C1C)
/* 18EF0 8003DAF0 24847C1C */ addiu $a0, $a0, %lo(D_80077C1C)
/* 18EF4 8003DAF4 94820000 */ lhu $v0, ($a0)
/* 18EF8 8003DAF8 24430001 */ addiu $v1, $v0, 1
/* 18EFC 8003DAFC 00021400 */ sll $v0, $v0, 0x10
/* 18F00 8003DB00 18400045 */ blez $v0, .L8003DC18
/* 18F04 8003DB04 A4830000 */ sh $v1, ($a0)
/* 18F08 8003DB08 C60C000C */ lwc1 $f12, 0xc($s0)
/* 18F0C 8003DB0C A4800000 */ sh $zero, ($a0)
/* 18F10 8003DB10 0C00A6C9 */ jal clamp_angle
/* 18F14 8003DB14 46006307 */ neg.s $f12, $f12
/* 18F18 8003DB18 3C0140C9 */ lui $at, 0x40c9
/* 18F1C 8003DB1C 34210FD0 */ ori $at, $at, 0xfd0
/* 18F20 8003DB20 44811000 */ mtc1 $at, $f2
/* 18F24 8003DB24 00000000 */ nop
/* 18F28 8003DB28 46020502 */ mul.s $f20, $f0, $f2
/* 18F2C 8003DB2C 00000000 */ nop
/* 18F30 8003DB30 3C0143B4 */ lui $at, 0x43b4
/* 18F34 8003DB34 44810000 */ mtc1 $at, $f0
/* 18F38 8003DB38 00000000 */ nop
/* 18F3C 8003DB3C 4600A503 */ div.s $f20, $f20, $f0
/* 18F40 8003DB40 0C00A85B */ jal sin_rad
/* 18F44 8003DB44 4600A306 */ mov.s $f12, $f20
/* 18F48 8003DB48 4600A306 */ mov.s $f12, $f20
/* 18F4C 8003DB4C 0C00A874 */ jal cos_rad
/* 18F50 8003DB50 46000506 */ mov.s $f20, $f0
/* 18F54 8003DB54 860200A6 */ lh $v0, 0xa6($s0)
/* 18F58 8003DB58 44821000 */ mtc1 $v0, $f2
/* 18F5C 8003DB5C 00000000 */ nop
/* 18F60 8003DB60 468010A0 */ cvt.s.w $f2, $f2
/* 18F64 8003DB64 46141502 */ mul.s $f20, $f2, $f20
/* 18F68 8003DB68 00000000 */ nop
/* 18F6C 8003DB6C 46001082 */ mul.s $f2, $f2, $f0
/* 18F70 8003DB70 00000000 */ nop
/* 18F74 8003DB74 3C01BECC */ lui $at, 0xbecc
/* 18F78 8003DB78 3421CCCD */ ori $at, $at, 0xcccd
/* 18F7C 8003DB7C 44810000 */ mtc1 $at, $f0
/* 18F80 8003DB80 00000000 */ nop
/* 18F84 8003DB84 4600A502 */ mul.s $f20, $f20, $f0
/* 18F88 8003DB88 00000000 */ nop
/* 18F8C 8003DB8C 46001082 */ mul.s $f2, $f2, $f0
/* 18F90 8003DB90 00000000 */ nop
/* 18F94 8003DB94 C6000038 */ lwc1 $f0, 0x38($s0)
/* 18F98 8003DB98 46140600 */ add.s $f24, $f0, $f20
/* 18F9C 8003DB9C C6000040 */ lwc1 $f0, 0x40($s0)
/* 18FA0 8003DBA0 C604003C */ lwc1 $f4, 0x3c($s0)
/* 18FA4 8003DBA4 46020580 */ add.s $f22, $f0, $f2
/* 18FA8 8003DBA8 3C014178 */ lui $at, 0x4178
/* 18FAC 8003DBAC 44810000 */ mtc1 $at, $f0
/* 18FB0 8003DBB0 2404000A */ addiu $a0, $zero, 0xa
/* 18FB4 8003DBB4 0C00A67F */ jal rand_int
/* 18FB8 8003DBB8 46002500 */ add.s $f20, $f4, $f0
/* 18FBC 8003DBBC 24040001 */ addiu $a0, $zero, 1
/* 18FC0 8003DBC0 44821000 */ mtc1 $v0, $f2
/* 18FC4 8003DBC4 00000000 */ nop
/* 18FC8 8003DBC8 468010A0 */ cvt.s.w $f2, $f2
/* 18FCC 8003DBCC C600000C */ lwc1 $f0, 0xc($s0)
/* 18FD0 8003DBD0 3C108007 */ lui $s0, %hi(D_80077C20)
/* 18FD4 8003DBD4 26107C20 */ addiu $s0, $s0, %lo(D_80077C20)
/* 18FD8 8003DBD8 4405C000 */ mfc1 $a1, $f24
/* 18FDC 8003DBDC 4407B000 */ mfc1 $a3, $f22
/* 18FE0 8003DBE0 46000007 */ neg.s $f0, $f0
/* 18FE4 8003DBE4 46020000 */ add.s $f0, $f0, $f2
/* 18FE8 8003DBE8 3C0140A0 */ lui $at, 0x40a0
/* 18FEC 8003DBEC 44811000 */ mtc1 $at, $f2
/* 18FF0 8003DBF0 4406A000 */ mfc1 $a2, $f20
/* 18FF4 8003DBF4 46020001 */ sub.s $f0, $f0, $f2
/* 18FF8 8003DBF8 C6020000 */ lwc1 $f2, ($s0)
/* 18FFC 8003DBFC 468010A0 */ cvt.s.w $f2, $f2
/* 19000 8003DC00 E7A20014 */ swc1 $f2, 0x14($sp)
/* 19004 8003DC04 0C01BEFC */ jal fx_flower_trail
/* 19008 8003DC08 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1900C 8003DC0C 8E020000 */ lw $v0, ($s0)
/* 19010 8003DC10 2C420001 */ sltiu $v0, $v0, 1
/* 19014 8003DC14 AE020000 */ sw $v0, ($s0)
.L8003DC18:
/* 19018 8003DC18 8FBF0020 */ lw $ra, 0x20($sp)
/* 1901C 8003DC1C 8FB1001C */ lw $s1, 0x1c($sp)
/* 19020 8003DC20 8FB00018 */ lw $s0, 0x18($sp)
/* 19024 8003DC24 D7B80038 */ ldc1 $f24, 0x38($sp)
/* 19028 8003DC28 D7B60030 */ ldc1 $f22, 0x30($sp)
/* 1902C 8003DC2C D7B40028 */ ldc1 $f20, 0x28($sp)
/* 19030 8003DC30 03E00008 */ jr $ra
/* 19034 8003DC34 27BD0040 */ addiu $sp, $sp, 0x40