f270, world, and more (#246)

* 415D90 decomp

* code_415D90 rodata migration

* data migration, decomp

* .

* .

* .

* 4 funcs

* non-matching

* audio part 1

* audio work

* end of snd

* update_symbol_addrs

* .

* 🐔

* .

* sfx func names

* bgm

* more audio

* .

* a few audio funcs

* update section length

* git subrepo pull --force tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "82ff308caf"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "82ff308caf"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

* git subrepo pull --force tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "4e9d3cdf85"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "4e9d3cdf85"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

* misc-decomp power

* sound

* 4 mo

* more changes

* .

* some f270

* git subrepo pull --force tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "1c8ff4ec3f"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "1c8ff4ec3f"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

* git subrepo pull --force tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "f0633ecdbc"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "f0633ecdbc"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

* fix is_logo image size

* .

* git subrepo pull tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "4be92a4786"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "4be92a4786"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

* state_step_pause

* almost

* fixing symbol_addrs and disasm

* update symbol_addrs

* .

* fix Matrix4f usages

* .

* .

* update_symbol_addrs

* fixes

* I hate bitfields

* load_map_by_IDs

* cleanup

* state_step_logos

* more cleanup

* .

* splat

* PR comments
This commit is contained in:
Ethan Roseman 2021-04-02 03:00:29 +09:00 committed by GitHub
parent e7df01db20
commit 353ab8d051
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
77 changed files with 1969 additions and 2628 deletions

View File

@ -343,7 +343,7 @@ typedef struct StaticEntityData {
/* 0x21 */ char unk_21[3]; /* 0x21 */ char unk_21[3];
} StaticEntityData; // size = 0x24 } StaticEntityData; // size = 0x24
typedef struct MusicPlayer { typedef struct MusicSettings {
/* 0x00 */ u16 flags; /* 0x00 */ u16 flags;
/* 0x02 */ u16 unk_02; /* 0x02 */ u16 unk_02;
/* 0x04 */ s32 fadeOutTime; /* 0x04 */ s32 fadeOutTime;
@ -352,13 +352,13 @@ typedef struct MusicPlayer {
/* 0x0E */ s16 unk_0E; /* 0x0E */ s16 unk_0E;
/* 0x10 */ s32 songID; /* 0x10 */ s32 songID;
/* 0x14 */ s32 variation; /* 0x14 */ s32 variation;
/* 0x18 */ s32 unk_18; /* 0x18 */ s32 songName;
/* 0x1C */ s32 unk_1C; /* 0x1C */ s32 unk_1C;
/* 0x20 */ s32 unk_20; /* 0x20 */ s32 unk_20;
/* 0x24 */ s32 unk_24; /* 0x24 */ s32 unk_24;
/* 0x28 */ s32 unk_28; /* 0x28 */ s32 unk_28;
/* 0x2C */ s32 unk_2C; /* 0x2C */ s32 unk_2C;
} MusicPlayer; // size = 0x30 } MusicSettings; // size = 0x30
typedef struct MenuIcon { typedef struct MenuIcon {
/* 0x00 */ u32 flags; /* 0x00 */ u32 flags;
@ -993,8 +993,9 @@ typedef struct GameStatus {
/* 0x0AA */ s8 unk_AA; /* 0x0AA */ s8 unk_AA;
/* 0x0AB */ s8 unk_AB; /* 0x0AB */ s8 unk_AB;
/* 0x0AC */ s8 loadMenuState; /* 0x0AC */ s8 loadMenuState;
/* 0x0AD */ u8 menuCounter; /* 0x0AD */ s8 menuCounter;
/* 0x0AE */ char unk_AE[8]; /* 0x0AE */ s8 bSkipIntro;
/* 0x0AF */ char unk_AF[0x7];
/* 0x0B6 */ s16 bootAlpha; /* 0x0B6 */ s16 bootAlpha;
/* 0x0B8 */ s16 bootBlue; /* 0x0B8 */ s16 bootBlue;
/* 0x0BA */ s16 bootGreen; /* 0x0BA */ s16 bootGreen;
@ -1017,7 +1018,7 @@ typedef struct GameStatus {
/* 0x154 */ UNK_PTR backgroundRaster; /* 0x154 */ UNK_PTR backgroundRaster;
/* 0x158 */ UNK_PTR backgroundPalette; /* 0x158 */ UNK_PTR backgroundPalette;
/* 0x15C */ s16 unk_15C; /* 0x15C */ s16 unk_15C;
/* 0x15E */ char unk_15E[0x2]; /* 0x15E */ u16 unk_15E;
/* 0x160 */ Vec3s savedPos; /* 0x160 */ Vec3s savedPos;
/* 0x166 */ u8 saveSlot; /* 0x166 */ u8 saveSlot;
/* 0x167 */ u8 loadType; /* (0 = from map, 1 = from main menu) */ /* 0x167 */ u8 loadType; /* (0 = from map, 1 = from main menu) */

View File

@ -146,8 +146,10 @@ void mem_clear(s8* data, s32 numBytes);
MenuIcon* create_icon(s32* iconIndex); MenuIcon* create_icon(s32* iconIndex);
void set_icon_render_pos(MenuIcon* iconIndex, s32 posX, s32 posY); void set_icon_render_pos(MenuIcon* iconIndex, s32 posX, s32 posY);
void set_curtain_scale_goal(f32 scale); void intro_logos_set_fade_color(s16 color);
void set_curtain_fade(f32 scale); void intro_logos_set_fade_alpha(s16 alpha);
void set_game_mode(s16 idx);
void fx_walk_normal(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, s32 arg5); void fx_walk_normal(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, s32 arg5);
void fx_emote(s32, Npc*, f32, f32, f32, f32, f32, s32, s32*); void fx_emote(s32, Npc*, f32, f32, f32, f32, f32, s32, s32*);
@ -233,6 +235,7 @@ void add_vec2D_polar(f32* x, f32* y, f32 r, f32 theta);
s32 sfx_adjust_env_sound_pos(s32 soundID, s32 arg1, f32 arg2, f32 arg3, f32 arg4); s32 sfx_adjust_env_sound_pos(s32 soundID, s32 arg1, f32 arg2, f32 arg3, f32 arg4);
s32 sfx_play_sound_at_position(s32 soundID, s32 value2, f32 posX, f32 posY, f32 posZ); s32 sfx_play_sound_at_position(s32 soundID, s32 value2, f32 posX, f32 posY, f32 posZ);
s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume); s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume);
void func_801497FC(s32 arg0);
s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2); s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2);
s32 basic_window_update(void); s32 basic_window_update(void);
@ -263,6 +266,8 @@ void suspend_all_group(s32 groupFlags);
void kill_script(ScriptInstance* instanceToKill); void kill_script(ScriptInstance* instanceToKill);
void exec_entity_updatecmd(Entity* entity); void exec_entity_updatecmd(Entity* entity);
void sfx_reset_door_sounds(void);
void func_802D7460(f32 x, f32 y, f32 z, s32 arg3); void func_802D7460(f32 x, f32 y, f32 z, s32 arg3);
void func_802D74C0(f32 x, f32 y, f32 z, s32 arg3); void func_802D74C0(f32 x, f32 y, f32 z, s32 arg3);
@ -282,6 +287,23 @@ void func_80138D88(s32, s32, s32, s32, f32);
s32 func_80071030(s32 a0, f32 a1, f32 a2, f32 a3, s32 a4); s32 func_80071030(s32 a0, f32 a1, f32 a2, f32 a3, s32 a4);
void func_80070CD0(s32, f32, f32, f32, f32, f32); void func_80070CD0(s32, f32, f32, f32, f32, f32);
void func_802B2078(void);
extern f32 gCurtainScale;
extern f32 gCurtainScaleGoal;
extern f32 gCurtainFade;
extern f32 gCurtainFadeGoal;
extern UNK_FUN_PTR(gCurtainDrawCallback);
void initialize_curtains(void);
void update_curtains(void);
// render_curtains
void set_curtain_scale_goal(f32 scale);
void set_curtain_scale(f32 scale);
void set_curtain_draw_callback(UNK_FUN_PTR(callback));
void set_curtain_fade_goal(f32 fade);
void set_curtain_fade(f32 fade);
// Dead functions: // Dead functions:
Npc* func_8003E4BC(NpcID npcId); // get_npc_safe Npc* func_8003E4BC(NpcID npcId); // get_npc_safe
Npc* func_8003E534(NpcID npcId); // get_npc_safe Npc* func_8003E534(NpcID npcId); // get_npc_safe

View File

@ -42,9 +42,14 @@ typedef struct Map {
/* 0x10 */ void* dmaDest; /* 0x10 */ void* dmaDest;
/* 0x14 */ char* bgName; /* 0x14 */ char* bgName;
/* 0x18 */ MapInit init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. /* 0x18 */ MapInit init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading.
/* 0x1C */ s16 unk_1C; // Unused? /* 0x1C */ union {
/* 0x1E */ s8 songVariation; ///< 0 or 1. @see bgm_get_map_default_variation u32 u32;
/* 0x1F */ s8 flags; struct {
char unk_1C[0x2];
s8 songVariation; ///< 0 or 1. @see bgm_get_map_default_variation
s8 flags;
} bytes;
} unk_1C;
} Map; // size = 0x20 } Map; // size = 0x20
typedef struct Area { typedef struct Area {

View File

@ -213,12 +213,27 @@ extern s32 gStatsMenuIconIDs[12];
extern s32 gGameState; extern s32 gGameState;
extern s16 D_8009A604; extern s16 D_8009A604;
extern s32 D_8009A64C; extern s32 D_8009A64C;
extern s32* D_8009A658;
extern s32 gOverrideFlags; extern s32 gOverrideFlags;
extern u16 D_8009A6A0; extern u16 D_8009A6A0;
extern u16 D_8009A6A2; extern u16 D_8009A6A2;
extern u16 D_8009A6A4; extern u16 D_8009A6A4;
extern u16 D_8009A6A6; extern u16 D_8009A6A6;
extern s32* D_800A0914;
extern s32* D_800A0918;
extern s32* D_800A091C;
extern s8 D_800A0920;
extern s32 D_800A0924;
extern s8 D_800A0921;
extern s16 D_800A0922;
extern s32 D_800B0CF0;
extern s32 D_800D91E0;
extern s32 D_800D9230;
extern s32* D_80210000;
extern s8 D_802D9D70;
extern s8 D_802D9D71;
extern s16 gCurrentDoorSoundsSet; extern s16 gCurrentDoorSoundsSet;
extern s32 D_800D9620; extern s32 D_800D9620;
@ -266,6 +281,9 @@ extern u32 D_80078174;
extern s32 D_8009A5D8; extern s32 D_8009A5D8;
extern u8 D_800A0963; extern u8 D_800A0963;
extern s32 D_8009A5D0;
extern s32 D_8009A678;
extern UNK_TYPE D_802EB3B0; extern UNK_TYPE D_802EB3B0;
extern UNK_TYPE D_00000094; extern UNK_TYPE D_00000094;
extern UNK_TYPE D_00000094_2; // two symbols resolve to the same addr. Required for matching extern UNK_TYPE D_00000094_2; // two symbols resolve to the same addr. Required for matching
@ -293,8 +311,8 @@ extern s16 gMusicUnkVolume;
extern s16 gMusicUnkVolume2; extern s16 gMusicUnkVolume2;
extern s16 gMusicCurrentVolume; extern s16 gMusicCurrentVolume;
extern s16 gMusicTargetVolume; extern s16 gMusicTargetVolume;
extern MusicPlayer gMusicPlayers[4]; extern MusicSettings gMusicSettings[4];
extern MusicPlayer D_8014F6F0; extern MusicSettings D_8014F6F0;
// OS // OS
extern OSThread D_800A4270; // idle thread, id 1 extern OSThread D_800A4270; // idle thread, id 1
@ -334,6 +352,9 @@ extern UNK_PTR D_800F7BBC;
extern s32 D_802C05CC; extern s32 D_802C05CC;
// Heap?
extern s32 D_803DA800;
// Dead code // Dead code
extern PlayerStatus* D_800FFC90; // gPlayerStatusPtr extern PlayerStatus* D_800FFC90; // gPlayerStatusPtr

View File

@ -34,6 +34,14 @@ typedef struct UnkAl1 {
/* 0x1A */ s16 unk_1A; /* 0x1A */ s16 unk_1A;
} UnkAl1; // size unknown (currently 0x1C) } UnkAl1; // size unknown (currently 0x1C)
typedef struct Fade {
/* 0x0 */ UnkField currentVolume;
/* 0x4 */ s32 fadeStep;
/* 0x8 */ s16 endVolume;
/* 0xA */ s16 fadeTime;
/* 0xC */ UnkFuncAl fpFadeCallback;
} Fade; // size = 0x10
typedef struct InstrumentCFG { // maybe same as UnkAlC? typedef struct InstrumentCFG { // maybe same as UnkAlC?
/* 0x00 */ s16 unk_00; /* 0x00 */ s16 unk_00;
/* 0x02 */ u8 unk_02; /* 0x02 */ u8 unk_02;
@ -210,7 +218,7 @@ typedef struct Instrument {
/* 0x2C */ s32 unkOffset; /* 0x2C */ s32 unkOffset;
} Instrument; } Instrument;
typedef Instrument* Instruments[16]; typedef Instrument* InstrumentGroup[16];
typedef struct UnkAl48 { // Track? typedef struct UnkAl48 { // Track?
/* 0x00 */ s32 unk_00; // pointer to something /* 0x00 */ s32 unk_00; // pointer to something
@ -303,10 +311,7 @@ typedef struct UnkAl19E0 {
/* 0x0053 */ u8 unk_53; /* 0x0053 */ u8 unk_53;
/* 0x0054 */ s32* dataPER; /* 0x0054 */ s32* dataPER;
/* 0x0058 */ s32* dataPRG; /* 0x0058 */ s32* dataPRG;
/* 0x005C */ s32* unk_5C; /* 0x005C */ s32* currentTrackData[4];
/* 0x0060 */ s32* unk_60;
/* 0x0064 */ s32* unk_64;
/* 0x0068 */ s32* unk_68;
/* 0x006C */ UnkAl19E0Sub3 unk_6C[1]; /* 0x006C */ UnkAl19E0Sub3 unk_6C[1];
/* 0x0074 */ char unk_74[0x8]; /* 0x0074 */ char unk_74[0x8];
/* 0x007C */ s32 unkSongName; /* 0x007C */ s32 unkSongName;
@ -314,20 +319,20 @@ typedef struct UnkAl19E0 {
/* 0x0084 */ s32 unkFadeTime; /* 0x0084 */ s32 unkFadeTime;
/* 0x0088 */ s32 unkFadeStart; /* 0x0088 */ s32 unkFadeStart;
/* 0x008C */ s32 unkFadeEnd; /* 0x008C */ s32 unkFadeEnd;
/* 0x0090 */ s32* unk_90; /* 0x0090 */ s32 unk_90;
/* 0x0094 */ s32* unk_94; /* 0x0094 */ s32* unk_94;
/* 0x0098 */ s32* unk_98; /* 0x0098 */ u32 unk_98;
/* 0x009C */ s32 unk_9C; /* 0x009C */ s32 unk_9C;
/* 0x00A0 */ s32* dataSEF; /* 0x00A0 */ s32* dataSEF;
/* 0x00A4 */ UnkFuncAl unk_A4[2]; /* 0x00A4 */ UnkFuncAl unk_A4[2];
/* 0x00AC */ Instruments instrumentGroupX[1]; /* 0x00AC */ InstrumentGroup instrumentGroupX[1];
/* 0x00EC */ Instruments instrumentGroup3[16]; /* 0x00EC */ InstrumentGroup instrumentGroup3[16];
/* 0x04EC */ Instruments instrumentGroup1[4]; /* 0x04EC */ InstrumentGroup instrumentGroup1[4];
/* 0x05EC */ Instruments instrumentGroup2[16]; /* 0x05EC */ InstrumentGroup instrumentGroup2[16];
/* 0x09EC */ Instruments instrumentGroup4[16]; /* 0x09EC */ InstrumentGroup instrumentGroup4[16];
/* 0x0DEC */ Instruments instrumentGroup5[16]; /* 0x0DEC */ InstrumentGroup instrumentGroup5[16];
/* 0x11EC */ Instruments instrumentGroup6[4]; /* 0x11EC */ InstrumentGroup instrumentGroup6[4];
/* 0x12EC */ Instruments* instrumentGroups[8]; /* 0x12EC */ InstrumentGroup* instrumentGroups[8];
/* 0x130C */ u8 unk_130C; /* 0x130C */ u8 unk_130C;
/* 0x130D */ char unk_130D[3]; /* 0x130D */ char unk_130D[3];
/* 0x1310 */ s32* banks[3]; /* 0x1310 */ s32* banks[3];
@ -385,14 +390,6 @@ typedef struct UnkAl24 {
/* 0x17 */ u8 unk_17; /* 0x17 */ u8 unk_17;
} UnkAl24; // size = 0x18; } UnkAl24; // size = 0x18;
typedef struct Fade {
/* 0x0 */ UnkField currentVolume;
/* 0x4 */ s32 fadeStep;
/* 0x8 */ s16 endVolume;
/* 0xA */ s16 fadeTime;
/* 0xC */ UnkFuncAl fpFadeCallback;
} Fade; // size = 0x10
typedef struct BGMPlayer { typedef struct BGMPlayer {
/* 0x000 */ UnkAl19E0* data; /* 0x000 */ UnkAl19E0* data;
/* 0x004 */ SoundManager* soundManager; /* 0x004 */ SoundManager* soundManager;
@ -436,7 +433,7 @@ typedef struct BGMPlayer {
/* 0x168 */ s32 unk_168; /* 0x168 */ s32 unk_168;
/* 0x16C */ char unk_16C[0x98]; /* 0x16C */ char unk_16C[0x98];
/* 0x204 */ s32 unk_204; /* 0x204 */ s32 unk_204;
/* 0x208 */ s16 unk_208; /* 0x208 */ u16 unk_208;
/* 0x20A */ u16 unk_20A; /* 0x20A */ u16 unk_20A;
/* 0x20C */ s16 unk_20C; /* 0x20C */ s16 unk_20C;
/* 0x20E */ s16 unk_20E; /* 0x20E */ s16 unk_20E;
@ -463,10 +460,10 @@ typedef struct BGMPlayer {
/* 0x235 */ u8 unk_235; /* 0x235 */ u8 unk_235;
/* 0x236 */ char unk_236[0x2]; /* 0x236 */ char unk_236[0x2];
/* 0x238 */ s32 unk_238[8]; /* 0x238 */ s32 unk_238[8];
/* 0x258 */ s8 unk_258; /* 0x258 */ u8 unk_258;
/* 0x259 */ s8 unk_259; /* 0x259 */ s8 unk_259;
/* 0x25A */ s8 unk_25A; /* 0x25A */ u8 unk_25A;
/* 0x25B */ s8 unk_25B; /* 0x25B */ u8 unk_25B;
/* 0x25C */ BGMPlayerTrack unk_25C[16]; /* 0x25C */ BGMPlayerTrack unk_25C[16];
/* 0x85C */ UnkAl24 unk_85C[24]; /* 0x85C */ UnkAl24 unk_85C[24];
} BGMPlayer; // size = 0xA9C } BGMPlayer; // size = 0xA9C
@ -543,7 +540,7 @@ extern s8 D_800A3FEC;
extern s16 D_800A3FEE; extern s16 D_800A3FEE;
extern s32 D_800A3FF0; extern s32 D_800A3FF0;
void snd_load_BK_headers(UnkAl19E0* arg0, ALHeap* arg1); void snd_load_BK_headers(UnkAl19E0* arg0, ALHeap*);
void func_8004B440(SoundManager*, u8, u8, UnkAl19E0*, u8); void func_8004B440(SoundManager*, u8, u8, UnkAl19E0*, u8);
void snd_load_sfx_groups_from_SEF(SoundManager*); void snd_load_sfx_groups_from_SEF(SoundManager*);
@ -592,6 +589,9 @@ void snd_BGMCmd_FE(BGMPlayer*, BGMPlayerTrack*);
void snd_BGMCmd_FC_Jump(BGMPlayer*, BGMPlayerTrack*); void snd_BGMCmd_FC_Jump(BGMPlayer*, BGMPlayerTrack*);
void snd_BGMCmd_FF(BGMPlayer*, BGMPlayerTrack*); void snd_BGMCmd_FF(BGMPlayer*, BGMPlayerTrack*);
void snd_BGMCmd_NOP(BGMPlayer*, BGMPlayerTrack*); void snd_BGMCmd_NOP(BGMPlayer*, BGMPlayerTrack*);
void func_80050770(BGMPlayer*, f32);
void func_80050818(BGMPlayer*, s32);
void func_8005087C(BGMPlayer*, s32*, s32);
s32 func_80056068(s32, u8); s32 func_80056068(s32, u8);
s32 func_800506C8(s32, s32); s32 func_800506C8(s32, s32);
s32 func_80050C30(u32); s32 func_80050C30(u32);
@ -614,7 +614,7 @@ void func_80053370(UnkAlC*);
void func_800533A8(InstrumentCFG*); void func_800533A8(InstrumentCFG*);
void func_80053654(UnkAl19E0*); void func_80053654(UnkAl19E0*);
//void snd_initialize_fade(Fade*, s32, s32, s16); //void snd_initialize_fade(Fade*, s32, s32, s16);
void func_80053A18(UnkAl1*); void func_80053A18(Fade*);
void func_80053A28(UnkAl1*); void func_80053A28(UnkAl1*);
void func_80053A98(u8, u16, s32); void func_80053A98(u8, u16, s32);
void func_80053AEC(UnkAl1*, s16); void func_80053AEC(UnkAl1*, s16);

View File

@ -1,4 +1,4 @@
#include "code_11a50_len_7a0.h" #include "common.h"
void begin_state_intro(void) { void begin_state_intro(void) {
GameStatus** gameStatus = &gGameStatusPtr; GameStatus** gameStatus = &gGameStatusPtr;

View File

@ -1,7 +0,0 @@
#ifndef _CODE_11A50_LEN_7A0_H_
#define _CODE_11A50_LEN_7A0_H_
#include "common.h"
#include "code_6e40_len_500.h"
#endif

View File

@ -6,12 +6,12 @@ void func_8003E670(void);
void NOP_npc_callback(void) { void NOP_npc_callback(void) {
} }
void mtx_ident_mirror_y(Matrix4f* mtx) { void mtx_ident_mirror_y(Matrix4f mtx) {
guMtxIdentF(*mtx); guMtxIdentF(*mtx);
(*mtx)[0][0] = 1.0f; mtx[0][0] = 1.0f;
(*mtx)[1][1] = -1.0f; mtx[1][1] = -1.0f;
(*mtx)[2][2] = 1.0f; mtx[2][2] = 1.0f;
(*mtx)[3][3] = 1.0f; mtx[3][3] = 1.0f;
} }
INCLUDE_ASM(s32, "code_13870_len_6980", clear_npcs); INCLUDE_ASM(s32, "code_13870_len_6980", clear_npcs);

View File

@ -5,13 +5,13 @@ INCLUDE_ASM(void, "code_28910_len_5090", func_8004D510, BGMPlayer* arg0);
// Return values are being pushed into v0 in the wrong place // Return values are being pushed into v0 in the wrong place
// May depend on data decomp // May depend on data decomp
#ifdef NON_MATCHING #ifdef NON_MATCHING
UnkAlA9C* snd_get_player_with_song_name(s32 songString) { BGMPlayer* snd_get_player_with_song_name(s32 songString) {
UnkAl19E0* temp_v1 = D_8009A664->unk_00; UnkAl19E0* temp_v1 = D_8009A664->data;
if (songString == temp_v1->unk_5C[2]) { if (songString == temp_v1->currentTrackData[0][2]) {
return D_8009A664; return D_8009A664;
} }
if (songString == temp_v1->unk_60[2]) { if (songString == temp_v1->currentTrackData[1][2]) {
return D_8009A5FC; return D_8009A5FC;
} }
return NULL; return NULL;
@ -22,21 +22,21 @@ INCLUDE_ASM(BGMPlayer*, "code_28910_len_5090", snd_get_player_with_song_name, s3
INCLUDE_ASM(s32, "code_28910_len_5090", func_8004D7E0); INCLUDE_ASM(s32, "code_28910_len_5090", func_8004D7E0);
s32 func_8004DA0C(UNK_TYPE arg0) { s32 func_8004DA0C(s32 songName) {
s32 ret = 0; s32 ret = 0;
if (arg0 != 0) { if (songName != 0) {
BGMPlayer* unknown; BGMPlayer* player;
do { do {
unknown = snd_get_player_with_song_name(arg0); player = snd_get_player_with_song_name(songName);
} while (0); } while (0);
do { do {
if (unknown == NULL) { if (player == NULL) {
ret = 2; ret = 2;
} else if (arg0 == unknown->songName) { } else if (songName == player->songName) {
func_8004DAA8(unknown); func_8004DAA8(player);
ret = 0; ret = 0;
} }
} while (0); } while (0);
@ -49,12 +49,12 @@ s32 func_8004DA0C(UNK_TYPE arg0) {
INCLUDE_ASM(s32, "code_28910_len_5090", func_8004DA74); INCLUDE_ASM(s32, "code_28910_len_5090", func_8004DA74);
void func_8004DAA8(BGMPlayer* arg0) { void func_8004DAA8(BGMPlayer* player) {
if (arg0->unk_221 != 0) { if (player->unk_221 != 0) {
arg0->unk_221 = 4; player->unk_221 = 4;
arg0->unk_10 = 1; player->unk_10 = 1;
arg0->unkFrequency = 1; player->unkFrequency = 1;
func_80053A18(&arg0->fadeInfo); func_80053A18(&player->fadeInfo);
} }
} }
@ -74,52 +74,52 @@ INCLUDE_ASM(void, "code_28910_len_5090", func_8004DFD4, UnkAl19E0* arg0);
INCLUDE_ASM(s32, "code_28910_len_5090", func_8004E0F4); INCLUDE_ASM(s32, "code_28910_len_5090", func_8004E0F4);
void func_8004E158(BGMPlayer* arg0, s32 arg1, s32 arg2, UnkAl19E0* arg3) { void func_8004E158(BGMPlayer* player, s32 arg1, s32 arg2, UnkAl19E0* arg3) {
s16 i; s16 i;
arg0->data = arg3; player->data = arg3;
func_8004E880(arg0, 0x2625A, 0x30); func_8004E880(player, 0x2625A, 0x30);
arg0->unk_48 = 0x8000; player->unk_48 = 0x8000;
arg0->unk_B0 = 0x3CF0; player->unk_B0 = 0x3CF0;
arg0->unk_C0 = 0x7F000000; player->unk_C0 = 0x7F000000;
arg0->unk_22B = 1; player->unk_22B = 1;
arg0->unk_14 = 0; player->unk_14 = 0;
arg0->unk_18 = 0; player->unk_18 = 0;
arg0->songName = 0; player->songName = 0;
arg0->fadeSongName = 0; player->fadeSongName = 0;
arg0->unk_58 = 0; player->unk_58 = 0;
arg0->unk_5A = 0; player->unk_5A = 0;
arg0->unk_68 = 0; player->unk_68 = 0;
arg0->unk_6C = 0; player->unk_6C = 0;
arg0->unk_70 = 0; player->unk_70 = 0;
arg0->unk_BC = 0; player->unk_BC = 0;
arg0->unk_B8 = 0; player->unk_B8 = 0;
arg0->unk_B4 = 0; player->unk_B4 = 0;
arg0->unk_CC = 0; player->unk_CC = 0;
arg0->unk_C8 = 0; player->unk_C8 = 0;
arg0->unk_C4 = 0; player->unk_C4 = 0;
arg0->unk_20C = 0; player->unk_20C = 0;
arg0->unk_20E = 0; player->unk_20E = 0;
arg0->unk_220 = 0; player->unk_220 = 0;
arg0->unk_204 = 0; player->unk_204 = 0;
arg0->unk_232 = 0; player->unk_232 = 0;
arg0->unk_221 = 0; player->unk_221 = 0;
arg0->unk_234 = arg1; player->unk_234 = arg1;
arg0->unk_235 = arg2; player->unk_235 = arg2;
arg0->unk_168 = 0; player->unk_168 = 0;
arg0->unk_222 = 0; player->unk_222 = 0;
arg0->unk_223 = 0; player->unk_223 = 0;
arg0->unk_22A = 0; player->unk_22A = 0;
arg0->unk_22C = 0; player->unk_22C = 0;
arg0->unk_D0 = 1.0f; player->unk_D0 = 1.0f;
arg0->unk_22D = 0; player->unk_22D = 0;
arg0->unk_22F = 2; player->unk_22F = 2;
arg0->unk_230 = 3; player->unk_230 = 3;
arg0->unk_22E = 0; player->unk_22E = 0;
arg0->unk_231 = 4; player->unk_231 = 4;
for (i = 0; i < ARRAY_COUNT(arg0->unk_25C); i++) { for (i = 0; i < ARRAY_COUNT(player->unk_25C); i++) {
BGMPlayerTrack* temp = &arg0->unk_25C[i]; BGMPlayerTrack* temp = &player->unk_25C[i];
temp->subTrackVolume = 0; temp->subTrackVolume = 0;
temp->unk_28 = 0; temp->unk_28 = 0;
@ -132,13 +132,13 @@ void func_8004E158(BGMPlayer* arg0, s32 arg1, s32 arg2, UnkAl19E0* arg3) {
temp->segTrackVolume = 0x7F; temp->segTrackVolume = 0x7F;
temp->unk_4C = 0; temp->unk_4C = 0;
if (i < ARRAY_COUNT(arg0->unk_238)) { if (i < ARRAY_COUNT(player->unk_238)) {
arg0->unk_238[i] = 0; player->unk_238[i] = 0;
} }
} }
for (i = 0; i < ARRAY_COUNT(arg0->unk_85C); i++) { for (i = 0; i < ARRAY_COUNT(player->unk_85C); i++) {
UnkAl24* temp = &arg0->unk_85C[i]; UnkAl24* temp = &player->unk_85C[i];
temp->unk_08 = 0; temp->unk_08 = 0;
temp->unk_0A = 0; temp->unk_0A = 0;
@ -148,8 +148,8 @@ void func_8004E158(BGMPlayer* arg0, s32 arg1, s32 arg2, UnkAl19E0* arg3) {
temp->unk_17 = 0; temp->unk_17 = 0;
} }
func_80053AEC(&arg0->fadeInfo, 0x7FFF); func_80053AEC(&player->fadeInfo, 0x7FFF);
func_80055110(arg0); func_80055110(player);
} }
@ -308,17 +308,10 @@ void snd_BGMCmd_E5_MasterVolumeFade(BGMPlayer* player, BGMPlayerTrack* track) {
player->unk_C4 = (temp_a2 - player->unk_C0) / temp_a1; player->unk_C4 = (temp_a2 - player->unk_C0) / temp_a1;
} }
// Not sure about types void snd_BGMCmd_E8_TrackOverridePatch(BGMPlayer* player, BGMPlayerTrack* track) {
#ifdef NON_MATCHING track->unk_44 = player->unk_D4.u8[1];
void snd_BGMCmd_E8_TrackOverridePatch(BGMPlayer* player, UnkAl60* track) { track->unk_0C = func_80053BE8(player->data, player->unk_D4.u8[0], track->unk_44, &track->unk_10);
u8 temp_v1 = player->unk_D4.u16;
track->unk_44 = temp_v1;
track->unk_0C = func_80053BE8(player->unk_00, player->unk_D4.u8[0], temp_v1, &track->unk_10);
} }
#else
INCLUDE_ASM(void, "code_28910_len_5090", snd_BGMCmd_E8_TrackOverridePatch, BGMPlayer* player, BGMPlayerTrack* track);
#endif
void snd_BGMCmd_E9_SubTrackVolume(BGMPlayer* arg0, BGMPlayerTrack* track) { void snd_BGMCmd_E9_SubTrackVolume(BGMPlayer* arg0, BGMPlayerTrack* track) {
u32 unk_D4 = arg0->unk_D4.u8[0] & 0x7F; u32 unk_D4 = arg0->unk_D4.u8[0] & 0x7F;
@ -331,33 +324,24 @@ void snd_BGMCmd_E9_SubTrackVolume(BGMPlayer* arg0, BGMPlayerTrack* track) {
track->volumeChanged = 1; track->volumeChanged = 1;
} }
// Type shenanigans
#ifdef NON_MATCHING
void snd_BGMCmd_F6_TrackVolumeFade(BGMPlayer* player, BGMPlayerTrack* track) { void snd_BGMCmd_F6_TrackVolumeFade(BGMPlayer* player, BGMPlayerTrack* track) {
s32 temp_a2 = player->unk_D4.u16;
s32 temp_a0 = player->unk_D6.u8[0] & 0x7F; s32 temp_a0 = player->unk_D6.u8[0] & 0x7F;
s32 phi_a2; s32 temp_a2 = player->unk_D4.u16;
if (temp_a0 != 0) { if (temp_a0 != 0) {
temp_a0 = temp_a0 << 0x18; temp_a0 = temp_a0 << 0x18;
} }
if (temp_a0 != track->unk_18) { if (temp_a0 != track->subTrackVolume) {
if (temp_a2 <= 0) { if (temp_a2 <= 0) {
phi_a2 = 1; temp_a2 = 1;
} else {
phi_a2 = temp_a2;
} }
track->unk_24[0] = phi_a2;
track->unk_20 = temp_a0; track->subTrackVolumeFadeTime = temp_a2;
track->unk_1C = (temp_a0 - track->unk_18) / phi_a2; track->subTrackVolumeFadeVolume = temp_a0;
track->subTrackVolumeFadeDelta = (temp_a0 - track->subTrackVolume) / temp_a2;
} }
} }
#else
INCLUDE_ASM(void, "code_28910_len_5090", snd_BGMCmd_F6_TrackVolumeFade, BGMPlayer* player, BGMPlayerTrack* track);
#endif
void snd_BGMCmd_EA_SubTrackPan(BGMPlayer* player, BGMPlayerTrack* track) { void snd_BGMCmd_EA_SubTrackPan(BGMPlayer* player, BGMPlayerTrack* track) {
track->subTrackPan = player->unk_D4.u8[0] & 0x7F; track->subTrackPan = player->unk_D4.u8[0] & 0x7F;
@ -426,7 +410,7 @@ void snd_BGMCmd_F7_SubTrackReverbType(BGMPlayer* player, BGMPlayerTrack* track)
// unk_D4 type shenanigans // unk_D4 type shenanigans
#ifdef NON_MATCHING #ifdef NON_MATCHING
void snd_BGMCmd_FD(UnkAlA9C* player, UnkAl60* track) { void snd_BGMCmd_FD(BGMPlayer* player, BGMPlayerTrack* track) {
func_800560BC(player->unk_234, track->unk_5C, player->unk_D4.u16 >> 8); func_800560BC(player->unk_234, track->unk_5C, player->unk_D4.u16 >> 8);
} }
#else #else
@ -458,9 +442,30 @@ INCLUDE_ASM(s32, "code_28910_len_5090", func_8005068C);
INCLUDE_ASM(s32, "code_28910_len_5090", func_800506C8, s32 arg0, s32 arg1); INCLUDE_ASM(s32, "code_28910_len_5090", func_800506C8, s32 arg0, s32 arg1);
INCLUDE_ASM(s32, "code_28910_len_5090", func_80050770); void func_80050770(BGMPlayer *player, f32 arg1) {
if (arg1 > 2.0) {
arg1 = 2.0f;
} else if (arg1 < 0.25) {
arg1 = 0.25f;
}
INCLUDE_ASM(s32, "code_28910_len_5090", func_80050818); player->unk_D0 = arg1;
player->unk_B0 = snd_bpm_to_tempo(player, player->unk_208);
player->unkFrequency = player->unk_B0 * 10;
player->unk_BC = 0;
player->unk_B8 = 0;
player->unk_B4 = 0;
}
void func_80050818(BGMPlayer* player, s32 arg1) {
if (arg1 > 1200) {
arg1 = 1200;
} else if (arg1 < -2400) {
arg1 = -2400;
}
player->unk_20E = arg1;
}
void func_8005083C(BGMPlayer* arg0, s32 arg1, s16 arg2, s8 arg3) { void func_8005083C(BGMPlayer* arg0, s32 arg1, s16 arg2, s8 arg3) {
BGMPlayerTrack* temp_a1 = &arg0->unk_25C[arg1]; BGMPlayerTrack* temp_a1 = &arg0->unk_25C[arg1];
@ -472,7 +477,7 @@ void func_8005083C(BGMPlayer* arg0, s32 arg1, s16 arg2, s8 arg3) {
} }
} }
INCLUDE_ASM(s32, "code_28910_len_5090", func_8005087C); INCLUDE_ASM(void, "code_28910_len_5090", func_8005087C, BGMPlayer* player, s32* arg1, s32 arg2);
INCLUDE_ASM(s32, "code_28910_len_5090", func_80050888); INCLUDE_ASM(s32, "code_28910_len_5090", func_80050888);

View File

@ -1,5 +1,4 @@
#include "audio.h" #include "audio.h"
#include "ld_addrs.h"
void func_80052E30(u8 index) { void func_80052E30(u8 index) {
UnkAl48* temp = &D_8009A5C0->unk_1320[index]; UnkAl48* temp = &D_8009A5C0->unk_1320[index];
@ -37,10 +36,10 @@ void snd_load_audio_data(s32 frequency) {
temp4 = *temp_s4; temp4 = *temp_s4;
temp_v0_2 = alHeapAlloc(alHeap, 1, 0x8000); temp_v0_2 = alHeapAlloc(alHeap, 1, 0x8000);
temp4->unk_5C = &temp_v0_2[0]; temp4->currentTrackData[0] = &temp_v0_2[0];
temp4->unk_60 = &temp_v0_2[0x1400]; temp4->currentTrackData[1] = &temp_v0_2[0x1400];
temp4->unk_64 = &temp_v0_2[0x1C00]; temp4->currentTrackData[2] = &temp_v0_2[0x1C00];
temp4->unk_68 = &temp_v0_2[0x1400]; temp4->currentTrackData[3] = &temp_v0_2[0x1400];
for (i = 0; i < 1; i++) { for (i = 0; i < 1; i++) {
temp4->unk_6C[i].unk_0 = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer)); temp4->unk_6C[i].unk_0 = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer));
@ -382,10 +381,10 @@ void snd_initialize_fade(Fade* fade, s32 time, s32 startValue, s16 endValue) {
fade->fpFadeCallback = NULL; fade->fpFadeCallback = NULL;
} }
void func_80053A18(UnkAl1* arg0) { void func_80053A18(Fade* fade) {
arg0->unk_0A = 0; fade->fadeTime = 0;
arg0->unk_04 = 0; fade->fadeStep = 0;
arg0->unk_0C = 0; fade->fpFadeCallback = NULL;
} }
void func_80053A28(UnkAl1* arg0) { void func_80053A28(UnkAl1* arg0) {
@ -457,15 +456,15 @@ void snd_get_sequence_player_and_track(u32 playerIndex, s32** outCurrentTrackDat
switch (playerIndex) { switch (playerIndex) {
case 0: case 0:
*outCurrentTrackData = temp_v1->unk_5C; *outCurrentTrackData = temp_v1->currentTrackData[0];
*outPlayer = D_8009A664; *outPlayer = D_8009A664;
break; break;
case 1: case 1:
*outCurrentTrackData = temp_v1->unk_60; *outCurrentTrackData = temp_v1->currentTrackData[1];
*outPlayer = D_8009A5FC; *outPlayer = D_8009A5FC;
break; break;
case 2: case 2:
*outCurrentTrackData = temp_v1->unk_5C; *outCurrentTrackData = temp_v1->currentTrackData[0];
*outPlayer = D_8009A664; *outPlayer = D_8009A664;
break; break;
default: default:
@ -526,8 +525,8 @@ INCLUDE_ASM(void, "code_2e230_len_2190", snd_load_PRG, UnkAl19E0* arg0, s32* arg
INCLUDE_ASM(s32, "code_2e230_len_2190", snd_load_BGM); INCLUDE_ASM(s32, "code_2e230_len_2190", snd_load_BGM);
Instruments* snd_get_BK_instruments(s32 bankGroup, u32 bankIndex) { InstrumentGroup* snd_get_BK_instruments(s32 bankGroup, u32 bankIndex) {
Instruments* ret = NULL; InstrumentGroup* ret = NULL;
UnkAl19E0* temp = D_8009A5C0; UnkAl19E0* temp = D_8009A5C0;
// TODO fake match - this multiplying the bankIndex by 16 and then dividing it right after is dumb // TODO fake match - this multiplying the bankIndex by 16 and then dividing it right after is dumb
@ -557,9 +556,9 @@ Instruments* snd_get_BK_instruments(s32 bankGroup, u32 bankIndex) {
return ret; return ret;
} }
INCLUDE_ASM(s32, "code_2e230_len_2190", snd_load_BK_to_bank); INCLUDE_ASM(s32, "code_2e230_len_2190", snd_load_BK_to_bank, s32 bkFileOffset, SoundBank* bank, s32 bankIndex, s32 arg3);
void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, Instruments instruments, s32 instrumentCount, u8 arg4); void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, InstrumentGroup instruments, s32 instrumentCount, u8 arg4);
// float weirdness // float weirdness
#ifdef NON_MATCHING #ifdef NON_MATCHING
void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank *bank, Instruments instruments, u32 instrumentCount, u8 arg4) { void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank *bank, Instruments instruments, u32 instrumentCount, u8 arg4) {
@ -595,7 +594,7 @@ void snd_swizzle_BK_instruments(s32 bkFileOffset, SoundBank *bank, Instruments i
} }
} }
#else #else
INCLUDE_ASM(void, "code_2e230_len_2190", snd_swizzle_BK_instruments, s32 bkFileOffset, SoundBank* bank, Instruments instruments, s32 instrumentCount, u8 arg4); INCLUDE_ASM(void, "code_2e230_len_2190", snd_swizzle_BK_instruments, s32 bkFileOffset, SoundBank* bank, InstrumentGroup instruments, s32 instrumentCount, u8 arg4);
#endif #endif

View File

@ -1,4 +1,25 @@
#include "common.h" #include "common.h"
#include "audio.h" #include "audio.h"
INCLUDE_ASM(void, "code_303c0_len_3e10", snd_load_BK_headers, UnkAl19E0* arg0, ALHeap* arg1); typedef struct BufferEntry {
/* 0x0 */ u16 fileIndex;
/* 0x2 */ u8 bankIndex;
/* 0x3 */ u8 unk_3;
} BufferEntry; // size = 4
void snd_load_BK_headers(UnkAl19E0* soundData, ALHeap* arg1) {
SBNFileEntry fileEntry;
BufferEntry buffer[80];
s32 i;
snd_read_rom(soundData->bkFileListOffset, &buffer, soundData->bkListLength);
for (i = 0; i < ARRAY_COUNT(buffer); i++) {
if (buffer[i].fileIndex == 0xFFFF) {
break;
}
snd_fetch_SBN_file(buffer[i].fileIndex, 0x30, &fileEntry);
snd_load_BK_to_bank(fileEntry.offset, NULL, buffer[i].bankIndex, buffer[i].unk_3);
}
}

View File

@ -20,22 +20,81 @@ void func_80055050(void) {
D_80078DB0 = 0; D_80078DB0 = 0;
} }
INCLUDE_ASM(void, "code_30450", func_80055068, u32 arg0); void func_80055068(u32 arg0) {
u16 temp_a0 = D_80078DB4;
u32 temp_v1 = arg0 & 0xF;
void func_80055110(BGMPlayer* arg0) { if (temp_a0 == 1) {
s32 i; switch (temp_v1) {
case 2:
case 3:
break;
case 4:
snd_start_sound_with_shift(arg0 >> 4, 0, 0, 0);
break;
case 1:
if (temp_v1 == temp_a0) {
s32 filename = snd_load_song((arg0 >> 4) & 0xFF, 0);
for (i = 0; i < 8; i++) { if (filename > ASCII_TO_U32('0', ' ', ' ', '\0')) {
arg0->unk_238[i] = 0; func_80055970(filename, (arg0 >> 0xC) & 3);
}
}
break;
}
} }
arg0->unk_25B = 0;
arg0->unk_25A = 0;
arg0->unk_259 = 0;
arg0->unk_258 = 0;
} }
INCLUDE_ASM(s32, "code_30450", func_8005513C); void func_80055110(BGMPlayer* player) {
s32 i;
for (i = 0; i < ARRAY_COUNT(player->unk_238); i++) {
player->unk_238[i] = 0;
}
player->unk_25B = 0;
player->unk_25A = 0;
player->unk_259 = 0;
player->unk_258 = 0;
}
void func_8005513C(u32 arg0) {
BGMPlayer* player = NULL;
u32 playerSwitch = arg0 & 0xF;
if (playerSwitch != 0) {
if (playerSwitch == 1) {
player = D_8009A664;
} else if (playerSwitch == 2) {
player = D_8009A5FC;
}
if (player != NULL) {
u32 temp;
if (player->unk_258 < 8) {
temp = player->unk_25A;
player->unk_238[temp] = arg0 >> 4;
temp++;
if (temp >= 8) {
temp = 0;
}
player->unk_25A = temp;
player->unk_258++;
} else {
temp = player->unk_25B + 1;
if (temp > 99) {
temp = 99;
}
player->unk_25B = temp;
}
}
}
}
void snd_start_sound(s32 soundID, u8 volume, s8 pan) { void snd_start_sound(s32 soundID, u8 volume, s8 pan) {
SoundManager* sym = D_8009A640; SoundManager* sym = D_8009A640;
@ -278,7 +337,18 @@ s32 func_80055848(s32 arg0) {
return phi_v1; return phi_v1;
} }
INCLUDE_ASM(s32, "code_30450", snd_load_song); s32 snd_load_song(s32 songID, s32 playerIndex) {
s32* currentTrackData;
BGMPlayer* songPlayer;
snd_get_sequence_player_and_track(playerIndex, &currentTrackData, &songPlayer);
if (currentTrackData != NULL) {
return snd_load_song_files(songID, currentTrackData, songPlayer);
} else {
return 3;
}
}
INCLUDE_ASM(s32, "code_30450", func_8005591C); INCLUDE_ASM(s32, "code_30450", func_8005591C);
@ -320,18 +390,96 @@ INCLUDE_ASM(s32, "code_30450", func_80055C94);
INCLUDE_ASM(s32, "code_30450", func_80055CC4); INCLUDE_ASM(s32, "code_30450", func_80055CC4);
INCLUDE_ASM(s32, "code_30450", func_80055CE8); s32 func_80055CE8(s32 songName, s32* arg1, BGMPlayer** player);
// We need to figure out what currentTrackData is a list of
INCLUDE_ASM(s32, "code_30450", func_80055D38);
INCLUDE_ASM(s32, "code_30450", func_80055D8C);
INCLUDE_ASM(s32, "code_30450", func_80055DDC);
INCLUDE_ASM(s32, "code_30450", func_80055E48);
// needs rodata
#ifdef NON_MATCHING #ifdef NON_MATCHING
s32 func_80055CE8(s32 songName, s32* arg1, BGMPlayer** player) {
UnkAl19E0* temp_a3 = D_8009A5C0;
s32 ret = 0;
if (songName == temp_a3->currentTrackData[0][2]) {
*arg1 = temp_a3->currentTrackData[0];
*player = D_8009A664;
} else if (songName == temp_a3->currentTrackData[1][2]) {
*arg1 = temp_a3->currentTrackData[1];
*player = D_8009A5FC;
} else {
ret = 1;
}
return ret;
}
#else
INCLUDE_ASM(s32, "code_30450", func_80055CE8, s32 songName, s32* arg1, BGMPlayer** player);
#endif
s32 func_80055D38(s32 songName, f32 arg1) {
s32 ret;
s32 unkArg1;
BGMPlayer* bgmPlayer;
ret = func_80055CE8(songName, &unkArg1, &bgmPlayer);
if (ret == 0) {
func_80050770(bgmPlayer, arg1);
}
return ret;
}
s32 func_80055D8C(s32 songName, s32 arg1) {
s32 ret;
s32 unkArg1;
BGMPlayer* bgmPlayer;
ret = func_80055CE8(songName, &unkArg1, &bgmPlayer);
if (ret == 0) {
func_80050818(bgmPlayer, arg1);
}
return ret;
}
s32 func_80055DDC(s32 songName, s32 arg1) {
s32 ret;
s32 unkArg1;
BGMPlayer* bgmPlayer;
ret = func_80055CE8(songName, &unkArg1, &bgmPlayer);
if (ret == 0) {
s32* temp_v0 = func_80055EB4(arg1);
if (temp_v0 != NULL) {
func_8005087C(bgmPlayer, temp_v0, 1);
} else {
ret = 11;
}
}
return ret;
}
s32 func_80055E48(s32 songName, s32 arg1) {
s32 ret;
s32 unkArg1;
BGMPlayer* bgmPlayer;
ret = func_80055CE8(songName, &unkArg1, &bgmPlayer);
if (ret == 0) {
s32* temp_v0 = func_80055EB4(arg1);
if (temp_v0 != NULL) {
func_8005087C(bgmPlayer, temp_v0, 0);
} else {
ret = 11;
}
}
return ret;
}
s32* func_80055EB4(s32 arg0) { s32* func_80055EB4(s32 arg0) {
s32* ret = NULL; s32* ret = NULL;
@ -364,9 +512,6 @@ s32* func_80055EB4(s32 arg0) {
return ret; return ret;
} }
#else
INCLUDE_ASM(s32, "code_30450", func_80055EB4);
#endif
s32 func_80055F58(s32 arg0, u32 arg1, u32 arg2) { s32 func_80055F58(s32 arg0, u32 arg1, u32 arg2) {
s32* subroutine_arg4; s32* subroutine_arg4;

View File

@ -128,7 +128,7 @@ void transform_point(Matrix4f mtx, f32 inX, f32 inY, f32 inZ, f32 inS, f32* outX
*outS = ((mtx[0][3] * inX) + (mtx[1][3] * inY) + (mtx[2][3] * inZ) + mtx[3][3]); *outS = ((mtx[0][3] * inX) + (mtx[1][3] * inY) + (mtx[2][3] * inZ) + mtx[3][3]);
} }
void copy_matrix(Matrix4f* src, Matrix4f* dest) { void copy_matrix(Matrix4f src, Matrix4f dest) {
bcopy(src, dest, sizeof(Matrix4f)); bcopy(src, dest, sizeof(Matrix4f));
} }

View File

@ -2,7 +2,6 @@
extern s32 D_80268000; extern s32 D_80268000;
extern s32 D_802FB800; extern s32 D_802FB800;
extern s32 D_803DA800;
HeapNode* general_heap_create(void) { HeapNode* general_heap_create(void) {
return _heap_create(&D_802FB800, 0x54000); return _heap_create(&D_802FB800, 0x54000);

View File

@ -1,4 +1,4 @@
#include "code_6e40_len_500.h" #include "common.h"
void initialize_curtains(void) { void initialize_curtains(void) {
gCurtainDrawCallback = NULL; gCurtainDrawCallback = NULL;

View File

@ -1,21 +0,0 @@
#ifndef _CODE_6E40_LEN_500_H_
#define _CODE_6E40_LEN_500_H_
#include "common.h"
extern f32 gCurtainScale;
extern f32 gCurtainScaleGoal;
extern f32 gCurtainFade;
extern f32 gCurtainFadeGoal;
extern UNK_FUN_PTR(gCurtainDrawCallback);
void initialize_curtains(void);
void update_curtains(void);
// render_curtains
void set_curtain_scale_goal(f32 scale);
void set_curtain_scale(f32 scale);
void set_curtain_draw_callback(UNK_FUN_PTR(callback));
void set_curtain_fade_goal(f32 fade);
void set_curtain_fade(f32 fade);
#endif

View File

@ -21,12 +21,12 @@ INCLUDE_ASM(s32, "code_b72b0_len_15ed0", update_entity_rendercmd);
INCLUDE_ASM(s32, "code_b72b0_len_15ed0", step_entity_rendercmd); INCLUDE_ASM(s32, "code_b72b0_len_15ed0", step_entity_rendercmd);
void make_mtx_flipZ(Matrix4f* mtx) { void make_mtx_flipZ(Matrix4f mtx) {
guMtxIdentF(*mtx); guMtxIdentF(*mtx);
(*mtx)[0][0] = 1.0f; mtx[0][0] = 1.0f;
(*mtx)[1][1] = 1.0f; mtx[1][1] = 1.0f;
(*mtx)[2][2] = -1.0f; mtx[2][2] = -1.0f;
(*mtx)[3][3] = 1.0f; mtx[3][3] = 1.0f;
} }
INCLUDE_ASM(s32, "code_b72b0_len_15ed0", appendGfx_entity_model); INCLUDE_ASM(s32, "code_b72b0_len_15ed0", appendGfx_entity_model);

View File

@ -1,7 +1,7 @@
#include "common.h" #include "common.h"
#include "map.h" #include "map.h"
MusicPlayer D_8014F6F0 = { MusicSettings D_8014F6F0 = {
.flags = 0, .flags = 0,
.unk_02 = 0, .unk_02 = 0,
.fadeOutTime = -1, .fadeOutTime = -1,
@ -10,7 +10,7 @@ MusicPlayer D_8014F6F0 = {
.unk_0E = 0, .unk_0E = 0,
.songID = -1, .songID = -1,
.variation = -1, .variation = -1,
.unk_18 = -1, .songName = -1,
.unk_20 = 0, .unk_20 = 0,
.unk_24 = 0, .unk_24 = 0,
.unk_28 = 0, .unk_28 = 0,
@ -40,7 +40,7 @@ s32 bgm_get_map_default_variation(SongID songID) {
if (allowed[i] == songID) { if (allowed[i] == songID) {
Map* map = &areas[(*gameStatus)->areaID].maps[(*gameStatus)->mapID]; Map* map = &areas[(*gameStatus)->areaID].maps[(*gameStatus)->mapID];
return map->songVariation & 1; return map->unk_1C.bytes.songVariation & 1;
} }
} }
@ -48,12 +48,12 @@ s32 bgm_get_map_default_variation(SongID songID) {
} }
void bgm_reset_sequence_players(void) { void bgm_reset_sequence_players(void) {
MusicPlayer* src; // TODO: remove this temp when .data section for this file (incl. D_8014F6F0) is set up MusicSettings* src; // TODO: remove this temp when .data section for this file (incl. D_8014F6F0) is set up
s32 i; s32 i;
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
musicPlayers[i] = *(src = &D_8014F6F0); musicSettings[i] = *(src = &D_8014F6F0);
} }
gMusicTargetVolume = 8; gMusicTargetVolume = 8;
@ -74,12 +74,12 @@ s32 _bgm_set_song(s32 playerIndex, SongID songID, s32 variation, s32 fadeOutTime
return 1; return 1;
} else { } else {
// TODO: these two lines likely a MUSIC_PLAYER(idx) macro // TODO: these two lines likely a MUSIC_PLAYER(idx) macro
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; MusicSettings* musicSetting = &musicSettings[playerIndex];
if (!gGameStatusPtr->musicEnabled) { if (!gGameStatusPtr->musicEnabled) {
func_800559C4(musicPlayer->unk_18); func_800559C4(musicSetting->songName);
musicPlayer->flags &= ~1; musicSetting->flags &= ~1;
return 1; return 1;
} else { } else {
@ -88,23 +88,23 @@ s32 _bgm_set_song(s32 playerIndex, SongID songID, s32 variation, s32 fadeOutTime
variation = override; variation = override;
} }
if (musicPlayer->songID == songID && musicPlayer->variation == variation) { if (musicSetting->songID == songID && musicSetting->variation == variation) {
bgm_set_target_volume(volume); bgm_set_target_volume(volume);
if (musicPlayer->flags & 4) { if (musicSetting->flags & 4) {
func_80055B80(musicPlayer->unk_18); func_80055B80(musicSetting->songName);
musicPlayer->flags &= ~4; musicSetting->flags &= ~4;
} }
return 2; return 2;
} }
gMusicUnkVolume = volume; gMusicUnkVolume = volume;
musicPlayer->songID = songID; musicSetting->songID = songID;
musicPlayer->variation = variation; musicSetting->variation = variation;
musicPlayer->fadeOutTime = fadeOutTime; musicSetting->fadeOutTime = fadeOutTime;
musicPlayer->unk_02 = 1; musicSetting->unk_02 = 1;
musicPlayer->flags &= ~2; musicSetting->flags &= ~2;
return 1; return 1;
} }
@ -112,9 +112,9 @@ s32 _bgm_set_song(s32 playerIndex, SongID songID, s32 variation, s32 fadeOutTime
} }
s32 bgm_set_song(s32 playerIndex, SongID songID, s32 variation, s32 fadeOutTime, s16 volume) { s32 bgm_set_song(s32 playerIndex, SongID songID, s32 variation, s32 fadeOutTime, s16 volume) {
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
musicPlayers[playerIndex].flags &= ~8; musicSettings[playerIndex].flags &= ~8;
return _bgm_set_song(playerIndex, songID, variation, fadeOutTime, volume); return _bgm_set_song(playerIndex, songID, variation, fadeOutTime, volume);
} }
@ -123,12 +123,12 @@ s32 func_8014A964(s32 playerIndex, SongID songID, s32 variation, s32 fadeInTime,
if (gGameStatusPtr->demoState != 0) { if (gGameStatusPtr->demoState != 0) {
return 1; return 1;
} else { } else {
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; MusicSettings* musicSetting = &musicSettings[playerIndex];
if (!gGameStatusPtr->musicEnabled) { if (!gGameStatusPtr->musicEnabled) {
func_800559C4(musicPlayer->unk_18); func_800559C4(musicSetting->songName);
musicPlayer->flags &= ~1; musicSetting->flags &= ~1;
return 1; return 1;
} else { } else {
@ -137,14 +137,14 @@ s32 func_8014A964(s32 playerIndex, SongID songID, s32 variation, s32 fadeInTime,
variation = defaultVariation; variation = defaultVariation;
} }
musicPlayer->fadeInTime = fadeInTime; musicSetting->fadeInTime = fadeInTime;
musicPlayer->unk_0C = arg4; musicSetting->unk_0C = arg4;
musicPlayer->unk_0E = arg5; musicSetting->unk_0E = arg5;
musicPlayer->songID = songID; musicSetting->songID = songID;
musicPlayer->variation = variation; musicSetting->variation = variation;
musicPlayer->flags |= 0x20; musicSetting->flags |= 0x20;
musicPlayer->unk_02 = 1; musicSetting->unk_02 = 1;
musicPlayer->flags &= ~2; musicSetting->flags &= ~2;
return 1; return 1;
} }
@ -152,26 +152,26 @@ s32 func_8014A964(s32 playerIndex, SongID songID, s32 variation, s32 fadeInTime,
} }
s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2) { s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2) {
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; MusicSettings* musicSetting = &musicSettings[playerIndex];
if (!(musicPlayer->flags & 1)) { if (!(musicSetting->flags & 1)) {
return 0; return 0;
} }
if (!(musicPlayer->flags & 2)) { if (!(musicSetting->flags & 2)) {
return 0; return 0;
} }
switch (arg2) { switch (arg2) {
case 0: case 0:
func_80056028(musicPlayer->unk_18, arg1); func_80056028(musicSetting->songName, arg1);
break; break;
case 1: case 1:
func_80056044(musicPlayer->unk_18, arg1); func_80056044(musicSetting->songName, arg1);
break; break;
case 2: case 2:
func_80056068(musicPlayer->unk_18, arg1); func_80056068(musicSetting->songName, arg1);
break; break;
} }
@ -179,36 +179,36 @@ s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2) {
} }
s32 func_8014AB0C(s32 playerIndex, s16 arg1) { s32 func_8014AB0C(s32 playerIndex, s16 arg1) {
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; MusicSettings* musicSetting = &musicSettings[playerIndex];
if (!(musicPlayer->flags & 1)) { if (!(musicSetting->flags & 1)) {
return 0; return 0;
} }
return func_80055DDC(musicPlayer->unk_18, arg1); return func_80055DDC(musicSetting->songName, arg1);
} }
s32 func_8014AB60(s32 playerIndex, s16 arg1) { s32 func_8014AB60(s32 playerIndex, s16 arg1) {
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; MusicSettings* musicSetting = &musicSettings[playerIndex];
if (!(musicPlayer->flags & 1)) { if (!(musicSetting->flags & 1)) {
return 0; return 0;
} }
return func_80055E48(musicPlayer->unk_18, arg1); return func_80055E48(musicSetting->songName, arg1);
} }
s32 func_8014ABB4(s32 playerIndex, s16 arg1) { s32 func_8014ABB4(s32 playerIndex, s16 arg1) {
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; MusicSettings* musicSetting = &musicSettings[playerIndex];
if (!(musicPlayer->flags & 1)) { if (!(musicSetting->flags & 1)) {
return 0; return 0;
} }
return func_80055CC4(musicPlayer->unk_18, arg1); return func_80055CC4(musicSetting->songName, arg1);
} }
s32 bgm_init_music_players(void) { s32 bgm_init_music_players(void) {
@ -265,58 +265,58 @@ INCLUDE_ASM(s32, "code_e0b30_len_b80", bgm_update_volume);
INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AD40); INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AD40);
void bgm_pop_song(void) { void bgm_pop_song(void) {
MusicPlayer* musicPlayer = &gMusicPlayers[0]; MusicSettings* musicSetting = &gMusicSettings[0];
if (gGameStatusPtr->demoState == 0) { if (gGameStatusPtr->demoState == 0) {
musicPlayer->flags |= 8; musicSetting->flags |= 8;
_bgm_set_song(0, musicPlayer->unk_24, musicPlayer->unk_28, 0, 8); _bgm_set_song(0, musicSetting->unk_24, musicSetting->unk_28, 0, 8);
} }
} }
void bgm_push_song(SongID songID, s32 variation) { void bgm_push_song(SongID songID, s32 variation) {
MusicPlayer* musicPlayer = &gMusicPlayers[0]; MusicSettings* musicSetting = &gMusicSettings[0];
if (gGameStatusPtr->demoState == 0) { if (gGameStatusPtr->demoState == 0) {
musicPlayer->unk_24 = musicPlayer->songID; musicSetting->unk_24 = musicSetting->songID;
musicPlayer->unk_28 = musicPlayer->variation; musicSetting->unk_28 = musicSetting->variation;
musicPlayer->unk_2C = musicPlayer->unk_18; musicSetting->unk_2C = musicSetting->songName;
musicPlayer->flags |= 4; musicSetting->flags |= 4;
bgm_set_song(0, songID, variation, 500, 8); bgm_set_song(0, songID, variation, 500, 8);
} }
} }
void bgm_pop_battle_song(void) { void bgm_pop_battle_song(void) {
MusicPlayer* musicPlayer = &gMusicPlayers[0]; MusicSettings* musicSetting = &gMusicSettings[0];
if (gGameStatusPtr->demoState == 0) { if (gGameStatusPtr->demoState == 0) {
if (OVERRIDE_FLAG_CHECK(0x20000)) { if (OVERRIDE_FLAG_CHECK(0x20000)) {
OVERRIDE_FLAG_UNSET(0x20000); OVERRIDE_FLAG_UNSET(0x20000);
} else { } else {
musicPlayer->flags |= 8; musicSetting->flags |= 8;
_bgm_set_song(0, musicPlayer->unk_24, musicPlayer->unk_28, 0, 8); _bgm_set_song(0, musicSetting->unk_24, musicSetting->unk_28, 0, 8);
func_80055590(0, 250); func_80055590(0, 250);
} }
} }
} }
void bgm_push_battle_song(void) { void bgm_push_battle_song(void) {
MusicPlayer* musicPlayer = &gMusicPlayers[0]; MusicSettings* musicSetting = &gMusicSettings[0];
if (gGameStatusPtr->demoState == 0 && !OVERRIDE_FLAG_CHECK(0x20000)) { if (gGameStatusPtr->demoState == 0 && !OVERRIDE_FLAG_CHECK(0x20000)) {
func_8005553C(0, 250); func_8005553C(0, 250);
musicPlayer->unk_24 = musicPlayer->songID; musicSetting->unk_24 = musicSetting->songID;
musicPlayer->unk_28 = musicPlayer->variation; musicSetting->unk_28 = musicSetting->variation;
musicPlayer->unk_2C = musicPlayer->unk_18; musicSetting->unk_2C = musicSetting->songName;
musicPlayer->flags |= 4; musicSetting->flags |= 4;
bgm_set_song(0, musicPlayer->unk_1C, musicPlayer->unk_20, 500, 8); bgm_set_song(0, musicSetting->unk_1C, musicSetting->unk_20, 500, 8);
} }
} }
void bgm_set_battle_song(s32 arg0, s32 arg1) { void bgm_set_battle_song(s32 arg0, s32 arg1) {
MusicPlayer* musicPlayer = &gMusicPlayers[0]; MusicSettings* musicSetting = &gMusicSettings[0];
musicPlayer->unk_1C = arg0; musicSetting->unk_1C = arg0;
musicPlayer->unk_20 = arg1; musicSetting->unk_20 = arg1;
} }
void func_8014AFA0(void) { void func_8014AFA0(void) {

View File

@ -8,7 +8,6 @@ s16 intro_logos_fade_in(s16 subtractAlpha);
s16 intro_logos_fade_out(s16 addAlpha); s16 intro_logos_fade_out(s16 addAlpha);
void intro_logos_update_fade(void); void intro_logos_update_fade(void);
extern s32* D_8009A658;
extern s32 D_800A0904; extern s32 D_800A0904;
extern s32 D_800A0908; extern s32 D_800A0908;
extern s16** D_800778A0; extern s16** D_800778A0;

View File

@ -1,22 +1,312 @@
#include "common.h" #include "common.h"
#include "ld_addrs.h"
#include "map.h"
#include "nu/nusys.h"
extern s8 D_800A0920; Gfx D_80077908[] = {
extern s8 D_800A0921; gsDPPipeSync(),
extern s16 D_800A0922; gsDPSetCycleType(G_CYC_1CYCLE),
gsDPSetTexturePersp(G_TP_NONE),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),
gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),
gsDPSetTextureFilter(G_TF_POINT),
gsSPEndDisplayList(),
};
void func_800343A4(); // probably a file split
static s32 padding[] = {0, 0};
INCLUDE_ASM(s32, "code_f270_len_1190", begin_state_logos); s32 D_80077950[] = { 0x8038F800, 0x803B5000, &D_803DA800 };
INCLUDE_ASM(s32, "code_f270_len_1190", step_logos); // TODO the gPauseMenuIconScripts should be DATA_START
// TODO the gPauseMenuHeldButtons should be BSS_START
// TODO 80278640 is BSS_END
NUPiOverlaySegment D_8007795C = {
.romStart = &code_code_135EE0_ROM_START,
.romEnd = &code_code_135EE0_ROM_END,
.ramStart = &code_code_135EE0_VRAM,
.textStart = &code_code_135EE0_VRAM,
.textEnd = gPauseMenuIconScripts,
.dataStart = gPauseMenuIconScripts,
.dataEnd = &gPauseMenuHeldButtons,
.bssStart = &gPauseMenuHeldButtons,
.bssEnd = 0x80278640
};
void func_80034388(void) { void appendGfx_intro_logos();
func_800343A4();
// bss?
extern s8 D_800A0910[];
void state_init_logos(void) {
Camera* cameras = &gCameras;
GameStatus** gameStatus = &gGameStatusPtr;
s8* romStart;
s8* romEnd;
s32* logoRam;
s32* temp_800A0910;
general_heap_create();
(*gameStatus)->loadMenuState = 0;
(*gameStatus)->menuCounter = 0;
(*gameStatus)->bSkipIntro = FALSE;
intro_logos_set_fade_alpha(255);
intro_logos_set_fade_color(0);
romEnd = &code_code_1FE1B0_ROM_END;
romStart = &code_code_1FE1B0_ROM_START;
logoRam = heap_malloc(romEnd - romStart);
temp_800A0910 = &D_800A0910;
*temp_800A0910 = logoRam;
dma_copy(romStart, romEnd, logoRam);
// TODO probably this is not ideal
D_800A0918 = (*temp_800A0910) + 0x0;
D_800A0914 = (*temp_800A0910) + 0x7000;
D_800A091C = (*temp_800A0910) + 0x15000;
nuContRmbForceStop();
create_cameras_a();
cameras[0].mode = 6;
cameras[0].unk_06 = 1;
cameras[0].nearClip = 0x10;
cameras[0].farClip = 0x1000;
gCurrentCameraID = 0;
cameras[0].vfov = 25.0f;
cameras[0].flags |= 0x2;
cameras[1].flags |= 0x2;
cameras[2].flags |= 0x2;
cameras[3].flags |= 0x2;
set_cam_viewport(0, 12, 28, 296, 184);
cameras[0].unk_1E = 0x28;
cameras[0].backgroundColor[0] = 0;
cameras[0].backgroundColor[1] = 0;
cameras[0].backgroundColor[2] = 0;
cameras[0].unk_54 = 25.0f;
cameras[0].unk_58 = 25.0f;
cameras[0].unk_1C = 0;
cameras[0].unk_20 = 100;
cameras[0].unk_22 = 0;
cameras[0].lookAt_eye[0] = 500.0f;
cameras[0].lookAt_eye[1] = 1000.0f;
cameras[0].lookAt_eye[2] = 1500.0f;
cameras[0].unk_5C = 150.0f;
clear_script_list();
clear_dynamic_entity_list();
func_8011D890();
func_802DD8F8(0);
func_8011E224();
clear_entity_models();
clear_npcs();
func_80141100();
use_default_background_settings();
clear_entity_data(1);
clear_effect_data();
OVERRIDE_FLAG_SET(0x2);
intro_logos_update_fade();
(*gameStatus)->enableBackground = FALSE;
} }
INCLUDE_ASM(void, "code_f270_len_1190", func_800343A4); //INCLUDE_ASM(s32, "code_f270_len_1190", state_step_logos);
void state_step_logos(void) {
s32 gameModeTemp;
s32* temp800A0910;
void begin_state_pause_menu(void) { if (gGameStatusPtr->bSkipIntro) {
if (intro_logos_fade_out(0xA) != 0) {
set_curtain_scale(1.0f);
set_curtain_fade(0.0f);
set_game_mode(2);
}
} else {
switch (gGameStatusPtr->loadMenuState) {
GameStatus** gameStatus;
case 1:
gameStatus = &gGameStatusPtr;
if ((*gameStatus)->menuCounter == 0) {
intro_logos_set_fade_color(208);
(*gameStatus)->loadMenuState++;
}
(*gameStatus)->menuCounter--;
break;
case 2:
if (intro_logos_fade_out(0xA) != 0) {
gGameStatusPtr->loadMenuState++;
}
break;
case 3:
if (intro_logos_fade_in(0xA) != 0) {
GameStatus** gameStatus = &gGameStatusPtr;
(*gameStatus)->loadMenuState++;
(*gameStatus)->menuCounter = 40;
}
break;
case 4:
gameStatus = &gGameStatusPtr;
if ((*gameStatus)->menuCounter == 0) {
(*gameStatus)->loadMenuState++;
intro_logos_set_fade_color(208);
}
(*gameStatus)->menuCounter--;
break;
case 5:
if (intro_logos_fade_out(0xA) != 0) {
gGameStatusPtr->loadMenuState++;
}
break;
case 0:
case 6:
if (intro_logos_fade_in(0xA) != 0) {
GameStatus** gameStatus = &gGameStatusPtr;
(*gameStatus)->loadMenuState++;
(*gameStatus)->menuCounter = 30;
}
break;
case 7:
gameStatus = &gGameStatusPtr;
if ((*gameStatus)->menuCounter == 0) {
(*gameStatus)->loadMenuState++;
intro_logos_set_fade_color(208);
(*gameStatus)->menuCounter = 30;
}
(*gameStatus)->menuCounter--;
break;
case 8:
if (gGameStatusPtr->menuCounter == 0) {
gGameStatusPtr->loadMenuState++;
set_curtain_scale_goal(1.0f);
set_curtain_draw_callback(NULL);
set_curtain_fade_goal(0.3f);
} else {
gGameStatusPtr->menuCounter--;
}
break;
case 9:
if (intro_logos_fade_out(0xA) != 0) {
GameStatus** gameStatus = &gGameStatusPtr;
(*gameStatus)->menuCounter = 15;
(*gameStatus)->loadMenuState++;
}
break;
case 10:
if (gGameStatusPtr->menuCounter == 0) {
gGameStatusPtr->loadMenuState++;
} else {
gGameStatusPtr->menuCounter--;
}
break;
case 11:
temp800A0910 = &D_800A0910;
heap_free(*temp800A0910);
*temp800A0910 = 0;
intro_logos_set_fade_alpha(255);
gGameStatusPtr->unk_A8 = 0;
set_game_mode(16);
break;
}
}
update_npcs();
update_cameras();
intro_logos_update_fade();
}
void state_drawUI_logos(void) {
appendGfx_intro_logos();
}
// all sorts of issues, but I think it's mostly with D_800A0918, 1C, and 14. Those need better types so they can have
// proper array accesses. the display list macros should mostly be good
#ifdef NON_MATCHING
void appendGfx_intro_logos(void) {
s32 i;
gDPPipeSync(gMasterGfxPos++);
gDPSetRenderMode(gMasterGfxPos++, G_RM_NOOP, G_RM_NOOP2);
gDPSetCombineMode(gMasterGfxPos++, G_CC_DECALRGB, G_CC_DECALRGB);
gDPSetCycleType(gMasterGfxPos++, G_CYC_FILL);
gDPSetFillColor(gMasterGfxPos++, 0xE739E739);
gDPFillRectangle(gMasterGfxPos++, 0, 0, 319, 239);
gDPPipeSync(gMasterGfxPos++);
switch (gGameStatusPtr->loadMenuState) {
case 0:
case 1:
case 2:
gSPDisplayList(gMasterGfxPos++, D_80077908);
for (i = 0; i < 7; i++) {
gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 128, D_800A0918 + (i << 0xC));
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
gDPLoadSync(gMasterGfxPos++);
gDPLoadTile(gMasterGfxPos++, G_TX_LOADTILE, 0, 0, 508, 60);
gDPPipeSync(gMasterGfxPos++);
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 0x0000, G_TX_RENDERTILE, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOLOD);
gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, 0, 0, 508, 60);
gSPTextureRectangle(gMasterGfxPos++, 384, 256 + i * 64, 896, 320 + i * 64, G_TX_RENDERTILE, 0, 0, 1024, 1024);
gDPPipeSync(gMasterGfxPos++);
}
break;
case 3:
case 4:
case 5:
gSPDisplayList(gMasterGfxPos++, D_80077908);
for (i = 0; i < 6; i++) {
gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, D_800A091C + (i << 0xC));
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
gDPLoadSync(gMasterGfxPos++);
gDPLoadTile(gMasterGfxPos++, G_TX_LOADTILE, 0, 0, 1020, 28);
gDPPipeSync(gMasterGfxPos++);
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 0x0000, G_TX_RENDERTILE, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOLOD);
gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, 0, 0, 1020, 28);
gSPTextureRectangle(gMasterGfxPos++, 128, 356 + i * 32, 1152, 388 + i * 32, G_TX_RENDERTILE, 0, 0, 1024, 1024);
gDPPipeSync(gMasterGfxPos++);
}
break;
case 6:
case 7:
case 8:
case 9:
gSPDisplayList(gMasterGfxPos++, D_80077908);
for (i = 0; i < 14; i++) {
gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 256, D_800A0914[i] + (i << 0xC));
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
gDPLoadSync(gMasterGfxPos++);
gDPLoadTile(gMasterGfxPos++, G_TX_LOADTILE, 0, 0, 1020, 28);
gDPPipeSync(gMasterGfxPos++);
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 0x0000, G_TX_RENDERTILE, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
G_TX_NOLOD);
gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, 0, 0, 1020, 28);
gSPTextureRectangle(gMasterGfxPos++, 128, 236 + i * 32, 1152, 268 + i * 32, G_TX_RENDERTILE, 0, 0, 1024, 1024);
gDPPipeSync(gMasterGfxPos++);
}
break;
}
}
#else
INCLUDE_ASM(void, "code_f270_len_1190", appendGfx_intro_logos);
#endif
void state_init_pause(void) {
D_800A0921 = 0; D_800A0921 = 0;
D_800A0922 = 0; D_800A0922 = 0;
disable_player_input(); disable_player_input();
@ -24,12 +314,92 @@ void begin_state_pause_menu(void) {
set_windows_visible(2); set_windows_visible(2);
} }
INCLUDE_ASM(s32, "code_f270_len_1190", step_pause_menu); void state_step_pause(void) {
s8* temp800A0921 = &D_800A0921;
s32 temp800A0921_2 = *temp800A0921;
s8* temp800A0920;
s8* temp800A0920_2;
void func_80034BF4(void) { switch (temp800A0921_2) {
case 0:
update_counters();
update_npcs();
update_player();
update_effects();
if (D_8009A658[1] == D_8009A64C) {
D_800A0920 = 4;
*temp800A0921 = 2;
OVERRIDE_FLAG_SET(0x8);
gGameStatusPtr->enableBackground &= ~0xF0;
gGameStatusPtr->enableBackground |= 0x10;
}
break;
case 2:
temp800A0920 = &D_800A0920;
if (*temp800A0920 >= 0) {
GameStatus** gameStatus;
if (*temp800A0920 != 0) {
(*temp800A0920)--;
}
if (*temp800A0920 == 0) {
*temp800A0920 = -1;
nuGfxSetCfb(&D_80077950, 2);
gameStatus = &gGameStatusPtr;
(*gameStatus)->unk_15E = (*gameStatus)->unk_15C;
sfx_stop_env_sounds();
func_8003B1A8();
(*gameStatus)->isBattle = temp800A0921_2;
allocate_hit_tables();
battle_heap_create();
nuContRmbForceStop();
func_80149670(0);
func_802DD8F8(0);
clear_model_data();
func_80148040();
use_default_background_settings();
clear_entity_models();
func_8011E224();
clear_dynamic_entity_list();
func_801452E8(&code_code_3169F0_VRAM, 0x38000);
func_80141100();
reset_status_menu();
clear_item_entity_data();
clear_script_list();
clear_npcs();
clear_entity_data(0);
clear_trigger_data();
D_800A0924 = func_80149828();
func_801497FC(0);
bgm_quiet_max_volume();
nuPiReadRomOverlay(&D_8007795C);
pause_init();
OVERRIDE_FLAG_UNSET(0x8);
}
if (D_800A0920 >= 0) {
break;
}
}
temp800A0920_2 = &D_800A0920;
if (*temp800A0920_2 >= -10) {
pause_handle_input(0, 0);
(*temp800A0920_2)--;
} else {
pause_handle_input(gGameStatusPtr->pressedButtons, gGameStatusPtr->heldButtons);
}
D_800A0922 = 0;
break;
}
} }
void func_80034BFC(void) { void state_drawUI_pause(void) {
}
void state_init_unpause(void) {
if (D_800A0922 > 0) { if (D_800A0922 > 0) {
D_800A0921 = 0; D_800A0921 = 0;
} else { } else {
@ -38,7 +408,133 @@ void func_80034BFC(void) {
D_800A0920 = 4; D_800A0920 = 4;
} }
INCLUDE_ASM(s32, "code_f270_len_1190", func_80034C3C); void state_step_unpause(void) {
s8* temp800A0921 = &D_800A0921;
void func_80034FF0(void) { switch (*temp800A0921) {
s8* temp800A0920;
s16* temp800A0922;
s16* temp800A0922_2;
case 0:
case 1:
temp800A0920 = &D_800A0920;
if (*temp800A0920 == 4) {
OVERRIDE_FLAG_SET(0x8);
}
if (*temp800A0920 >= 0) {
if (*temp800A0920 != 0) {
(*temp800A0920)--;
}
if (*temp800A0920 == 0) {
if (*temp800A0920 == 0) {
GameStatus** gameStatus = &gGameStatusPtr;
PlayerStatus* playerStatus;
MapConfig* mapConfig;
Map* map;
s32 assetData;
s32 assetSize;
*temp800A0920 = -1;
nuGfxSetCfb(&D_80077950, ARRAY_COUNT(D_80077950));
pause_cleanup();
OVERRIDE_FLAG_UNSET(0x8);
mapConfig = get_current_map_header();
map = &gAreas[(*gameStatus)->areaID].maps[(*gameStatus)->mapID];
(*gameStatus)->isBattle = FALSE;
(*gameStatus)->enableBackground &= ~0xF0;
func_8005AF84();
func_8002ACDC();
nuContRmbForceStopEnd();
func_80149670(1);
func_802DD8F8((*gameStatus)->unk_84);
init_model_data();
func_801480F0();
init_entity_models();
func_8011E310();
init_dynamic_entity_list();
func_801452E8(0, 0);
init_menu_icon_list();
init_item_entity_list();
init_script_list();
init_npc_list();
func_80110E58();
init_trigger_list();
func_801497FC(D_800A0924);
bgm_reset_max_volume();
load_world_script_api();
assetData = load_asset_by_name(&D_800D9230, &assetSize);
decode_yay0(assetData, &D_80210000);
general_heap_free(assetData);
initialize_collision();
load_collision();
if (map->dmaStart != NULL) {
dma_copy(map->dmaStart, map->dmaEnd, map->dmaDest);
}
load_map_bg(map->bgName);
if (mapConfig->background != NULL) {
read_background_size(mapConfig->background);
} else {
set_background_size(296, 200, 12, 20);
}
gGameStatusPtr->unk_15C = gGameStatusPtr->unk_15E;
calculate_model_sizes();
func_8003B1B0();
set_windows_visible(0);
func_800E98C4();
func_80027088(1);
D_800A0921 = 3;
playerStatus = &gPlayerStatus;
playerStatus->unk_0F = playerStatus->unk_0E - 1;
D_802D9D71 = D_802D9D70 + 1;
update_counters();
update_npcs();
update_player();
update_effects();
temp800A0922_2 = &D_800A0922;
*temp800A0922_2 -= 20;
if (*temp800A0922_2 < 0) {
*temp800A0922_2 = 0;
}
}
}
}
break;
case 3:
update_counters();
update_npcs();
update_player();
update_effects();
temp800A0922 = &D_800A0922;
if (*temp800A0922 == 0) {
*temp800A0921 = 4;
} else {
*temp800A0922 -= 20;
if (*temp800A0922 < 0) {
*temp800A0922 = 0;
}
}
break;
case 4:
func_80027088(0);
update_counters();
update_npcs();
update_player();
update_effects();
enable_player_input();
set_game_mode(4);
break;
}
}
void state_drawUI_unpause(void) {
} }

View File

@ -36,9 +36,9 @@ ApiStatus FadeInMusic(ScriptInstance* script, s32 isInitialCall) {
ApiStatus func_802D5EE0(ScriptInstance* script, s32 isInitialCall) { ApiStatus func_802D5EE0(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
MusicPlayer* musicPlayers = gMusicPlayers; MusicSettings* musicSettings = gMusicSettings;
(&musicPlayers[get_variable(script, *args++)])->flags |= 0x2; (&musicSettings[get_variable(script, *args++)])->flags |= 0x2;
return ApiStatus_DONE2; return ApiStatus_DONE2;
} }

View File

@ -1,11 +1,11 @@
#include "common.h" #include "common.h"
#include "map.h" #include "map.h"
void N(SomeMatrixOperation)(Matrix4f* mtx, f32 arg1, f32 arg2, f32 arg3) { void N(SomeMatrixOperation)(Matrix4f mtx, f32 arg1, f32 arg2, f32 arg3) {
guMtxIdentF(*mtx); guMtxIdentF(*mtx);
(*mtx)[1][0] = arg1 * arg2; mtx[1][0] = arg1 * arg2;
(*mtx)[1][1] = 1.0f; mtx[1][1] = 1.0f;
(*mtx)[1][2] = arg1 * arg3; mtx[1][2] = arg1 * arg3;
} }
ApiStatus N(SomeMatrixOperation2)(ScriptInstance* script, s32 isInitialCall) { ApiStatus N(SomeMatrixOperation2)(ScriptInstance* script, s32 isInitialCall) {

View File

@ -6,6 +6,26 @@
#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)
s32 D_8008FF60[] = { 0, 1, 2, 3 };
// rodata
const s32 D_800989A0[] = {
0x82C882B5, 0x00000000, 0x82A982AD, 0x82B982A2,
0x00000000, 0x82B982C1, 0x82AB82E5, 0x82A40000,
0x82DE82C9, 0x82E182DE, 0x82C982E1, 0x00000000,
0x82D082C6, 0x82E882DA, 0x82AF0000, 0x83748340,
0x83438369, 0x838B837B, 0x83808377, 0x83430000,
0x83748340, 0x83438369, 0x838B834E, 0x838A8357,
0x83430000, 0x82C282A4, 0x82B682E5, 0x82A40000,
};
// bss
extern MapConfig D_800A41E8; // gMapHeader?
extern s32 D_800A41E0; // gMapConfig?
extern s32 D_800D9668;
typedef struct { typedef struct {
/* 0x00 */ char name[16]; /* 0x00 */ char name[16];
/* 0x10 */ u32 offset; /* 0x10 */ u32 offset;
@ -13,31 +33,170 @@ typedef struct {
/* 0x18 */ u32 decompressedLength; /* 0x18 */ u32 decompressedLength;
} AssetHeader; // size = 0x1C } AssetHeader; // size = 0x1C
// bss
extern MapConfig D_800A41E8; // gMapHeader?
extern s32 D_800A41E0; // gMapConfig?
void load_world_script_api(void) { void load_world_script_api(void) {
dma_copy((s32)&world_script_api_ROM_START, (s32)&world_script_api_ROM_END, &world_script_api_VRAM); dma_copy((s32)&world_script_api_ROM_START, (s32)&world_script_api_ROM_END, &world_script_api_VRAM);
} }
// TODO void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
static const s32 rodata_73DA0[] = { PlayerStatus* playerStatus;
0x82C882B5, 0x00000000, 0x82A982AD, 0x82B982A2, GameStatus** gameStatus;
0x00000000, 0x82B982C1, 0x82AB82E5, 0x82A40000, GameStatus** gameStatus2;
0x82DE82C9, 0x82E182DE, 0x82C982E1, 0x00000000, GameStatus** gameStatus3;
0x82D082C6, 0x82E882DA, 0x82AF0000, 0x83748340, s32 initStatus;
0x83438369, 0x838B837B, 0x83808377, 0x83430000, Map* map;
0x83748340, 0x83438369, 0x838B834E, 0x838A8357, MapConfig* temp800A41E8;
0x83430000, 0X82C282A4, 0x82B682E5, 0x82A40000, s32* overrideFlags;
}; char texStr[17];
s32 decompressedSize;
// These string literals belong to load_map_by_IDs initStatus = 0;
// static const char D_80098A10[] = "%s_shape"; sfx_stop_env_sounds();
// static const char D_80098A1C[] = "%s_hit"; OVERRIDE_FLAG_UNSET(0x40);
// static const char D_80098A24[] = "%s_tex"; OVERRIDE_FLAG_UNSET(0x80);
INCLUDE_ASM(s32, "world/world", load_map_by_IDs); gameStatus = &gGameStatusPtr;
(*gameStatus)->unk_84 = 0;
func_8002D160();
func_802B2078();
func_8011D890();
clear_dynamic_entity_list();
clear_script_list();
switch (loadType) {
case 0:
clear_area_flags();
(*gameStatus)->loadType = 0;
break;
case 1:
fio_deserialize_state();
areaID = (*gameStatus)->areaID;
mapID = (*gameStatus)->mapID;
(*gameStatus)->prevArea = areaID;
(*gameStatus)->loadType = 1;
break;
}
gGameStatusPtr->mapShop = NULL;
map = &gAreas[areaID].maps[mapID];
sprintf(&D_800D9230, "%s_shape", map->id);
sprintf(&D_800D91E0, "%s_hit", map->id);
strcpy(texStr, map->id);
texStr[3] = 0;
sprintf(&D_800B0CF0, "%s_tex", texStr);
D_800A41E0 = map;
if (map->bgName != NULL) {
strcpy(&D_800D9668, map->bgName);
}
load_world_script_api();
if (map->dmaStart != NULL) {
dma_copy(map->dmaStart, map->dmaEnd, map->dmaDest);
}
temp800A41E8 = &D_800A41E8;
*temp800A41E8 = *map->config;
temp800A41E8 = &D_800A41E8;
if (map->init != 0) {
initStatus = map->init();
}
if (initStatus == 0) {
s32* place = &D_80210000;
s32 yay0Asset = load_asset_by_name(&D_800D9230, &decompressedSize);
decode_yay0(yay0Asset, place);
general_heap_free(yay0Asset);
temp800A41E8->modelTreeRoot = place[0];
temp800A41E8->modelNameList = place[2];
temp800A41E8->colliderNameList = place[3];
temp800A41E8->zoneNameList = place[4];
}
if (map->bgName != NULL) {
load_map_bg(&D_800D9668);
}
func_8002D160();
func_802B2078();
func_80149670(0);
clear_dynamic_entity_list();
clear_script_list();
create_cameras_a();
gameStatus2 = &gGameStatusPtr;
func_802DD8F8((*gameStatus2)->unk_84);
func_8011E224();
clear_entity_models();
clear_npcs();
func_80141100();
clear_trigger_data();
clear_model_data();
func_80148040();
use_default_background_settings();
if ((*gameStatus2)->unk_A8 == -1) {
func_80138188();
}
if (initStatus == 0) {
initialize_collision();
load_hit_asset();
}
func_80072B30();
clear_encounter_status();
clear_entity_data(1);
clear_effect_data();
clear_player_status();
func_800DFC74();
partner_reset_data();
clear_printers();
clear_item_entity_data();
playerStatus = &gPlayerStatus;
playerStatus->targetYaw = playerStatus->currentYaw;
func_801497FC(D_8008FF60[map->unk_1C.u32 % 4]);
sfx_reset_door_sounds();
if (initStatus == 0) {
s32 thing = get_asset_offset(&D_800B0CF0, &decompressedSize);
if (temp800A41E8->modelTreeRoot != NULL) {
load_data_for_models(temp800A41E8->modelTreeRoot, thing, decompressedSize);
}
}
if (temp800A41E8->background != NULL) {
read_background_size(temp800A41E8->background);
} else {
set_background_size(296, 200, 12, 20);
}
gCurrentCameraID = 0;
gCameras[0].flags |= 0x2;
gCameras[1].flags |= 0x2;
gCameras[2].flags |= 0x2;
gCameras[3].flags |= 0x2;
if (gGameStatusPtr->unk_A8 == -1) {
set_cam_viewport(0, 12, 20, 296, 200);
} else {
set_cam_viewport(0, 29, 28, 262, 162);
}
initialize_status_menu();
gameStatus3 = &gGameStatusPtr;
(*gameStatus3)->unk_90 = 1000;
(*gameStatus3)->unk_92 = 1000;
(*gameStatus3)->mainScriptID = start_script_in_group(temp800A41E8->main, 0, 0, 0)->id;
}
s32 get_current_map_config() { s32 get_current_map_config() {
return D_800A41E0; return D_800A41E0;
@ -47,7 +206,29 @@ MapConfig* get_current_map_header() {
return &D_800A41E8; return &D_800A41E8;
} }
// weirdness with gAreas loading, extra lw
#ifdef NON_MATCHING
s32 get_map_IDs_by_name(const char* mapName, s16* areaID, s16* mapID) {
s32 i;
s32 j;
for (i = 0; (gAreas + i)->maps != NULL; i++) {
Map* maps = (gAreas + i)->maps;
for (j = 0; j < (gAreas + i)->mapCount; j++) {
if (strcmp(maps[j].id, mapName) == 0) {
*areaID = i;
*mapID = j;
return TRUE;
}
}
}
return FALSE;
}
#else
INCLUDE_ASM(s32, "world/world", get_map_IDs_by_name); INCLUDE_ASM(s32, "world/world", get_map_IDs_by_name);
#endif
void* load_asset_by_name(char* assetName, s32* decompressedSize) { void* load_asset_by_name(char* assetName, s32* decompressedSize) {
AssetHeader firstHeader; AssetHeader firstHeader;
@ -61,7 +242,7 @@ void* load_asset_by_name(char* assetName, s32* decompressedSize) {
dma_copy(ASSET_TABLE_FIRST_ENTRY, ASSET_TABLE_FIRST_ENTRY + firstHeader.offset, assetTableBuffer); dma_copy(ASSET_TABLE_FIRST_ENTRY, ASSET_TABLE_FIRST_ENTRY + firstHeader.offset, assetTableBuffer);
while (strcmp(curAsset->name, assetName) != 0) { while (strcmp(curAsset->name, assetName) != 0) {
curAsset++; curAsset++;
} }
*decompressedSize = curAsset->decompressedLength; *decompressedSize = curAsset->decompressedLength;
ret = general_heap_malloc(curAsset->compressedLength); ret = general_heap_malloc(curAsset->compressedLength);
dma_copy(ASSET_TABLE_FIRST_ENTRY + curAsset->offset, ASSET_TABLE_FIRST_ENTRY + curAsset->offset + curAsset->compressedLength, ret); dma_copy(ASSET_TABLE_FIRST_ENTRY + curAsset->offset, ASSET_TABLE_FIRST_ENTRY + curAsset->offset + curAsset->compressedLength, ret);
@ -81,7 +262,7 @@ s32 get_asset_offset(char* assetName, s32* compressedSize) {
dma_copy(ASSET_TABLE_FIRST_ENTRY, ASSET_TABLE_FIRST_ENTRY + firstHeader.offset, assetTableBuffer); dma_copy(ASSET_TABLE_FIRST_ENTRY, ASSET_TABLE_FIRST_ENTRY + firstHeader.offset, assetTableBuffer);
while (strcmp(curAsset->name, assetName) != 0) { while (strcmp(curAsset->name, assetName) != 0) {
curAsset++; curAsset++;
} }
*compressedSize = curAsset->compressedLength; *compressedSize = curAsset->compressedLength;
ret = ASSET_TABLE_FIRST_ENTRY + curAsset->offset; ret = ASSET_TABLE_FIRST_ENTRY + curAsset->offset;
heap_free(assetTableBuffer); heap_free(assetTableBuffer);
@ -105,8 +286,17 @@ s32 get_asset_offset(char* assetName, s32* compressedSize) {
.dmaEnd = &code_##map##_ROM_END, \ .dmaEnd = &code_##map##_ROM_END, \
.dmaDest = &code_##map##_VRAM \ .dmaDest = &code_##map##_VRAM \
// these, along with all the *_maps, almost certainly belong in the next file
s16 D_8008FF70[] = { 4, 6, 5, 4, 7, 6, 0, 3, 4, 3, 7, 4, 3, 2, 7, 2, 6, 7, 2, 1, 6, 1, 5, 6, 1, 0, 5, 0, 4, 5, 0, 1, 2,
0, 2, 3};
f32 D_8008FFB8[] = { 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f,
0.0f, -1.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, -1.0f,
0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f };
/// Toad Town /// Toad Town
static Map mac_maps[] = { Map mac_maps[] = {
{ MAP_UNSPLIT(machi, 0x802407A0), .bgName = "nok_bg" }, { MAP_UNSPLIT(machi, 0x802407A0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(mac_00, 0x80243BE0), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_00, 0x80243BE0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(mac_01, 0x80246730), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_01, 0x80246730), .bgName = "nok_bg" },
@ -118,41 +308,41 @@ static Map mac_maps[] = {
}; };
/// Toad Town Tunnels /// Toad Town Tunnels
static Map tik_maps[] = { Map tik_maps[] = {
{ MAP_UNSPLIT(tik_01, 0x80240AE0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_01, 0x80240AE0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_02, 0x802409B0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_02, 0x802409B0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_03, 0x80240B00), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_03, 0x80240B00), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_04, 0x80240CB0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_04, 0x80240CB0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_05, 0x80240A90), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_05, 0x80240A90), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_06, 0x802409A0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_06, 0x802409A0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_07, 0x80242920), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_07, 0x80242920), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_08, 0x80240B10), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_08, 0x80240B10), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_09, 0x802412D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_09, 0x802412D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_10, 0x802413D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_10, 0x802413D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_12, 0x80242260), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_12, 0x80242260), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_14, 0x80240980), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_14, 0x80240980), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_15, 0x80240B30), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_15, 0x80240B30), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_17, 0x80241380), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_17, 0x80241380), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_18, 0x802406D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_18, 0x802406D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_19, 0x80241340), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_19, 0x80241340), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_20, 0x80241170), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_20, 0x80241170), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_21, 0x80240990), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_21, 0x80240990), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_22, 0x802409D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_22, 0x802409D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_23, 0x80241160), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_23, 0x80241160), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_24, 0x80240ED0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(tik_24, 0x80240ED0), .init = (MapInit)0x80240000, .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(tik_25, 0x802407D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_25, 0x802407D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
}; };
/// Inside the Whale /// Inside the Whale
static Map kgr_maps[] = { Map kgr_maps[] = {
{ MAP_UNSPLIT(kgr_01, 0x80240540), .flags = 1 }, { MAP_UNSPLIT(kgr_01, 0x80240540), .unk_1C = { .bytes = { .flags = 1 } } },
{ MAP_UNSPLIT(kgr_02, 0x80240790), .flags = 1 }, { MAP_UNSPLIT(kgr_02, 0x80240790), .unk_1C = { .bytes = { .flags = 1 } } },
}; };
/// Goomba Region /// Goomba Region
#include "area_kmr/kmr.h" #include "area_kmr/kmr.h"
static Map kmr_maps[] = { Map kmr_maps[] = {
{ MAP_UNSPLIT(kmr_00, 0x80240D80), .bgName = "kmr_bg", .flags = 1 }, { MAP_UNSPLIT(kmr_00, 0x80240D80), .bgName = "kmr_bg", .unk_1C = { .bytes = { .flags = 1 } } },
{ MAP_UNSPLIT(kmr_02, 0x80243AF0), .bgName = "kmr_bg" }, { MAP_UNSPLIT(kmr_02, 0x80243AF0), .bgName = "kmr_bg" },
{ MAP_UNSPLIT(kmr_03, 0x80240680), .bgName = "kmr_bg" }, { MAP_UNSPLIT(kmr_03, 0x80240680), .bgName = "kmr_bg" },
{ MAP_UNSPLIT(kmr_04, 0x80240520), .bgName = "kmr_bg" }, { MAP_UNSPLIT(kmr_04, 0x80240520), .bgName = "kmr_bg" },
@ -172,7 +362,7 @@ static Map kmr_maps[] = {
}; };
/// Mt. Rugged /// Mt. Rugged
static Map iwa_maps[] = { Map iwa_maps[] = {
{ MAP_UNSPLIT(iwa_00, 0x80240310), .bgName = "iwa_bg" }, { MAP_UNSPLIT(iwa_00, 0x80240310), .bgName = "iwa_bg" },
{ MAP_UNSPLIT(iwa_01, 0x80243320), .bgName = "iwa_bg" }, { MAP_UNSPLIT(iwa_01, 0x80243320), .bgName = "iwa_bg" },
{ MAP_UNSPLIT(iwa_02, 0x80241140), .bgName = "iwa_bg" }, { MAP_UNSPLIT(iwa_02, 0x80241140), .bgName = "iwa_bg" },
@ -183,13 +373,13 @@ static Map iwa_maps[] = {
}; };
/// Dry Dry Outpost /// Dry Dry Outpost
static Map dro_maps[] = { Map dro_maps[] = {
{ MAP_UNSPLIT(dro_01, 0x80243B70), .bgName = "sbk_bg" }, { MAP_UNSPLIT(dro_01, 0x80243B70), .bgName = "sbk_bg" },
{ MAP_UNSPLIT(dro_02, 0x80243AB0), .bgName = "sbk_bg" }, { MAP_UNSPLIT(dro_02, 0x80243AB0), .bgName = "sbk_bg" },
}; };
/// Dry Dry Desert /// Dry Dry Desert
static Map sbk_maps[] = { Map sbk_maps[] = {
{ MAP_UNSPLIT(sbk_00, 0x802400A0), .bgName = "sbk_bg" }, { MAP_UNSPLIT(sbk_00, 0x802400A0), .bgName = "sbk_bg" },
{ MAP_UNSPLIT(sbk_01, 0x802400A0), .bgName = "sbk_bg" }, { MAP_UNSPLIT(sbk_01, 0x802400A0), .bgName = "sbk_bg" },
{ MAP_UNSPLIT(sbk_02, 0x80240C80), .bgName = "sbk_bg" }, { MAP_UNSPLIT(sbk_02, 0x80240C80), .bgName = "sbk_bg" },
@ -243,43 +433,43 @@ static Map sbk_maps[] = {
}; };
/// Dry Dry Ruins /// Dry Dry Ruins
static Map isk_maps[] = { Map isk_maps[] = {
{ MAP_UNSPLIT(isk_01, 0x80240020), .bgName = "sbk3_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_01, 0x80240020), .bgName = "sbk3_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_02, 0x80240140), .bgName = "sbk3_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_02, 0x80240140), .bgName = "sbk3_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_03, 0x80240030), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_03, 0x80240030), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_04, 0x80240AD0), .bgName = "sbk3_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_04, 0x80240AD0), .bgName = "sbk3_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_05, 0x80241ED0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_05, 0x80241ED0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_06, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_06, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_07, 0x80240130), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_07, 0x80240130), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_08, 0x80240930), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_08, 0x80240930), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_09, 0x80240340), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_09, 0x80240340), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_10, 0x80240DE0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_10, 0x80240DE0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_11, 0x802401A0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_11, 0x802401A0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_12, 0x80240040), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_12, 0x80240040), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_13, 0x80242080), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_13, 0x80242080), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_14, 0x80241D70), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_14, 0x80241D70), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_16, 0x80240B20), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_16, 0x80240B20), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_18, 0x80240910), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_18, 0x80240910), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(isk_19, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(isk_19, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
}; };
/// Koopa Bros. Fortress /// Koopa Bros. Fortress
static Map trd_maps[] = { Map trd_maps[] = {
{ MAP_UNSPLIT(trd_00, 0x80240690), .bgName = "nok_bg" }, { MAP_UNSPLIT(trd_00, 0x80240690), .bgName = "nok_bg" },
{ MAP_UNSPLIT(trd_01, 0x80241700), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_01, 0x80241700), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(trd_02, 0x80241AA0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_02, 0x80241AA0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(trd_03, 0x80240A40), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_03, 0x80240A40), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(trd_04, 0x80243900), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_04, 0x80243900), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(trd_05, 0x802407B0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_05, 0x802407B0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(trd_06, 0x80240D60), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_06, 0x80240D60), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(trd_07, 0x80242910), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_07, 0x80242910), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(trd_08, 0x80240A30), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_08, 0x80240A30), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(trd_09, 0x80240200), .bgName = "nok_bg" }, { MAP_UNSPLIT(trd_09, 0x80240200), .bgName = "nok_bg" },
{ MAP_UNSPLIT(trd_10, 0x80240870), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(trd_10, 0x80240870), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
}; };
/// Koopa Region /// Koopa Region
static Map nok_maps[] = { Map nok_maps[] = {
{ MAP_UNSPLIT(nok_01, 0x80242B90), .bgName = "nok_bg" }, { MAP_UNSPLIT(nok_01, 0x80242B90), .bgName = "nok_bg" },
{ MAP_UNSPLIT(nok_02, 0x802445F0), .bgName = "nok_bg" }, { MAP_UNSPLIT(nok_02, 0x802445F0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(nok_03, 0x80240E40), .bgName = "nok_bg" }, { MAP_UNSPLIT(nok_03, 0x80240E40), .bgName = "nok_bg" },
@ -292,74 +482,74 @@ static Map nok_maps[] = {
}; };
/// Star Region /// Star Region
static Map hos_maps[] = { Map hos_maps[] = {
{ MAP_UNSPLIT(hos_00, 0x80240D50), .bgName = "nok_bg", .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(hos_00, 0x80240D50), .bgName = "nok_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(hos_01, 0x80240E40), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_01, 0x80240E40), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_02, 0x80242B90), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_02, 0x80242B90), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_03, 0x802435F0), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_03, 0x802435F0), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_04, 0x80240EE0), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_04, 0x80240EE0), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_05, 0x80245910), .bgName = "hos_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(hos_05, 0x80245910), .bgName = "hos_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(hos_06, 0x80242570), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_06, 0x80242570), .bgName = "hos_bg" },
{ MAP_UNSPLIT(hos_10, 0x80240CE0), .bgName = "hos_bg", .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(hos_10, 0x80240CE0), .bgName = "hos_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(hos_20, 0x80240390), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_20, 0x80240390), .bgName = "hos_bg" },
}; };
/// Bowser's Castle /// Bowser's Castle
static Map kpa_maps[] = { Map kpa_maps[] = {
{ MAP_UNSPLIT(kpa_01, 0x80240A70), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_01, 0x80240A70), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_03, 0x80241EE0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_03, 0x80241EE0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_04, 0x80240190), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_04, 0x80240190), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_08, 0x802414C0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_08, 0x802414C0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_09, 0x80241310), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_09, 0x80241310), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_10, 0x80240360), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_10, 0x80240360), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_11, 0x80240B40), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_11, 0x80240B40), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_12, 0x802404A0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_12, 0x802404A0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_13, 0x802404A0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_13, 0x802404A0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_14, 0x802408A0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_14, 0x802408A0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_15, 0x802405E0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_15, 0x802405E0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_16, 0x802403B0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_16, 0x802403B0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_17, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_17, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_32, 0x80240350), .bgName = "kpa_bg", .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_32, 0x80240350), .bgName = "kpa_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_33, 0x80240350), .bgName = "kpa_bg", .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_33, 0x80240350), .bgName = "kpa_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_40, 0x80240040), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_40, 0x80240040), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_41, 0x80240040), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_41, 0x80240040), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_50, 0x80241A40), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_50, 0x80241A40), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_51, 0x80241C40), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kpa_51, 0x80241C40), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_52, 0x80241360), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_52, 0x80241360), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_53, 0x80240190), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kpa_53, 0x80240190), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_60, 0x80240450), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_60, 0x80240450), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kpa_61, 0x80242360), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_61, 0x80242360), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kpa_62, 0x80240430), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_62, 0x80240430), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kpa_63, 0x802401B0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_63, 0x802401B0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_70, 0x80240B10), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_70, 0x80240B10), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_81, 0x80240480), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kpa_81, 0x80240480), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_82, 0x80240460), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kpa_82, 0x80240460), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_83, 0x80240090), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kpa_83, 0x80240090), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_90, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_90, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_91, 0x80241920), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_91, 0x80241920), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_94, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_94, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_95, 0x80241920), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_95, 0x80241920), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_96, 0x80240040), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(kpa_96, 0x80240040), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kpa_100, 0x80240060), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kpa_101, 0x80240060), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_102, 0x802435B0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_102, 0x802435B0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_111, 0x802413E0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_111, 0x802413E0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_112, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_112, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_113, 0x80240AD0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_113, 0x80240AD0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_114, 0x80240070), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kpa_114, 0x80240070), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kpa_115, 0x802413F0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_115, 0x802413F0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_116, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_116, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_117, 0x80240010), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(kpa_117, 0x80240010), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(kpa_118, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_118, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_119, 0x80240010), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(kpa_119, 0x80240010), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(kpa_121, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_121, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kpa_130, 0x80240760), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_130, 0x80240760), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_133, 0x802404B0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_133, 0x802404B0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kpa_134, 0x80240740), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_134, 0x80240740), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
}; };
/// Peach's Castle Grounds /// Peach's Castle Grounds
static Map osr_maps[] = { Map osr_maps[] = {
{ MAP_UNSPLIT(osr_00, 0x802407E0), .bgName = "nok_bg" }, { MAP_UNSPLIT(osr_00, 0x802407E0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(osr_01, 0x80240B00), .bgName = "nok_bg", .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(osr_01, 0x80240B00), .bgName = "nok_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(osr_02, 0x80240170), .bgName = "kpa_bg", .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(osr_02, 0x80240170), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
@ -369,36 +559,36 @@ static Map osr_maps[] = {
/// Peach's Castle /// Peach's Castle
/// @bug There are two entries for kkj_26; the latter is unreachable. /// @bug There are two entries for kkj_26; the latter is unreachable.
static Map kkj_maps[] = { Map kkj_maps[] = {
{ MAP_UNSPLIT(kkj_00, 0x80241030), .bgName = "nok_bg", .songVariation = 1, .flags = 3, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kkj_00, 0x80241030), .bgName = "nok_bg", .init = (MapInit)0x80240000, .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kkj_01, 0x80240F10), .bgName = "nok_bg", .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_01, 0x80240F10), .bgName = "nok_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kkj_02, 0x80240030), .bgName = "nok_bg", .flags = 2 }, { MAP_UNSPLIT(kkj_02, 0x80240030), .bgName = "nok_bg", .unk_1C = { .bytes = { .flags = 2 } } },
{ MAP_UNSPLIT(kkj_03, 0x80240360), .bgName = "nok_bg", .flags = 3, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kkj_03, 0x80240360), .bgName = "nok_bg", .unk_1C = { .bytes = { .flags = 3 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_10, 0x80241120), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_10, 0x80241120), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kkj_11, 0x80241160), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_11, 0x80241160), .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } } },
{ MAP_UNSPLIT(kkj_12, 0x802408D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kkj_12, 0x802408D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kkj_13, 0x802407A0), .bgName = "kpa_bg", .songVariation = 1, .flags = 3, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kkj_13, 0x802407A0), .bgName = "kpa_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 3 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_14, 0x80240580), .bgName = "kpa_bg", .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kkj_14, 0x80240580), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_15, 0x80240640) }, { MAP_UNSPLIT(kkj_15, 0x80240640) },
{ MAP_UNSPLIT(kkj_16, 0x80241090), .flags = 0x1 }, { MAP_UNSPLIT(kkj_16, 0x80241090), .unk_1C = { .bytes = { .flags = 1 } } },
{ MAP_UNSPLIT(kkj_17, 0x802405B0) }, { MAP_UNSPLIT(kkj_17, 0x802405B0) },
{ MAP_UNSPLIT(kkj_18, 0x80240830), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kkj_18, 0x80240830), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kkj_19, 0x80240D20) }, { MAP_UNSPLIT(kkj_19, 0x80240D20) },
{ MAP_UNSPLIT(kkj_20, 0x80240600) }, { MAP_UNSPLIT(kkj_20, 0x80240600) },
{ MAP_UNSPLIT(kkj_21, 0x80240010), .flags = 0x1 }, { MAP_UNSPLIT(kkj_21, 0x80240010), .unk_1C = { .bytes = { .flags = 1 } } },
{ MAP_UNSPLIT(kkj_22, 0x80240020), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kkj_22, 0x80240020), .bgName = "kpa_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kkj_23, 0x802409F0), .bgName = "kpa_bg", .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kkj_23, 0x802409F0), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_24, 0x80240040), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kkj_24, 0x80240040), .bgName = "kpa_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kkj_25, 0x80240F50), .bgName = "kpa_bg", .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(kkj_25, 0x80240F50), .bgName = "kpa_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(kkj_26, 0x80240070), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kkj_26, 0x80240070), .bgName = "kpa_bg" },
{ MAP_UNSPLIT(kkj_26, 0x80240070), .flags = 0x2 }, { MAP_UNSPLIT(kkj_26, 0x80240070), .unk_1C = { .bytes = { .flags = 2 } } },
{ MAP_UNSPLIT(kkj_27, 0x802404C0), .flags = 0x1 }, { MAP_UNSPLIT(kkj_27, 0x802404C0), .unk_1C = { .bytes = { .flags = 1 } } },
{ MAP_UNSPLIT(kkj_28, 0x80240010), .flags = 0x1 }, { MAP_UNSPLIT(kkj_28, 0x80240010), .unk_1C = { .bytes = { .flags = 1 } } },
{ MAP_UNSPLIT(kkj_29, 0x80240080), .flags = 0x1 }, { MAP_UNSPLIT(kkj_29, 0x80240080), .unk_1C = { .bytes = { .flags = 1 } } },
}; };
/// Jade Jungle /// Jade Jungle
static Map jan_maps[] = { Map jan_maps[] = {
{ MAP_UNSPLIT(jan_00, 0x80241BD0), .bgName = "yos_bg" }, { MAP_UNSPLIT(jan_00, 0x80241BD0), .bgName = "yos_bg" },
{ MAP_UNSPLIT(jan_01, 0x802413F0), .bgName = "yos_bg" }, { MAP_UNSPLIT(jan_01, 0x802413F0), .bgName = "yos_bg" },
{ MAP_UNSPLIT(jan_02, 0x80242940), .bgName = "yos_bg" }, { MAP_UNSPLIT(jan_02, 0x80242940), .bgName = "yos_bg" },
@ -410,109 +600,109 @@ static Map jan_maps[] = {
{ MAP_UNSPLIT(jan_08, 0x80242460), .bgName = "yos_bg" }, { MAP_UNSPLIT(jan_08, 0x80242460), .bgName = "yos_bg" },
{ MAP_UNSPLIT(jan_09, 0x80241960), .bgName = "yos_bg" }, { MAP_UNSPLIT(jan_09, 0x80241960), .bgName = "yos_bg" },
{ MAP_UNSPLIT(jan_10, 0x80241750), .bgName = "yos_bg" }, { MAP_UNSPLIT(jan_10, 0x80241750), .bgName = "yos_bg" },
{ MAP_UNSPLIT(jan_11, 0x80240810), .bgName = "jan_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(jan_11, 0x80240810), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(jan_12, 0x80241280), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(jan_12, 0x80241280), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(jan_13, 0x802405F0), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(jan_13, 0x802405F0), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(jan_14, 0x80241300), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(jan_14, 0x80241300), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(jan_15, 0x80240320), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(jan_15, 0x80240320), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(jan_16, 0x80240590), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(jan_16, 0x80240590), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(jan_17, 0x80240040), .bgName = "jan_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(jan_17, 0x80240040), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(jan_18, 0x80240020), .bgName = "yos_bg" }, { MAP_UNSPLIT(jan_18, 0x80240020), .bgName = "yos_bg" },
{ MAP_UNSPLIT(jan_19, 0x80240040), .bgName = "jan_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(jan_19, 0x80240040), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(jan_22, 0x802419A0), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(jan_22, 0x802419A0), .bgName = "jan_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(jan_23, 0x80240010), .bgName = "yos_bg" }, { MAP_UNSPLIT(jan_23, 0x80240010), .bgName = "yos_bg" },
}; };
/// Forever Forest /// Forever Forest
static Map mim_maps[] = { Map mim_maps[] = {
{ MAP_UNSPLIT(mim_01, 0x80241EF0), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_01, 0x80241EF0), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_02, 0x80241220), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_02, 0x80241220), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_03, 0x80240570), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_03, 0x80240570), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_04, 0x80241170), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_04, 0x80241170), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_05, 0x80241A60), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_05, 0x80241A60), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_06, 0x80242D70), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_06, 0x80242D70), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_07, 0x802410D0), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_07, 0x802410D0), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_08, 0x80242F80), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_08, 0x80242F80), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_09, 0x80240F00), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_09, 0x80240F00), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_10, 0x802401B0), .bgName = "nok_bg" }, { MAP_UNSPLIT(mim_10, 0x802401B0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(mim_11, 0x80240C20), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_11, 0x80240C20), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(mim_12, 0x80240600), .bgName = "arn_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(mim_12, 0x80240600), .bgName = "arn_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
}; };
/// Boo's Mansion /// Boo's Mansion
static Map obk_maps[] = { Map obk_maps[] = {
{ MAP_UNSPLIT(obk_01, 0x802411B0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(obk_01, 0x802411B0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(obk_02, 0x802402E0), .bgName = "obk_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(obk_02, 0x802402E0), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(obk_03, 0x80241020), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(obk_03, 0x80241020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(obk_04, 0x80240E90), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(obk_04, 0x80240E90), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(obk_05, 0x802409F0), .bgName = "obk_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(obk_05, 0x802409F0), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(obk_06, 0x80240020), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(obk_06, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(obk_07, 0x80241BA0), .bgName = "obk_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(obk_07, 0x80241BA0), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(obk_08, 0x802417B0), .bgName = "obk_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(obk_08, 0x802417B0), .bgName = "obk_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(obk_09, 0x80240460), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(obk_09, 0x80240460), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
}; };
/// Gusty Gulch /// Gusty Gulch
static Map arn_maps[] = { Map arn_maps[] = {
{ MAP_UNSPLIT(arn_02, 0x80241000), .bgName = "arn_bg" }, { MAP_UNSPLIT(arn_02, 0x80241000), .bgName = "arn_bg" },
{ MAP_UNSPLIT(arn_03, 0x80241740), .bgName = "arn_bg" }, { MAP_UNSPLIT(arn_03, 0x80241740), .bgName = "arn_bg" },
{ MAP_UNSPLIT(arn_04, 0x80243390), .bgName = "arn_bg" }, { MAP_UNSPLIT(arn_04, 0x80243390), .bgName = "arn_bg" },
{ MAP_UNSPLIT(arn_05, 0x80241320), .bgName = "arn_bg" }, { MAP_UNSPLIT(arn_05, 0x80241320), .bgName = "arn_bg" },
{ MAP_UNSPLIT(arn_07, 0x80241ED0), .bgName = "arn_bg" }, { MAP_UNSPLIT(arn_07, 0x80241ED0), .bgName = "arn_bg" },
{ MAP_UNSPLIT(arn_08, 0x802402C0), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(arn_08, 0x802402C0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(arn_09, 0x80240060), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(arn_09, 0x80240060), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(arn_10, 0x80240020), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(arn_10, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(arn_11, 0x80240010), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(arn_11, 0x80240010), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(arn_12, 0x80240020), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(arn_12, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(arn_13, 0x80240020), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(arn_13, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
}; };
/// Tubba Blubba's Castle /// Tubba Blubba's Castle
static Map dgb_maps[] = { Map dgb_maps[] = {
{ MAP_UNSPLIT(dgb_00, 0x802400D0), .bgName = "arn_bg", .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(dgb_00, 0x802400D0), .bgName = "arn_bg", .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(dgb_01, 0x80243460), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_01, 0x80243460), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_02, 0x80241470), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_02, 0x80241470), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_03, 0x80242830), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_03, 0x80242830), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_04, 0x80243130), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_04, 0x80243130), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_05, 0x802414A0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_05, 0x802414A0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_06, 0x802402E0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_06, 0x802402E0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_07, 0x80241450), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_07, 0x80241450), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_08, 0x80243CB0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_08, 0x80243CB0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_09, 0x80243840), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_09, 0x80243840), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_10, 0x80240210), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_10, 0x80240210), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_11, 0x80240090), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_11, 0x80240090), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_12, 0x802402D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_12, 0x802402D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_13, 0x80240010), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_13, 0x80240010), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_14, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_14, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_15, 0x802418A0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_15, 0x802418A0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_16, 0x80241440), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_16, 0x80241440), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_17, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_17, 0x80240020), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(dgb_18, 0x80241280), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_18, 0x80241280), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
}; };
/// Mt. Lavalava /// Mt. Lavalava
static Map kzn_maps[] = { Map kzn_maps[] = {
{ MAP_UNSPLIT(kzn_01, 0x80240330), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_01, 0x80240330), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_02, 0x80242850), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_02, 0x80242850), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_03, 0x802430E0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_03, 0x802430E0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_04, 0x80241770), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_04, 0x80241770), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_05, 0x80240330), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_05, 0x80240330), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_06, 0x80240AA0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_06, 0x80240AA0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_07, 0x80242320), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_07, 0x80242320), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_08, 0x80244130), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_08, 0x80244130), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_09, 0x80243A40), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_09, 0x80243A40), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_10, 0x802406F0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_10, 0x802406F0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_11, 0x80242680), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_11, 0x80242680), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_17, 0x802430C0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_17, 0x802430C0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_18, 0x802403F0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_18, 0x802403F0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_19, 0x80241D70), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_19, 0x80241D70), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_20, 0x80240AE0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_20, 0x80240AE0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_22, 0x802403A0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_22, 0x802403A0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(kzn_23, 0x80240630), .bgName = "yos_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kzn_23, 0x80240630), .bgName = "yos_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
}; };
/// Flower Fields /// Flower Fields
static Map flo_maps[] = { Map flo_maps[] = {
{ MAP_UNSPLIT(flo_00, 0x80241490), .bgName = "fla_bg" }, { MAP_UNSPLIT(flo_00, 0x80241490), .bgName = "fla_bg" },
{ MAP_UNSPLIT(flo_03, 0x80240660), .bgName = "fla_bg" }, { MAP_UNSPLIT(flo_03, 0x80240660), .bgName = "fla_bg" },
{ MAP_UNSPLIT(flo_07, 0x80240760), .bgName = "fla_bg" }, { MAP_UNSPLIT(flo_07, 0x80240760), .bgName = "fla_bg" },
@ -536,80 +726,80 @@ static Map flo_maps[] = {
}; };
/// Shiver Region /// Shiver Region
static Map sam_maps[] = { Map sam_maps[] = {
{ MAP_UNSPLIT(sam_01, 0x80241F70), .bgName = "yki_bg" }, { MAP_UNSPLIT(sam_01, 0x80241F70), .bgName = "yki_bg" },
{ MAP_UNSPLIT(sam_02, 0x80241C00), .bgName = "yki_bg" }, { MAP_UNSPLIT(sam_02, 0x80241C00), .bgName = "yki_bg" },
{ MAP_UNSPLIT(sam_03, 0x80240940), .bgName = "yki_bg" }, { MAP_UNSPLIT(sam_03, 0x80240940), .bgName = "yki_bg" },
{ MAP_UNSPLIT(sam_04, 0x80240740), .bgName = "yki_bg" }, { MAP_UNSPLIT(sam_04, 0x80240740), .bgName = "yki_bg" },
{ MAP_UNSPLIT(sam_05, 0x80241D60), .bgName = "sam_bg" }, { MAP_UNSPLIT(sam_05, 0x80241D60), .bgName = "sam_bg" },
{ MAP_UNSPLIT(sam_06, 0x80242630), .bgName = "sam_bg" }, { MAP_UNSPLIT(sam_06, 0x80242630), .bgName = "sam_bg" },
{ MAP_UNSPLIT(sam_07, 0x80242020), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(sam_07, 0x80242020), .bgName = "yki_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(sam_08, 0x802417D0), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(sam_08, 0x802417D0), .bgName = "yki_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(sam_09, 0x80240420), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(sam_09, 0x80240420), .bgName = "yki_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(sam_10, 0x80240CE0), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(sam_10, 0x80240CE0), .bgName = "yki_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(sam_11, 0x802421A0), .bgName = "yki_bg" }, { MAP_UNSPLIT(sam_11, 0x802421A0), .bgName = "yki_bg" },
{ MAP_UNSPLIT(sam_12, 0x802403B0), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(sam_12, 0x802403B0), .bgName = "yki_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
}; };
/// Crystal Palace /// Crystal Palace
static Map pra_maps[] = { Map pra_maps[] = {
{ MAP_UNSPLIT(pra_01, 0x80241400), .bgName = "yki_bg", .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_01, 0x80241400), .bgName = "yki_bg", .unk_1C = { .bytes = { .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_02, 0x802416C0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_02, 0x802416C0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_03, 0x802401E0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_03, 0x802401E0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_04, 0x80240970), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_04, 0x80240970), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_05, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_05, 0x802411F0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_06, 0x80240F60), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_06, 0x80240F60), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_09, 0x80241670), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_09, 0x80241670), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_10, 0x802416D0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_10, 0x802416D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_11, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_11, 0x802411F0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_12, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_12, 0x80241220), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_13, 0x80241620), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_13, 0x80241620), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_14, 0x80241200), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_14, 0x80241200), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_15, 0x80240050), .bgName = "yki_bg", .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_15, 0x80240050), .bgName = "yki_bg", .init = (MapInit)0x80240000, .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(pra_16, 0x80240F60), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_16, 0x80240F60), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_18, 0x80240F50), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_18, 0x80240F50), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_19, 0x802419D0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_19, 0x802419D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_20, 0x80240F70), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_20, 0x80240F70), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_21, 0x80240140), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_21, 0x80240140), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_22, 0x802402F0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_22, 0x802402F0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_27, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_27, 0x80241220), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_28, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_28, 0x80241220), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_29, 0x802412C0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_29, 0x802412C0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_31, 0x802410E0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_31, 0x802410E0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_32, 0x80240850), .bgName = "sam_bg", .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_32, 0x80240850), .bgName = "sam_bg", .init = (MapInit)0x80240000, .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } } },
{ MAP_UNSPLIT(pra_33, 0x802410C0), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_33, 0x802410C0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_34, 0x80241040), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_34, 0x80241040), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_35, 0x80242C40), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_35, 0x80242C40), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_36, 0x80240F70), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_36, 0x80240F70), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_37, 0x80241840), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_37, 0x80241840), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_38, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_38, 0x80241700), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_39, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_39, 0x80241700), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } }, .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(pra_40, 0x80240F40), .songVariation = 1, .flags = 1, .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(pra_40, 0x80240F40), .unk_1C = { .bytes = { .songVariation = 1, .flags = 1 } }, .init = (MapInit)0x80240000 },
}; };
/// Shy Guy's Toy Box /// Shy Guy's Toy Box
static Map omo_maps[] = { Map omo_maps[] = {
{ MAP_UNSPLIT(omo_01, 0x80240C40), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_01, 0x80240C40), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_02, 0x80242BD0), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_02, 0x80242BD0), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_03, 0x80240900), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_03, 0x80240900), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_04, 0x80241F30), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_04, 0x80241F30), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_05, 0x80242440), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_05, 0x80242440), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_06, 0x80240B80), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_06, 0x80240B80), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_07, 0x80243310), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_07, 0x80243310), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_08, 0x80240E10), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_08, 0x80240E10), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_09, 0x80243700), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_09, 0x80243700), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_10, 0x802408B0), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_10, 0x802408B0), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_11, 0x802414F0), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_11, 0x802414F0), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_12, 0x802404D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_12, 0x802404D0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_13, 0x80241510), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_13, 0x80241510), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_14, 0x802405E0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_14, 0x802405E0), .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_15, 0x80240810), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_15, 0x80240810), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_16, 0x80240620), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_16, 0x80240620), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
{ MAP_UNSPLIT(omo_17, 0x80243770), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(omo_17, 0x80243770), .bgName = "omo_bg", .unk_1C = { .bytes = { .songVariation = 1, .flags = 2 } } },
}; };
/// Debug /// Debug
static Map tst_maps[] = { Map tst_maps[] = {
{ MAP_UNSPLIT(tst_01, 0x802400B0), .bgName = "nok_bg" }, { MAP_UNSPLIT(tst_01, 0x802400B0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(tst_02, 0x802400B0), .bgName = "nok_bg" }, { MAP_UNSPLIT(tst_02, 0x802400B0), .bgName = "nok_bg" },
{ MAP_UNSPLIT(tst_03, 0x802400B0), .bgName = "nok_bg" }, { MAP_UNSPLIT(tst_03, 0x802400B0), .bgName = "nok_bg" },
@ -622,13 +812,13 @@ static Map tst_maps[] = {
}; };
/// Credits /// Credits
static Map end_maps[] = { Map end_maps[] = {
{ MAP_UNSPLIT(end_00, 0x80242B50), .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(end_00, 0x80242B50), .init = (MapInit)0x80240000 },
{ MAP_UNSPLIT(end_01, 0x80243000), .init = (MapInit)0x80240000 }, { MAP_UNSPLIT(end_01, 0x80243000), .init = (MapInit)0x80240000 },
}; };
/// Toad Town Playroom /// Toad Town Playroom
static Map mgm_maps[] = { Map mgm_maps[] = {
{ MAP_UNSPLIT(mgm_00, 0x80241810) }, { MAP_UNSPLIT(mgm_00, 0x80241810) },
{ MAP_UNSPLIT(mgm_01, 0x802417C0) }, { MAP_UNSPLIT(mgm_01, 0x802417C0) },
{ MAP_UNSPLIT(mgm_02, 0x80242410) }, { MAP_UNSPLIT(mgm_02, 0x80242410) },
@ -636,7 +826,7 @@ static Map mgm_maps[] = {
}; };
/// Game Over /// Game Over
static Map gv_maps[] = { Map gv_maps[] = {
{ MAP_UNSPLIT(gv_01, 0x802407D0) }, { MAP_UNSPLIT(gv_01, 0x802407D0) },
}; };

View File

@ -6,7 +6,7 @@
[subrepo] [subrepo]
remote = https://github.com/ethteck/splat.git remote = https://github.com/ethteck/splat.git
branch = master branch = master
commit = 90fae1a8294eb42912717db587ff070474a307f8 commit = 4be92a4786c0f23075b225b3e198d1553d111146
parent = 886a779bdb282646459e9f58c65454fbf6a6dfda parent = 9d544b15d0d9956760c10884d917ee739d5b1fb8
method = merge method = merge
cmdver = 0.4.3 cmdver = 0.4.3

View File

@ -19,8 +19,7 @@ class N64SegCi8(N64SegRgba16):
self.image = self.__class__.parse_image(data, self.width, self.height, self.flip_horizontal, self.flip_vertical) self.image = self.__class__.parse_image(data, self.width, self.height, self.flip_horizontal, self.flip_vertical)
def postsplit(self, segments): def postsplit(self, segments):
palettes = [seg for seg in segments if seg.type == palettes = [seg for seg in segments if seg.type == "palette" and seg.image_name == self.name]
"palette" and seg.image_name == self.name]
if len(palettes) == 0: if len(palettes) == 0:
self.error(f"no palette sibling segment exists\n(hint: add a segment with type 'palette' and name '{self.name}')") self.error(f"no palette sibling segment exists\n(hint: add a segment with type 'palette' and name '{self.name}')")
@ -42,8 +41,7 @@ class N64SegCi8(N64SegRgba16):
# canonical version of image (not palette!) data # canonical version of image (not palette!) data
if self.path not in seen_paths: if self.path not in seen_paths:
w = png.Writer(self.width, self.height, w = png.Writer(self.width, self.height, palette=palettes[0].palette)
palette=palettes[0].palette)
with open(self.path, "wb") as f: with open(self.path, "wb") as f:
w.write_array(f, self.image) w.write_array(f, self.image)

View File

@ -1,5 +1,6 @@
import os import os
import re import re
from segtypes.n64.rgba32 import N64SegRgba32
from segtypes.n64.rgba16 import N64SegRgba16 from segtypes.n64.rgba16 import N64SegRgba16
import sys import sys
from collections import OrderedDict from collections import OrderedDict
@ -27,6 +28,7 @@ word_mnemonics = ["addiu", "sw", "lw", "jtbl"]
float_mnemonics = ["lwc1", "swc1"] float_mnemonics = ["lwc1", "swc1"]
short_mnemonics = ["addiu", "lh", "sh", "lhu"] short_mnemonics = ["addiu", "lh", "sh", "lhu"]
byte_mnemonics = ["lb", "sb", "lbu"] byte_mnemonics = ["lb", "sb", "lbu"]
img_types = ["i4", "i8", "ia4", "ia8", "ia16", "rgba16", "rgba32", "ci4", "ci8"]
class Subsegment(): class Subsegment():
def __init__(self, start, end, name, type, vram, args, parent): def __init__(self, start, end, name, type, vram, args, parent):
@ -82,7 +84,7 @@ class Subsegment():
return "s" return "s"
elif self.type == "bin": elif self.type == "bin":
return "bin" return "bin"
elif self.type in ["i4", "i8", "ia4", "ia8", "ia16", "rgba16", "rgba32", "ci4", "ci8"]: elif self.type in img_types:
return "png" return "png"
elif self.type == "palette": elif self.type == "palette":
return "pal.png" return "pal.png"
@ -120,35 +122,41 @@ class Subsegment():
self.split_inner(segment, rom_bytes, base_path, self.get_generic_out_path(base_path)) self.split_inner(segment, rom_bytes, base_path, self.get_generic_out_path(base_path))
@staticmethod @staticmethod
def get_subclass(typ): def create(typ, start, end, name, vram, args, parent):
if typ in ["data", ".data", "rodata", ".rodata"]: if typ in ["data", ".data", "rodata", ".rodata"]:
return DataSubsegment sub_class = DataSubsegment
elif typ in ["bss", ".bss"]: elif typ in ["bss", ".bss"]:
return BssSubsegment sub_class = BssSubsegment
elif typ == "bin": elif typ == "bin":
return BinSubsegment sub_class = BinSubsegment
elif typ in ["c", "asm", "hasm"]: elif typ in ["c", "asm", "hasm"]:
return CodeSubsegment sub_class = CodeSubsegment
elif typ == "palette": elif typ == "palette":
return PaletteSubsegment sub_class = PaletteSubsegment
elif typ == "rgba32": elif typ == "rgba32":
return RGBA32Subsegment sub_class = RGBA32Subsegment
elif typ == "rgba16": elif typ == "rgba16":
return RGBA16Subsegment sub_class = RGBA16Subsegment
elif typ == "ci4":
sub_class = CI4Subsegment
elif typ == "ci8":
sub_class = CI8Subsegment
elif typ == "i4": elif typ == "i4":
return I4Subsegment sub_class = I4Subsegment
elif typ == "i8": elif typ == "i8":
return I8Subsegment sub_class = I8Subsegment
elif typ == "ia4": elif typ == "ia4":
return Ia4Subsegment sub_class = Ia4Subsegment
elif typ == "ia8": elif typ == "ia8":
return Ia8Subsegment sub_class = Ia8Subsegment
elif typ == "ia16": elif typ == "ia16":
return Ia16Subsegment sub_class = Ia16Subsegment
elif typ == "linker": elif typ == "linker":
return LinkerSubsegment sub_class = LinkerSubsegment
else: else:
return Subsegment sub_class = Subsegment
return sub_class(start, end, name, typ, vram, args, parent)
class CodeSubsegment(Subsegment): class CodeSubsegment(Subsegment):
defined_funcs = set() defined_funcs = set()
@ -284,12 +292,29 @@ class LinkerSubsegment(Subsegment):
def get_ld_file(self): def get_ld_file(self):
return "", self.name, self.type, self.rom_start return "", self.name, self.type, self.rom_start
class PaletteSubsegment(Subsegment): class ImageSubsegment(Subsegment):
def __init__(self, start, end, name, type, vram, args, parent):
super().__init__(start, end, name, type, vram, args, parent)
if len(self.args) >= 2:
self.width, self.height = self.args
def should_run(self): def should_run(self):
return super().should_run() or options.mode_active("img") return super().should_run() or options.mode_active("img")
def split_inner(self, segment, rom_bytes, base_path, generic_out_path): def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
img_bytes = rom_bytes[self.rom_start : self.rom_end] img_bytes = rom_bytes[self.rom_start : self.rom_end]
image = self.impl_class.parse_image(img_bytes, self.width, self.height, flip_h=False, flip_v=False)
w = self.impl_class.get_writer(self.width, self.height)
self.write(generic_out_path, w, image)
def write(self, out_path, writer, image):
Path(out_path).parent.mkdir(parents=True, exist_ok=True)
with open(out_path, "wb") as f:
writer.write_array(f, image)
class PaletteSubsegment(ImageSubsegment):
def scan_inner(self, segment, rom_bytes, base_path, generic_out_path):
img_bytes = rom_bytes[self.rom_start : self.rom_end]
self.palette = N64SegPalette.parse_palette(img_bytes) self.palette = N64SegPalette.parse_palette(img_bytes)
self.image_name = self.name.split(".", 1)[0] self.image_name = self.name.split(".", 1)[0]
@ -299,110 +324,69 @@ class PaletteSubsegment(Subsegment):
else: else:
segment.palettes[self.image_name].append(self) segment.palettes[self.image_name].append(self)
class RGBA32Subsegment(Subsegment): def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
def should_run(self): pass
return super().should_run() or options.mode_active("img")
class CI4Subsegment(ImageSubsegment):
def split_inner(self, segment, rom_bytes, base_path, generic_out_path): def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
img_bytes = rom_bytes[self.rom_start : self.rom_end] img_bytes = rom_bytes[self.rom_start : self.rom_end]
width, height = self.args image = N64SegCi4.parse_image(img_bytes, self.width, self.height)
image = img_bytes
w = png.Writer(width, height, greyscale=False, alpha=True) for image_name in segment.palettes:
if self.name == image_name:
for palette in segment.palettes[self.name]:
w = png.Writer(self.width, self.height, palette=palette.palette)
out_path = re.sub(r"\.pal\.png", ".png", palette.get_generic_out_path(base_path))
Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True) self.write(out_path, w, image)
with open(generic_out_path, "wb") as f:
w.write_array(f, image)
class RGBA16Subsegment(Subsegment):
def should_run(self):
return super().should_run() or options.mode_active("img")
class CI8Subsegment(ImageSubsegment):
def split_inner(self, segment, rom_bytes, base_path, generic_out_path): def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
img_bytes = rom_bytes[self.rom_start : self.rom_end] img_bytes = rom_bytes[self.rom_start : self.rom_end]
width, height = self.args image = N64SegCi8.parse_image(img_bytes, self.width, self.height)
image = N64SegRgba16.parse_image(img_bytes, width, height)
w = png.Writer(width, height, greyscale=False, alpha=True) for image_name in segment.palettes:
if self.name == image_name:
for palette in segment.palettes[self.name]:
w = png.Writer(self.width, self.height, palette=palette.palette)
out_path = re.sub(r"\.pal\.png", ".png", palette.get_generic_out_path(base_path))
Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True) self.write(out_path, w, image)
with open(generic_out_path, "wb") as f:
w.write_array(f, image)
class I4Subsegment(Subsegment): class RGBA32Subsegment(ImageSubsegment):
def should_run(self): def __init__(self, start, end, name, type, vram, args, parent):
return super().should_run() or options.mode_active("img") super().__init__(start, end, name, type, vram, args, parent)
self.impl_class = N64SegRgba32
def split_inner(self, segment, rom_bytes, base_path, generic_out_path): class RGBA16Subsegment(ImageSubsegment):
img_bytes = rom_bytes[self.rom_start : self.rom_end] def __init__(self, start, end, name, type, vram, args, parent):
width, height = self.args super().__init__(start, end, name, type, vram, args, parent)
image = N64SegI4.parse_image(img_bytes, width, height) self.impl_class = N64SegRgba16
w = png.Writer(width, height, greyscale=True, alpha=False) class I4Subsegment(ImageSubsegment):
def __init__(self, start, end, name, type, vram, args, parent):
super().__init__(start, end, name, type, vram, args, parent)
self.impl_class = N64SegI4
Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True) class I8Subsegment(ImageSubsegment):
with open(generic_out_path, "wb") as f: def __init__(self, start, end, name, type, vram, args, parent):
w.write_array(f, image) super().__init__(start, end, name, type, vram, args, parent)
self.impl_class = N64SegI8
class I8Subsegment(Subsegment): class Ia4Subsegment(ImageSubsegment):
def should_run(self): def __init__(self, start, end, name, type, vram, args, parent):
return super().should_run() or options.mode_active("img") super().__init__(start, end, name, type, vram, args, parent)
self.impl_class = N64SegIa4
def split_inner(self, segment, rom_bytes, base_path, generic_out_path): class Ia8Subsegment(ImageSubsegment):
img_bytes = rom_bytes[self.rom_start : self.rom_end] def __init__(self, start, end, name, type, vram, args, parent):
width, height = self.args super().__init__(start, end, name, type, vram, args, parent)
image = N64SegI8.parse_image(img_bytes, width, height) self.impl_class = N64SegIa8
w = png.Writer(width, height, greyscale=True, alpha=False) class Ia16Subsegment(ImageSubsegment):
def __init__(self, start, end, name, type, vram, args, parent):
Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True) super().__init__(start, end, name, type, vram, args, parent)
with open(generic_out_path, "wb") as f: self.impl_class = N64SegIa16
w.write_array(f, image)
class Ia4Subsegment(Subsegment):
def should_run(self):
return super().should_run() or options.mode_active("img")
def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
img_bytes = rom_bytes[self.rom_start : self.rom_end]
width, height = self.args
image = N64SegIa4.parse_image(img_bytes, width, height)
w = png.Writer(width, height, greyscale=True, alpha=True)
Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True)
with open(generic_out_path, "wb") as f:
w.write_array(f, image)
class Ia8Subsegment(Subsegment):
def should_run(self):
return super().should_run() or options.mode_active("img")
def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
img_bytes = rom_bytes[self.rom_start : self.rom_end]
width, height = self.args
image = N64SegIa8.parse_image(img_bytes, width, height)
w = png.Writer(width, height, greyscale=True, alpha=True)
Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True)
with open(generic_out_path, "wb") as f:
w.write_array(f, image)
class Ia16Subsegment(Subsegment):
def should_run(self):
return super().should_run() or options.mode_active("img")
def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
img_bytes = rom_bytes[self.rom_start : self.rom_end]
width, height = self.args
image = N64SegIa16.parse_image(img_bytes, width, height)
w = png.Writer(width, height, greyscale=True, alpha=True)
Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True)
with open(generic_out_path, "wb") as f:
w.write_array(f, image)
class N64SegCode(N64Segment): class N64SegCode(N64Segment):
palettes = {} palettes = {}
@ -443,22 +427,17 @@ class N64SegCode(N64Segment):
vram = self.rom_to_ram(start) vram = self.rom_to_ram(start)
subsegment_class = Subsegment.get_subclass(typ) subsegment = Subsegment.create(typ, start, end, name, vram, args, base_segments.get(name, None))
if self.rodata_vram_start == -1 and "rodata" in typ: if self.rodata_vram_start == -1 and "rodata" in typ:
self.rodata_vram_start = vram self.rodata_vram_start = vram
if self.rodata_vram_end == -1 and "bss" in typ: if self.rodata_vram_end == -1 and "bss" in typ:
self.rodata_vram_end = vram self.rodata_vram_end = vram
parent = None ret.append(subsegment)
if name in base_segments:
parent = base_segments[name]
new_segment = subsegment_class(start, end, name, typ, vram, args, parent)
ret.append(new_segment)
if typ in ["c", "asm", "hasm"]: if typ in ["c", "asm", "hasm"]:
base_segments[name] = new_segment base_segments[name] = subsegment
prev_start = start prev_start = start
@ -539,7 +518,8 @@ class N64SegCode(N64Segment):
else: else:
return None return None
def get_symbol(self, addr, type=None, create=False, define=False, reference=False, offsets=False, local_only=False): def get_symbol(self, addr, type=None, create=False, define=False, reference=False, offsets=False, local_only=False,
skip_dead=False):
ret = None ret = None
rom = None rom = None
@ -573,6 +553,9 @@ class N64SegCode(N64Segment):
self.ext_symbols[addr].append(ret) self.ext_symbols[addr].append(ret)
if ret: if ret:
if skip_dead and ret.dead:
return None
if define: if define:
ret.defined = True ret.defined = True
if reference: if reference:
@ -674,7 +657,7 @@ class N64SegCode(N64Segment):
end_func = True end_func = True
continue continue
if i < len(insns) - 1 and self.get_symbol(insns[i + 1].address, local_only=True, type="func"): if i < len(insns) - 1 and self.get_symbol(insns[i + 1].address, local_only=True, type="func", skip_dead=True):
end_func = True end_func = True
if end_func: if end_func:
@ -911,7 +894,7 @@ class N64SegCode(N64Segment):
for symbol_addr in self.seg_symbols: for symbol_addr in self.seg_symbols:
for symbol in self.seg_symbols[symbol_addr]: for symbol in self.seg_symbols[symbol_addr]:
if sub.contains_vram(symbol.vram_start): if not symbol.dead and sub.contains_vram(symbol.vram_start):
ret.append(symbol) ret.append(symbol)
ret.sort(key=lambda s:s.vram_start) ret.sort(key=lambda s:s.vram_start)
@ -1105,8 +1088,8 @@ class N64SegCode(N64Segment):
func_rodata.sort(key=lambda s:s.vram_start) func_rodata.sort(key=lambda s:s.vram_start)
if len(func_rodata) > 0: if len(func_rodata) > 0:
sub = self.get_subsection_for_ram(func_rodata[0].vram_start) rsub = self.get_subsection_for_ram(func_rodata[0].vram_start)
if sub and sub.type != "rodata": if rsub and rsub.type != "rodata":
out_lines.append(".section .rodata") out_lines.append(".section .rodata")
for sym in func_rodata: for sym in func_rodata:
@ -1151,22 +1134,3 @@ class N64SegCode(N64Segment):
for sub in self.subsegments: for sub in self.subsegments:
sub.split(self, rom_bytes, base_path) sub.split(self, rom_bytes, base_path)
for image_name in self.palettes:
for sub in self.subsegments:
if sub.type in ["ci4", "ci8"] and (sub.should_run() or options.mode_active("img")) and sub.name == image_name:
img_bytes = rom_bytes[sub.rom_start : sub.rom_end]
width, height = sub.args
for palette in self.palettes[sub.name]:
if sub.type == "ci4":
image = N64SegCi4.parse_image(img_bytes, width, height)
elif sub.type == "ci8":
image = N64SegCi8.parse_image(img_bytes, width, height)
w = png.Writer(width, height, palette=palette.palette)
generic_out_path = re.sub(r"\.pal\.png", ".png", palette.get_generic_out_path(base_path))
Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True)
with open(generic_out_path, "wb") as f:
w.write_array(f, image)

View File

@ -1,16 +1,18 @@
from segtypes.n64.rgba16 import N64SegRgba16 from segtypes.n64.rgba16 import N64SegRgba16
import png import png
from math import ceil from math import ceil
from util import iter
class N64SegI4(N64SegRgba16): class N64SegI4(N64SegRgba16):
def png_writer(self): @staticmethod
return png.Writer(self.width, self.height, greyscale=True) def get_writer(width, height):
return png.Writer(width, height, greyscale=True)
@staticmethod @staticmethod
def parse_image(data, width, height, flip_h=False, flip_v=False): def parse_image(data, width, height, flip_h=False, flip_v=False):
img = bytearray() img = bytearray()
for x, y, i in N64SegRgba16.iter_image_indexes(width, height, 0.5, 1, flip_h, flip_v): for x, y, i in iter.iter_image_indexes(width, height, 0.5, 1, flip_h, flip_v):
b = data[i] b = data[i]
i1 = (b >> 4) & 0xF i1 = (b >> 4) & 0xF

View File

@ -1,5 +1,4 @@
from segtypes.n64.i4 import N64SegI4 from segtypes.n64.i4 import N64SegI4
from math import ceil
class N64SegI8(N64SegI4): class N64SegI8(N64SegI4):
@staticmethod @staticmethod

View File

@ -1,16 +1,18 @@
from segtypes.n64.rgba16 import N64SegRgba16 from segtypes.n64.rgba16 import N64SegRgba16
import png import png
from math import ceil from math import ceil
from util import iter
class N64SegIa4(N64SegRgba16): class N64SegIa4(N64SegRgba16):
def png_writer(self): @staticmethod
return png.Writer(self.width, self.height, greyscale=True, alpha=True) def get_writer(width, height):
return png.Writer(width, height, greyscale=True, alpha=True)
@staticmethod @staticmethod
def parse_image(data, width, height, flip_h=False, flip_v=False): def parse_image(data, width, height, flip_h=False, flip_v=False):
img = bytearray() img = bytearray()
for x, y, i in N64SegRgba16.iter_image_indexes(width, height, 0.5, 1, flip_h, flip_v): for x, y, i in iter.iter_image_indexes(width, height, 0.5, 1, flip_h, flip_v):
b = data[i] b = data[i]
h = (b >> 4) & 0xF h = (b >> 4) & 0xF

View File

@ -1,13 +1,13 @@
from segtypes.n64.ia4 import N64SegIa4 from segtypes.n64.ia4 import N64SegIa4
from segtypes.n64.rgba16 import N64SegRgba16
from math import ceil from math import ceil
from util import iter
class N64SegIa8(N64SegIa4): class N64SegIa8(N64SegIa4):
@staticmethod @staticmethod
def parse_image(data, width, height, flip_h=False, flip_v=False): def parse_image(data, width, height, flip_h=False, flip_v=False):
img = bytearray() img = bytearray()
for x, y, i in N64SegRgba16.iter_image_indexes(width, height, flip_h=flip_h, flip_v=flip_v): for x, y, i in iter.iter_image_indexes(width, height, flip_h=flip_h, flip_v=flip_v):
b = data[i] b = data[i]
i = (b >> 4) & 0xF i = (b >> 4) & 0xF

View File

@ -1,9 +1,11 @@
import os import os
import sys
from segtypes.n64.segment import N64Segment from segtypes.n64.segment import N64Segment
from util import options
from util.color import unpack_color from util.color import unpack_color
from util.iter import iter_in_groups from util.iter import iter_in_groups
from util import options
import sys
class N64SegPalette(N64Segment): class N64SegPalette(N64Segment):
require_unique_name = False require_unique_name = False

View File

@ -1,12 +1,11 @@
import os import os
from segtypes.n64.segment import N64Segment from segtypes.n64.segment import N64Segment
import png import png
from math import ceil from util import iter
from util import options from util import options
from util.color import unpack_color from util.color import unpack_color
import sys import sys
class N64SegRgba16(N64Segment): class N64SegRgba16(N64Segment):
def __init__(self, segment, next_segment): def __init__(self, segment, next_segment):
super().__init__(segment, next_segment) super().__init__(segment, next_segment)
@ -37,20 +36,6 @@ class N64SegRgba16(N64Segment):
def flip_horizontal(self): def flip_horizontal(self):
return self.flip == "both" or self.flip.startswith("h") or self.flip == "x" return self.flip == "both" or self.flip.startswith("h") or self.flip == "x"
@staticmethod
def iter_image_indexes(width, height, bytes_per_x=1, bytes_per_y=1, flip_h=False, flip_v=False):
w = int(width * bytes_per_x)
h = int(height * bytes_per_y)
xrange = range(w - ceil(bytes_per_x), -1, -ceil(bytes_per_x)
) if flip_h else range(0, w, ceil(bytes_per_x))
yrange = range(h - ceil(bytes_per_y), -1, -ceil(bytes_per_y)
) if flip_v else range(0, h, ceil(bytes_per_y))
for y in yrange:
for x in xrange:
yield x, y, (y * w) + x
def should_run(self): def should_run(self):
return super().should_run() or options.mode_active("img") return super().should_run() or options.mode_active("img")
@ -60,20 +45,21 @@ class N64SegRgba16(N64Segment):
data = rom_bytes[self.rom_start: self.rom_end] data = rom_bytes[self.rom_start: self.rom_end]
w = self.png_writer() w = self.__class__.get_writer(self.width, self.height)
with open(path, "wb") as f: with open(path, "wb") as f:
w.write_array(f, self.parse_image(data, self.width, self.height, self.flip_horizontal, self.flip_vertical)) w.write_array(f, self.parse_image(data, self.width, self.height, self.flip_horizontal, self.flip_vertical))
self.log(f"Wrote {self.name} to {path}") self.log(f"Wrote {self.name} to {path}")
def png_writer(self): @staticmethod
return png.Writer(self.width, self.height, greyscale=False, alpha=True) def get_writer(width, height):
return png.Writer(width, height, greyscale=False, alpha=True)
@staticmethod @staticmethod
def parse_image(data, width, height, flip_h=False, flip_v=False): def parse_image(data, width, height, flip_h=False, flip_v=False):
img = bytearray() img = bytearray()
for x, y, i in N64SegRgba16.iter_image_indexes(width, height, 2, 1, flip_h, flip_v): for x, y, i in iter.iter_image_indexes(width, height, 2, 1, flip_h, flip_v):
img += bytes(unpack_color(data[i:])) img += bytes(unpack_color(data[i:]))
return img return img

View File

@ -50,7 +50,8 @@ class Segment:
self.type = parse_segment_type(segment) self.type = parse_segment_type(segment)
self.name = parse_segment_name(segment, self.__class__) self.name = parse_segment_name(segment, self.__class__)
self.vram_start = parse_segment_vram(segment) self.vram_start = parse_segment_vram(segment)
self.ld_name_override = segment.get("ld_name", None) if type(segment) is dict else None self.ld_name_override = segment.get("ld_name") if type(segment) is dict else None
self.extract = segment.get("extract", True) if type(segment) is dict else True
self.config = segment self.config = segment
self.subalign = parse_segment_subalign(segment) self.subalign = parse_segment_subalign(segment)
@ -101,7 +102,7 @@ class Segment:
return out_dir return out_dir
def should_run(self): def should_run(self):
return options.mode_active(self.type) return self.extract and options.mode_active(self.type)
def split(self, rom_bytes, base_path): def split(self, rom_bytes, base_path):
pass pass

View File

@ -88,10 +88,6 @@ def get_symbol_addrs_path(repo_path):
return os.path.join(repo_path, options.get("symbol_addrs_path", "symbol_addrs.txt")) return os.path.join(repo_path, options.get("symbol_addrs_path", "symbol_addrs.txt"))
def get_undefined_syms_path(repo_path):
return os.path.join(repo_path, options.get("undefined_syms_path", "undefined_syms.txt"))
def get_undefined_syms_auto_path(repo_path): def get_undefined_syms_auto_path(repo_path):
return os.path.join(repo_path, options.get("undefined_syms_auto_path", "undefined_syms_auto.txt")) return os.path.join(repo_path, options.get("undefined_syms_auto_path", "undefined_syms_auto.txt"))
@ -104,7 +100,7 @@ def get_cache_path(repo_path):
return os.path.join(repo_path, options.get("cache_path", ".splat_cache")) return os.path.join(repo_path, options.get("cache_path", ".splat_cache"))
def gather_symbols(symbol_addrs_path, undefined_syms_path): def gather_symbols(symbol_addrs_path):
symbols = [] symbols = []
# Manual list of func name / addrs # Manual list of func name / addrs
@ -139,6 +135,10 @@ def gather_symbols(symbol_addrs_path, undefined_syms_path):
if info.startswith("rom:"): if info.startswith("rom:"):
rom_addr = int(info.split(":")[1], 0) rom_addr = int(info.split(":")[1], 0)
sym.rom = rom_addr sym.rom = rom_addr
if info.startswith("dead:"):
sym.dead = True
sym.defined = True
symbols.append(sym) symbols.append(sym)
return symbols return symbols
@ -153,7 +153,7 @@ def get_base_segment_class(seg_type, platform):
def get_extension_dir(config_path): def get_extension_dir(config_path):
if not options.is_defined("extensions"): if not options.get("extensions"):
return None return None
return os.path.join(Path(config_path).parent, options.get("extensions")) return os.path.join(Path(config_path).parent, options.get("extensions"))
@ -287,8 +287,7 @@ def main(config_path, out_dir, target_path, modes, verbose, ignore_cache=False):
Path(out_dir).mkdir(parents=True, exist_ok=True) Path(out_dir).mkdir(parents=True, exist_ok=True)
symbol_addrs_path = get_symbol_addrs_path(out_dir) symbol_addrs_path = get_symbol_addrs_path(out_dir)
undefined_syms_path = get_undefined_syms_path(out_dir) all_symbols = gather_symbols(symbol_addrs_path)
all_symbols = gather_symbols(symbol_addrs_path, undefined_syms_path)
symbol_ranges = [s for s in all_symbols if s.size > 4] symbol_ranges = [s for s in all_symbols if s.size > 4]
platform = get_platform() platform = get_platform()
@ -311,7 +310,7 @@ def main(config_path, out_dir, target_path, modes, verbose, ignore_cache=False):
all_segments = initialize_segments(config_path, config["segments"]) all_segments = initialize_segments(config_path, config["segments"])
for segment in all_segments: for segment in all_segments:
if platform == "n64" and type(segment) == N64SegCode: # remove special-case sometime if platform == "n64" and type(segment) == N64SegCode: # TODO remove special-case sometime
segment_symbols, other_symbols = get_segment_symbols(segment, all_symbols, all_segments) segment_symbols, other_symbols = get_segment_symbols(segment, all_symbols, all_segments)
segment.seg_symbols = segment_symbols segment.seg_symbols = segment_symbols
segment.ext_symbols = other_symbols segment.ext_symbols = other_symbols

View File

@ -1,5 +1,17 @@
from itertools import zip_longest from itertools import zip_longest
from math import ceil
def iter_in_groups(iterable, n, fillvalue=None): def iter_in_groups(iterable, n, fillvalue=None):
args = [iter(iterable)] * n args = [iter(iterable)] * n
return zip_longest(*args, fillvalue=fillvalue) return zip_longest(*args, fillvalue=fillvalue)
def iter_image_indexes(width, height, bytes_per_x=1, bytes_per_y=1, flip_h=False, flip_v=False):
w = int(width * bytes_per_x)
h = int(height * bytes_per_y)
xrange = range(w - ceil(bytes_per_x), -1, -ceil(bytes_per_x)) if flip_h else range(0, w, ceil(bytes_per_x))
yrange = range(h - ceil(bytes_per_y), -1, -ceil(bytes_per_y)) if flip_v else range(0, h, ceil(bytes_per_y))
for y in yrange:
for x in xrange:
yield x, y, (y * w) + x

View File

@ -3,7 +3,6 @@ opts = {}
def initialize(config): def initialize(config):
global opts global opts
opts = config.get("options") opts = config.get("options")
dog = 5
def set(opt, val): def set(opt, val):
opts[opt] = val opts[opt] = val
@ -11,8 +10,5 @@ def set(opt, val):
def get(opt, default=None): def get(opt, default=None):
return opts.get(opt, default) return opts.get(opt, default)
def is_defined(opt):
return opt in opts
def mode_active(mode): def mode_active(mode):
return mode in opts["modes"] or "all" in opts["modes"] return mode in opts["modes"] or "all" in opts["modes"]

View File

@ -48,3 +48,4 @@ class Symbol:
self.given_name = given_name self.given_name = given_name
self.access_mnemonic = None self.access_mnemonic = None
self.disasm_str = None self.disasm_str = None
self.dead = False

View File

@ -18,6 +18,7 @@ ignores_path = os.path.join(root_dir, "tools", "ignored_funcs.txt")
map_symbols = {} map_symbols = {}
symbol_addrs = [] symbol_addrs = []
dead_symbols = []
elf_symbols = [] elf_symbols = []
ignores = set() ignores = set()
@ -79,7 +80,8 @@ def read_symbol_addrs():
main, ext = line.rstrip().split(";") main, ext = line.rstrip().split(";")
opt = ext.split("//")[-1].strip().split(" ") opt = ext.split("//")[-1].strip().split(" ")
type = None dead = False
type = ""
rom = -1 rom = -1
args = [] args = []
@ -92,10 +94,15 @@ def read_symbol_addrs():
elif "rom:" in thing: elif "rom:" in thing:
rom = int(thing.split(":")[1], 16) rom = int(thing.split(":")[1], 16)
opt.remove(thing) opt.remove(thing)
elif "dead:" in thing:
dead = True
name, addr = main.split(" = ") name, addr = main.split(" = ")
symbol_addrs.append([name, int(addr, 0), type, rom, opt]) if not dead:
symbol_addrs.append([name, int(addr, 0), type, rom, opt])
else:
dead_symbols.append([name, int(addr, 0), type, rom, opt])
def read_elf(): def read_elf():
try: try:
@ -178,7 +185,17 @@ def write_new_symbol_addrs():
with open(symbol_addrs_path, "w", newline="\n") as f: with open(symbol_addrs_path, "w", newline="\n") as f:
for symbol in sorted(symbol_addrs, key=lambda x: (x[3] == -1, x[3], x[1], x[0])): for symbol in sorted(symbol_addrs, key=lambda x: (x[3] == -1, x[3], x[1], x[0])):
line = f"{symbol[0]} = 0x{symbol[1]:X}; //" line = f"{symbol[0]} = 0x{symbol[1]:X}; //"
if symbol[2]: if symbol[2] and len(symbol[2]) > 0:
line += f" type:{symbol[2]}"
if symbol[3] >= 0:
line += f" rom:0x{symbol[3]:X}"
if len(symbol[4]) > 0:
for thing in symbol[4]:
line += f" {thing}"
f.write(line + "\n")
for symbol in sorted(dead_symbols, key=lambda x: (x[3] == -1, x[3], x[1], x[0])):
line = f"{symbol[0]} = 0x{symbol[1]:X}; //"
if symbol[2] and len(symbol[2]) > 0:
line += f" type:{symbol[2]}" line += f" type:{symbol[2]}"
if symbol[3] >= 0: if symbol[3] >= 0:
line += f" rom:0x{symbol[3]:X}" line += f" rom:0x{symbol[3]:X}"

View File

@ -2,7 +2,7 @@
.section .data .section .data
glabel D_8024EF60 glabel gPauseMenuIconScripts
.word D_80241ECC, 0x802427D4, nok_02_UnkMovePartner, 0x80241E00, D_801091E4, D_80108BBC, 0x80108D04, 0x80108D40 .word D_80241ECC, 0x802427D4, nok_02_UnkMovePartner, 0x80241E00, D_801091E4, D_80108BBC, 0x80108D04, 0x80108D40
glabel D_8024EF80 glabel D_8024EF80

View File

@ -0,0 +1,138 @@
.include "macro.inc"
.section .data
glabel D_80077980
.word 0x8038F800, 0x803B5000, D_803DA800
glabel D_8007798C
.word 0x00163400, 0x0016C8E0, pause_set_cursor_opacity, pause_set_cursor_opacity, 0x80249B80, 0x80249B80, D_8024C080, D_8024C080, 0x8024C120
glabel D_800779B0
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800779C0
.short 0x0000, 0x0000
glabel D_800779C4
.word 0x00000000
glabel D_800779C8
.byte 0x00, 0x00
glabel D_800779CA
.byte 0x00
glabel D_800779CB
.byte 0x45
glabel D_800779CC
.word 0x52524F52
glabel D_800779D0
.word 0xF7F7F700
glabel D_800779D4
.word 0x00000000
glabel D_800779D8
.word 0x00000000, 0x00000000, 0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000, 0x00000000, 0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000, 0x00000000, 0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000
glabel D_80077A24
.word 0x01010101
glabel D_80077A28
.byte 0x00, 0x00, 0x00
glabel D_80077A2B
.byte 0x00
glabel D_80077A2C
.word 0x00000000
glabel D_80077A30
.word 0x00000000
glabel D_80077A34
.word 0x00000000, 0xFFFFFF00, 0xFFFFFF00
glabel D_80077A40
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_80077A50
.word 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00504340, 0xFCFFFFFF, 0xFFFCF279, 0xE3001201, 0x00000000, 0xD7000002, 0xFFFFFFFF, 0xE3000C00, 0x00000000, 0xE3001801, 0x000000C0, 0xE3001A01, 0x00000030, 0xE3000F00, 0x00000000, 0xE3001001, 0x00000000, 0xE3000D01, 0x00000000, 0xE3001402, 0x00000C00, 0xE3001700, 0x00000000, 0xE2001E01, 0x00000000, 0x00000000, 0x00000000, 0xED000000, 0x005003C0, 0xDF000000, 0x00000000
glabel D_80077AE0
.word 0x00000002, 0x00019D00, 0x80098454, 0x00020000, 0x00000000, 0x00000000, 0x00000005, 0x00049D00, 0x8009844C, 0x00000002, 0x00029D00, 0x80098444, 0x00000002, 0x0004B300, 0x8009843C, 0x00000004, 0x00079D00, 0x80098434, 0x00020001, 0x00000000, 0x00000000, 0x00000006, 0x00039D00, 0x8009842C, 0x00000002, 0x00021B00, 0x80098424, 0x00020002, 0x00000000, 0x00000000, 0x00000003, 0x00039D00, 0x8009841C, 0x00000004, 0x00019D00, 0x80098414, 0x00020003, 0x00000000, 0x00000000, 0x00010008, 0x000B2600, 0x8009840C, 0x00000002, 0x0009E800, 0x80098404, 0x00020004, 0x00000000, 0x00000000, 0x00000003, 0x00019D00, 0x80098454, 0x00010003, 0x00009D00, 0x800983FC, 0x00030000, 0x00000000, 0x800983F8, 0x00000000, 0x00000000, 0x00000000, 0x50726720, 0x5665722E, 0x30302F31, 0x322F3035, 0x2031363A, 0x35340000, 0x00000000, 0x00000000
glabel D_80077BF0
.byte 0x01, 0x02, 0x00, 0x34, 0x01, 0x04, 0x00, 0x36, 0x00, 0x36, 0x01, 0x02, 0x00, 0x1C, 0x01, 0x02, 0x00, 0x06, 0x01, 0x02, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x2C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00
glabel D_80077C10
.word 0x00000000
glabel D_80077C14
.word 0x00040000
glabel D_80077C18
.word 0x00000000
glabel D_80077C1C
.short 0x0004
glabel D_80077C1E
.short 0x0005
glabel D_80077C20
.word 0x00000000
glabel D_80077C24
.word 0x00000000
glabel D_80077C28
.short 0x0004, 0x0000
glabel D_80077C2C
.word 0x00000000
glabel D_80077C30
.word 0x00040000
glabel D_80077C34
.word 0x00000000
glabel D_80077C38
.short 0x0004
glabel D_80077C3A
.short 0x0004, 0x0000, 0x0000
glabel D_80077C40
.word 0x00000000
glabel D_80077C44
.word 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000001, FadeBackgroundToBlack, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, CreateNpc, 0xFFFFFFF6, 0x00BB0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFF6, 0x00000100, 0x00000001, 0x00000043, 0x00000003, SetNpcYaw, 0xFFFFFFF6, 0x00000000, 0x00000043, 0x00000001, GetCamLookAtObjVector, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFF6, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000056, 0x00000000, 0x00000043, 0x00000001, MerleeUpdateFX, 0x00000057, 0x00000000, 0x00000043, 0x00000001, FadeInMerlee, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFF6, 0x00BB0000, 0x00000043, 0x00000001, MerleeStopFX, 0x00000043, 0x00000001, UnfadeBackgroundFromBlack, 0x00000008, 0x00000001, 0x00000014, 0x00000056, 0x00000000, 0x00000043, 0x00000001, FadeOutMerlee, 0x00000043, 0x00000002, DeleteNpc, 0xFFFFFFF6, 0x00000057, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x00002075, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlayMerleeGatherFX, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlayMerleeOrbFX, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000001, ShowMerleeCoinMessage, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000001, HasMerleeCasts, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000001, ShowMerleeRanOutMessage, 0x00000008, 0x00000001, 0x0000000F, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel SCRIPT_NpcDefeat
.word 0x00000043, 0x00000002, GetBattleOutcome, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, OnDefeatEnemy, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel D_80077E9C
.word 0x00000043, 0x00000001, OnFleeBattleDrops, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel D_80077EB8
.word 0x800A008A, 0x0032FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00005FFF, 0x7FFF0000, 0x00013FFF, 0x5FFF0000, 0x00021FFF, 0x3FFF0000, 0x00030000, 0x1FFF0000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel EnemyNpcHit
.word 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000001, 0x0000001D, 0x00000001, 0x00000002, 0x0000001D, 0x00000001, 0x00000004, 0x0000001D, 0x00000001, 0x00000006, 0x00000043, 0x00000003, GetSelfAnimationFromTable, 0x00000007, 0xFE363C80, 0x00000046, 0x00000001, 0x800936DC, 0x00000016, 0x00000001, 0x00000003, 0x00000056, 0x00000000, 0x00000043, 0x00000002, func_800458CC, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000028, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0xFE363C8A, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000013, 0x00000000, 0x00000057, 0x00000000, 0x00000020, 0x00000000, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel EnemyNpcDefeat
.word 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, GetBattleOutcome, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, DoNpcDefeat, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000002, func_80045900, 0x00000000, 0x00000016, 0x00000001, 0x00000003, 0x00000043, 0x00000004, SetEnemyFlagBits, 0xFFFFFFFF, 0x00000010, 0x00000001, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_80078160
.short 0x001C, 0x0028
glabel D_80078164
.short 0x0000, 0xFFFE
glabel D_80078168
.word 0x001D0074, 0x001D0075

View File

@ -126,7 +126,7 @@ glabel D_8008EEF0
.word 0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008, 0x00000005, 0x00000000, 0x00000000 .word 0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008, 0x00000005, 0x00000000, 0x00000000
glabel D_8008EF20 glabel D_8008EF20
.word 0x800989A0, 0x00000000, 0x00000000, 0x00000000, 0x001D0007, 0x00000002, 0x00280000, 0x00280001, 0x001D0008, 0x00000003, 0x0028000D, 0x0028000E, 0x001D0009, 0x00000004, 0x0028001A, 0x0028001B, 0x001D000A, 0x00000005, 0x00280027, 0x00280028, 0x001D000B, 0x00000001, 0x00000000, 0x00000000, 0x001D000C, 0x00000007, 0x00280041, 0x00280042, 0x001D000D, 0x00000008, 0x0028004E, 0x0028004F, 0x001D000E, 0x00000009, 0x0028005B, 0x0028005C, 0x001D000F, 0x00000006, 0x00280034, 0x00280035, 0x001D0010, 0x00000001, 0x00000000, 0x00000000, 0x001D0011, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80107CA8, D_80107CD0, D_80107CF8, D_80107D20, D_80107D48, D_80107D70, D_80107D98, D_80107DC0, D_80107DE8, D_80107E10, D_80107E38, D_80107E60, D_80107E88, D_80107EB0, D_80107ED8, D_80107F00, D_80107F28, D_80107F50, 0x80107F78, 0x80107FA0, D_80107FC8, D_80107FF0, 0x80108018, 0x80108040, 0x80108018, 0x80108040 .word D_800989A0, 0x00000000, 0x00000000, 0x00000000, 0x001D0007, 0x00000002, 0x00280000, 0x00280001, 0x001D0008, 0x00000003, 0x0028000D, 0x0028000E, 0x001D0009, 0x00000004, 0x0028001A, 0x0028001B, 0x001D000A, 0x00000005, 0x00280027, 0x00280028, 0x001D000B, 0x00000001, 0x00000000, 0x00000000, 0x001D000C, 0x00000007, 0x00280041, 0x00280042, 0x001D000D, 0x00000008, 0x0028004E, 0x0028004F, 0x001D000E, 0x00000009, 0x0028005B, 0x0028005C, 0x001D000F, 0x00000006, 0x00280034, 0x00280035, 0x001D0010, 0x00000001, 0x00000000, 0x00000000, 0x001D0011, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, D_80107CA8, D_80107CD0, D_80107CF8, D_80107D20, D_80107D48, D_80107D70, D_80107D98, D_80107DC0, D_80107DE8, D_80107E10, D_80107E38, D_80107E60, D_80107E88, D_80107EB0, D_80107ED8, D_80107F00, D_80107F28, D_80107F50, 0x80107F78, 0x80107FA0, D_80107FC8, D_80107FF0, 0x80108018, 0x80108040, 0x80108018, 0x80108040
glabel D_8008F060 glabel D_8008F060
.word 0x00000000 .word 0x00000000
@ -187,12 +187,3 @@ glabel D_8008FC44
glabel D_8008FEE0 glabel D_8008FEE0
.word 0x802EBFF0, 0x802EC010, 0x802EC030, 0x802EC050, 0x802EC070, 0x802EC090, 0x802EC0B0, 0x802EC0D0, 0x802EC0F0, 0x802EC110, 0x802EC130, 0x802EC150, 0x802EC170, 0x802EC190, 0x802EC1B0, 0x802EC1D0, 0x802EC1F0, 0x802EC210, 0x802EC230, 0x802EC250, 0x802EC270, 0x802EC290, 0x802EC2B0, 0x802EC2D0, 0x802EC2F0, 0x802EC310, 0x802EC330, 0x802EC350, 0x802EC370, 0x802EC390, 0x802EC3B0, 0x802EC3D0 .word 0x802EBFF0, 0x802EC010, 0x802EC030, 0x802EC050, 0x802EC070, 0x802EC090, 0x802EC0B0, 0x802EC0D0, 0x802EC0F0, 0x802EC110, 0x802EC130, 0x802EC150, 0x802EC170, 0x802EC190, 0x802EC1B0, 0x802EC1D0, 0x802EC1F0, 0x802EC210, 0x802EC230, 0x802EC250, 0x802EC270, 0x802EC290, 0x802EC2B0, 0x802EC2D0, 0x802EC2F0, 0x802EC310, 0x802EC330, 0x802EC350, 0x802EC370, 0x802EC390, 0x802EC3B0, 0x802EC3D0
glabel D_8008FF60
.word 0x00000000, 0x00000001, 0x00000002, 0x00000003
glabel D_8008FF70
.word 0x00040006, 0x00050004, 0x00070006, 0x00000003, 0x00040003, 0x00070004, 0x00030002, 0x00070002, 0x00060007, 0x00020001, 0x00060001, 0x00050006, 0x00010000, 0x00050000, 0x00040005, 0x00000001, 0x00020000, 0x00020003
glabel D_8008FFB8
.word 0x00000000, 0x3F800000, 0x00000000, 0x00000000, 0x3F800000, 0x00000000, 0x3F800000, 0x00000000, 0x00000000, 0x3F800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xBF800000, 0x00000000, 0x00000000, 0xBF800000, 0xBF800000, 0x00000000, 0x00000000, 0xBF800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3F800000, 0x00000000, 0x00000000, 0x3F800000, 0x00000000, 0xBF800000, 0x00000000, 0x00000000, 0xBF800000, 0x00000000, 0x00000000, 0x00000000

View File

@ -45,154 +45,13 @@ glabel D_80077400
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 .word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel gCurrentCameraID glabel gCurrentCameraID
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000E4, 0x000000E1, 0x000000EB, 0x000000EF, 0x000000F6, 0x0000010A, 0x0000010C, 0x00000121, 0x00000122, 0x00000123, 0x00000118, 0x0000010E, 0x00000131, 0x0000012E, 0x0000012F, 0x000000E0, 0x000000EE, 0x000000F0, 0x00000109, 0x0000010B, 0x00000107, 0x000000E8, 0x00000117, 0x00000108, 0x00000124, 0x00000125, 0x00000126, 0x0000010F, 0x0000012B, 0x0000012C, 0x000000E9, 0x00000106, 0x00000143, 0x000000ED, 0x00000129, 0x0000012A, 0x000000E7, 0x000000F8, 0x000000FF, 0x00000140, 0x00000105, 0x00000110, 0x00000119, 0x000000E3, 0x00000116, 0x00000113, 0x000000F4, 0x000000E2, 0x000000F5, 0x00000115, 0x00000101, 0x00000102, 0x0000012D, 0x00000111, 0x0000010D, 0x00000112, 0x000000F9, 0x00000130, 0x000000FB, 0x000000FA, 0x000000EC, 0x000000E5, 0x00000150, 0x000000F2, 0x00000100, 0x000000F1, 0x00000114, 0x000000F7, 0x000000F3, 0x00000145, 0x00000146, 0x00000147, 0x00000148, 0x00000149, 0x00000104, 0x000000FC, 0x00000103, 0x0000011A, 0x0000011B, 0x000000FD, 0x00000144, 0x0000011E, 0x000000FE, 0x0000011F, 0x0000011D, 0x0000011C, 0x000000E6, 0x00000120, 0x00000080, 0x00000081, 0x00000082, 0x00000084, 0x00000083, 0x00000086, 0x00000085, 0x00000088, 0x0000008B, 0x0000008A, 0x0000008C, 0x0000008E, 0x00000095, 0x0000008D, 0x00000089, 0x0000009B, 0x0000009E, 0x0000009F, 0x000000A0, 0x000000A1, 0x0000009D, 0x0000009C, 0x000000A4, 0x000000A3, 0x000000A2, 0x00000093, 0x00000094, 0x000000A5, 0x000000A6, 0x000000A7, 0x000000A8, 0x000000A9, 0x000000AA, 0x000000AB, 0x000000AC, 0x000000AD, 0x000000AE, 0x000000AF, 0x0000008F, 0x00000090, 0x00000091, 0x00000092, 0x0000009A, 0x00000098, 0x00000096, 0x00000097, 0x00000087, 0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x000000B4, 0x000000B5, 0x000000B6, 0x000000B9, 0x000000B8, 0x000000B7, 0x000000BA, 0x000000BD, 0x000000BB, 0x000000BE, 0x000000BF, 0x000000BC, 0x000000C0, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x000000C7, 0x000000C8, 0x000000C9, 0x000000CA, 0x000000CB, 0x000000CC, 0x000000CD, 0x000000CE, 0x000000CF, 0x000000D0, 0x000000D1, 0x000000D2, 0x000000D3, 0x000000D4, 0x000000D5, 0x000000D6, 0x000000D7, 0x000000D8, 0x000000D9, 0x000000DA, 0x00000000, begin_state_init, step_init_state, 0x00000000, state_drawUI_startup, 0x00000000, begin_state_logos, step_logos, 0x00000000, func_80034388, 0x00000000, begin_state_title_screen, step_title_screen, 0x00000000, func_800375A4, 0x00000000, func_80035E00, func_80035EEC, 0x00000000, func_800360FC, 0x00000000, func_80036130, func_8003617C, 0x00000000, func_800363FC, 0x00000000, func_80036430, func_8003646C, 0x00000000, func_80036640, 0x00000000, func_80035E24, func_80035EEC, 0x00000000, func_800360FC, 0x00000000, begin_state_world, step_world, 0x00000000, func_80035DA0, 0x00000000, begin_state_battle, step_battle, 0x00000000, func_80033B54, 0x00000000, func_80033B88, func_80033BC0, 0x00000000, func_80033E64, 0x00000000, begin_state_pause_menu, step_pause_menu, 0x00000000, func_80034BF4, 0x00000000, func_80034BFC, func_80034C3C, 0x00000000, func_80034FF0, 0x00000000, state_init_language_select, state_step_language_select, 0x00000000, state_drawUI_language_select, 0x00000000, func_800355D4, func_80035704, 0x00000000, func_80035D18, 0x00000000, state_init_file_select, func_800354EC, 0x00000000, state_drawUI_file_select, 0x00000000, func_80035660, func_80035B40, 0x00000000, func_80035D20, 0x00000000, begin_state_intro, step_intro, 0x00000000, func_80036DE0, 0x00000000, init_demo_data, next_demo_scene, 0x00000000, func_8003845C .word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000E4, 0x000000E1, 0x000000EB, 0x000000EF, 0x000000F6, 0x0000010A, 0x0000010C, 0x00000121, 0x00000122, 0x00000123, 0x00000118, 0x0000010E, 0x00000131, 0x0000012E, 0x0000012F, 0x000000E0, 0x000000EE, 0x000000F0, 0x00000109, 0x0000010B, 0x00000107, 0x000000E8, 0x00000117, 0x00000108, 0x00000124, 0x00000125, 0x00000126, 0x0000010F, 0x0000012B, 0x0000012C, 0x000000E9, 0x00000106, 0x00000143, 0x000000ED, 0x00000129, 0x0000012A, 0x000000E7, 0x000000F8, 0x000000FF, 0x00000140, 0x00000105, 0x00000110, 0x00000119, 0x000000E3, 0x00000116, 0x00000113, 0x000000F4, 0x000000E2, 0x000000F5, 0x00000115, 0x00000101, 0x00000102, 0x0000012D, 0x00000111, 0x0000010D, 0x00000112, 0x000000F9, 0x00000130, 0x000000FB, 0x000000FA, 0x000000EC, 0x000000E5, 0x00000150, 0x000000F2, 0x00000100, 0x000000F1, 0x00000114, 0x000000F7, 0x000000F3, 0x00000145, 0x00000146, 0x00000147, 0x00000148, 0x00000149, 0x00000104, 0x000000FC, 0x00000103, 0x0000011A, 0x0000011B, 0x000000FD, 0x00000144, 0x0000011E, 0x000000FE, 0x0000011F, 0x0000011D, 0x0000011C, 0x000000E6, 0x00000120, 0x00000080, 0x00000081, 0x00000082, 0x00000084, 0x00000083, 0x00000086, 0x00000085, 0x00000088, 0x0000008B, 0x0000008A, 0x0000008C, 0x0000008E, 0x00000095, 0x0000008D, 0x00000089, 0x0000009B, 0x0000009E, 0x0000009F, 0x000000A0, 0x000000A1, 0x0000009D, 0x0000009C, 0x000000A4, 0x000000A3, 0x000000A2, 0x00000093, 0x00000094, 0x000000A5, 0x000000A6, 0x000000A7, 0x000000A8, 0x000000A9, 0x000000AA, 0x000000AB, 0x000000AC, 0x000000AD, 0x000000AE, 0x000000AF, 0x0000008F, 0x00000090, 0x00000091, 0x00000092, 0x0000009A, 0x00000098, 0x00000096, 0x00000097, 0x00000087, 0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x000000B4, 0x000000B5, 0x000000B6, 0x000000B9, 0x000000B8, 0x000000B7, 0x000000BA, 0x000000BD, 0x000000BB, 0x000000BE, 0x000000BF, 0x000000BC, 0x000000C0, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x000000C7, 0x000000C8, 0x000000C9, 0x000000CA, 0x000000CB, 0x000000CC, 0x000000CD, 0x000000CE, 0x000000CF, 0x000000D0, 0x000000D1, 0x000000D2, 0x000000D3, 0x000000D4, 0x000000D5, 0x000000D6, 0x000000D7, 0x000000D8, 0x000000D9, 0x000000DA
glabel gameModeBlueprints
.word 0x00000000, begin_state_init, step_init_state, 0x00000000, state_drawUI_startup, 0x00000000, state_init_logos, state_step_logos, 0x00000000, state_drawUI_logos, 0x00000000, begin_state_title_screen, step_title_screen, 0x00000000, func_800375A4, 0x00000000, func_80035E00, func_80035EEC, 0x00000000, func_800360FC, 0x00000000, func_80036130, func_8003617C, 0x00000000, func_800363FC, 0x00000000, func_80036430, func_8003646C, 0x00000000, func_80036640, 0x00000000, func_80035E24, func_80035EEC, 0x00000000, func_800360FC, 0x00000000, begin_state_world, step_world, 0x00000000, func_80035DA0, 0x00000000, begin_state_battle, step_battle, 0x00000000, func_80033B54, 0x00000000, func_80033B88, func_80033BC0, 0x00000000, func_80033E64, 0x00000000, state_init_pause, state_step_pause, 0x00000000, state_drawUI_pause, 0x00000000, state_init_unpause, state_step_unpause, 0x00000000, state_drawUI_unpause, 0x00000000, state_init_language_select, state_step_language_select, 0x00000000, state_drawUI_language_select, 0x00000000, func_800355D4, func_80035704, 0x00000000, func_80035D18, 0x00000000, state_init_file_select, func_800354EC, 0x00000000, state_drawUI_file_select, 0x00000000, func_80035660, func_80035B40, 0x00000000, func_80035D20, 0x00000000, begin_state_intro, step_intro, 0x00000000, func_80036DE0, 0x00000000, init_demo_data, next_demo_scene, 0x00000000, func_8003845C
glabel gameModeMap glabel gameModeMap
.word 0x800776E8, 0x800776FC, 0x80077710, 0x80077724, 0x80077774, 0x80077738, 0x8007774C, 0x80077760, 0x80077788, 0x8007779C, 0x800777B0, 0x800777C4, 0x800777D8, 0x800777EC, 0x80077800, 0x80077814, 0x80077828, 0x8007783C, 0x00000000, 0x00000000 .word gameModeBlueprints, 0x800776FC, 0x80077710, 0x80077724, 0x80077774, 0x80077738, 0x8007774C, 0x80077760, 0x80077788, 0x8007779C, 0x800777B0, 0x800777C4, 0x800777D8, 0x800777EC, 0x80077800, 0x80077814, 0x80077828, 0x8007783C, 0x00000000, 0x00000000
glabel D_800778A0 glabel D_800778A0
.word 0x8038F800, 0x803B5000, D_803DA800, 0x00000000, 0xFFFFFF00, 0xFFFFFF00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xE7000000, 0x00000000, 0xE3000A01, 0x00200000, 0xE3000C00, 0x00000000, 0xE3001001, 0x00000000, 0xFCFFFFFF, 0xFFFCF87C, 0xE200001C, 0x00000000, 0xE3001201, 0x00000000, 0xDF000000, 0x00000000 .word 0x8038F800, 0x803B5000, D_803DA800, 0x00000000, 0xFFFFFF00, 0xFFFFFF00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xE7000000, 0x00000000, 0xE3000A01, 0x00200000, 0xE3000C00, 0x00000000, 0xE3001001, 0x00000000, 0xFCFFFFFF, 0xFFFCF87C, 0xE200001C, 0x00000000, 0xE3001201, 0x00000000, 0xDF000000, 0x00000000
glabel D_80077908
.word 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE3000C00, 0x00000000, 0xE3001001, 0x00000000, 0xFCFFFFFF, 0xFFFCF87C, 0xE200001C, 0x0F0A4000, 0xE3001201, 0x00000000, 0xDF000000, 0x00000000, 0x00000000, 0x00000000
glabel D_80077950
.word 0x8038F800, 0x803B5000, D_803DA800
glabel D_8007795C
.word 0x00135EE0, 0x00163400, pause_set_cursor_opacity, pause_set_cursor_opacity, gPauseMenuIconScripts, gPauseMenuIconScripts, gPauseMenuHeldButtons, gPauseMenuHeldButtons, 0x80278640
glabel D_80077980
.word 0x8038F800, 0x803B5000, D_803DA800
glabel D_8007798C
.word 0x00163400, 0x0016C8E0, pause_set_cursor_opacity, pause_set_cursor_opacity, 0x80249B80, 0x80249B80, D_8024C080, D_8024C080, 0x8024C120
glabel D_800779B0
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800779C0
.short 0x0000, 0x0000
glabel D_800779C4
.word 0x00000000
glabel D_800779C8
.byte 0x00, 0x00
glabel D_800779CA
.byte 0x00
glabel D_800779CB
.byte 0x45
glabel D_800779CC
.word 0x52524F52
glabel D_800779D0
.word 0xF7F7F700
glabel D_800779D4
.word 0x00000000
glabel D_800779D8
.word 0x00000000, 0x00000000, 0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000, 0x00000000, 0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000, 0x00000000, 0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000
glabel D_80077A24
.word 0x01010101
glabel D_80077A28
.byte 0x00, 0x00, 0x00
glabel D_80077A2B
.byte 0x00
glabel D_80077A2C
.word 0x00000000
glabel D_80077A30
.word 0x00000000
glabel D_80077A34
.word 0x00000000, 0xFFFFFF00, 0xFFFFFF00
glabel D_80077A40
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_80077A50
.word 0xE7000000, 0x00000000, 0xE3000A01, 0x00000000, 0xE200001C, 0x00504340, 0xFCFFFFFF, 0xFFFCF279, 0xE3001201, 0x00000000, 0xD7000002, 0xFFFFFFFF, 0xE3000C00, 0x00000000, 0xE3001801, 0x000000C0, 0xE3001A01, 0x00000030, 0xE3000F00, 0x00000000, 0xE3001001, 0x00000000, 0xE3000D01, 0x00000000, 0xE3001402, 0x00000C00, 0xE3001700, 0x00000000, 0xE2001E01, 0x00000000, 0x00000000, 0x00000000, 0xED000000, 0x005003C0, 0xDF000000, 0x00000000
glabel D_80077AE0
.word 0x00000002, 0x00019D00, 0x80098454, 0x00020000, 0x00000000, 0x00000000, 0x00000005, 0x00049D00, 0x8009844C, 0x00000002, 0x00029D00, 0x80098444, 0x00000002, 0x0004B300, 0x8009843C, 0x00000004, 0x00079D00, 0x80098434, 0x00020001, 0x00000000, 0x00000000, 0x00000006, 0x00039D00, 0x8009842C, 0x00000002, 0x00021B00, 0x80098424, 0x00020002, 0x00000000, 0x00000000, 0x00000003, 0x00039D00, 0x8009841C, 0x00000004, 0x00019D00, 0x80098414, 0x00020003, 0x00000000, 0x00000000, 0x00010008, 0x000B2600, 0x8009840C, 0x00000002, 0x0009E800, 0x80098404, 0x00020004, 0x00000000, 0x00000000, 0x00000003, 0x00019D00, 0x80098454, 0x00010003, 0x00009D00, 0x800983FC, 0x00030000, 0x00000000, 0x800983F8, 0x00000000, 0x00000000, 0x00000000, 0x50726720, 0x5665722E, 0x30302F31, 0x322F3035, 0x2031363A, 0x35340000, 0x00000000, 0x00000000
glabel D_80077BF0
.byte 0x01, 0x02, 0x00, 0x34, 0x01, 0x04, 0x00, 0x36, 0x00, 0x36, 0x01, 0x02, 0x00, 0x1C, 0x01, 0x02, 0x00, 0x06, 0x01, 0x02, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x2C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00
glabel D_80077C10
.word 0x00000000
glabel D_80077C14
.word 0x00040000
glabel D_80077C18
.word 0x00000000
glabel D_80077C1C
.short 0x0004
glabel D_80077C1E
.short 0x0005
glabel D_80077C20
.word 0x00000000
glabel D_80077C24
.word 0x00000000
glabel D_80077C28
.short 0x0004, 0x0000
glabel D_80077C2C
.word 0x00000000
glabel D_80077C30
.word 0x00040000
glabel D_80077C34
.word 0x00000000
glabel D_80077C38
.short 0x0004
glabel D_80077C3A
.short 0x0004, 0x0000, 0x0000
glabel D_80077C40
.word 0x00000000
glabel D_80077C44
.word 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000001, FadeBackgroundToBlack, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, CreateNpc, 0xFFFFFFF6, 0x00BB0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFF6, 0x00000100, 0x00000001, 0x00000043, 0x00000003, SetNpcYaw, 0xFFFFFFF6, 0x00000000, 0x00000043, 0x00000001, GetCamLookAtObjVector, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFF6, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000056, 0x00000000, 0x00000043, 0x00000001, MerleeUpdateFX, 0x00000057, 0x00000000, 0x00000043, 0x00000001, FadeInMerlee, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFF6, 0x00BB0000, 0x00000043, 0x00000001, MerleeStopFX, 0x00000043, 0x00000001, UnfadeBackgroundFromBlack, 0x00000008, 0x00000001, 0x00000014, 0x00000056, 0x00000000, 0x00000043, 0x00000001, FadeOutMerlee, 0x00000043, 0x00000002, DeleteNpc, 0xFFFFFFF6, 0x00000057, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x00002075, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlayMerleeGatherFX, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PlayMerleeOrbFX, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000001, ShowMerleeCoinMessage, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000001, HasMerleeCasts, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000001, ShowMerleeRanOutMessage, 0x00000008, 0x00000001, 0x0000000F, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel SCRIPT_NpcDefeat
.word 0x00000043, 0x00000002, GetBattleOutcome, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, OnDefeatEnemy, 0x00000016, 0x00000001, 0x00000001, 0x00000016, 0x00000001, 0x00000002, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel D_80077E9C
.word 0x00000043, 0x00000001, OnFleeBattleDrops, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel D_80077EB8
.word 0x800A008A, 0x0032FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00005FFF, 0x7FFF0000, 0x00013FFF, 0x5FFF0000, 0x00021FFF, 0x3FFF0000, 0x00030000, 0x1FFF0000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel EnemyNpcHit
.word 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000001, 0x0000001D, 0x00000001, 0x00000002, 0x0000001D, 0x00000001, 0x00000004, 0x0000001D, 0x00000001, 0x00000006, 0x00000043, 0x00000003, GetSelfAnimationFromTable, 0x00000007, 0xFE363C80, 0x00000046, 0x00000001, 0x800936DC, 0x00000016, 0x00000001, 0x00000003, 0x00000056, 0x00000000, 0x00000043, 0x00000002, func_800458CC, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000028, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0xFE363C8A, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000013, 0x00000000, 0x00000057, 0x00000000, 0x00000020, 0x00000000, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel EnemyNpcDefeat
.word 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000002, GetBattleOutcome, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, DoNpcDefeat, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000002, func_80045900, 0x00000000, 0x00000016, 0x00000001, 0x00000003, 0x00000043, 0x00000004, SetEnemyFlagBits, 0xFFFFFFFF, 0x00000010, 0x00000001, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000023, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_80078160
.short 0x001C, 0x0028
glabel D_80078164
.short 0x0000, 0xFFFE
glabel D_80078168
.word 0x001D0074, 0x001D0075

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ glabel jtbl_8024EF20_9780E0
glabel D_8024EF58_978118 glabel D_8024EF58_978118
.double 0.1 .double 0.1
glabel gPauseMenuIconScripts glabel D_8024EF60_978120
.double 0.1 .double 0.1
glabel D_8024EF68_978128 glabel D_8024EF68_978128

View File

@ -20,8 +20,8 @@ glabel pause_init
/* 1373DC 8024409C 0000882D */ daddu $s1, $zero, $zero /* 1373DC 8024409C 0000882D */ daddu $s1, $zero, $zero
/* 1373E0 802440A0 3C138024 */ lui $s3, %hi(D_80241ECC) /* 1373E0 802440A0 3C138024 */ lui $s3, %hi(D_80241ECC)
/* 1373E4 802440A4 26731ECC */ addiu $s3, $s3, %lo(D_80241ECC) /* 1373E4 802440A4 26731ECC */ addiu $s3, $s3, %lo(D_80241ECC)
/* 1373E8 802440A8 3C108025 */ lui $s0, %hi(D_8024EF60) /* 1373E8 802440A8 3C108025 */ lui $s0, %hi(gPauseMenuIconScripts)
/* 1373EC 802440AC 2610EF60 */ addiu $s0, $s0, %lo(D_8024EF60) /* 1373EC 802440AC 2610EF60 */ addiu $s0, $s0, %lo(gPauseMenuIconScripts)
/* 1373F0 802440B0 3C128027 */ lui $s2, %hi(gPauseMenuCommonIconIDs) /* 1373F0 802440B0 3C128027 */ lui $s2, %hi(gPauseMenuCommonIconIDs)
/* 1373F4 802440B4 265200E8 */ addiu $s2, $s2, %lo(gPauseMenuCommonIconIDs) /* 1373F4 802440B4 265200E8 */ addiu $s2, $s2, %lo(gPauseMenuCommonIconIDs)
.L802440B8: .L802440B8:

View File

@ -18,11 +18,12 @@ glabel pause_tutorial_input
/* 137614 802442D4 1040004A */ beqz $v0, .L80244400 /* 137614 802442D4 1040004A */ beqz $v0, .L80244400
/* 137618 802442D8 0220202D */ daddu $a0, $s1, $zero /* 137618 802442D8 0220202D */ daddu $a0, $s1, $zero
/* 13761C 802442DC 00031080 */ sll $v0, $v1, 2 /* 13761C 802442DC 00031080 */ sll $v0, $v1, 2
/* 137620 802442E0 3C018027 */ lui $at, %hi(D_8026FF60) /* 137620 802442E0 3C018027 */ lui $at, %hi(jtbl_8026FF60)
/* 137624 802442E4 00220821 */ addu $at, $at, $v0 /* 137624 802442E4 00220821 */ addu $at, $at, $v0
/* 137628 802442E8 8C22FF60 */ lw $v0, %lo(D_8026FF60)($at) /* 137628 802442E8 8C22FF60 */ lw $v0, %lo(jtbl_8026FF60)($at)
/* 13762C 802442EC 00400008 */ jr $v0 /* 13762C 802442EC 00400008 */ jr $v0
/* 137630 802442F0 00000000 */ nop /* 137630 802442F0 00000000 */ nop
glabel L802442F4_137634
/* 137634 802442F4 3C028025 */ lui $v0, %hi(D_8024F018) /* 137634 802442F4 3C028025 */ lui $v0, %hi(D_8024F018)
/* 137638 802442F8 8C42F018 */ lw $v0, %lo(D_8024F018)($v0) /* 137638 802442F8 8C42F018 */ lw $v0, %lo(D_8024F018)($v0)
/* 13763C 802442FC 00021080 */ sll $v0, $v0, 2 /* 13763C 802442FC 00021080 */ sll $v0, $v0, 2
@ -49,6 +50,7 @@ glabel pause_tutorial_input
/* 137688 80244348 AE510000 */ sw $s1, ($s2) /* 137688 80244348 AE510000 */ sw $s1, ($s2)
/* 13768C 8024434C 080910FF */ j .L802443FC /* 13768C 8024434C 080910FF */ j .L802443FC
/* 137690 80244350 0000882D */ daddu $s1, $zero, $zero /* 137690 80244350 0000882D */ daddu $s1, $zero, $zero
glabel L80244354_137694
/* 137694 80244354 0000882D */ daddu $s1, $zero, $zero /* 137694 80244354 0000882D */ daddu $s1, $zero, $zero
/* 137698 80244358 24020002 */ addiu $v0, $zero, 2 /* 137698 80244358 24020002 */ addiu $v0, $zero, 2
/* 13769C 8024435C 3C018027 */ lui $at, %hi(D_802700E0) /* 13769C 8024435C 3C018027 */ lui $at, %hi(D_802700E0)
@ -57,6 +59,7 @@ glabel pause_tutorial_input
/* 1376A8 80244368 AC22F01C */ sw $v0, %lo(D_8024F01C)($at) /* 1376A8 80244368 AC22F01C */ sw $v0, %lo(D_8024F01C)($at)
/* 1376AC 8024436C 08091100 */ j .L80244400 /* 1376AC 8024436C 08091100 */ j .L80244400
/* 1376B0 80244370 0220802D */ daddu $s0, $s1, $zero /* 1376B0 80244370 0220802D */ daddu $s0, $s1, $zero
glabel L80244374_1376B4
/* 1376B4 80244374 3C038027 */ lui $v1, %hi(D_802700E0) /* 1376B4 80244374 3C038027 */ lui $v1, %hi(D_802700E0)
/* 1376B8 80244378 246300E0 */ addiu $v1, $v1, %lo(D_802700E0) /* 1376B8 80244378 246300E0 */ addiu $v1, $v1, %lo(D_802700E0)
/* 1376BC 8024437C 8C620000 */ lw $v0, ($v1) /* 1376BC 8024437C 8C620000 */ lw $v0, ($v1)
@ -68,6 +71,7 @@ glabel pause_tutorial_input
/* 1376D4 80244394 AC22F01C */ sw $v0, %lo(D_8024F01C)($at) /* 1376D4 80244394 AC22F01C */ sw $v0, %lo(D_8024F01C)($at)
/* 1376D8 80244398 080910FF */ j .L802443FC /* 1376D8 80244398 080910FF */ j .L802443FC
/* 1376DC 8024439C 0000882D */ daddu $s1, $zero, $zero /* 1376DC 8024439C 0000882D */ daddu $s1, $zero, $zero
glabel L802443A0_1376E0
/* 1376E0 802443A0 0000882D */ daddu $s1, $zero, $zero /* 1376E0 802443A0 0000882D */ daddu $s1, $zero, $zero
/* 1376E4 802443A4 0220802D */ daddu $s0, $s1, $zero /* 1376E4 802443A4 0220802D */ daddu $s0, $s1, $zero
/* 1376E8 802443A8 24020010 */ addiu $v0, $zero, 0x10 /* 1376E8 802443A8 24020010 */ addiu $v0, $zero, 0x10
@ -82,6 +86,7 @@ glabel pause_tutorial_input
/* 13770C 802443CC 24420001 */ addiu $v0, $v0, 1 /* 13770C 802443CC 24420001 */ addiu $v0, $v0, 1
/* 137710 802443D0 08091100 */ j .L80244400 /* 137710 802443D0 08091100 */ j .L80244400
/* 137714 802443D4 AC820000 */ sw $v0, ($a0) /* 137714 802443D4 AC820000 */ sw $v0, ($a0)
glabel L802443D8_137718
/* 137718 802443D8 3C038027 */ lui $v1, %hi(D_802700E0) /* 137718 802443D8 3C038027 */ lui $v1, %hi(D_802700E0)
/* 13771C 802443DC 246300E0 */ addiu $v1, $v1, %lo(D_802700E0) /* 13771C 802443DC 246300E0 */ addiu $v1, $v1, %lo(D_802700E0)
/* 137720 802443E0 8C620000 */ lw $v0, ($v1) /* 137720 802443E0 8C620000 */ lw $v0, ($v1)

View File

@ -79,8 +79,8 @@ glabel pause_map_draw_contents
/* 140F7C 8024DC3C 24630008 */ addiu $v1, $v1, 8 /* 140F7C 8024DC3C 24630008 */ addiu $v1, $v1, 8
/* 140F80 8024DC40 AE230000 */ sw $v1, ($s1) /* 140F80 8024DC40 AE230000 */ sw $v1, ($s1)
/* 140F84 8024DC44 AD020000 */ sw $v0, ($t0) /* 140F84 8024DC44 AD020000 */ sw $v0, ($t0)
/* 140F88 8024DC48 3C028025 */ lui $v0, %hi(D_802510B0_8EB1B0) /* 140F88 8024DC48 3C028025 */ lui $v0, %hi(D_802510B0)
/* 140F8C 8024DC4C 244210B0 */ addiu $v0, $v0, %lo(D_802510B0_8EB1B0) /* 140F8C 8024DC4C 244210B0 */ addiu $v0, $v0, %lo(D_802510B0)
/* 140F90 8024DC50 AD020004 */ sw $v0, 4($t0) /* 140F90 8024DC50 AD020004 */ sw $v0, 4($t0)
/* 140F94 8024DC54 24620008 */ addiu $v0, $v1, 8 /* 140F94 8024DC54 24620008 */ addiu $v0, $v1, 8
/* 140F98 8024DC58 AE220000 */ sw $v0, ($s1) /* 140F98 8024DC58 AE220000 */ sw $v0, ($s1)

View File

@ -1,48 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80050770
/* 2BB70 80050770 44852000 */ mtc1 $a1, $f4
/* 2BB74 80050774 3C014000 */ lui $at, 0x4000
/* 2BB78 80050778 44810800 */ mtc1 $at, $f1
/* 2BB7C 8005077C 44800000 */ mtc1 $zero, $f0
/* 2BB80 80050780 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 2BB84 80050784 AFB00010 */ sw $s0, 0x10($sp)
/* 2BB88 80050788 0080802D */ daddu $s0, $a0, $zero
/* 2BB8C 8005078C 460020A1 */ cvt.d.s $f2, $f4
/* 2BB90 80050790 4622003C */ c.lt.d $f0, $f2
/* 2BB94 80050794 00000000 */ nop
/* 2BB98 80050798 45000005 */ bc1f .L800507B0
/* 2BB9C 8005079C AFBF0014 */ sw $ra, 0x14($sp)
/* 2BBA0 800507A0 3C014000 */ lui $at, 0x4000
/* 2BBA4 800507A4 44812000 */ mtc1 $at, $f4
/* 2BBA8 800507A8 080141F6 */ j .L800507D8
/* 2BBAC 800507AC 00000000 */ nop
.L800507B0:
/* 2BBB0 800507B0 3C013FD0 */ lui $at, 0x3fd0
/* 2BBB4 800507B4 44810800 */ mtc1 $at, $f1
/* 2BBB8 800507B8 44800000 */ mtc1 $zero, $f0
/* 2BBBC 800507BC 00000000 */ nop
/* 2BBC0 800507C0 4620103C */ c.lt.d $f2, $f0
/* 2BBC4 800507C4 00000000 */ nop
/* 2BBC8 800507C8 45000003 */ bc1f .L800507D8
/* 2BBCC 800507CC 00000000 */ nop
/* 2BBD0 800507D0 3C013E80 */ lui $at, 0x3e80
/* 2BBD4 800507D4 44812000 */ mtc1 $at, $f4
.L800507D8:
/* 2BBD8 800507D8 96050208 */ lhu $a1, 0x208($s0)
/* 2BBDC 800507DC 0200202D */ daddu $a0, $s0, $zero
/* 2BBE0 800507E0 0C013F02 */ jal snd_bpm_to_tempo
/* 2BBE4 800507E4 E60400D0 */ swc1 $f4, 0xd0($s0)
/* 2BBE8 800507E8 00021880 */ sll $v1, $v0, 2
/* 2BBEC 800507EC 00621821 */ addu $v1, $v1, $v0
/* 2BBF0 800507F0 00031840 */ sll $v1, $v1, 1
/* 2BBF4 800507F4 AE0200B0 */ sw $v0, 0xb0($s0)
/* 2BBF8 800507F8 AE030008 */ sw $v1, 8($s0)
/* 2BBFC 800507FC AE0000BC */ sw $zero, 0xbc($s0)
/* 2BC00 80050800 AE0000B8 */ sw $zero, 0xb8($s0)
/* 2BC04 80050804 AE0000B4 */ sw $zero, 0xb4($s0)
/* 2BC08 80050808 8FBF0014 */ lw $ra, 0x14($sp)
/* 2BC0C 8005080C 8FB00010 */ lw $s0, 0x10($sp)
/* 2BC10 80050810 03E00008 */ jr $ra
/* 2BC14 80050814 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,15 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80050818
/* 2BC18 80050818 28A204B1 */ slti $v0, $a1, 0x4b1
/* 2BC1C 8005081C 14400003 */ bnez $v0, .L8005082C
/* 2BC20 80050820 28A2F6A0 */ slti $v0, $a1, -0x960
/* 2BC24 80050824 0801420D */ j .L80050834
/* 2BC28 80050828 240504B0 */ addiu $a1, $zero, 0x4b0
.L8005082C:
/* 2BC2C 8005082C 54400001 */ bnel $v0, $zero, .L80050834
/* 2BC30 80050830 2405F6A0 */ addiu $a1, $zero, -0x960
.L80050834:
/* 2BC34 80050834 03E00008 */ jr $ra
/* 2BC38 80050838 A485020E */ sh $a1, 0x20e($a0)

View File

@ -1,21 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_BGMCmd_E8_TrackOverridePatch
/* 2B26C 8004FE6C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 2B270 8004FE70 0080102D */ daddu $v0, $a0, $zero
/* 2B274 8004FE74 AFB00010 */ sw $s0, 0x10($sp)
/* 2B278 8004FE78 00A0802D */ daddu $s0, $a1, $zero
/* 2B27C 8004FE7C AFBF0014 */ sw $ra, 0x14($sp)
/* 2B280 8004FE80 904300D5 */ lbu $v1, 0xd5($v0)
/* 2B284 8004FE84 26070010 */ addiu $a3, $s0, 0x10
/* 2B288 8004FE88 A6030044 */ sh $v1, 0x44($s0)
/* 2B28C 8004FE8C 8C440000 */ lw $a0, ($v0)
/* 2B290 8004FE90 904500D4 */ lbu $a1, 0xd4($v0)
/* 2B294 8004FE94 0C014EFA */ jal func_80053BE8
/* 2B298 8004FE98 3066FFFF */ andi $a2, $v1, 0xffff
/* 2B29C 8004FE9C AE02000C */ sw $v0, 0xc($s0)
/* 2B2A0 8004FEA0 8FBF0014 */ lw $ra, 0x14($sp)
/* 2B2A4 8004FEA4 8FB00010 */ lw $s0, 0x10($sp)
/* 2B2A8 8004FEA8 03E00008 */ jr $ra
/* 2B2AC 8004FEAC 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,36 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_BGMCmd_F6_TrackVolumeFade
/* 2B2D0 8004FED0 908200D6 */ lbu $v0, 0xd6($a0)
/* 2B2D4 8004FED4 948600D4 */ lhu $a2, 0xd4($a0)
/* 2B2D8 8004FED8 3044007F */ andi $a0, $v0, 0x7f
/* 2B2DC 8004FEDC 54800001 */ bnel $a0, $zero, .L8004FEE4
/* 2B2E0 8004FEE0 00042600 */ sll $a0, $a0, 0x18
.L8004FEE4:
/* 2B2E4 8004FEE4 8CA20018 */ lw $v0, 0x18($a1)
/* 2B2E8 8004FEE8 10820012 */ beq $a0, $v0, .L8004FF34
/* 2B2EC 8004FEEC 00000000 */ nop
/* 2B2F0 8004FEF0 58C00002 */ blezl $a2, .L8004FEFC
/* 2B2F4 8004FEF4 24060001 */ addiu $a2, $zero, 1
/* 2B2F8 8004FEF8 8CA20018 */ lw $v0, 0x18($a1)
.L8004FEFC:
/* 2B2FC 8004FEFC 00821023 */ subu $v0, $a0, $v0
/* 2B300 8004FF00 14C00002 */ bnez $a2, .L8004FF0C
/* 2B304 8004FF04 0046001A */ div $zero, $v0, $a2
/* 2B308 8004FF08 0007000D */ break 7
.L8004FF0C:
/* 2B30C 8004FF0C 2401FFFF */ addiu $at, $zero, -1
/* 2B310 8004FF10 14C10004 */ bne $a2, $at, .L8004FF24
/* 2B314 8004FF14 3C018000 */ lui $at, 0x8000
/* 2B318 8004FF18 14410002 */ bne $v0, $at, .L8004FF24
/* 2B31C 8004FF1C 00000000 */ nop
/* 2B320 8004FF20 0006000D */ break 6
.L8004FF24:
/* 2B324 8004FF24 00001012 */ mflo $v0
/* 2B328 8004FF28 ACA60024 */ sw $a2, 0x24($a1)
/* 2B32C 8004FF2C ACA40020 */ sw $a0, 0x20($a1)
/* 2B330 8004FF30 ACA2001C */ sw $v0, 0x1c($a1)
.L8004FF34:
/* 2B334 8004FF34 03E00008 */ jr $ra
/* 2B338 8004FF38 00000000 */ nop

View File

@ -1,7 +1,7 @@
.set noat # allow manual use of $at .set noat # allow manual use of $at
.set noreorder # don't insert nops after branches .set noreorder # don't insert nops after branches
glabel al_LoadPER glabel snd_load_PER
/* 2F8F8 800544F8 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 2F8F8 800544F8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 2F8FC 800544FC AFB20028 */ sw $s2, 0x28($sp) /* 2F8FC 800544FC AFB20028 */ sw $s2, 0x28($sp)
/* 2F900 80054500 0080902D */ daddu $s2, $a0, $zero /* 2F900 80054500 0080902D */ daddu $s2, $a0, $zero

View File

@ -1,42 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_load_BK_headers
/* 303C0 80054FC0 27BDFE98 */ addiu $sp, $sp, -0x168
/* 303C4 80054FC4 0080102D */ daddu $v0, $a0, $zero
/* 303C8 80054FC8 27A50018 */ addiu $a1, $sp, 0x18
/* 303CC 80054FCC AFB1015C */ sw $s1, 0x15c($sp)
/* 303D0 80054FD0 0000882D */ daddu $s1, $zero, $zero
/* 303D4 80054FD4 AFB20160 */ sw $s2, 0x160($sp)
/* 303D8 80054FD8 3412FFFF */ ori $s2, $zero, 0xffff
/* 303DC 80054FDC AFBF0164 */ sw $ra, 0x164($sp)
/* 303E0 80054FE0 AFB00158 */ sw $s0, 0x158($sp)
/* 303E4 80054FE4 8C440034 */ lw $a0, 0x34($v0)
/* 303E8 80054FE8 8C460038 */ lw $a2, 0x38($v0)
/* 303EC 80054FEC 0C015380 */ jal snd_read_rom
/* 303F0 80054FF0 00A0802D */ daddu $s0, $a1, $zero
.L80054FF4:
/* 303F4 80054FF4 96020000 */ lhu $v0, ($s0)
/* 303F8 80054FF8 1052000E */ beq $v0, $s2, .L80055034
/* 303FC 80054FFC 24050030 */ addiu $a1, $zero, 0x30
/* 30400 80055000 27A60010 */ addiu $a2, $sp, 0x10
/* 30404 80055004 0040202D */ daddu $a0, $v0, $zero
/* 30408 80055008 0C01511F */ jal snd_fetch_SBN_file
/* 3040C 8005500C 26310001 */ addiu $s1, $s1, 1
/* 30410 80055010 0000282D */ daddu $a1, $zero, $zero
/* 30414 80055014 8FA40010 */ lw $a0, 0x10($sp)
/* 30418 80055018 92060002 */ lbu $a2, 2($s0)
/* 3041C 8005501C 92070003 */ lbu $a3, 3($s0)
/* 30420 80055020 0C0151F2 */ jal snd_load_BK_to_bank
/* 30424 80055024 26100004 */ addiu $s0, $s0, 4
/* 30428 80055028 2A220050 */ slti $v0, $s1, 0x50
/* 3042C 8005502C 1440FFF1 */ bnez $v0, .L80054FF4
/* 30430 80055030 00000000 */ nop
.L80055034:
/* 30434 80055034 8FBF0164 */ lw $ra, 0x164($sp)
/* 30438 80055038 8FB20160 */ lw $s2, 0x160($sp)
/* 3043C 8005503C 8FB1015C */ lw $s1, 0x15c($sp)
/* 30440 80055040 8FB00158 */ lw $s0, 0x158($sp)
/* 30444 80055044 03E00008 */ jr $ra
/* 30448 80055048 27BD0168 */ addiu $sp, $sp, 0x168
/* 3044C 8005504C 00000000 */ nop

View File

@ -1,49 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80055068
/* 30468 80055068 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 3046C 8005506C AFB00010 */ sw $s0, 0x10($sp)
/* 30470 80055070 0080802D */ daddu $s0, $a0, $zero
/* 30474 80055074 3203000F */ andi $v1, $s0, 0xf
/* 30478 80055078 3C048008 */ lui $a0, %hi(D_80078DB4)
/* 3047C 8005507C 94848DB4 */ lhu $a0, %lo(D_80078DB4)($a0)
/* 30480 80055080 24020001 */ addiu $v0, $zero, 1
/* 30484 80055084 1482001E */ bne $a0, $v0, .L80055100
/* 30488 80055088 AFBF0014 */ sw $ra, 0x14($sp)
/* 3048C 8005508C 2C620004 */ sltiu $v0, $v1, 4
/* 30490 80055090 10400007 */ beqz $v0, .L800550B0
/* 30494 80055094 2C620002 */ sltiu $v0, $v1, 2
/* 30498 80055098 10400019 */ beqz $v0, .L80055100
/* 3049C 8005509C 00000000 */ nop
/* 304A0 800550A0 1064000C */ beq $v1, $a0, .L800550D4
/* 304A4 800550A4 00102102 */ srl $a0, $s0, 4
/* 304A8 800550A8 08015440 */ j .L80055100
/* 304AC 800550AC 00000000 */ nop
.L800550B0:
/* 304B0 800550B0 24020004 */ addiu $v0, $zero, 4
/* 304B4 800550B4 14620012 */ bne $v1, $v0, .L80055100
/* 304B8 800550B8 00502006 */ srlv $a0, $s0, $v0
/* 304BC 800550BC 0000282D */ daddu $a1, $zero, $zero
/* 304C0 800550C0 00A0302D */ daddu $a2, $a1, $zero
/* 304C4 800550C4 0C015490 */ jal snd_start_sound_with_shift
/* 304C8 800550C8 00A0382D */ daddu $a3, $a1, $zero
/* 304CC 800550CC 08015440 */ j .L80055100
/* 304D0 800550D0 00000000 */ nop
.L800550D4:
/* 304D4 800550D4 308400FF */ andi $a0, $a0, 0xff
/* 304D8 800550D8 0C015635 */ jal snd_load_song
/* 304DC 800550DC 0000282D */ daddu $a1, $zero, $zero
/* 304E0 800550E0 3C033020 */ lui $v1, 0x3020
/* 304E4 800550E4 34632000 */ ori $v1, $v1, 0x2000
/* 304E8 800550E8 0062182B */ sltu $v1, $v1, $v0
/* 304EC 800550EC 10600004 */ beqz $v1, .L80055100
/* 304F0 800550F0 0040202D */ daddu $a0, $v0, $zero
/* 304F4 800550F4 00102B02 */ srl $a1, $s0, 0xc
/* 304F8 800550F8 0C01565C */ jal func_80055970
/* 304FC 800550FC 30A50003 */ andi $a1, $a1, 3
.L80055100:
/* 30500 80055100 8FBF0014 */ lw $ra, 0x14($sp)
/* 30504 80055104 8FB00010 */ lw $s0, 0x10($sp)
/* 30508 80055108 03E00008 */ jr $ra
/* 3050C 8005510C 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,51 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8005513C
/* 3053C 8005513C 3085000F */ andi $a1, $a0, 0xf
/* 30540 80055140 10A00025 */ beqz $a1, .L800551D8
/* 30544 80055144 0000302D */ daddu $a2, $zero, $zero
/* 30548 80055148 24020001 */ addiu $v0, $zero, 1
/* 3054C 8005514C 14A20005 */ bne $a1, $v0, .L80055164
/* 30550 80055150 24020002 */ addiu $v0, $zero, 2
/* 30554 80055154 3C06800A */ lui $a2, %hi(D_8009A664)
/* 30558 80055158 8CC6A664 */ lw $a2, %lo(D_8009A664)($a2)
/* 3055C 8005515C 0801545D */ j .L80055174
/* 30560 80055160 00000000 */ nop
.L80055164:
/* 30564 80055164 14A20003 */ bne $a1, $v0, .L80055174
/* 30568 80055168 00000000 */ nop
/* 3056C 8005516C 3C06800A */ lui $a2, %hi(D_8009A5FC)
/* 30570 80055170 8CC6A5FC */ lw $a2, %lo(D_8009A5FC)($a2)
.L80055174:
/* 30574 80055174 10C00018 */ beqz $a2, .L800551D8
/* 30578 80055178 00000000 */ nop
/* 3057C 8005517C 90C20258 */ lbu $v0, 0x258($a2)
/* 30580 80055180 2C420008 */ sltiu $v0, $v0, 8
/* 30584 80055184 1040000E */ beqz $v0, .L800551C0
/* 30588 80055188 00041902 */ srl $v1, $a0, 4
/* 3058C 8005518C 90C5025A */ lbu $a1, 0x25a($a2)
/* 30590 80055190 00051080 */ sll $v0, $a1, 2
/* 30594 80055194 24A50001 */ addiu $a1, $a1, 1
/* 30598 80055198 00C21021 */ addu $v0, $a2, $v0
/* 3059C 8005519C AC430238 */ sw $v1, 0x238($v0)
/* 305A0 800551A0 2CA20008 */ sltiu $v0, $a1, 8
/* 305A4 800551A4 50400001 */ beql $v0, $zero, .L800551AC
/* 305A8 800551A8 0000282D */ daddu $a1, $zero, $zero
.L800551AC:
/* 305AC 800551AC 90C20258 */ lbu $v0, 0x258($a2)
/* 305B0 800551B0 A0C5025A */ sb $a1, 0x25a($a2)
/* 305B4 800551B4 24420001 */ addiu $v0, $v0, 1
/* 305B8 800551B8 03E00008 */ jr $ra
/* 305BC 800551BC A0C20258 */ sb $v0, 0x258($a2)
.L800551C0:
/* 305C0 800551C0 90C2025B */ lbu $v0, 0x25b($a2)
/* 305C4 800551C4 24450001 */ addiu $a1, $v0, 1
/* 305C8 800551C8 2CA20064 */ sltiu $v0, $a1, 0x64
/* 305CC 800551CC 50400001 */ beql $v0, $zero, .L800551D4
/* 305D0 800551D0 24050063 */ addiu $a1, $zero, 0x63
.L800551D4:
/* 305D4 800551D4 A0C5025B */ sb $a1, 0x25b($a2)
.L800551D8:
/* 305D8 800551D8 03E00008 */ jr $ra
/* 305DC 800551DC 00000000 */ nop

View File

@ -1,26 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80055D38
/* 31138 80055D38 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 3113C 80055D3C F7B40020 */ sdc1 $f20, 0x20($sp)
/* 31140 80055D40 4485A000 */ mtc1 $a1, $f20
/* 31144 80055D44 27A50010 */ addiu $a1, $sp, 0x10
/* 31148 80055D48 27A60014 */ addiu $a2, $sp, 0x14
/* 3114C 80055D4C AFBF001C */ sw $ra, 0x1c($sp)
/* 31150 80055D50 0C01573A */ jal func_80055CE8
/* 31154 80055D54 AFB00018 */ sw $s0, 0x18($sp)
/* 31158 80055D58 0040802D */ daddu $s0, $v0, $zero
/* 3115C 80055D5C 16000006 */ bnez $s0, .L80055D78
/* 31160 80055D60 0200102D */ daddu $v0, $s0, $zero
/* 31164 80055D64 8FA40014 */ lw $a0, 0x14($sp)
/* 31168 80055D68 4405A000 */ mfc1 $a1, $f20
/* 3116C 80055D6C 0C0141DC */ jal func_80050770
/* 31170 80055D70 00000000 */ nop
/* 31174 80055D74 0200102D */ daddu $v0, $s0, $zero
.L80055D78:
/* 31178 80055D78 8FBF001C */ lw $ra, 0x1c($sp)
/* 3117C 80055D7C 8FB00018 */ lw $s0, 0x18($sp)
/* 31180 80055D80 D7B40020 */ ldc1 $f20, 0x20($sp)
/* 31184 80055D84 03E00008 */ jr $ra
/* 31188 80055D88 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,25 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80055D8C
/* 3118C 80055D8C 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 31190 80055D90 AFB1001C */ sw $s1, 0x1c($sp)
/* 31194 80055D94 00A0882D */ daddu $s1, $a1, $zero
/* 31198 80055D98 27A50010 */ addiu $a1, $sp, 0x10
/* 3119C 80055D9C 27A60014 */ addiu $a2, $sp, 0x14
/* 311A0 80055DA0 AFBF0020 */ sw $ra, 0x20($sp)
/* 311A4 80055DA4 0C01573A */ jal func_80055CE8
/* 311A8 80055DA8 AFB00018 */ sw $s0, 0x18($sp)
/* 311AC 80055DAC 0040802D */ daddu $s0, $v0, $zero
/* 311B0 80055DB0 16000005 */ bnez $s0, .L80055DC8
/* 311B4 80055DB4 0200102D */ daddu $v0, $s0, $zero
/* 311B8 80055DB8 8FA40014 */ lw $a0, 0x14($sp)
/* 311BC 80055DBC 0C014206 */ jal func_80050818
/* 311C0 80055DC0 0220282D */ daddu $a1, $s1, $zero
/* 311C4 80055DC4 0200102D */ daddu $v0, $s0, $zero
.L80055DC8:
/* 311C8 80055DC8 8FBF0020 */ lw $ra, 0x20($sp)
/* 311CC 80055DCC 8FB1001C */ lw $s1, 0x1c($sp)
/* 311D0 80055DD0 8FB00018 */ lw $s0, 0x18($sp)
/* 311D4 80055DD4 03E00008 */ jr $ra
/* 311D8 80055DD8 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,33 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80055DDC
/* 311DC 80055DDC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 311E0 80055DE0 AFB1001C */ sw $s1, 0x1c($sp)
/* 311E4 80055DE4 00A0882D */ daddu $s1, $a1, $zero
/* 311E8 80055DE8 27A50010 */ addiu $a1, $sp, 0x10
/* 311EC 80055DEC 27A60014 */ addiu $a2, $sp, 0x14
/* 311F0 80055DF0 AFBF0020 */ sw $ra, 0x20($sp)
/* 311F4 80055DF4 0C01573A */ jal func_80055CE8
/* 311F8 80055DF8 AFB00018 */ sw $s0, 0x18($sp)
/* 311FC 80055DFC 0040802D */ daddu $s0, $v0, $zero
/* 31200 80055E00 1600000C */ bnez $s0, .L80055E34
/* 31204 80055E04 0200102D */ daddu $v0, $s0, $zero
/* 31208 80055E08 0C0157AD */ jal func_80055EB4
/* 3120C 80055E0C 0220202D */ daddu $a0, $s1, $zero
/* 31210 80055E10 10400006 */ beqz $v0, .L80055E2C
/* 31214 80055E14 0040282D */ daddu $a1, $v0, $zero
/* 31218 80055E18 8FA40014 */ lw $a0, 0x14($sp)
/* 3121C 80055E1C 0C01421F */ jal func_8005087C
/* 31220 80055E20 24060001 */ addiu $a2, $zero, 1
/* 31224 80055E24 0801578D */ j .L80055E34
/* 31228 80055E28 0200102D */ daddu $v0, $s0, $zero
.L80055E2C:
/* 3122C 80055E2C 2410000B */ addiu $s0, $zero, 0xb
/* 31230 80055E30 0200102D */ daddu $v0, $s0, $zero
.L80055E34:
/* 31234 80055E34 8FBF0020 */ lw $ra, 0x20($sp)
/* 31238 80055E38 8FB1001C */ lw $s1, 0x1c($sp)
/* 3123C 80055E3C 8FB00018 */ lw $s0, 0x18($sp)
/* 31240 80055E40 03E00008 */ jr $ra
/* 31244 80055E44 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,33 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80055E48
/* 31248 80055E48 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 3124C 80055E4C AFB1001C */ sw $s1, 0x1c($sp)
/* 31250 80055E50 00A0882D */ daddu $s1, $a1, $zero
/* 31254 80055E54 27A50010 */ addiu $a1, $sp, 0x10
/* 31258 80055E58 27A60014 */ addiu $a2, $sp, 0x14
/* 3125C 80055E5C AFBF0020 */ sw $ra, 0x20($sp)
/* 31260 80055E60 0C01573A */ jal func_80055CE8
/* 31264 80055E64 AFB00018 */ sw $s0, 0x18($sp)
/* 31268 80055E68 0040802D */ daddu $s0, $v0, $zero
/* 3126C 80055E6C 1600000C */ bnez $s0, .L80055EA0
/* 31270 80055E70 0200102D */ daddu $v0, $s0, $zero
/* 31274 80055E74 0C0157AD */ jal func_80055EB4
/* 31278 80055E78 0220202D */ daddu $a0, $s1, $zero
/* 3127C 80055E7C 10400006 */ beqz $v0, .L80055E98
/* 31280 80055E80 0040282D */ daddu $a1, $v0, $zero
/* 31284 80055E84 8FA40014 */ lw $a0, 0x14($sp)
/* 31288 80055E88 0C01421F */ jal func_8005087C
/* 3128C 80055E8C 0000302D */ daddu $a2, $zero, $zero
/* 31290 80055E90 080157A8 */ j .L80055EA0
/* 31294 80055E94 0200102D */ daddu $v0, $s0, $zero
.L80055E98:
/* 31298 80055E98 2410000B */ addiu $s0, $zero, 0xb
/* 3129C 80055E9C 0200102D */ daddu $v0, $s0, $zero
.L80055EA0:
/* 312A0 80055EA0 8FBF0020 */ lw $ra, 0x20($sp)
/* 312A4 80055EA4 8FB1001C */ lw $s1, 0x1c($sp)
/* 312A8 80055EA8 8FB00018 */ lw $s0, 0x18($sp)
/* 312AC 80055EAC 03E00008 */ jr $ra
/* 312B0 80055EB0 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,61 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098908
.word L80055ED8_312D8, L80055EE8_312E8, L80055EF8_312F8, L80055F08_31308, L80055F18_31318, L80055F28_31328, L80055F38_31338, L80055F48_31348, 0, 0
.section .text
glabel func_80055EB4
/* 312B4 80055EB4 2C820008 */ sltiu $v0, $a0, 8
/* 312B8 80055EB8 10400025 */ beqz $v0, .L80055F50
/* 312BC 80055EBC 0000182D */ daddu $v1, $zero, $zero
/* 312C0 80055EC0 00041080 */ sll $v0, $a0, 2
/* 312C4 80055EC4 3C01800A */ lui $at, %hi(jtbl_80098908)
/* 312C8 80055EC8 00220821 */ addu $at, $at, $v0
/* 312CC 80055ECC 8C228908 */ lw $v0, %lo(jtbl_80098908)($at)
/* 312D0 80055ED0 00400008 */ jr $v0
/* 312D4 80055ED4 00000000 */ nop
glabel L80055ED8_312D8
/* 312D8 80055ED8 3C038008 */ lui $v1, %hi(D_80078DB8)
/* 312DC 80055EDC 24638DB8 */ addiu $v1, $v1, %lo(D_80078DB8)
/* 312E0 80055EE0 03E00008 */ jr $ra
/* 312E4 80055EE4 0060102D */ daddu $v0, $v1, $zero
glabel L80055EE8_312E8
/* 312E8 80055EE8 3C038008 */ lui $v1, %hi(D_80078DC4)
/* 312EC 80055EEC 24638DC4 */ addiu $v1, $v1, %lo(D_80078DC4)
/* 312F0 80055EF0 03E00008 */ jr $ra
/* 312F4 80055EF4 0060102D */ daddu $v0, $v1, $zero
glabel L80055EF8_312F8
/* 312F8 80055EF8 3C038008 */ lui $v1, %hi(D_80078DCC)
/* 312FC 80055EFC 24638DCC */ addiu $v1, $v1, %lo(D_80078DCC)
/* 31300 80055F00 03E00008 */ jr $ra
/* 31304 80055F04 0060102D */ daddu $v0, $v1, $zero
glabel L80055F08_31308
/* 31308 80055F08 3C038008 */ lui $v1, %hi(D_80078DD0)
/* 3130C 80055F0C 24638DD0 */ addiu $v1, $v1, %lo(D_80078DD0)
/* 31310 80055F10 03E00008 */ jr $ra
/* 31314 80055F14 0060102D */ daddu $v0, $v1, $zero
glabel L80055F18_31318
/* 31318 80055F18 3C038008 */ lui $v1, %hi(D_80078DDC)
/* 3131C 80055F1C 24638DDC */ addiu $v1, $v1, %lo(D_80078DDC)
/* 31320 80055F20 03E00008 */ jr $ra
/* 31324 80055F24 0060102D */ daddu $v0, $v1, $zero
glabel L80055F28_31328
/* 31328 80055F28 3C038008 */ lui $v1, %hi(D_80078DF8)
/* 3132C 80055F2C 24638DF8 */ addiu $v1, $v1, %lo(D_80078DF8)
/* 31330 80055F30 03E00008 */ jr $ra
/* 31334 80055F34 0060102D */ daddu $v0, $v1, $zero
glabel L80055F38_31338
/* 31338 80055F38 3C038008 */ lui $v1, %hi(D_80078E14)
/* 3133C 80055F3C 24638E14 */ addiu $v1, $v1, %lo(D_80078E14)
/* 31340 80055F40 03E00008 */ jr $ra
/* 31344 80055F44 0060102D */ daddu $v0, $v1, $zero
glabel L80055F48_31348
/* 31348 80055F48 3C038008 */ lui $v1, %hi(D_80078E30)
/* 3134C 80055F4C 24638E30 */ addiu $v1, $v1, %lo(D_80078E30)
.L80055F50:
/* 31350 80055F50 03E00008 */ jr $ra
/* 31354 80055F54 0060102D */ daddu $v0, $v1, $zero

View File

@ -1,23 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_load_song
/* 30CD4 800558D4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 30CD8 800558D8 AFB00018 */ sw $s0, 0x18($sp)
/* 30CDC 800558DC 0080802D */ daddu $s0, $a0, $zero
/* 30CE0 800558E0 00A0202D */ daddu $a0, $a1, $zero
/* 30CE4 800558E4 27A50010 */ addiu $a1, $sp, 0x10
/* 30CE8 800558E8 AFBF001C */ sw $ra, 0x1c($sp)
/* 30CEC 800558EC 0C014F16 */ jal snd_get_sequence_player_and_track
/* 30CF0 800558F0 27A60014 */ addiu $a2, $sp, 0x14
/* 30CF4 800558F4 8FA50010 */ lw $a1, 0x10($sp)
/* 30CF8 800558F8 10A00004 */ beqz $a1, .L8005590C
/* 30CFC 800558FC 24020003 */ addiu $v0, $zero, 3
/* 30D00 80055900 8FA60014 */ lw $a2, 0x14($sp)
/* 30D04 80055904 0C014F3E */ jal snd_load_song_files
/* 30D08 80055908 0200202D */ daddu $a0, $s0, $zero
.L8005590C:
/* 30D0C 8005590C 8FBF001C */ lw $ra, 0x1c($sp)
/* 30D10 80055910 8FB00018 */ lw $s0, 0x18($sp)
/* 30D14 80055914 03E00008 */ jr $ra
/* 30D18 80055918 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,7 +1,7 @@
.set noat # allow manual use of $at .set noat # allow manual use of $at
.set noreorder # don't insert nops after branches .set noreorder # don't insert nops after branches
glabel _sfx_play_sound glabel sfx_play_sound_with_params
/* E01B8 80149AB8 3C028007 */ lui $v0, %hi(gGameStatusPtr) /* E01B8 80149AB8 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* E01BC 80149ABC 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0) /* E01BC 80149ABC 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* E01C0 80149AC0 27BDFFE8 */ addiu $sp, $sp, -0x18 /* E01C0 80149AC0 27BDFFE8 */ addiu $sp, $sp, -0x18

View File

@ -11,8 +11,8 @@ glabel jtbl_80151290
glabel bgm_update_music_settings glabel bgm_update_music_settings
/* E0C48 8014A548 27BDFFC8 */ addiu $sp, $sp, -0x38 /* E0C48 8014A548 27BDFFC8 */ addiu $sp, $sp, -0x38
/* E0C4C 8014A54C AFB1001C */ sw $s1, 0x1c($sp) /* E0C4C 8014A54C AFB1001C */ sw $s1, 0x1c($sp)
/* E0C50 8014A550 3C118016 */ lui $s1, %hi(gMusicPlayers) /* E0C50 8014A550 3C118016 */ lui $s1, %hi(gMusicSettings)
/* E0C54 8014A554 26319AF0 */ addiu $s1, $s1, %lo(gMusicPlayers) /* E0C54 8014A554 26319AF0 */ addiu $s1, $s1, %lo(gMusicSettings)
/* E0C58 8014A558 AFB20020 */ sw $s2, 0x20($sp) /* E0C58 8014A558 AFB20020 */ sw $s2, 0x20($sp)
/* E0C5C 8014A55C 0000902D */ daddu $s2, $zero, $zero /* E0C5C 8014A55C 0000902D */ daddu $s2, $zero, $zero
/* E0C60 8014A560 AFB30024 */ sw $s3, 0x24($sp) /* E0C60 8014A560 AFB30024 */ sw $s3, 0x24($sp)

View File

@ -4,8 +4,8 @@
glabel func_8014AD40 glabel func_8014AD40
/* E1440 8014AD40 27BDFFE0 */ addiu $sp, $sp, -0x20 /* E1440 8014AD40 27BDFFE0 */ addiu $sp, $sp, -0x20
/* E1444 8014AD44 AFB00010 */ sw $s0, 0x10($sp) /* E1444 8014AD44 AFB00010 */ sw $s0, 0x10($sp)
/* E1448 8014AD48 3C108016 */ lui $s0, %hi(gMusicPlayers) /* E1448 8014AD48 3C108016 */ lui $s0, %hi(gMusicSettings)
/* E144C 8014AD4C 26109AF0 */ addiu $s0, $s0, %lo(gMusicPlayers) /* E144C 8014AD4C 26109AF0 */ addiu $s0, $s0, %lo(gMusicSettings)
/* E1450 8014AD50 AFB10014 */ sw $s1, 0x14($sp) /* E1450 8014AD50 AFB10014 */ sw $s1, 0x14($sp)
/* E1454 8014AD54 0000882D */ daddu $s1, $zero, $zero /* E1454 8014AD54 0000882D */ daddu $s1, $zero, $zero
/* E1458 8014AD58 AFBF0018 */ sw $ra, 0x18($sp) /* E1458 8014AD58 AFBF0018 */ sw $ra, 0x18($sp)

View File

@ -8,7 +8,7 @@ glabel jtbl_800982C0
.section .text .section .text
glabel func_800343A4 glabel appendGfx_intro_logos
/* F7A4 800343A4 27BDFFE8 */ addiu $sp, $sp, -0x18 /* F7A4 800343A4 27BDFFE8 */ addiu $sp, $sp, -0x18
/* F7A8 800343A8 3C05E200 */ lui $a1, 0xe200 /* F7A8 800343A8 3C05E200 */ lui $a1, 0xe200
/* F7AC 800343AC 34A5001C */ ori $a1, $a1, 0x1c /* F7AC 800343AC 34A5001C */ ori $a1, $a1, 0x1c

View File

@ -1,145 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel begin_state_logos
/* F270 80033E70 27BDFFD0 */ addiu $sp, $sp, -0x30
/* F274 80033E74 AFBF0024 */ sw $ra, 0x24($sp)
/* F278 80033E78 AFB20020 */ sw $s2, 0x20($sp)
/* F27C 80033E7C AFB1001C */ sw $s1, 0x1c($sp)
/* F280 80033E80 AFB00018 */ sw $s0, 0x18($sp)
/* F284 80033E84 0C00AB00 */ jal general_heap_create
/* F288 80033E88 F7B40028 */ sdc1 $f20, 0x28($sp)
/* F28C 80033E8C 3C128007 */ lui $s2, %hi(gGameStatusPtr)
/* F290 80033E90 2652419C */ addiu $s2, $s2, %lo(gGameStatusPtr)
/* F294 80033E94 8E420000 */ lw $v0, ($s2)
/* F298 80033E98 A04000AC */ sb $zero, 0xac($v0)
/* F29C 80033E9C 8E420000 */ lw $v0, ($s2)
/* F2A0 80033EA0 A04000AD */ sb $zero, 0xad($v0)
/* F2A4 80033EA4 8E420000 */ lw $v0, ($s2)
/* F2A8 80033EA8 240400FF */ addiu $a0, $zero, 0xff
/* F2AC 80033EAC 0C00CDF4 */ jal intro_logos_set_fade_alpha
/* F2B0 80033EB0 A04000AE */ sb $zero, 0xae($v0)
/* F2B4 80033EB4 0C00CDF8 */ jal intro_logos_set_fade_color
/* F2B8 80033EB8 0000202D */ daddu $a0, $zero, $zero
/* F2BC 80033EBC 3C110022 */ lui $s1, 0x22
/* F2C0 80033EC0 263191B0 */ addiu $s1, $s1, -0x6e50
/* F2C4 80033EC4 3C100020 */ lui $s0, 0x20
/* F2C8 80033EC8 2610E1B0 */ addiu $s0, $s0, -0x1e50
/* F2CC 80033ECC 0C00AB39 */ jal heap_malloc
/* F2D0 80033ED0 02302023 */ subu $a0, $s1, $s0
/* F2D4 80033ED4 0200202D */ daddu $a0, $s0, $zero
/* F2D8 80033ED8 0220282D */ daddu $a1, $s1, $zero
/* F2DC 80033EDC 0040302D */ daddu $a2, $v0, $zero
/* F2E0 80033EE0 3C10800A */ lui $s0, %hi(D_800A0910)
/* F2E4 80033EE4 26100910 */ addiu $s0, $s0, %lo(D_800A0910)
/* F2E8 80033EE8 0C00A5CF */ jal dma_copy
/* F2EC 80033EEC AE060000 */ sw $a2, ($s0)
/* F2F0 80033EF0 3C040001 */ lui $a0, 1
/* F2F4 80033EF4 8E020000 */ lw $v0, ($s0)
/* F2F8 80033EF8 34845000 */ ori $a0, $a0, 0x5000
/* F2FC 80033EFC 24437000 */ addiu $v1, $v0, 0x7000
/* F300 80033F00 3C01800A */ lui $at, %hi(D_800A0918)
/* F304 80033F04 AC220918 */ sw $v0, %lo(D_800A0918)($at)
/* F308 80033F08 00441021 */ addu $v0, $v0, $a0
/* F30C 80033F0C 3C01800A */ lui $at, %hi(D_800A0914)
/* F310 80033F10 AC230914 */ sw $v1, %lo(D_800A0914)($at)
/* F314 80033F14 3C01800A */ lui $at, %hi(D_800A091C)
/* F318 80033F18 AC22091C */ sw $v0, %lo(D_800A091C)($at)
/* F31C 80033F1C 0C018028 */ jal nuContRmbForceStop
/* F320 80033F20 00000000 */ nop
/* F324 80033F24 0C00B7BD */ jal create_cameras_a
/* F328 80033F28 00000000 */ nop
/* F32C 80033F2C 0000202D */ daddu $a0, $zero, $zero
/* F330 80033F30 2405000C */ addiu $a1, $zero, 0xc
/* F334 80033F34 2406001C */ addiu $a2, $zero, 0x1c
/* F338 80033F38 3C10800B */ lui $s0, %hi(gCameras)
/* F33C 80033F3C 26101D80 */ addiu $s0, $s0, %lo(gCameras)
/* F340 80033F40 24020006 */ addiu $v0, $zero, 6
/* F344 80033F44 A6020004 */ sh $v0, 4($s0)
/* F348 80033F48 24020001 */ addiu $v0, $zero, 1
/* F34C 80033F4C A6020006 */ sh $v0, 6($s0)
/* F350 80033F50 24020010 */ addiu $v0, $zero, 0x10
/* F354 80033F54 A6020012 */ sh $v0, 0x12($s0)
/* F358 80033F58 24021000 */ addiu $v0, $zero, 0x1000
/* F35C 80033F5C A6020014 */ sh $v0, 0x14($s0)
/* F360 80033F60 240200B8 */ addiu $v0, $zero, 0xb8
/* F364 80033F64 3C0141C8 */ lui $at, 0x41c8
/* F368 80033F68 4481A000 */ mtc1 $at, $f20
/* F36C 80033F6C 24070128 */ addiu $a3, $zero, 0x128
/* F370 80033F70 3C018007 */ lui $at, %hi(gCurrentCameraID)
/* F374 80033F74 AC207410 */ sw $zero, %lo(gCurrentCameraID)($at)
/* F378 80033F78 E6140018 */ swc1 $f20, 0x18($s0)
/* F37C 80033F7C AFA20010 */ sw $v0, 0x10($sp)
/* F380 80033F80 96020000 */ lhu $v0, ($s0)
/* F384 80033F84 96030558 */ lhu $v1, 0x558($s0)
/* F388 80033F88 34420002 */ ori $v0, $v0, 2
/* F38C 80033F8C A6020000 */ sh $v0, ($s0)
/* F390 80033F90 96020AB0 */ lhu $v0, 0xab0($s0)
/* F394 80033F94 34630002 */ ori $v1, $v1, 2
/* F398 80033F98 A6030558 */ sh $v1, 0x558($s0)
/* F39C 80033F9C 96031008 */ lhu $v1, 0x1008($s0)
/* F3A0 80033FA0 34420002 */ ori $v0, $v0, 2
/* F3A4 80033FA4 34630002 */ ori $v1, $v1, 2
/* F3A8 80033FA8 A6020AB0 */ sh $v0, 0xab0($s0)
/* F3AC 80033FAC 0C00B8C5 */ jal set_cam_viewport
/* F3B0 80033FB0 A6031008 */ sh $v1, 0x1008($s0)
/* F3B4 80033FB4 3C0143FA */ lui $at, 0x43fa
/* F3B8 80033FB8 44810000 */ mtc1 $at, $f0
/* F3BC 80033FBC 3C01447A */ lui $at, 0x447a
/* F3C0 80033FC0 44811000 */ mtc1 $at, $f2
/* F3C4 80033FC4 3C0144BB */ lui $at, 0x44bb
/* F3C8 80033FC8 34218000 */ ori $at, $at, 0x8000
/* F3CC 80033FCC 44812000 */ mtc1 $at, $f4
/* F3D0 80033FD0 3C014316 */ lui $at, 0x4316
/* F3D4 80033FD4 44813000 */ mtc1 $at, $f6
/* F3D8 80033FD8 24020028 */ addiu $v0, $zero, 0x28
/* F3DC 80033FDC A602001E */ sh $v0, 0x1e($s0)
/* F3E0 80033FE0 24020064 */ addiu $v0, $zero, 0x64
/* F3E4 80033FE4 A600002C */ sh $zero, 0x2c($s0)
/* F3E8 80033FE8 A600002E */ sh $zero, 0x2e($s0)
/* F3EC 80033FEC A6000030 */ sh $zero, 0x30($s0)
/* F3F0 80033FF0 E6140054 */ swc1 $f20, 0x54($s0)
/* F3F4 80033FF4 E6140058 */ swc1 $f20, 0x58($s0)
/* F3F8 80033FF8 A600001C */ sh $zero, 0x1c($s0)
/* F3FC 80033FFC A6020020 */ sh $v0, 0x20($s0)
/* F400 80034000 A6000022 */ sh $zero, 0x22($s0)
/* F404 80034004 E600003C */ swc1 $f0, 0x3c($s0)
/* F408 80034008 E6020040 */ swc1 $f2, 0x40($s0)
/* F40C 8003400C E6040044 */ swc1 $f4, 0x44($s0)
/* F410 80034010 0C0B0C77 */ jal clear_script_list
/* F414 80034014 E606005C */ swc1 $f6, 0x5c($s0)
/* F418 80034018 0C048C2E */ jal clear_dynamic_entity_list
/* F41C 8003401C 00000000 */ nop
/* F420 80034020 0C047624 */ jal func_8011D890
/* F424 80034024 00000000 */ nop
/* F428 80034028 0C0B763E */ jal func_802DD8F8
/* F42C 8003402C 0000202D */ daddu $a0, $zero, $zero
/* F430 80034030 0C047889 */ jal func_8011E224
/* F434 80034034 00000000 */ nop
/* F438 80034038 0C0482EC */ jal clear_entity_models
/* F43C 8003403C 00000000 */ nop
/* F440 80034040 0C00E12F */ jal clear_npcs
/* F444 80034044 00000000 */ nop
/* F448 80034048 0C050440 */ jal func_80141100
/* F44C 8003404C 00000000 */ nop
/* F450 80034050 0C05177E */ jal use_default_background_settings
/* F454 80034054 00000000 */ nop
/* F458 80034058 0C04432E */ jal clear_entity_data
/* F45C 8003405C 24040001 */ addiu $a0, $zero, 1
/* F460 80034060 0C016727 */ jal clear_effect_data
/* F464 80034064 00000000 */ nop
/* F468 80034068 3C03800A */ lui $v1, %hi(gOverrideFlags)
/* F46C 8003406C 2463A650 */ addiu $v1, $v1, %lo(gOverrideFlags)
/* F470 80034070 8C620000 */ lw $v0, ($v1)
/* F474 80034074 34420002 */ ori $v0, $v0, 2
/* F478 80034078 0C00CE1D */ jal intro_logos_update_fade
/* F47C 8003407C AC620000 */ sw $v0, ($v1)
/* F480 80034080 8E420000 */ lw $v0, ($s2)
/* F484 80034084 A4400148 */ sh $zero, 0x148($v0)
/* F488 80034088 8FBF0024 */ lw $ra, 0x24($sp)
/* F48C 8003408C 8FB20020 */ lw $s2, 0x20($sp)
/* F490 80034090 8FB1001C */ lw $s1, 0x1c($sp)
/* F494 80034094 8FB00018 */ lw $s0, 0x18($sp)
/* F498 80034098 D7B40028 */ ldc1 $f20, 0x28($sp)
/* F49C 8003409C 03E00008 */ jr $ra
/* F4A0 800340A0 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,251 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80034C3C
/* 1003C 80034C3C 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 10040 80034C40 AFB00018 */ sw $s0, 0x18($sp)
/* 10044 80034C44 3C10800A */ lui $s0, %hi(D_800A0921)
/* 10048 80034C48 26100921 */ addiu $s0, $s0, %lo(D_800A0921)
/* 1004C 80034C4C AFBF0024 */ sw $ra, 0x24($sp)
/* 10050 80034C50 AFB20020 */ sw $s2, 0x20($sp)
/* 10054 80034C54 AFB1001C */ sw $s1, 0x1c($sp)
/* 10058 80034C58 82030000 */ lb $v1, ($s0)
/* 1005C 80034C5C 24020003 */ addiu $v0, $zero, 3
/* 10060 80034C60 106200B8 */ beq $v1, $v0, .L80034F44
/* 10064 80034C64 28620004 */ slti $v0, $v1, 4
/* 10068 80034C68 14400006 */ bnez $v0, .L80034C84
/* 1006C 80034C6C 28620002 */ slti $v0, $v1, 2
/* 10070 80034C70 24020004 */ addiu $v0, $zero, 4
/* 10074 80034C74 106200CA */ beq $v1, $v0, .L80034FA0
/* 10078 80034C78 00000000 */ nop
/* 1007C 80034C7C 0800D3F6 */ j .L80034FD8
/* 10080 80034C80 00000000 */ nop
.L80034C84:
/* 10084 80034C84 104000D4 */ beqz $v0, .L80034FD8
/* 10088 80034C88 00000000 */ nop
/* 1008C 80034C8C 046000D2 */ bltz $v1, .L80034FD8
/* 10090 80034C90 24020004 */ addiu $v0, $zero, 4
/* 10094 80034C94 3C06800A */ lui $a2, %hi(D_800A0920)
/* 10098 80034C98 24C60920 */ addiu $a2, $a2, %lo(D_800A0920)
/* 1009C 80034C9C 80C30000 */ lb $v1, ($a2)
/* 100A0 80034CA0 14620007 */ bne $v1, $v0, .L80034CC0
/* 100A4 80034CA4 00000000 */ nop
/* 100A8 80034CA8 3C03800A */ lui $v1, %hi(gOverrideFlags)
/* 100AC 80034CAC 2463A650 */ addiu $v1, $v1, %lo(gOverrideFlags)
/* 100B0 80034CB0 8C620000 */ lw $v0, ($v1)
/* 100B4 80034CB4 34420008 */ ori $v0, $v0, 8
/* 100B8 80034CB8 AC620000 */ sw $v0, ($v1)
/* 100BC 80034CBC 80C30000 */ lb $v1, ($a2)
.L80034CC0:
/* 100C0 80034CC0 046000C5 */ bltz $v1, .L80034FD8
/* 100C4 80034CC4 90C20000 */ lbu $v0, ($a2)
/* 100C8 80034CC8 10600005 */ beqz $v1, .L80034CE0
/* 100CC 80034CCC 2442FFFF */ addiu $v0, $v0, -1
/* 100D0 80034CD0 A0C20000 */ sb $v0, ($a2)
/* 100D4 80034CD4 00021600 */ sll $v0, $v0, 0x18
/* 100D8 80034CD8 144000BF */ bnez $v0, .L80034FD8
/* 100DC 80034CDC 00000000 */ nop
.L80034CE0:
/* 100E0 80034CE0 3C048007 */ lui $a0, %hi(D_80077950)
/* 100E4 80034CE4 24847950 */ addiu $a0, $a0, %lo(D_80077950)
/* 100E8 80034CE8 24050003 */ addiu $a1, $zero, 3
/* 100EC 80034CEC 2402FFFF */ addiu $v0, $zero, -1
/* 100F0 80034CF0 0C017CBC */ jal nuGfxSetCfb
/* 100F4 80034CF4 A0C20000 */ sb $v0, ($a2)
/* 100F8 80034CF8 0C0911C2 */ jal pause_cleanup
/* 100FC 80034CFC 00000000 */ nop
/* 10100 80034D00 3C04800A */ lui $a0, %hi(gOverrideFlags)
/* 10104 80034D04 2484A650 */ addiu $a0, $a0, %lo(gOverrideFlags)
/* 10108 80034D08 8C820000 */ lw $v0, ($a0)
/* 1010C 80034D0C 2403FFF7 */ addiu $v1, $zero, -9
/* 10110 80034D10 00431024 */ and $v0, $v0, $v1
/* 10114 80034D14 0C016AFA */ jal get_current_map_header
/* 10118 80034D18 AC820000 */ sw $v0, ($a0)
/* 1011C 80034D1C 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* 10120 80034D20 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* 10124 80034D24 8E040000 */ lw $a0, ($s0)
/* 10128 80034D28 84830086 */ lh $v1, 0x86($a0)
/* 1012C 80034D2C 00031900 */ sll $v1, $v1, 4
/* 10130 80034D30 3C068009 */ lui $a2, %hi(gAreas+0x4)
/* 10134 80034D34 00C33021 */ addu $a2, $a2, $v1
/* 10138 80034D38 8CC634F4 */ lw $a2, %lo(gAreas+0x4)($a2)
/* 1013C 80034D3C 0040902D */ daddu $s2, $v0, $zero
/* 10140 80034D40 A0800070 */ sb $zero, 0x70($a0)
/* 10144 80034D44 8484008C */ lh $a0, 0x8c($a0)
/* 10148 80034D48 8E050000 */ lw $a1, ($s0)
/* 1014C 80034D4C 00042140 */ sll $a0, $a0, 5
/* 10150 80034D50 94A30148 */ lhu $v1, 0x148($a1)
/* 10154 80034D54 00C48821 */ addu $s1, $a2, $a0
/* 10158 80034D58 3063FF0F */ andi $v1, $v1, 0xff0f
/* 1015C 80034D5C 0C016BE1 */ jal func_8005AF84
/* 10160 80034D60 A4A30148 */ sh $v1, 0x148($a1)
/* 10164 80034D64 0C00AB37 */ jal func_8002ACDC
/* 10168 80034D68 00000000 */ nop
/* 1016C 80034D6C 0C018030 */ jal nuContRmbForceStopEnd
/* 10170 80034D70 00000000 */ nop
/* 10174 80034D74 0C05259C */ jal func_80149670
/* 10178 80034D78 24040001 */ addiu $a0, $zero, 1
/* 1017C 80034D7C 8E020000 */ lw $v0, ($s0)
/* 10180 80034D80 0C0B763E */ jal func_802DD8F8
/* 10184 80034D84 80440084 */ lb $a0, 0x84($v0)
/* 10188 80034D88 0C0457FA */ jal init_model_data
/* 1018C 80034D8C 00000000 */ nop
/* 10190 80034D90 0C05203C */ jal func_801480F0
/* 10194 80034D94 00000000 */ nop
/* 10198 80034D98 0C048316 */ jal init_entity_models
/* 1019C 80034D9C 00000000 */ nop
/* 101A0 80034DA0 0C0478C4 */ jal func_8011E310
/* 101A4 80034DA4 00000000 */ nop
/* 101A8 80034DA8 0C048C45 */ jal init_dynamic_entity_list
/* 101AC 80034DAC 00000000 */ nop
/* 101B0 80034DB0 0000202D */ daddu $a0, $zero, $zero
/* 101B4 80034DB4 0C0514BA */ jal func_801452E8
/* 101B8 80034DB8 0080282D */ daddu $a1, $a0, $zero
/* 101BC 80034DBC 0C0504C0 */ jal init_menu_icon_list
/* 101C0 80034DC0 00000000 */ nop
/* 101C4 80034DC4 0C04C433 */ jal init_item_entity_list
/* 101C8 80034DC8 00000000 */ nop
/* 101CC 80034DCC 0C0B0CBB */ jal init_script_list
/* 101D0 80034DD0 00000000 */ nop
/* 101D4 80034DD4 0C00E14B */ jal init_npc_list
/* 101D8 80034DD8 00000000 */ nop
/* 101DC 80034DDC 0C044396 */ jal func_80110E58
/* 101E0 80034DE0 00000000 */ nop
/* 101E4 80034DE4 0C0515CA */ jal init_trigger_list
/* 101E8 80034DE8 00000000 */ nop
/* 101EC 80034DEC 3C04800A */ lui $a0, %hi(D_800A0924)
/* 101F0 80034DF0 8C840924 */ lw $a0, %lo(D_800A0924)($a0)
/* 101F4 80034DF4 0C0525FF */ jal func_801497FC
/* 101F8 80034DF8 00000000 */ nop
/* 101FC 80034DFC 0C052B1C */ jal bgm_reset_max_volume
/* 10200 80034E00 00000000 */ nop
/* 10204 80034E04 0C0169B0 */ jal load_world_script_api
/* 10208 80034E08 00000000 */ nop
/* 1020C 80034E0C 3C04800E */ lui $a0, %hi(D_800D9230)
/* 10210 80034E10 24849230 */ addiu $a0, $a0, %lo(D_800D9230)
/* 10214 80034E14 0C016B3A */ jal load_asset_by_name
/* 10218 80034E18 27A50010 */ addiu $a1, $sp, 0x10
/* 1021C 80034E1C 0040802D */ daddu $s0, $v0, $zero
/* 10220 80034E20 3C058021 */ lui $a1, %hi(D_80210000)
/* 10224 80034E24 24A50000 */ addiu $a1, $a1, %lo(D_80210000)
/* 10228 80034E28 0C01BB7C */ jal decode_yay0
/* 1022C 80034E2C 0200202D */ daddu $a0, $s0, $zero
/* 10230 80034E30 0C00AB1E */ jal general_heap_free
/* 10234 80034E34 0200202D */ daddu $a0, $s0, $zero
/* 10238 80034E38 0C016BE5 */ jal initialize_collision
/* 1023C 80034E3C 00000000 */ nop
/* 10240 80034E40 0C016C16 */ jal load_collision
/* 10244 80034E44 00000000 */ nop
/* 10248 80034E48 8E240008 */ lw $a0, 8($s1)
/* 1024C 80034E4C 10800004 */ beqz $a0, .L80034E60
/* 10250 80034E50 00000000 */ nop
/* 10254 80034E54 8E25000C */ lw $a1, 0xc($s1)
/* 10258 80034E58 0C00A5CF */ jal dma_copy
/* 1025C 80034E5C 8E260010 */ lw $a2, 0x10($s1)
.L80034E60:
/* 10260 80034E60 0C05175C */ jal load_map_bg
/* 10264 80034E64 8E240014 */ lw $a0, 0x14($s1)
/* 10268 80034E68 8E440038 */ lw $a0, 0x38($s2)
/* 1026C 80034E6C 50800005 */ beql $a0, $zero, .L80034E84
/* 10270 80034E70 24040128 */ addiu $a0, $zero, 0x128
/* 10274 80034E74 0C05178A */ jal read_background_size
/* 10278 80034E78 00000000 */ nop
/* 1027C 80034E7C 0800D3A5 */ j .L80034E94
/* 10280 80034E80 00000000 */ nop
.L80034E84:
/* 10284 80034E84 240500C8 */ addiu $a1, $zero, 0xc8
/* 10288 80034E88 2406000C */ addiu $a2, $zero, 0xc
/* 1028C 80034E8C 0C05179C */ jal set_background_size
/* 10290 80034E90 24070014 */ addiu $a3, $zero, 0x14
.L80034E94:
/* 10294 80034E94 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 10298 80034E98 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 1029C 80034E9C 9462015E */ lhu $v0, 0x15e($v1)
/* 102A0 80034EA0 0C04584B */ jal calculate_model_sizes
/* 102A4 80034EA4 A462015C */ sh $v0, 0x15c($v1)
/* 102A8 80034EA8 0C00EC6C */ jal func_8003B1B0
/* 102AC 80034EAC 00000000 */ nop
/* 102B0 80034EB0 0C051FB1 */ jal set_windows_visible
/* 102B4 80034EB4 0000202D */ daddu $a0, $zero, $zero
/* 102B8 80034EB8 0C03A631 */ jal func_800E98C4
/* 102BC 80034EBC 00000000 */ nop
/* 102C0 80034EC0 0C009C22 */ jal func_80027088
/* 102C4 80034EC4 24040001 */ addiu $a0, $zero, 1
/* 102C8 80034EC8 24020003 */ addiu $v0, $zero, 3
/* 102CC 80034ECC 3C048011 */ lui $a0, %hi(gPlayerStatus)
/* 102D0 80034ED0 2484EFC8 */ addiu $a0, $a0, %lo(gPlayerStatus)
/* 102D4 80034ED4 3C01800A */ lui $at, %hi(D_800A0921)
/* 102D8 80034ED8 A0220921 */ sb $v0, %lo(D_800A0921)($at)
/* 102DC 80034EDC 9082000E */ lbu $v0, 0xe($a0)
/* 102E0 80034EE0 3C03802E */ lui $v1, %hi(D_802D9D70)
/* 102E4 80034EE4 90639D70 */ lbu $v1, %lo(D_802D9D70)($v1)
/* 102E8 80034EE8 2442FFFF */ addiu $v0, $v0, -1
/* 102EC 80034EEC 24630001 */ addiu $v1, $v1, 1
/* 102F0 80034EF0 A082000F */ sb $v0, 0xf($a0)
/* 102F4 80034EF4 3C01802E */ lui $at, %hi(D_802D9D71)
/* 102F8 80034EF8 A0239D71 */ sb $v1, %lo(D_802D9D71)($at)
/* 102FC 80034EFC 0C00F949 */ jal update_counters
/* 10300 80034F00 00000000 */ nop
/* 10304 80034F04 0C00E64C */ jal update_npcs
/* 10308 80034F08 00000000 */ nop
/* 1030C 80034F0C 0C037DD0 */ jal update_player
/* 10310 80034F10 00000000 */ nop
/* 10314 80034F14 0C016754 */ jal update_effects
/* 10318 80034F18 00000000 */ nop
/* 1031C 80034F1C 3C03800A */ lui $v1, %hi(D_800A0922)
/* 10320 80034F20 24630922 */ addiu $v1, $v1, %lo(D_800A0922)
/* 10324 80034F24 94620000 */ lhu $v0, ($v1)
/* 10328 80034F28 2442FFEC */ addiu $v0, $v0, -0x14
/* 1032C 80034F2C A4620000 */ sh $v0, ($v1)
/* 10330 80034F30 00021400 */ sll $v0, $v0, 0x10
/* 10334 80034F34 04420028 */ bltzl $v0, .L80034FD8
/* 10338 80034F38 A4600000 */ sh $zero, ($v1)
/* 1033C 80034F3C 0800D3F6 */ j .L80034FD8
/* 10340 80034F40 00000000 */ nop
.L80034F44:
/* 10344 80034F44 0C00F949 */ jal update_counters
/* 10348 80034F48 00000000 */ nop
/* 1034C 80034F4C 0C00E64C */ jal update_npcs
/* 10350 80034F50 00000000 */ nop
/* 10354 80034F54 0C037DD0 */ jal update_player
/* 10358 80034F58 00000000 */ nop
/* 1035C 80034F5C 0C016754 */ jal update_effects
/* 10360 80034F60 00000000 */ nop
/* 10364 80034F64 3C04800A */ lui $a0, %hi(D_800A0922)
/* 10368 80034F68 24840922 */ addiu $a0, $a0, %lo(D_800A0922)
/* 1036C 80034F6C 84820000 */ lh $v0, ($a0)
/* 10370 80034F70 94830000 */ lhu $v1, ($a0)
/* 10374 80034F74 14400004 */ bnez $v0, .L80034F88
/* 10378 80034F78 2462FFEC */ addiu $v0, $v1, -0x14
/* 1037C 80034F7C 24020004 */ addiu $v0, $zero, 4
/* 10380 80034F80 0800D3F6 */ j .L80034FD8
/* 10384 80034F84 A2020000 */ sb $v0, ($s0)
.L80034F88:
/* 10388 80034F88 A4820000 */ sh $v0, ($a0)
/* 1038C 80034F8C 00021400 */ sll $v0, $v0, 0x10
/* 10390 80034F90 04420011 */ bltzl $v0, .L80034FD8
/* 10394 80034F94 A4800000 */ sh $zero, ($a0)
/* 10398 80034F98 0800D3F6 */ j .L80034FD8
/* 1039C 80034F9C 00000000 */ nop
.L80034FA0:
/* 103A0 80034FA0 0C009C22 */ jal func_80027088
/* 103A4 80034FA4 0000202D */ daddu $a0, $zero, $zero
/* 103A8 80034FA8 0C00F949 */ jal update_counters
/* 103AC 80034FAC 00000000 */ nop
/* 103B0 80034FB0 0C00E64C */ jal update_npcs
/* 103B4 80034FB4 00000000 */ nop
/* 103B8 80034FB8 0C037DD0 */ jal update_player
/* 103BC 80034FBC 00000000 */ nop
/* 103C0 80034FC0 0C016754 */ jal update_effects
/* 103C4 80034FC4 00000000 */ nop
/* 103C8 80034FC8 0C038069 */ jal enable_player_input
/* 103CC 80034FCC 00000000 */ nop
/* 103D0 80034FD0 0C00CD3C */ jal set_game_mode
/* 103D4 80034FD4 24040004 */ addiu $a0, $zero, 4
.L80034FD8:
/* 103D8 80034FD8 8FBF0024 */ lw $ra, 0x24($sp)
/* 103DC 80034FDC 8FB20020 */ lw $s2, 0x20($sp)
/* 103E0 80034FE0 8FB1001C */ lw $s1, 0x1c($sp)
/* 103E4 80034FE4 8FB00018 */ lw $s0, 0x18($sp)
/* 103E8 80034FE8 03E00008 */ jr $ra
/* 103EC 80034FEC 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,215 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098290
.word L800341F8_F5F8, L8003411C_F51C, L80034150_F550, L80034170_F570, L800341A8_F5A8, L800341D8_F5D8, L800341F8_F5F8, L80034230_F630, L80034278_F678, L800342D4_F6D4, L800342FC_F6FC, L8003432C_F72C
.section .text
glabel step_logos
/* F4A4 800340A4 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* F4A8 800340A8 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* F4AC 800340AC 27BDFFE8 */ addiu $sp, $sp, -0x18
/* F4B0 800340B0 AFBF0014 */ sw $ra, 0x14($sp)
/* F4B4 800340B4 AFB00010 */ sw $s0, 0x10($sp)
/* F4B8 800340B8 806200AE */ lb $v0, 0xae($v1)
/* F4BC 800340BC 1040000E */ beqz $v0, .L800340F8
/* F4C0 800340C0 00000000 */ nop
/* F4C4 800340C4 0C00CE0C */ jal intro_logos_fade_out
/* F4C8 800340C8 2404000A */ addiu $a0, $zero, 0xa
/* F4CC 800340CC 104000A4 */ beqz $v0, .L80034360
/* F4D0 800340D0 00000000 */ nop
/* F4D4 800340D4 3C013F80 */ lui $at, 0x3f80
/* F4D8 800340D8 44816000 */ mtc1 $at, $f12
/* F4DC 800340DC 0C00AFBB */ jal set_curtain_scale
/* F4E0 800340E0 00000000 */ nop
/* F4E4 800340E4 44806000 */ mtc1 $zero, $f12
/* F4E8 800340E8 0C00AFC9 */ jal set_curtain_fade
/* F4EC 800340EC 00000000 */ nop
/* F4F0 800340F0 0800D0D6 */ j .L80034358
/* F4F4 800340F4 24040002 */ addiu $a0, $zero, 2
.L800340F8:
/* F4F8 800340F8 806300AC */ lb $v1, 0xac($v1)
/* F4FC 800340FC 2C62000C */ sltiu $v0, $v1, 0xc
/* F500 80034100 10400097 */ beqz $v0, .L80034360
/* F504 80034104 00031080 */ sll $v0, $v1, 2
/* F508 80034108 3C01800A */ lui $at, %hi(jtbl_80098290)
/* F50C 8003410C 00220821 */ addu $at, $at, $v0
/* F510 80034110 8C228290 */ lw $v0, %lo(jtbl_80098290)($at)
/* F514 80034114 00400008 */ jr $v0
/* F518 80034118 00000000 */ nop
glabel L8003411C_F51C
/* F51C 8003411C 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* F520 80034120 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* F524 80034124 8E020000 */ lw $v0, ($s0)
/* F528 80034128 804200AD */ lb $v0, 0xad($v0)
/* F52C 8003412C 1440004D */ bnez $v0, .L80034264
/* F530 80034130 00000000 */ nop
/* F534 80034134 0C00CDF8 */ jal intro_logos_set_fade_color
/* F538 80034138 240400D0 */ addiu $a0, $zero, 0xd0
/* F53C 8003413C 8E030000 */ lw $v1, ($s0)
/* F540 80034140 906200AC */ lbu $v0, 0xac($v1)
/* F544 80034144 24420001 */ addiu $v0, $v0, 1
/* F548 80034148 0800D099 */ j .L80034264
/* F54C 8003414C A06200AC */ sb $v0, 0xac($v1)
glabel L80034150_F550
/* F550 80034150 0C00CE0C */ jal intro_logos_fade_out
/* F554 80034154 2404000A */ addiu $a0, $zero, 0xa
/* F558 80034158 10400081 */ beqz $v0, .L80034360
/* F55C 8003415C 00000000 */ nop
/* F560 80034160 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* F564 80034164 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* F568 80034168 0800D0C5 */ j .L80034314
/* F56C 8003416C 00000000 */ nop
glabel L80034170_F570
/* F570 80034170 0C00CDFE */ jal intro_logos_fade_in
/* F574 80034174 2404000A */ addiu $a0, $zero, 0xa
/* F578 80034178 10400079 */ beqz $v0, .L80034360
/* F57C 8003417C 00000000 */ nop
/* F580 80034180 3C048007 */ lui $a0, %hi(gGameStatusPtr)
/* F584 80034184 2484419C */ addiu $a0, $a0, %lo(gGameStatusPtr)
/* F588 80034188 8C830000 */ lw $v1, ($a0)
/* F58C 8003418C 906200AC */ lbu $v0, 0xac($v1)
/* F590 80034190 24420001 */ addiu $v0, $v0, 1
/* F594 80034194 A06200AC */ sb $v0, 0xac($v1)
/* F598 80034198 8C830000 */ lw $v1, ($a0)
/* F59C 8003419C 24020028 */ addiu $v0, $zero, 0x28
/* F5A0 800341A0 0800D0D8 */ j .L80034360
/* F5A4 800341A4 A06200AD */ sb $v0, 0xad($v1)
glabel L800341A8_F5A8
/* F5A8 800341A8 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* F5AC 800341AC 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* F5B0 800341B0 8E030000 */ lw $v1, ($s0)
/* F5B4 800341B4 806200AD */ lb $v0, 0xad($v1)
/* F5B8 800341B8 1440002B */ bnez $v0, .L80034268
/* F5BC 800341BC 240400D0 */ addiu $a0, $zero, 0xd0
/* F5C0 800341C0 906200AC */ lbu $v0, 0xac($v1)
/* F5C4 800341C4 24420001 */ addiu $v0, $v0, 1
/* F5C8 800341C8 0C00CDF8 */ jal intro_logos_set_fade_color
/* F5CC 800341CC A06200AC */ sb $v0, 0xac($v1)
/* F5D0 800341D0 0800D099 */ j .L80034264
/* F5D4 800341D4 00000000 */ nop
glabel L800341D8_F5D8
/* F5D8 800341D8 0C00CE0C */ jal intro_logos_fade_out
/* F5DC 800341DC 2404000A */ addiu $a0, $zero, 0xa
/* F5E0 800341E0 1040005F */ beqz $v0, .L80034360
/* F5E4 800341E4 00000000 */ nop
/* F5E8 800341E8 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* F5EC 800341EC 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* F5F0 800341F0 0800D0C5 */ j .L80034314
/* F5F4 800341F4 00000000 */ nop
glabel L800341F8_F5F8
/* F5F8 800341F8 0C00CDFE */ jal intro_logos_fade_in
/* F5FC 800341FC 2404000A */ addiu $a0, $zero, 0xa
/* F600 80034200 10400057 */ beqz $v0, .L80034360
/* F604 80034204 00000000 */ nop
/* F608 80034208 3C048007 */ lui $a0, %hi(gGameStatusPtr)
/* F60C 8003420C 2484419C */ addiu $a0, $a0, %lo(gGameStatusPtr)
/* F610 80034210 8C830000 */ lw $v1, ($a0)
/* F614 80034214 906200AC */ lbu $v0, 0xac($v1)
/* F618 80034218 24420001 */ addiu $v0, $v0, 1
/* F61C 8003421C A06200AC */ sb $v0, 0xac($v1)
/* F620 80034220 8C830000 */ lw $v1, ($a0)
/* F624 80034224 2402001E */ addiu $v0, $zero, 0x1e
/* F628 80034228 0800D0D8 */ j .L80034360
/* F62C 8003422C A06200AD */ sb $v0, 0xad($v1)
glabel L80034230_F630
/* F630 80034230 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* F634 80034234 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* F638 80034238 8E030000 */ lw $v1, ($s0)
/* F63C 8003423C 806200AD */ lb $v0, 0xad($v1)
/* F640 80034240 14400009 */ bnez $v0, .L80034268
/* F644 80034244 240400D0 */ addiu $a0, $zero, 0xd0
/* F648 80034248 906200AC */ lbu $v0, 0xac($v1)
/* F64C 8003424C 24420001 */ addiu $v0, $v0, 1
/* F650 80034250 0C00CDF8 */ jal intro_logos_set_fade_color
/* F654 80034254 A06200AC */ sb $v0, 0xac($v1)
/* F658 80034258 8E030000 */ lw $v1, ($s0)
/* F65C 8003425C 2402001E */ addiu $v0, $zero, 0x1e
/* F660 80034260 A06200AD */ sb $v0, 0xad($v1)
.L80034264:
/* F664 80034264 8E030000 */ lw $v1, ($s0)
.L80034268:
/* F668 80034268 906200AD */ lbu $v0, 0xad($v1)
/* F66C 8003426C 2442FFFF */ addiu $v0, $v0, -1
/* F670 80034270 0800D0D8 */ j .L80034360
/* F674 80034274 A06200AD */ sb $v0, 0xad($v1)
glabel L80034278_F678
/* F678 80034278 3C048007 */ lui $a0, %hi(gGameStatusPtr)
/* F67C 8003427C 8C84419C */ lw $a0, %lo(gGameStatusPtr)($a0)
/* F680 80034280 808200AD */ lb $v0, 0xad($a0)
/* F684 80034284 908300AD */ lbu $v1, 0xad($a0)
/* F688 80034288 14400010 */ bnez $v0, .L800342CC
/* F68C 8003428C 2462FFFF */ addiu $v0, $v1, -1
/* F690 80034290 908200AC */ lbu $v0, 0xac($a0)
/* F694 80034294 3C013F80 */ lui $at, 0x3f80
/* F698 80034298 44816000 */ mtc1 $at, $f12
/* F69C 8003429C 24420001 */ addiu $v0, $v0, 1
/* F6A0 800342A0 0C00AFB7 */ jal set_curtain_scale_goal
/* F6A4 800342A4 A08200AC */ sb $v0, 0xac($a0)
/* F6A8 800342A8 0C00AFC1 */ jal set_curtain_draw_callback
/* F6AC 800342AC 0000202D */ daddu $a0, $zero, $zero
/* F6B0 800342B0 3C013E99 */ lui $at, 0x3e99
/* F6B4 800342B4 3421999A */ ori $at, $at, 0x999a
/* F6B8 800342B8 44816000 */ mtc1 $at, $f12
/* F6BC 800342BC 0C00AFC5 */ jal set_curtain_fade_goal
/* F6C0 800342C0 00000000 */ nop
/* F6C4 800342C4 0800D0D8 */ j .L80034360
/* F6C8 800342C8 00000000 */ nop
.L800342CC:
/* F6CC 800342CC 0800D0D8 */ j .L80034360
/* F6D0 800342D0 A08200AD */ sb $v0, 0xad($a0)
glabel L800342D4_F6D4
/* F6D4 800342D4 0C00CE0C */ jal intro_logos_fade_out
/* F6D8 800342D8 2404000A */ addiu $a0, $zero, 0xa
/* F6DC 800342DC 10400020 */ beqz $v0, .L80034360
/* F6E0 800342E0 2402000F */ addiu $v0, $zero, 0xf
/* F6E4 800342E4 3C048007 */ lui $a0, %hi(gGameStatusPtr)
/* F6E8 800342E8 2484419C */ addiu $a0, $a0, %lo(gGameStatusPtr)
/* F6EC 800342EC 8C830000 */ lw $v1, ($a0)
/* F6F0 800342F0 A06200AD */ sb $v0, 0xad($v1)
/* F6F4 800342F4 0800D0C5 */ j .L80034314
/* F6F8 800342F8 8C830000 */ lw $v1, ($a0)
glabel L800342FC_F6FC
/* F6FC 800342FC 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* F700 80034300 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* F704 80034304 806200AD */ lb $v0, 0xad($v1)
/* F708 80034308 906400AD */ lbu $a0, 0xad($v1)
/* F70C 8003430C 14400005 */ bnez $v0, .L80034324
/* F710 80034310 2482FFFF */ addiu $v0, $a0, -1
.L80034314:
/* F714 80034314 906200AC */ lbu $v0, 0xac($v1)
/* F718 80034318 24420001 */ addiu $v0, $v0, 1
/* F71C 8003431C 0800D0D8 */ j .L80034360
/* F720 80034320 A06200AC */ sb $v0, 0xac($v1)
.L80034324:
/* F724 80034324 0800D0D8 */ j .L80034360
/* F728 80034328 A06200AD */ sb $v0, 0xad($v1)
glabel L8003432C_F72C
/* F72C 8003432C 3C10800A */ lui $s0, %hi(D_800A0910)
/* F730 80034330 26100910 */ addiu $s0, $s0, %lo(D_800A0910)
/* F734 80034334 0C00AB4B */ jal heap_free
/* F738 80034338 8E040000 */ lw $a0, ($s0)
/* F73C 8003433C 240400FF */ addiu $a0, $zero, 0xff
/* F740 80034340 0C00CDF4 */ jal intro_logos_set_fade_alpha
/* F744 80034344 AE000000 */ sw $zero, ($s0)
/* F748 80034348 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* F74C 8003434C 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* F750 80034350 24040010 */ addiu $a0, $zero, 0x10
/* F754 80034354 A04000A8 */ sb $zero, 0xa8($v0)
.L80034358:
/* F758 80034358 0C00CD3C */ jal set_game_mode
/* F75C 8003435C 00000000 */ nop
.L80034360:
/* F760 80034360 0C00E64C */ jal update_npcs
/* F764 80034364 00000000 */ nop
/* F768 80034368 0C00B500 */ jal update_cameras
/* F76C 8003436C 00000000 */ nop
/* F770 80034370 0C00CE1D */ jal intro_logos_update_fade
/* F774 80034374 00000000 */ nop
/* F778 80034378 8FBF0014 */ lw $ra, 0x14($sp)
/* F77C 8003437C 8FB00010 */ lw $s0, 0x10($sp)
/* F780 80034380 03E00008 */ jr $ra
/* F784 80034384 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,170 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel step_pause_menu
/* FD7C 8003497C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* FD80 80034980 AFB00010 */ sw $s0, 0x10($sp)
/* FD84 80034984 3C10800A */ lui $s0, %hi(D_800A0921)
/* FD88 80034988 26100921 */ addiu $s0, $s0, %lo(D_800A0921)
/* FD8C 8003498C AFBF0018 */ sw $ra, 0x18($sp)
/* FD90 80034990 AFB10014 */ sw $s1, 0x14($sp)
/* FD94 80034994 82110000 */ lb $s1, ($s0)
/* FD98 80034998 12200005 */ beqz $s1, .L800349B0
/* FD9C 8003499C 24020002 */ addiu $v0, $zero, 2
/* FDA0 800349A0 12220022 */ beq $s1, $v0, .L80034A2C
/* FDA4 800349A4 00000000 */ nop
/* FDA8 800349A8 0800D2F8 */ j .L80034BE0
/* FDAC 800349AC 00000000 */ nop
.L800349B0:
/* FDB0 800349B0 0C00F949 */ jal update_counters
/* FDB4 800349B4 00000000 */ nop
/* FDB8 800349B8 0C00E64C */ jal update_npcs
/* FDBC 800349BC 00000000 */ nop
/* FDC0 800349C0 0C037DD0 */ jal update_player
/* FDC4 800349C4 00000000 */ nop
/* FDC8 800349C8 0C016754 */ jal update_effects
/* FDCC 800349CC 00000000 */ nop
/* FDD0 800349D0 3C02800A */ lui $v0, %hi(D_8009A658)
/* FDD4 800349D4 8C42A658 */ lw $v0, %lo(D_8009A658)($v0)
/* FDD8 800349D8 8C430004 */ lw $v1, 4($v0)
/* FDDC 800349DC 3C02800A */ lui $v0, %hi(D_8009A64C)
/* FDE0 800349E0 8C42A64C */ lw $v0, %lo(D_8009A64C)($v0)
/* FDE4 800349E4 1462007E */ bne $v1, $v0, .L80034BE0
/* FDE8 800349E8 24020004 */ addiu $v0, $zero, 4
/* FDEC 800349EC 3C01800A */ lui $at, %hi(D_800A0920)
/* FDF0 800349F0 A0220920 */ sb $v0, %lo(D_800A0920)($at)
/* FDF4 800349F4 24020002 */ addiu $v0, $zero, 2
/* FDF8 800349F8 3C04800A */ lui $a0, %hi(gOverrideFlags)
/* FDFC 800349FC 2484A650 */ addiu $a0, $a0, %lo(gOverrideFlags)
/* FE00 80034A00 A2020000 */ sb $v0, ($s0)
/* FE04 80034A04 3C058007 */ lui $a1, %hi(gGameStatusPtr)
/* FE08 80034A08 8CA5419C */ lw $a1, %lo(gGameStatusPtr)($a1)
/* FE0C 80034A0C 8C820000 */ lw $v0, ($a0)
/* FE10 80034A10 94A30148 */ lhu $v1, 0x148($a1)
/* FE14 80034A14 34420008 */ ori $v0, $v0, 8
/* FE18 80034A18 AC820000 */ sw $v0, ($a0)
/* FE1C 80034A1C 3063FF0F */ andi $v1, $v1, 0xff0f
/* FE20 80034A20 34630010 */ ori $v1, $v1, 0x10
/* FE24 80034A24 0800D2F8 */ j .L80034BE0
/* FE28 80034A28 A4A30148 */ sh $v1, 0x148($a1)
.L80034A2C:
/* FE2C 80034A2C 3C06800A */ lui $a2, %hi(D_800A0920)
/* FE30 80034A30 24C60920 */ addiu $a2, $a2, %lo(D_800A0920)
/* FE34 80034A34 80C30000 */ lb $v1, ($a2)
/* FE38 80034A38 04600056 */ bltz $v1, .L80034B94
/* FE3C 80034A3C 90C20000 */ lbu $v0, ($a2)
/* FE40 80034A40 10600005 */ beqz $v1, .L80034A58
/* FE44 80034A44 2442FFFF */ addiu $v0, $v0, -1
/* FE48 80034A48 A0C20000 */ sb $v0, ($a2)
/* FE4C 80034A4C 00021600 */ sll $v0, $v0, 0x18
/* FE50 80034A50 1440004C */ bnez $v0, .L80034B84
/* FE54 80034A54 00000000 */ nop
.L80034A58:
/* FE58 80034A58 3C048007 */ lui $a0, %hi(D_80077950)
/* FE5C 80034A5C 24847950 */ addiu $a0, $a0, %lo(D_80077950)
/* FE60 80034A60 24050002 */ addiu $a1, $zero, 2
/* FE64 80034A64 2402FFFF */ addiu $v0, $zero, -1
/* FE68 80034A68 0C017CBC */ jal nuGfxSetCfb
/* FE6C 80034A6C A0C20000 */ sb $v0, ($a2)
/* FE70 80034A70 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* FE74 80034A74 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* FE78 80034A78 8E030000 */ lw $v1, ($s0)
/* FE7C 80034A7C 9462015C */ lhu $v0, 0x15c($v1)
/* FE80 80034A80 0C05260E */ jal sfx_stop_env_sounds
/* FE84 80034A84 A462015E */ sh $v0, 0x15e($v1)
/* FE88 80034A88 0C00EC6A */ jal func_8003B1A8
/* FE8C 80034A8C 00000000 */ nop
/* FE90 80034A90 8E020000 */ lw $v0, ($s0)
/* FE94 80034A94 0C016BA8 */ jal allocate_hit_tables
/* FE98 80034A98 A0510070 */ sb $s1, 0x70($v0)
/* FE9C 80034A9C 0C00AB28 */ jal battle_heap_create
/* FEA0 80034AA0 00000000 */ nop
/* FEA4 80034AA4 0C018028 */ jal nuContRmbForceStop
/* FEA8 80034AA8 00000000 */ nop
/* FEAC 80034AAC 0C05259C */ jal func_80149670
/* FEB0 80034AB0 0000202D */ daddu $a0, $zero, $zero
/* FEB4 80034AB4 0C0B763E */ jal func_802DD8F8
/* FEB8 80034AB8 0000202D */ daddu $a0, $zero, $zero
/* FEBC 80034ABC 0C045751 */ jal clear_model_data
/* FEC0 80034AC0 00000000 */ nop
/* FEC4 80034AC4 0C052010 */ jal func_80148040
/* FEC8 80034AC8 00000000 */ nop
/* FECC 80034ACC 0C05177E */ jal use_default_background_settings
/* FED0 80034AD0 00000000 */ nop
/* FED4 80034AD4 0C0482EC */ jal clear_entity_models
/* FED8 80034AD8 00000000 */ nop
/* FEDC 80034ADC 0C047889 */ jal func_8011E224
/* FEE0 80034AE0 00000000 */ nop
/* FEE4 80034AE4 0C048C2E */ jal clear_dynamic_entity_list
/* FEE8 80034AE8 00000000 */ nop
/* FEEC 80034AEC 3C048020 */ lui $a0, %hi(func_80200000)
/* FEF0 80034AF0 24840000 */ addiu $a0, $a0, %lo(func_80200000)
/* FEF4 80034AF4 3C050003 */ lui $a1, 3
/* FEF8 80034AF8 0C0514BA */ jal func_801452E8
/* FEFC 80034AFC 34A58000 */ ori $a1, $a1, 0x8000
/* FF00 80034B00 0C050440 */ jal func_80141100
/* FF04 80034B04 00000000 */ nop
/* FF08 80034B08 0C03A6EC */ jal reset_status_menu
/* FF0C 80034B0C 00000000 */ nop
/* FF10 80034B10 0C04C3FC */ jal clear_item_entity_data
/* FF14 80034B14 00000000 */ nop
/* FF18 80034B18 0C0B0C77 */ jal clear_script_list
/* FF1C 80034B1C 00000000 */ nop
/* FF20 80034B20 0C00E12F */ jal clear_npcs
/* FF24 80034B24 00000000 */ nop
/* FF28 80034B28 0C04432E */ jal clear_entity_data
/* FF2C 80034B2C 0000202D */ daddu $a0, $zero, $zero
/* FF30 80034B30 0C0515A0 */ jal clear_trigger_data
/* FF34 80034B34 00000000 */ nop
/* FF38 80034B38 0C05260A */ jal func_80149828
/* FF3C 80034B3C 00000000 */ nop
/* FF40 80034B40 3C01800A */ lui $at, %hi(D_800A0924)
/* FF44 80034B44 AC220924 */ sw $v0, %lo(D_800A0924)($at)
/* FF48 80034B48 0C0525FF */ jal func_801497FC
/* FF4C 80034B4C 0000202D */ daddu $a0, $zero, $zero
/* FF50 80034B50 0C052B17 */ jal bgm_quiet_max_volume
/* FF54 80034B54 00000000 */ nop
/* FF58 80034B58 3C048007 */ lui $a0, %hi(D_8007795C)
/* FF5C 80034B5C 0C018038 */ jal nuPiReadRomOverlay
/* FF60 80034B60 2484795C */ addiu $a0, $a0, %lo(D_8007795C)
/* FF64 80034B64 0C091018 */ jal pause_init
/* FF68 80034B68 00000000 */ nop
/* FF6C 80034B6C 3C04800A */ lui $a0, %hi(gOverrideFlags)
/* FF70 80034B70 2484A650 */ addiu $a0, $a0, %lo(gOverrideFlags)
/* FF74 80034B74 8C820000 */ lw $v0, ($a0)
/* FF78 80034B78 2403FFF7 */ addiu $v1, $zero, -9
/* FF7C 80034B7C 00431024 */ and $v0, $v0, $v1
/* FF80 80034B80 AC820000 */ sw $v0, ($a0)
.L80034B84:
/* FF84 80034B84 3C02800A */ lui $v0, %hi(D_800A0920)
/* FF88 80034B88 80420920 */ lb $v0, %lo(D_800A0920)($v0)
/* FF8C 80034B8C 04410014 */ bgez $v0, .L80034BE0
/* FF90 80034B90 00000000 */ nop
.L80034B94:
/* FF94 80034B94 3C10800A */ lui $s0, %hi(D_800A0920)
/* FF98 80034B98 26100920 */ addiu $s0, $s0, %lo(D_800A0920)
/* FF9C 80034B9C 82020000 */ lb $v0, ($s0)
/* FFA0 80034BA0 2842FFF6 */ slti $v0, $v0, -0xa
/* FFA4 80034BA4 14400007 */ bnez $v0, .L80034BC4
/* FFA8 80034BA8 0000202D */ daddu $a0, $zero, $zero
/* FFAC 80034BAC 0C091109 */ jal pause_handle_input
/* FFB0 80034BB0 0080282D */ daddu $a1, $a0, $zero
/* FFB4 80034BB4 92020000 */ lbu $v0, ($s0)
/* FFB8 80034BB8 2442FFFF */ addiu $v0, $v0, -1
/* FFBC 80034BBC 0800D2F6 */ j .L80034BD8
/* FFC0 80034BC0 A2020000 */ sb $v0, ($s0)
.L80034BC4:
/* FFC4 80034BC4 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* FFC8 80034BC8 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* FFCC 80034BCC 8C440010 */ lw $a0, 0x10($v0)
/* FFD0 80034BD0 0C091109 */ jal pause_handle_input
/* FFD4 80034BD4 8C450020 */ lw $a1, 0x20($v0)
.L80034BD8:
/* FFD8 80034BD8 3C01800A */ lui $at, %hi(D_800A0922)
/* FFDC 80034BDC A4200922 */ sh $zero, %lo(D_800A0922)($at)
.L80034BE0:
/* FFE0 80034BE0 8FBF0018 */ lw $ra, 0x18($sp)
/* FFE4 80034BE4 8FB10014 */ lw $s1, 0x14($sp)
/* FFE8 80034BE8 8FB00010 */ lw $s0, 0x10($sp)
/* FFEC 80034BEC 03E00008 */ jr $ra
/* FFF0 80034BF0 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -557,8 +557,8 @@ glabel L80242C2C_96BDEC
/* 96BE14 80242C54 24A70010 */ addiu $a3, $a1, 0x10 /* 96BE14 80242C54 24A70010 */ addiu $a3, $a1, 0x10
/* 96BE18 80242C58 C7AA0058 */ lwc1 $f10, 0x58($sp) /* 96BE18 80242C58 C7AA0058 */ lwc1 $f10, 0x58($sp)
/* 96BE1C 80242C5C C7A80060 */ lwc1 $f8, 0x60($sp) /* 96BE1C 80242C5C C7A80060 */ lwc1 $f8, 0x60($sp)
/* 96BE20 80242C60 3C018025 */ lui $at, %hi(gPauseMenuIconScripts) /* 96BE20 80242C60 3C018025 */ lui $at, %hi(D_8024EF60_978120)
/* 96BE24 80242C64 D424EF60 */ ldc1 $f4, %lo(gPauseMenuIconScripts)($at) /* 96BE24 80242C64 D424EF60 */ ldc1 $f4, %lo(D_8024EF60_978120)($at)
/* 96BE28 80242C68 3C013DCC */ lui $at, 0x3dcc /* 96BE28 80242C68 3C013DCC */ lui $at, 0x3dcc
/* 96BE2C 80242C6C 3421CCCD */ ori $at, $at, 0xcccd /* 96BE2C 80242C6C 3421CCCD */ ori $at, $at, 0xcccd
/* 96BE30 80242C70 44816000 */ mtc1 $at, $f12 /* 96BE30 80242C70 44816000 */ mtc1 $at, $f12

View File

@ -1,346 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098A10
.word 0x25735F73, 0x68617065, 0x00000000
glabel D_80098A1C
.word 0x25735F68, 0x69740000
glabel D_80098A24
.word 0x25735F74, 0x65780000
.section .text
glabel load_map_by_IDs
/* 35AF4 8005A6F4 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 35AF8 8005A6F8 AFB00038 */ sw $s0, 0x38($sp)
/* 35AFC 8005A6FC 00C0802D */ daddu $s0, $a2, $zero
/* 35B00 8005A700 AFB1003C */ sw $s1, 0x3c($sp)
/* 35B04 8005A704 0080882D */ daddu $s1, $a0, $zero
/* 35B08 8005A708 AFB30044 */ sw $s3, 0x44($sp)
/* 35B0C 8005A70C 00A0982D */ daddu $s3, $a1, $zero
/* 35B10 8005A710 AFB40048 */ sw $s4, 0x48($sp)
/* 35B14 8005A714 0000A02D */ daddu $s4, $zero, $zero
/* 35B18 8005A718 AFBF004C */ sw $ra, 0x4c($sp)
/* 35B1C 8005A71C 0C05260E */ jal sfx_stop_env_sounds
/* 35B20 8005A720 AFB20040 */ sw $s2, 0x40($sp)
/* 35B24 8005A724 3C05800A */ lui $a1, %hi(gOverrideFlags)
/* 35B28 8005A728 24A5A650 */ addiu $a1, $a1, %lo(gOverrideFlags)
/* 35B2C 8005A72C 2402FFBF */ addiu $v0, $zero, -0x41
/* 35B30 8005A730 3C128007 */ lui $s2, %hi(gGameStatusPtr)
/* 35B34 8005A734 2652419C */ addiu $s2, $s2, %lo(gGameStatusPtr)
/* 35B38 8005A738 8CA30000 */ lw $v1, ($a1)
/* 35B3C 8005A73C 8E440000 */ lw $a0, ($s2)
/* 35B40 8005A740 00621824 */ and $v1, $v1, $v0
/* 35B44 8005A744 2402FF7F */ addiu $v0, $zero, -0x81
/* 35B48 8005A748 00621824 */ and $v1, $v1, $v0
/* 35B4C 8005A74C ACA30000 */ sw $v1, ($a1)
/* 35B50 8005A750 0C00B458 */ jal func_8002D160
/* 35B54 8005A754 A0800084 */ sb $zero, 0x84($a0)
/* 35B58 8005A758 0C0AC81E */ jal func_802B2078
/* 35B5C 8005A75C 00108400 */ sll $s0, $s0, 0x10
/* 35B60 8005A760 0C047624 */ jal func_8011D890
/* 35B64 8005A764 00108403 */ sra $s0, $s0, 0x10
/* 35B68 8005A768 0C048C2E */ jal clear_dynamic_entity_list
/* 35B6C 8005A76C 00000000 */ nop
/* 35B70 8005A770 0C0B0C77 */ jal clear_script_list
/* 35B74 8005A774 00000000 */ nop
/* 35B78 8005A778 12000005 */ beqz $s0, .L8005A790
/* 35B7C 8005A77C 24020001 */ addiu $v0, $zero, 1
/* 35B80 8005A780 12020008 */ beq $s0, $v0, .L8005A7A4
/* 35B84 8005A784 00000000 */ nop
/* 35B88 8005A788 080169F0 */ j .L8005A7C0
/* 35B8C 8005A78C 00000000 */ nop
.L8005A790:
/* 35B90 8005A790 0C0514E4 */ jal clear_area_flags
/* 35B94 8005A794 00000000 */ nop
/* 35B98 8005A798 8E420000 */ lw $v0, ($s2)
/* 35B9C 8005A79C 080169F0 */ j .L8005A7C0
/* 35BA0 8005A7A0 A0400167 */ sb $zero, 0x167($v0)
.L8005A7A4:
/* 35BA4 8005A7A4 0C00AD24 */ jal fio_deserialize_state
/* 35BA8 8005A7A8 00000000 */ nop
/* 35BAC 8005A7AC 8E420000 */ lw $v0, ($s2)
/* 35BB0 8005A7B0 94510086 */ lhu $s1, 0x86($v0)
/* 35BB4 8005A7B4 9453008C */ lhu $s3, 0x8c($v0)
/* 35BB8 8005A7B8 A0500167 */ sb $s0, 0x167($v0)
/* 35BBC 8005A7BC A4510088 */ sh $s1, 0x88($v0)
.L8005A7C0:
/* 35BC0 8005A7C0 3C04800E */ lui $a0, %hi(D_800D9230)
/* 35BC4 8005A7C4 24849230 */ addiu $a0, $a0, %lo(D_800D9230)
/* 35BC8 8005A7C8 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 35BCC 8005A7CC 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* 35BD0 8005A7D0 00131C00 */ sll $v1, $s3, 0x10
/* 35BD4 8005A7D4 AC400144 */ sw $zero, 0x144($v0)
/* 35BD8 8005A7D8 00111400 */ sll $v0, $s1, 0x10
/* 35BDC 8005A7DC 00021303 */ sra $v0, $v0, 0xc
/* 35BE0 8005A7E0 3C018009 */ lui $at, %hi(gAreas+0x4)
/* 35BE4 8005A7E4 00220821 */ addu $at, $at, $v0
/* 35BE8 8005A7E8 8C2234F4 */ lw $v0, %lo(gAreas+0x4)($at)
/* 35BEC 8005A7EC 00031AC3 */ sra $v1, $v1, 0xb
/* 35BF0 8005A7F0 00439021 */ addu $s2, $v0, $v1
/* 35BF4 8005A7F4 8E460000 */ lw $a2, ($s2)
/* 35BF8 8005A7F8 3C05800A */ lui $a1, %hi(D_80098A10)
/* 35BFC 8005A7FC 0C01953C */ jal sprintf
/* 35C00 8005A800 24A58A10 */ addiu $a1, $a1, %lo(D_80098A10)
/* 35C04 8005A804 3C04800E */ lui $a0, %hi(D_800D91E0)
/* 35C08 8005A808 248491E0 */ addiu $a0, $a0, %lo(D_800D91E0)
/* 35C0C 8005A80C 8E460000 */ lw $a2, ($s2)
/* 35C10 8005A810 3C05800A */ lui $a1, %hi(D_80098A1C)
/* 35C14 8005A814 0C01953C */ jal sprintf
/* 35C18 8005A818 24A58A1C */ addiu $a1, $a1, %lo(D_80098A1C)
/* 35C1C 8005A81C 8E450000 */ lw $a1, ($s2)
/* 35C20 8005A820 0C01BB50 */ jal strcpy
/* 35C24 8005A824 27A40018 */ addiu $a0, $sp, 0x18
/* 35C28 8005A828 3C04800B */ lui $a0, %hi(D_800B0CF0)
/* 35C2C 8005A82C 24840CF0 */ addiu $a0, $a0, %lo(D_800B0CF0)
/* 35C30 8005A830 3C05800A */ lui $a1, %hi(D_80098A24)
/* 35C34 8005A834 24A58A24 */ addiu $a1, $a1, %lo(D_80098A24)
/* 35C38 8005A838 27A60018 */ addiu $a2, $sp, 0x18
/* 35C3C 8005A83C 0C01953C */ jal sprintf
/* 35C40 8005A840 A3A0001B */ sb $zero, 0x1b($sp)
/* 35C44 8005A844 8E450014 */ lw $a1, 0x14($s2)
/* 35C48 8005A848 3C01800A */ lui $at, %hi(D_800A41E0)
/* 35C4C 8005A84C AC3241E0 */ sw $s2, %lo(D_800A41E0)($at)
/* 35C50 8005A850 10A00005 */ beqz $a1, .L8005A868
/* 35C54 8005A854 00000000 */ nop
/* 35C58 8005A858 3C04800E */ lui $a0, %hi(D_800D9668)
/* 35C5C 8005A85C 24849668 */ addiu $a0, $a0, %lo(D_800D9668)
/* 35C60 8005A860 0C01BB50 */ jal strcpy
/* 35C64 8005A864 00000000 */ nop
.L8005A868:
/* 35C68 8005A868 0C0169B0 */ jal load_world_script_api
/* 35C6C 8005A86C 00000000 */ nop
/* 35C70 8005A870 8E440008 */ lw $a0, 8($s2)
/* 35C74 8005A874 10800004 */ beqz $a0, .L8005A888
/* 35C78 8005A878 00000000 */ nop
/* 35C7C 8005A87C 8E45000C */ lw $a1, 0xc($s2)
/* 35C80 8005A880 0C00A5CF */ jal dma_copy
/* 35C84 8005A884 8E460010 */ lw $a2, 0x10($s2)
.L8005A888:
/* 35C88 8005A888 8E420004 */ lw $v0, 4($s2)
/* 35C8C 8005A88C 3C03800A */ lui $v1, %hi(D_800A41E8)
/* 35C90 8005A890 246341E8 */ addiu $v1, $v1, %lo(D_800A41E8)
/* 35C94 8005A894 24440040 */ addiu $a0, $v0, 0x40
.L8005A898:
/* 35C98 8005A898 8C480000 */ lw $t0, ($v0)
/* 35C9C 8005A89C 8C490004 */ lw $t1, 4($v0)
/* 35CA0 8005A8A0 8C4A0008 */ lw $t2, 8($v0)
/* 35CA4 8005A8A4 8C4B000C */ lw $t3, 0xc($v0)
/* 35CA8 8005A8A8 AC680000 */ sw $t0, ($v1)
/* 35CAC 8005A8AC AC690004 */ sw $t1, 4($v1)
/* 35CB0 8005A8B0 AC6A0008 */ sw $t2, 8($v1)
/* 35CB4 8005A8B4 AC6B000C */ sw $t3, 0xc($v1)
/* 35CB8 8005A8B8 24420010 */ addiu $v0, $v0, 0x10
/* 35CBC 8005A8BC 1444FFF6 */ bne $v0, $a0, .L8005A898
/* 35CC0 8005A8C0 24630010 */ addiu $v1, $v1, 0x10
/* 35CC4 8005A8C4 8E420018 */ lw $v0, 0x18($s2)
/* 35CC8 8005A8C8 3C13800A */ lui $s3, %hi(D_800A41E8)
/* 35CCC 8005A8CC 267341E8 */ addiu $s3, $s3, %lo(D_800A41E8)
/* 35CD0 8005A8D0 10400004 */ beqz $v0, .L8005A8E4
/* 35CD4 8005A8D4 00000000 */ nop
/* 35CD8 8005A8D8 0040F809 */ jalr $v0
/* 35CDC 8005A8DC 00000000 */ nop
/* 35CE0 8005A8E0 0040A02D */ daddu $s4, $v0, $zero
.L8005A8E4:
/* 35CE4 8005A8E4 16800015 */ bnez $s4, .L8005A93C
/* 35CE8 8005A8E8 00000000 */ nop
/* 35CEC 8005A8EC 3C04800E */ lui $a0, %hi(D_800D9230)
/* 35CF0 8005A8F0 24849230 */ addiu $a0, $a0, %lo(D_800D9230)
/* 35CF4 8005A8F4 0C016B3A */ jal load_asset_by_name
/* 35CF8 8005A8F8 27A50030 */ addiu $a1, $sp, 0x30
/* 35CFC 8005A8FC 0040882D */ daddu $s1, $v0, $zero
/* 35D00 8005A900 0220202D */ daddu $a0, $s1, $zero
/* 35D04 8005A904 3C108021 */ lui $s0, %hi(D_80210000)
/* 35D08 8005A908 26100000 */ addiu $s0, $s0, %lo(D_80210000)
/* 35D0C 8005A90C 0C01BB7C */ jal decode_yay0
/* 35D10 8005A910 0200282D */ daddu $a1, $s0, $zero
/* 35D14 8005A914 0C00AB1E */ jal general_heap_free
/* 35D18 8005A918 0220202D */ daddu $a0, $s1, $zero
/* 35D1C 8005A91C 8E020000 */ lw $v0, ($s0)
/* 35D20 8005A920 8E030008 */ lw $v1, 8($s0)
/* 35D24 8005A924 8E04000C */ lw $a0, 0xc($s0)
/* 35D28 8005A928 8E050010 */ lw $a1, 0x10($s0)
/* 35D2C 8005A92C AE620000 */ sw $v0, ($s3)
/* 35D30 8005A930 AE630028 */ sw $v1, 0x28($s3)
/* 35D34 8005A934 AE64002C */ sw $a0, 0x2c($s3)
/* 35D38 8005A938 AE650030 */ sw $a1, 0x30($s3)
.L8005A93C:
/* 35D3C 8005A93C 8E420014 */ lw $v0, 0x14($s2)
/* 35D40 8005A940 10400005 */ beqz $v0, .L8005A958
/* 35D44 8005A944 00000000 */ nop
/* 35D48 8005A948 3C04800E */ lui $a0, %hi(D_800D9668)
/* 35D4C 8005A94C 24849668 */ addiu $a0, $a0, %lo(D_800D9668)
/* 35D50 8005A950 0C05175C */ jal load_map_bg
/* 35D54 8005A954 00000000 */ nop
.L8005A958:
/* 35D58 8005A958 0C00B458 */ jal func_8002D160
/* 35D5C 8005A95C 00000000 */ nop
/* 35D60 8005A960 0C0AC81E */ jal func_802B2078
/* 35D64 8005A964 00000000 */ nop
/* 35D68 8005A968 0C05259C */ jal func_80149670
/* 35D6C 8005A96C 0000202D */ daddu $a0, $zero, $zero
/* 35D70 8005A970 0C048C2E */ jal clear_dynamic_entity_list
/* 35D74 8005A974 00000000 */ nop
/* 35D78 8005A978 0C0B0C77 */ jal clear_script_list
/* 35D7C 8005A97C 00000000 */ nop
/* 35D80 8005A980 0C00B7BD */ jal create_cameras_a
/* 35D84 8005A984 00000000 */ nop
/* 35D88 8005A988 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* 35D8C 8005A98C 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* 35D90 8005A990 8E020000 */ lw $v0, ($s0)
/* 35D94 8005A994 0C0B763E */ jal func_802DD8F8
/* 35D98 8005A998 80440084 */ lb $a0, 0x84($v0)
/* 35D9C 8005A99C 0C047889 */ jal func_8011E224
/* 35DA0 8005A9A0 00000000 */ nop
/* 35DA4 8005A9A4 0C0482EC */ jal clear_entity_models
/* 35DA8 8005A9A8 00000000 */ nop
/* 35DAC 8005A9AC 0C00E12F */ jal clear_npcs
/* 35DB0 8005A9B0 00000000 */ nop
/* 35DB4 8005A9B4 0C050440 */ jal func_80141100
/* 35DB8 8005A9B8 00000000 */ nop
/* 35DBC 8005A9BC 0C0515A0 */ jal clear_trigger_data
/* 35DC0 8005A9C0 00000000 */ nop
/* 35DC4 8005A9C4 0C045751 */ jal clear_model_data
/* 35DC8 8005A9C8 00000000 */ nop
/* 35DCC 8005A9CC 0C052010 */ jal func_80148040
/* 35DD0 8005A9D0 00000000 */ nop
/* 35DD4 8005A9D4 0C05177E */ jal use_default_background_settings
/* 35DD8 8005A9D8 00000000 */ nop
/* 35DDC 8005A9DC 8E020000 */ lw $v0, ($s0)
/* 35DE0 8005A9E0 804300A8 */ lb $v1, 0xa8($v0)
/* 35DE4 8005A9E4 2402FFFF */ addiu $v0, $zero, -1
/* 35DE8 8005A9E8 14620003 */ bne $v1, $v0, .L8005A9F8
/* 35DEC 8005A9EC 00000000 */ nop
/* 35DF0 8005A9F0 0C04E062 */ jal func_80138188
/* 35DF4 8005A9F4 00000000 */ nop
.L8005A9F8:
/* 35DF8 8005A9F8 16800005 */ bnez $s4, .L8005AA10
/* 35DFC 8005A9FC 00000000 */ nop
/* 35E00 8005AA00 0C016BE5 */ jal initialize_collision
/* 35E04 8005AA04 00000000 */ nop
/* 35E08 8005AA08 0C016BF0 */ jal load_hit_asset
/* 35E0C 8005AA0C 00000000 */ nop
.L8005AA10:
/* 35E10 8005AA10 0C01CACC */ jal func_80072B30
/* 35E14 8005AA14 00000000 */ nop
/* 35E18 8005AA18 0C00F900 */ jal clear_encounter_status
/* 35E1C 8005AA1C 00000000 */ nop
/* 35E20 8005AA20 0C04432E */ jal clear_entity_data
/* 35E24 8005AA24 24040001 */ addiu $a0, $zero, 1
/* 35E28 8005AA28 0C016727 */ jal clear_effect_data
/* 35E2C 8005AA2C 00000000 */ nop
/* 35E30 8005AA30 0C037F14 */ jal clear_player_status
/* 35E34 8005AA34 00000000 */ nop
/* 35E38 8005AA38 0C037F1D */ jal func_800DFC74
/* 35E3C 8005AA3C 00000000 */ nop
/* 35E40 8005AA40 0C03AD1D */ jal partner_reset_data
/* 35E44 8005AA44 00000000 */ nop
/* 35E48 8005AA48 0C048D9D */ jal clear_printers
/* 35E4C 8005AA4C 00000000 */ nop
/* 35E50 8005AA50 0C04C3FC */ jal clear_item_entity_data
/* 35E54 8005AA54 00000000 */ nop
/* 35E58 8005AA58 3C028011 */ lui $v0, %hi(gPlayerStatus)
/* 35E5C 8005AA5C 2442EFC8 */ addiu $v0, $v0, %lo(gPlayerStatus)
/* 35E60 8005AA60 C4400084 */ lwc1 $f0, 0x84($v0)
/* 35E64 8005AA64 E4400080 */ swc1 $f0, 0x80($v0)
/* 35E68 8005AA68 8E42001C */ lw $v0, 0x1c($s2)
/* 35E6C 8005AA6C 30420003 */ andi $v0, $v0, 3
/* 35E70 8005AA70 00021080 */ sll $v0, $v0, 2
/* 35E74 8005AA74 3C048009 */ lui $a0, %hi(D_8008FF60)
/* 35E78 8005AA78 00822021 */ addu $a0, $a0, $v0
/* 35E7C 8005AA7C 0C0525FF */ jal func_801497FC
/* 35E80 8005AA80 8C84FF60 */ lw $a0, %lo(D_8008FF60)($a0)
/* 35E84 8005AA84 0C052580 */ jal sfx_reset_door_sounds
/* 35E88 8005AA88 00000000 */ nop
/* 35E8C 8005AA8C 1680000B */ bnez $s4, .L8005AABC
/* 35E90 8005AA90 00000000 */ nop
/* 35E94 8005AA94 3C04800B */ lui $a0, %hi(D_800B0CF0)
/* 35E98 8005AA98 24840CF0 */ addiu $a0, $a0, %lo(D_800B0CF0)
/* 35E9C 8005AA9C 0C016B74 */ jal get_asset_offset
/* 35EA0 8005AAA0 27A50030 */ addiu $a1, $sp, 0x30
/* 35EA4 8005AAA4 8E640000 */ lw $a0, ($s3)
/* 35EA8 8005AAA8 10800004 */ beqz $a0, .L8005AABC
/* 35EAC 8005AAAC 00000000 */ nop
/* 35EB0 8005AAB0 8FA60030 */ lw $a2, 0x30($sp)
/* 35EB4 8005AAB4 0C046B52 */ jal load_data_for_models
/* 35EB8 8005AAB8 0040282D */ daddu $a1, $v0, $zero
.L8005AABC:
/* 35EBC 8005AABC 8E640038 */ lw $a0, 0x38($s3)
/* 35EC0 8005AAC0 50800005 */ beql $a0, $zero, .L8005AAD8
/* 35EC4 8005AAC4 24040128 */ addiu $a0, $zero, 0x128
/* 35EC8 8005AAC8 0C05178A */ jal read_background_size
/* 35ECC 8005AACC 00000000 */ nop
/* 35ED0 8005AAD0 08016ABA */ j .L8005AAE8
/* 35ED4 8005AAD4 00000000 */ nop
.L8005AAD8:
/* 35ED8 8005AAD8 240500C8 */ addiu $a1, $zero, 0xc8
/* 35EDC 8005AADC 2406000C */ addiu $a2, $zero, 0xc
/* 35EE0 8005AAE0 0C05179C */ jal set_background_size
/* 35EE4 8005AAE4 24070014 */ addiu $a3, $zero, 0x14
.L8005AAE8:
/* 35EE8 8005AAE8 3C04800B */ lui $a0, %hi(gCameras)
/* 35EEC 8005AAEC 24841D80 */ addiu $a0, $a0, %lo(gCameras)
/* 35EF0 8005AAF0 94820000 */ lhu $v0, ($a0)
/* 35EF4 8005AAF4 94830AB0 */ lhu $v1, 0xab0($a0)
/* 35EF8 8005AAF8 3C018007 */ lui $at, %hi(gCurrentCameraID)
/* 35EFC 8005AAFC AC207410 */ sw $zero, %lo(gCurrentCameraID)($at)
/* 35F00 8005AB00 34420002 */ ori $v0, $v0, 2
/* 35F04 8005AB04 A4820000 */ sh $v0, ($a0)
/* 35F08 8005AB08 94820558 */ lhu $v0, 0x558($a0)
/* 35F0C 8005AB0C 34630002 */ ori $v1, $v1, 2
/* 35F10 8005AB10 A4830AB0 */ sh $v1, 0xab0($a0)
/* 35F14 8005AB14 34420002 */ ori $v0, $v0, 2
/* 35F18 8005AB18 A4820558 */ sh $v0, 0x558($a0)
/* 35F1C 8005AB1C 94821008 */ lhu $v0, 0x1008($a0)
/* 35F20 8005AB20 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 35F24 8005AB24 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 35F28 8005AB28 34420002 */ ori $v0, $v0, 2
/* 35F2C 8005AB2C A4821008 */ sh $v0, 0x1008($a0)
/* 35F30 8005AB30 806300A8 */ lb $v1, 0xa8($v1)
/* 35F34 8005AB34 2402FFFF */ addiu $v0, $zero, -1
/* 35F38 8005AB38 14620008 */ bne $v1, $v0, .L8005AB5C
/* 35F3C 8005AB3C 240200A2 */ addiu $v0, $zero, 0xa2
/* 35F40 8005AB40 240200C8 */ addiu $v0, $zero, 0xc8
/* 35F44 8005AB44 AFA20010 */ sw $v0, 0x10($sp)
/* 35F48 8005AB48 0000202D */ daddu $a0, $zero, $zero
/* 35F4C 8005AB4C 2405000C */ addiu $a1, $zero, 0xc
/* 35F50 8005AB50 24060014 */ addiu $a2, $zero, 0x14
/* 35F54 8005AB54 08016ADC */ j .L8005AB70
/* 35F58 8005AB58 24070128 */ addiu $a3, $zero, 0x128
.L8005AB5C:
/* 35F5C 8005AB5C AFA20010 */ sw $v0, 0x10($sp)
/* 35F60 8005AB60 0000202D */ daddu $a0, $zero, $zero
/* 35F64 8005AB64 2405001D */ addiu $a1, $zero, 0x1d
/* 35F68 8005AB68 2406001C */ addiu $a2, $zero, 0x1c
/* 35F6C 8005AB6C 24070106 */ addiu $a3, $zero, 0x106
.L8005AB70:
/* 35F70 8005AB70 0C00B8C5 */ jal set_cam_viewport
/* 35F74 8005AB74 00000000 */ nop
/* 35F78 8005AB78 0C039E4D */ jal initialize_status_menu
/* 35F7C 8005AB7C 00000000 */ nop
/* 35F80 8005AB80 0000282D */ daddu $a1, $zero, $zero
/* 35F84 8005AB84 00A0302D */ daddu $a2, $a1, $zero
/* 35F88 8005AB88 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* 35F8C 8005AB8C 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* 35F90 8005AB90 8E030000 */ lw $v1, ($s0)
/* 35F94 8005AB94 240203E8 */ addiu $v0, $zero, 0x3e8
/* 35F98 8005AB98 A4620090 */ sh $v0, 0x90($v1)
/* 35F9C 8005AB9C A4620092 */ sh $v0, 0x92($v1)
/* 35FA0 8005ABA0 8E640010 */ lw $a0, 0x10($s3)
/* 35FA4 8005ABA4 0C0B0D74 */ jal start_script_in_group
/* 35FA8 8005ABA8 00A0382D */ daddu $a3, $a1, $zero
/* 35FAC 8005ABAC 8E030000 */ lw $v1, ($s0)
/* 35FB0 8005ABB0 8C420144 */ lw $v0, 0x144($v0)
/* 35FB4 8005ABB4 AC62006C */ sw $v0, 0x6c($v1)
/* 35FB8 8005ABB8 8FBF004C */ lw $ra, 0x4c($sp)
/* 35FBC 8005ABBC 8FB40048 */ lw $s4, 0x48($sp)
/* 35FC0 8005ABC0 8FB30044 */ lw $s3, 0x44($sp)
/* 35FC4 8005ABC4 8FB20040 */ lw $s2, 0x40($sp)
/* 35FC8 8005ABC8 8FB1003C */ lw $s1, 0x3c($sp)
/* 35FCC 8005ABCC 8FB00038 */ lw $s0, 0x38($sp)
/* 35FD0 8005ABD0 03E00008 */ jr $ra
/* 35FD4 8005ABD4 27BD0050 */ addiu $sp, $sp, 0x50

View File

@ -1,2 +1,7 @@
dead_atan2 = 0x8002AF70; dead_atan2 = 0x8002AF70;
D_800FFC90 = 0x800FFC90; dead_get_variable = 0x802D4E8C;
dead_set_variable = 0x802D5468;
dead_get_float_variable = 0x802D57FC;
dead_cos_rad = 0x8002B4C0;
dead_set_float_variable = 0x802D5A10;
dead_func_8006FEF0 = 0x80075170;

View File

@ -201,7 +201,7 @@ segments:
- [0x457c0, c, os/code_457c0_len_270] - [0x457c0, c, os/code_457c0_len_270]
- [0x45a30, c, os/code_45a30_len_20] - [0x45a30, c, os/code_45a30_len_20]
- [0x45a50, c, os/code_45a50_len_3a0] - [0x45a50, c, os/code_45a50_len_3a0]
- [0x45df0, hasm, os/exceptasm, skip] - [0x45df0, hasm, os/exceptasm]
- [0x46760, hasm, os/__osDisableInt] - [0x46760, hasm, os/__osDisableInt]
- [0x467D0, hasm, os/__osRestoreInt] - [0x467D0, hasm, os/__osRestoreInt]
- [0x467f0, c, os/code_467f0_len_90] - [0x467f0, c, os/code_467f0_len_90]
@ -240,12 +240,14 @@ segments:
- [0x4F660, .data, code_42e0_len_1f60] - [0x4F660, .data, code_42e0_len_1f60]
- [0x4F670, .data, code_43F0] - [0x4F670, .data, code_43F0]
- [0x4F9D0, data, code_6240_len_c00] - [0x4F9D0, data, code_6240_len_c00]
- [0x52D08, .data, code_f270_len_1190]
- [0x52D80, data]
- [0x53570, .data, code_25f00_len_940] - [0x53570, .data, code_25f00_len_940]
- [0x53590, data, code_26840_len_20d0] - [0x53590, data, code_26840_len_20d0]
- [0x541B0, .data, code_30450] - [0x541B0, .data, code_30450]
- [0x54250, .data, code_31650] - [0x54250, .data, code_31650]
- [0x542E0, data] - [0x542E0, data]
- [0x6B450, .data, world/world] - [0x6B360, .data, world/world]
- [0x6EAC0, data] # has scripts - [0x6EAC0, data] # has scripts
- [0x6F0E0, .data, os/nusys/nuContRmbMgr] - [0x6F0E0, .data, os/nusys/nuContRmbMgr]
- [0x6F110, .data, os/nusys/nuGfxFuncSet] - [0x6F110, .data, os/nusys/nuGfxFuncSet]
@ -1106,9 +1108,12 @@ segments:
- [0x1E9790, palette, icon/badge/heart_finder] - [0x1E9790, palette, icon/badge/heart_finder]
- [0x1E97B0, palette, icon/badge/heart_finder.disabled] - [0x1E97B0, palette, icon/badge/heart_finder.disabled]
- [0x1E97D0, bin] # icon images and palettes, vram unknown - [0x1E97D0, bin] # icon images and palettes, vram unknown
- [0x1FE1B0, rgba16, title/logo_n64, 128, 112] - type: code
- [0x2051B0, rgba16, title/logo_is, 256, 122] start: 0x1FE1B0
- [0x2131B0, rgba16, title/logo_nintendo, 256, 48] subsections:
- [0x1FE1B0, rgba16, title/logo_n64, 128, 112]
- [0x2051B0, rgba16, title/logo_is, 256, 112]
- [0x2131B0, rgba16, title/logo_nintendo, 256, 48]
- [0x2191B0, ci8, title/bg_1, 264, 162] - [0x2191B0, ci8, title/bg_1, 264, 162]
- [0x2238C0, palette, title/bg_1] - [0x2238C0, palette, title/bg_1]
- [0x223AC0, ci8, title/bg_2, 264, 162] - [0x223AC0, ci8, title/bg_2, 264, 162]

View File

@ -177,16 +177,16 @@ func_80033B54 = 0x80033B54; // type:func rom:0xEF54
func_80033B88 = 0x80033B88; // type:func rom:0xEF88 func_80033B88 = 0x80033B88; // type:func rom:0xEF88
func_80033BC0 = 0x80033BC0; // type:func rom:0xEFC0 func_80033BC0 = 0x80033BC0; // type:func rom:0xEFC0
func_80033E64 = 0x80033E64; // type:func rom:0xF264 func_80033E64 = 0x80033E64; // type:func rom:0xF264
begin_state_logos = 0x80033E70; // type:func rom:0xF270 state_init_logos = 0x80033E70; // type:func rom:0xF270
step_logos = 0x800340A4; // type:func rom:0xF4A4 state_step_logos = 0x800340A4; // type:func rom:0xF4A4
func_80034388 = 0x80034388; // type:func rom:0xF788 state_drawUI_logos = 0x80034388; // type:func rom:0xF788
func_800343A4 = 0x800343A4; // type:func rom:0xF7A4 appendGfx_intro_logos = 0x800343A4; // type:func rom:0xF7A4
begin_state_pause_menu = 0x80034940; // type:func rom:0xFD40 state_init_pause = 0x80034940; // type:func rom:0xFD40
step_pause_menu = 0x8003497C; // type:func rom:0xFD7C state_step_pause = 0x8003497C; // type:func rom:0xFD7C
func_80034BF4 = 0x80034BF4; // type:func rom:0xFFF4 state_drawUI_pause = 0x80034BF4; // type:func rom:0xFFF4
func_80034BFC = 0x80034BFC; // type:func rom:0xFFFC state_init_unpause = 0x80034BFC; // type:func rom:0xFFFC
func_80034C3C = 0x80034C3C; // type:func rom:0x1003C state_step_unpause = 0x80034C3C; // type:func rom:0x1003C
func_80034FF0 = 0x80034FF0; // type:func rom:0x103F0 state_drawUI_unpause = 0x80034FF0; // type:func rom:0x103F0
state_init_language_select = 0x80035000; // type:func rom:0x10400 state_init_language_select = 0x80035000; // type:func rom:0x10400
state_init_file_select = 0x80035058; // type:func rom:0x10458 state_init_file_select = 0x80035058; // type:func rom:0x10458
state_step_language_select = 0x800351C8; // type:func rom:0x105C8 state_step_language_select = 0x800351C8; // type:func rom:0x105C8
@ -1307,6 +1307,37 @@ nuAuDmaNext = 0x80078178; // rom:0x53578
nuAuFrameCounter = 0x8007817C; // rom:0x5357C nuAuFrameCounter = 0x8007817C; // rom:0x5357C
D_80078DB0 = 0x80078DB0; // rom:0x541B0 D_80078DB0 = 0x80078DB0; // rom:0x541B0
D_80078DB4 = 0x80078DB4; // rom:0x541B4 D_80078DB4 = 0x80078DB4; // rom:0x541B4
D_8008FF60 = 0x8008FF60; // type:data rom:0x6B360
D_8008FF70 = 0x8008FF70; // type:data rom:0x6B370
D_8008FFB8 = 0x8008FFB8; // type:data rom:0x6B3B8
mac_maps = 0x80090050; // type:data rom:0x6B450
tik_maps = 0x80090150; // type:data rom:0x6B550
kgr_maps = 0x80090410; // type:data rom:0x6B810
kmr_maps = 0x80090450; // type:data rom:0x6B850
iwa_maps = 0x80090670; // type:data rom:0x6BA70
dro_maps = 0x80090750; // type:data rom:0x6BB50
sbk_maps = 0x80090790; // type:data rom:0x6BB90
isk_maps = 0x80090DD0; // type:data rom:0x6C1D0
trd_maps = 0x80090FF0; // type:data rom:0x6C3F0
nok_maps = 0x80091150; // type:data rom:0x6C550
hos_maps = 0x80091270; // type:data rom:0x6C670
kpa_maps = 0x80091390; // type:data rom:0x6C790
osr_maps = 0x800919D0; // type:data rom:0x6CDD0
kkj_maps = 0x80091A70; // type:data rom:0x6CE70
jan_maps = 0x80091D90; // type:data rom:0x6D190
mim_maps = 0x80092050; // type:data rom:0x6D450
obk_maps = 0x800921D0; // type:data rom:0x6D5D0
arn_maps = 0x800922F0; // type:data rom:0x6D6F0
dgb_maps = 0x80092450; // type:data rom:0x6D850
kzn_maps = 0x800926B0; // type:data rom:0x6DAB0
flo_maps = 0x800928D0; // type:data rom:0x6DCD0
sam_maps = 0x80092B50; // type:data rom:0x6DF50
pra_maps = 0x80092CD0; // type:data rom:0x6E0D0
omo_maps = 0x800930D0; // type:data rom:0x6E4D0
tst_maps = 0x800932F0; // type:data rom:0x6E6F0
end_maps = 0x80093410; // type:data rom:0x6E810
mgm_maps = 0x80093450; // type:data rom:0x6E850
gv_maps = 0x800934D0; // type:data rom:0x6E8D0
FrameBuf = 0x80093BA8; // rom:0x6EFA8 FrameBuf = 0x80093BA8; // rom:0x6EFA8
nuContPakCompanyCode = 0x80093CA0; // rom:0x6F0A0 nuContPakCompanyCode = 0x80093CA0; // rom:0x6F0A0
nuContPakGameCode = 0x80093CA4; // rom:0x6F0A4 nuContPakGameCode = 0x80093CA4; // rom:0x6F0A4
@ -1405,6 +1436,7 @@ D_80098930 = 0x80098930; // type:data rom:0x73D30
D_80098938 = 0x80098938; // type:data rom:0x73D38 D_80098938 = 0x80098938; // type:data rom:0x73D38
D_80098968 = 0x80098968; // type:data rom:0x73D68 D_80098968 = 0x80098968; // type:data rom:0x73D68
D_80098990 = 0x80098990; // type:data rom:0x73D90 D_80098990 = 0x80098990; // type:data rom:0x73D90
D_800989A0 = 0x800989A0; // type:data rom:0x73DA0
D_80098A10 = 0x80098A10; // type:data rom:0x73E10 D_80098A10 = 0x80098A10; // type:data rom:0x73E10
D_80098A1C = 0x80098A1C; // type:data rom:0x73E1C D_80098A1C = 0x80098A1C; // type:data rom:0x73E1C
D_80098A24 = 0x80098A24; // type:data rom:0x73E24 D_80098A24 = 0x80098A24; // type:data rom:0x73E24
@ -3384,6 +3416,7 @@ pause_map_update = 0x8024ECB0; // type:func rom:0x141FF0
pause_map_cleanup = 0x8024EE2C; // type:func rom:0x14216C pause_map_cleanup = 0x8024EE2C; // type:func rom:0x14216C
pause_get_menu_string = 0x8024EE80; // type:func rom:0x1421C0 pause_get_menu_string = 0x8024EE80; // type:func rom:0x1421C0
pause_draw_menu_label = 0x8024EE94; // type:func rom:0x1421D4 pause_draw_menu_label = 0x8024EE94; // type:func rom:0x1421D4
gPauseMenuIconScripts = 0x8024EF60; // type:data rom:0x1422A0
gPauseMenuCursorPosX = 0x8024EF9C; // rom:0x1422DC gPauseMenuCursorPosX = 0x8024EF9C; // rom:0x1422DC
gPauseMenuCursorOpacity = 0x8024EFA4; // rom:0x1422E4 gPauseMenuCursorOpacity = 0x8024EFA4; // rom:0x1422E4
gPauseMenuTargetPosX = 0x8024EFA8; // rom:0x1422E8 gPauseMenuTargetPosX = 0x8024EFA8; // rom:0x1422E8
@ -9121,7 +9154,6 @@ D_80247A38_970BF8 = 0x80247A38; // type:data rom:0x970BF8
D_80248780_971940 = 0x80248780; // type:data rom:0x971940 D_80248780_971940 = 0x80248780; // type:data rom:0x971940
D_80248784_971944 = 0x80248784; // type:data rom:0x971944 D_80248784_971944 = 0x80248784; // type:data rom:0x971944
D_8024EF58_978118 = 0x8024EF58; // type:data rom:0x978118 D_8024EF58_978118 = 0x8024EF58; // type:data rom:0x978118
gPauseMenuIconScripts = 0x8024EF60; // type:data rom:0x978120
D_8024EF68_978128 = 0x8024EF68; // type:data rom:0x978128 D_8024EF68_978128 = 0x8024EF68; // type:data rom:0x978128
D_8024EF70_978130 = 0x8024EF70; // type:data rom:0x978130 D_8024EF70_978130 = 0x8024EF70; // type:data rom:0x978130
D_8024EF78_978138 = 0x8024EF78; // type:data rom:0x978138 D_8024EF78_978138 = 0x8024EF78; // type:data rom:0x978138
@ -15556,6 +15588,9 @@ D_80074580 = 0x80074580; // type:data
gCurrentCameraID = 0x80077410; // gCurrentCameraID = 0x80077410; //
gameModeBlueprints = 0x800776E8; // type:data gameModeBlueprints = 0x800776E8; // type:data
gameModeMap = 0x80077850; // type:data gameModeMap = 0x80077850; // type:data
D_80077908 = 0x80077908; // type:data
D_80077950 = 0x80077950; // type:data
D_8007795C = 0x8007795C; // type:data
D_800779CB = 0x800779CB; // type:data D_800779CB = 0x800779CB; // type:data
D_80077A24 = 0x80077A24; // type:data D_80077A24 = 0x80077A24; // type:data
EnemyNpcHit = 0x80077F70; // EnemyNpcHit = 0x80077F70; //
@ -16478,7 +16513,7 @@ gMusicUnkVolume = 0x80159AE0; //
gMusicTargetVolume = 0x80159AE2; // gMusicTargetVolume = 0x80159AE2; //
gMusicUnkVolume2 = 0x80159AE4; // gMusicUnkVolume2 = 0x80159AE4; //
gMusicCurrentVolume = 0x80159AE6; // gMusicCurrentVolume = 0x80159AE6; //
gMusicPlayers = 0x80159AF0; // gMusicSettings = 0x80159AF0; //
D_80159B08 = 0x80159B08; // type:data D_80159B08 = 0x80159B08; // type:data
D_80159B50 = 0x80159B50; // type:data D_80159B50 = 0x80159B50; // type:data
gUIPanels = 0x80159D50; // gUIPanels = 0x80159D50; //
@ -16984,6 +17019,7 @@ D_8026F1B8 = 0x8026F1B8; // type:data
D_8026F2A0 = 0x8026F2A0; // type:data D_8026F2A0 = 0x8026F2A0; // type:data
D_8026F348 = 0x8026F348; // type:data D_8026F348 = 0x8026F348; // type:data
D_8026F5A0 = 0x8026F5A0; // type:data D_8026F5A0 = 0x8026F5A0; // type:data
D_8026F778 = 0x8026F778; // type:data
gPauseMenuStrings = 0x8026F778; // type:data gPauseMenuStrings = 0x8026F778; // type:data
D_8026F8D4 = 0x8026F8D4; // type:data D_8026F8D4 = 0x8026F8D4; // type:data
D_8026FB30 = 0x8026FB30; // type:data D_8026FB30 = 0x8026FB30; // type:data
@ -18625,3 +18661,9 @@ D_F5000007 = 0xF5000007; // type:data
D_F79DDD0F = 0xF79DDD0F; // type:data D_F79DDD0F = 0xF79DDD0F; // type:data
D_FA000028 = 0xFA000028; // type:data D_FA000028 = 0xFA000028; // type:data
D_FD100008 = 0xFD100008; // type:data D_FD100008 = 0xFD100008; // type:data
dead_cos_rad = 0x8002B4C0; // type:func dead:yes
dead_func_8006FEF0 = 0x80075170; // type:func dead:yes
dead_get_variable = 0x802D4E8C; // type:func dead:yes
dead_set_variable = 0x802D5468; // type:func dead:yes
dead_get_float_variable = 0x802D57FC; // type:func dead:yes
dead_set_float_variable = 0x802D5A10; // type:func dead:yes

View File

@ -10,7 +10,6 @@ func_8002AF18 = 0x8002AF18;
func_8002AE14 = 0x8002AE14; func_8002AE14 = 0x8002AE14;
func_8004D800 = 0x8004D800; func_8004D800 = 0x8004D800;
func_8002B28C = 0x8002B28C; func_8002B28C = 0x8002B28C;
dead_get_variable = 0x802D4E8C;
func_8004D9C0 = 0x8004D9C0; func_8004D9C0 = 0x8004D9C0;
func_8004DAD8 = 0x8004DAD8; func_8004DAD8 = 0x8004DAD8;
func_8004DF64 = 0x8004DF64; func_8004DF64 = 0x8004DF64;
@ -32,12 +31,10 @@ func_8002ACEC = 0x8002ACEC;
func_8003E534 = 0x8003E534; func_8003E534 = 0x8003E534;
func_8002BFD4 = 0x8002BFD4; func_8002BFD4 = 0x8002BFD4;
func_8002C01C = 0x8002C01C; func_8002C01C = 0x8002C01C;
dead_set_variable = 0x802D5468;
func_8002B5DC = 0x8002B5DC; func_8002B5DC = 0x8002B5DC;
func_8002B640 = 0x8002B640; func_8002B640 = 0x8002B640;
func_800F1EF8 = 0x800F1EF8; func_800F1EF8 = 0x800F1EF8;
func_8015704C = 0x8015704C; func_8015704C = 0x8015704C;
dead_get_float_variable = 0x802D57FC;
func_80077C30 = 0x80077C30; func_80077C30 = 0x80077C30;
func_8002B6A4 = 0x8002B6A4; func_8002B6A4 = 0x8002B6A4;
func_80077930 = 0x80077930; func_80077930 = 0x80077930;
@ -50,13 +47,11 @@ func_8012DFE8 = 0x8012DFE8;
func_8002AA2C = 0x8002AA2C; func_8002AA2C = 0x8002AA2C;
func_80059AC8 = 0x80059AC8; func_80059AC8 = 0x80059AC8;
func_80118BB0 = 0x80118BB0; func_80118BB0 = 0x80118BB0;
dead_cos_rad = 0x8002B4C0;
func_80077BD0 = 0x80077BD0; func_80077BD0 = 0x80077BD0;
func_80041080 = 0x80041080; func_80041080 = 0x80041080;
func_800F1D9C = 0x800F1D9C; func_800F1D9C = 0x800F1D9C;
func_800F1730 = 0x800F1730; func_800F1730 = 0x800F1730;
func_8003C43C = 0x8003C43C; func_8003C43C = 0x8003C43C;
dead_set_float_variable = 0x802D5A10;
func_800F1718 = 0x800F1718; func_800F1718 = 0x800F1718;
func_800F16F4 = 0x800F16F4; func_800F16F4 = 0x800F16F4;
func_80125270 = 0x80125270; func_80125270 = 0x80125270;
@ -76,7 +71,6 @@ func_8002BF18 = 0x8002BF18;
func_80076970 = 0x80076970; func_80076970 = 0x80076970;
func_80144200 = 0x80144200; func_80144200 = 0x80144200;
func_80144178 = 0x80144178; func_80144178 = 0x80144178;
dead_func_8006FEF0 = 0x80075170;
func_800E53AC = 0x800E53AC; func_800E53AC = 0x800E53AC;
func_8013CF98 = 0x8013CF98; func_8013CF98 = 0x8013CF98;
func_80066FE0 = 0x80066FE0; func_80066FE0 = 0x80066FE0;

View File

@ -50,3 +50,4 @@ D_800F7BBC = 0x800F7BBC;
D_802C05CC = 0x802C05CC; D_802C05CC = 0x802C05CC;
_osViModeNtscLan1 = 0x80095820; _osViModeNtscLan1 = 0x80095820;
_osViModeMPalLan1 = 0x80095870; _osViModeMPalLan1 = 0x80095870;
gPauseMenuStrings = 0x8026F778;

View File

@ -14,6 +14,9 @@ nuAuDmaNext = 0x80078178;
nuAuFrameCounter = 0x8007817C; nuAuFrameCounter = 0x8007817C;
D_80078DB0 = 0x80078DB0; D_80078DB0 = 0x80078DB0;
D_80078DB4 = 0x80078DB4; D_80078DB4 = 0x80078DB4;
D_8008FF60 = 0x8008FF60;
D_8008FF70 = 0x8008FF70;
D_8008FFB8 = 0x8008FFB8;
nuContRmbSearchTime = 0x80093CE0; nuContRmbSearchTime = 0x80093CE0;
nuContRmbCallBack = 0x80093D00; nuContRmbCallBack = 0x80093D00;
nuGfxFunc = 0x80093D10; nuGfxFunc = 0x80093D10;
@ -157,6 +160,35 @@ D_802838F8 = 0x802838F8;
D_802BDC40_317B60 = 0x802BDC40; D_802BDC40_317B60 = 0x802BDC40;
D_802BDD88_317CA8 = 0x802BDD88; D_802BDD88_317CA8 = 0x802BDD88;
D_802BD58C_324E9C = 0x802BD58C; D_802BD58C_324E9C = 0x802BD58C;
D_802AB340 = 0x802AB340;
D_802AB344 = 0x802AB344;
battle_menu_iconScripts = 0x802AB348;
D_802AB368 = 0x802AB368;
D_802AB388 = 0x802AB388;
D_802AB390 = 0x802AB390;
D_802AB398 = 0x802AB398;
D_802AB3F8 = 0x802AB3F8;
D_802AB438 = 0x802AB438;
D_802AB478 = 0x802AB478;
D_802AB47C = 0x802AB47C;
D_802AB480 = 0x802AB480;
D_802AB488 = 0x802AB488;
battle_menu_leftJustfiedMessages = 0x802AB490;
D_802AB4A4 = 0x802AB4A4;
D_802AB4B4 = 0x802AB4B4;
battle_menu_centeredMessages = 0x802AB4C0;
D_802AB4C8 = 0x802AB4C8;
D_802AB4DC = 0x802AB4DC;
D_802AB4E0 = 0x802AB4E0;
D_802AB4F0 = 0x802AB4F0;
D_802AB520 = 0x802AB520;
D_802AB558 = 0x802AB558;
D_802AB590 = 0x802AB590;
D_802AB720 = 0x802AB720;
D_802AB728 = 0x802AB728;
D_802AB72C = 0x802AB72C;
D_802AB734 = 0x802AB734;
D_802AB738 = 0x802AB738;
D_802AA7F0_425460 = 0x802AA7F0; D_802AA7F0_425460 = 0x802AA7F0;
D_802AA818_425488 = 0x802AA818; D_802AA818_425488 = 0x802AA818;
D_802AA844_4254B4 = 0x802AA844; D_802AA844_4254B4 = 0x802AA844;
@ -431,6 +463,7 @@ battle_item_life_shroom_main = 0x802A1FCC;
battle_item_electro_pop_main = 0x802A1AFC; battle_item_electro_pop_main = 0x802A1AFC;
battle_item_strange_cake_D_802A2848_732B48 = 0x802A2848; battle_item_strange_cake_D_802A2848_732B48 = 0x802A2848;
battle_item_strange_cake_D_802A2858_732B58 = 0x802A2858; battle_item_strange_cake_D_802A2858_732B58 = 0x802A2858;
D_802A285A_732B5A = 0x802A285A;
battle_item_strange_cake_script6 = 0x802A2870; battle_item_strange_cake_script6 = 0x802A2870;
D_80000000 = 0x80000000; D_80000000 = 0x80000000;
osTvType = 0x80000300; osTvType = 0x80000300;
@ -448,6 +481,9 @@ D_80074274 = 0x80074274;
D_800743E0 = 0x800743E0; D_800743E0 = 0x800743E0;
D_80074414 = 0x80074414; D_80074414 = 0x80074414;
D_80074580 = 0x80074580; D_80074580 = 0x80074580;
D_80077908 = 0x80077908;
D_80077950 = 0x80077950;
D_8007795C = 0x8007795C;
D_80078170 = 0x80078170; D_80078170 = 0x80078170;
nuAuTaskStop = 0x80078180; nuAuTaskStop = 0x80078180;
D_80078181 = 0x80078181; D_80078181 = 0x80078181;
@ -1153,7 +1189,7 @@ gMusicUnkVolume = 0x80159AE0;
gMusicTargetVolume = 0x80159AE2; gMusicTargetVolume = 0x80159AE2;
gMusicUnkVolume2 = 0x80159AE4; gMusicUnkVolume2 = 0x80159AE4;
gMusicCurrentVolume = 0x80159AE6; gMusicCurrentVolume = 0x80159AE6;
gMusicPlayers = 0x80159AF0; gMusicSettings = 0x80159AF0;
D_80159B08 = 0x80159B08; D_80159B08 = 0x80159B08;
D_80159B50 = 0x80159B50; D_80159B50 = 0x80159B50;
gUIPanels = 0x80159D50; gUIPanels = 0x80159D50;
@ -1621,46 +1657,6 @@ D_80262C34 = 0x80262C34;
D_80262C38 = 0x80262C38; D_80262C38 = 0x80262C38;
D_80262F68 = 0x80262F68; D_80262F68 = 0x80262F68;
D_80268000 = 0x80268000; D_80268000 = 0x80268000;
D_8026A2B0 = 0x8026A2B0;
D_8026F118 = 0x8026F118;
D_8026F1B8 = 0x8026F1B8;
D_8026F2A0 = 0x8026F2A0;
D_8026F348 = 0x8026F348;
D_8026F5A0 = 0x8026F5A0;
gPauseMenuStrings = 0x8026F778;
D_8026F8D4 = 0x8026F8D4;
D_8026FB30 = 0x8026FB30;
D_8026FBD8 = 0x8026FBD8;
D_8026FC10 = 0x8026FC10;
D_8026FC48 = 0x8026FC48;
D_8026FCB8 = 0x8026FCB8;
D_8026FCF0 = 0x8026FCF0;
D_8026FD98 = 0x8026FD98;
D_8026FE78 = 0x8026FE78;
D_8026FEE8 = 0x8026FEE8;
D_8026FF60 = 0x8026FF60;
D_8026FF80 = 0x8026FF80;
D_8026FF88 = 0x8026FF88;
D_8026FF90 = 0x8026FF90;
D_8026FF98 = 0x8026FF98;
D_8026FFA0 = 0x8026FFA0;
D_8026FFA8 = 0x8026FFA8;
D_8026FFB0 = 0x8026FFB0;
D_80270040 = 0x80270040;
D_80270048 = 0x80270048;
D_80270050 = 0x80270050;
D_80270058 = 0x80270058;
D_80270060 = 0x80270060;
D_80270068 = 0x80270068;
D_80270070 = 0x80270070;
D_80270080 = 0x80270080;
D_80270088 = 0x80270088;
D_80270090 = 0x80270090;
D_80270098 = 0x80270098;
D_802700A0 = 0x802700A0;
D_802700A8 = 0x802700A8;
D_802700B0 = 0x802700B0;
D_802700B8 = 0x802700B8;
gPauseMenuHeldButtons = 0x802700C0; gPauseMenuHeldButtons = 0x802700C0;
gPauseMenuPressedButtons = 0x802700C4; gPauseMenuPressedButtons = 0x802700C4;
gPauseMenuCurrentDescString = 0x802700C8; gPauseMenuCurrentDescString = 0x802700C8;
@ -1923,6 +1919,7 @@ D_802AA320 = 0x802AA320;
D_802AA694 = 0x802AA694; D_802AA694 = 0x802AA694;
D_802AAA08 = 0x802AAA08; D_802AAA08 = 0x802AAA08;
D_802AAA30 = 0x802AAA30; D_802AAA30 = 0x802AAA30;
D_802AB513 = 0x802AB513;
D_802ACC60 = 0x802ACC60; D_802ACC60 = 0x802ACC60;
D_802ACC64 = 0x802ACC64; D_802ACC64 = 0x802ACC64;
D_802ACC68 = 0x802ACC68; D_802ACC68 = 0x802ACC68;
@ -2937,6 +2934,47 @@ D_FA000028 = 0xFA000028;
D_FD100008 = 0xFD100008; D_FD100008 = 0xFD100008;
jtbl_8009A578 = 0x8009A578; jtbl_8009A578 = 0x8009A578;
jtbl_8009A590 = 0x8009A590; jtbl_8009A590 = 0x8009A590;
jtbl_8026FF60 = 0x8026FF60;
D_8026FF80 = 0x8026FF80;
D_8026FF88 = 0x8026FF88;
D_8026FF90 = 0x8026FF90;
D_8026FF98 = 0x8026FF98;
D_8026FFA0 = 0x8026FFA0;
D_8026FFA8 = 0x8026FFA8;
D_8026FB30 = 0x8026FB30;
D_8026FC48 = 0x8026FC48;
D_8026FC10 = 0x8026FC10;
D_8026F348 = 0x8026F348;
D_8026FFB0 = 0x8026FFB0;
D_8026FBD8 = 0x8026FBD8;
D_8026FCF0 = 0x8026FCF0;
D_8026FCB8 = 0x8026FCB8;
D_80270040 = 0x80270040;
D_8026FD98 = 0x8026FD98;
D_80270048 = 0x80270048;
D_8026F5A0 = 0x8026F5A0;
D_8026A2B0 = 0x8026A2B0;
D_80270050 = 0x80270050;
D_80270058 = 0x80270058;
D_80270060 = 0x80270060;
D_80270068 = 0x80270068;
D_80270070 = 0x80270070;
D_8026FE78 = 0x8026FE78;
D_8026F118 = 0x8026F118;
D_802510B0 = 0x802510B0;
D_8026F1B8 = 0x8026F1B8;
D_8026F2A0 = 0x8026F2A0;
D_8026FEE8 = 0x8026FEE8;
D_80270080 = 0x80270080;
D_80270088 = 0x80270088;
D_80270090 = 0x80270090;
D_80270098 = 0x80270098;
D_802700A0 = 0x802700A0;
D_802700A8 = 0x802700A8;
D_802700B0 = 0x802700B0;
D_802700B8 = 0x802700B8;
D_8026F778 = 0x8026F778;
D_8026F8D4 = 0x8026F8D4;
jtbl_E000CD40 = 0xE000CD40; jtbl_E000CD40 = 0xE000CD40;
jtbl_E000CD58 = 0xE000CD58; jtbl_E000CD58 = 0xE000CD58;
jtbl_E0044F00 = 0xE0044F00; jtbl_E0044F00 = 0xE0044F00;
@ -3095,4 +3133,3 @@ jtbl_8022EB80_56DF60 = 0x8022EB80;
jtbl_80231320_63CEC0 = 0x80231320; jtbl_80231320_63CEC0 = 0x80231320;
jtbl_80232A20_6847A0 = 0x80232A20; jtbl_80232A20_6847A0 = 0x80232A20;
jtbl_80228450_6CBFE0 = 0x80228450; jtbl_80228450_6CBFE0 = 0x80228450;
D_802A285A_732B5A = 0x802A285A;