Tidying and Shops (#282)

* render_curtains

* cleanup

* more cleanup

* cleanup

* update symbol addrs

* asm update

* shop progress

* more cleanup

* update symbol_addrs

* asm cleanup

* .

* new data splits

* rename stuff

* .

* .

* PR stuff
This commit is contained in:
Ethan Roseman 2021-04-27 02:47:38 +09:00 committed by GitHub
parent 683d0857ff
commit 1c0d26e6c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1262 changed files with 45666 additions and 5472 deletions

View File

@ -541,7 +541,7 @@ def dump_objfile() -> Tuple[str, ObjdumpCommand, ObjdumpCommand]:
if not os.path.isfile(objfile):
fail(f"Not able to find .o file for function: {objfile} is not a file.")
refobjfile = "ver/us/expected/" + objfile
refobjfile = "ver/us/expected/" + os.path.relpath(objfile)
if not os.path.isfile(refobjfile):
fail(f'Please ensure an OK .o file exists at "{refobjfile}".')

View File

@ -1296,13 +1296,46 @@ typedef struct DecorationTable {
/* 0x8BE */ char unk_8BE[30];
} DecorationTable; // size = 0x8E8
typedef struct ShopOwner {
/* 0x00 */ s32 npcID;
/* 0x04 */ s32 idleAnim;
/* 0x08 */ s32 talkAnim;
/* 0x0C */ char unk_0C[0x4];
/* 0x10 */ Bytecode* unkScript;
/* 0x14 */ char unk_14[0x4];
/* 0x18 */ s32* shopStringIDs;
} ShopOwner;
typedef struct StaticInventoryItem {
/* 0x0 */ s32 unk_00;
/* 0x4 */ char unk_04[0x4];
/* 0x8 */ s32 unk_08;
} StaticInventoryItem; // size = 0xC
typedef struct StaticPriceItem {
/* 0x0 */ s32 itemID;
/* 0x4 */ s32 sellPrice;
/* 0x8 */ char unk_08[0x4];
} StaticPriceItem; // size = 0xC
typedef struct Shop {
/* 0x000 */ char unk_00[16];
/* 0x010 */ UNK_PTR owner;
/* 0x000 */ s16 flags;
/* 0x002 */ s16 numItems;
/* 0x004 */ s16 numSpecialPrices;
/* 0x006 */ char unk_06[2];
/* 0x008 */ s32 unk_08;
/* 0x00C */ s32 selectedStoreItemSlot;
/* 0x010 */ ShopOwner* owner;
/* 0x014 */ UNK_PTR staticItemPositions;
/* 0x018 */ UNK_PTR staticInventory;
/* 0x01C */ UNK_PTR staticPriceList;
/* 0x020 */ char unk_20[828];
/* 0x018 */ StaticInventoryItem* staticInventory;
/* 0x01C */ StaticPriceItem* staticPriceList;
/* 0x020 */ s32 costIconID;
/* 0x024 */ s32 inventoryItemFlags;
/* 0x028 */ s32** unk_28;
/* 0x02C */ char unk_2C[0x328];
/* 0x354 */ s16 unk_354;
/* 0x356 */ char unk_356[0x2];
/* 0x358 */ s32 unk_358;
} Shop; // size = 0x35C
typedef struct Encounter {

View File

@ -32,6 +32,7 @@ s32 get_area_flag(s32 index);
Shadow* get_shadow_by_index(s32 index);
s32 get_time_freeze_mode(void);
void render_player_model();
s16 get_game_mode(void);
f32 integrate_gravity(void);
f32 get_clamped_angle_diff(f32, f32);

View File

@ -177,6 +177,17 @@ typedef struct StatDrop {
#define OVERRIDE_MOVEMENT_SPEED(speed) (speed * 32767)
#define NO_OVERRIDE_MOVEMENT_SPEED OVERRIDE_MOVEMENT_SPEED(-1)
typedef struct EnemyDrops {
/* 0x00 */ s8 dropFlags;
/* 0x01 */ s8 itemDropChance; // %
/* 0x02 */ ItemDrop itemDrops[8];
/* 0x32 */ StatDrop heartDrops[8];
/* 0x72 */ StatDrop flowerDrops[8];
/* 0xB2 */ s16 minCoinBonus;
/* 0xB4 */ s16 maxCoinBonus;
/* 0xB6 */ char unk_DE[2];
} EnemyDrops; // size = 0xB8
typedef struct StaticNpc {
/* 0x000 */ NpcID id;
/* 0x004 */ NpcSettings* settings;
@ -185,7 +196,7 @@ typedef struct StaticNpc {
/* 0x018 */ Script* init;
/* 0x01C */ char unk_1C[8];
/* 0x024 */ s32 yaw;
/* 0x028 */ s8 dropFlags;
/* 0x028 */ s8 dropFlags; // TODO: use EnemyDrops (requires tons of map edits)
/* 0x029 */ s8 itemDropChance; // %
/* 0x02A */ ItemDrop itemDrops[8];
/* 0x05A */ StatDrop heartDrops[8];
@ -284,7 +295,7 @@ typedef struct Enemy {
/* 0xC8 */ s32 unk_C8;
/* 0xCC */ s32* animList;
/* 0xD0 */ EnemyTerritory* territory;
/* 0xD4 */ s16* dropTables;
/* 0xD4 */ EnemyDrops* drops;
/* 0xD8 */ u32 tattleString;
/* 0xDC */ char unk_DC[20];
} Enemy; // size = 0xF0

View File

@ -234,6 +234,7 @@ extern s32* D_80210000;
extern u8 D_802D9D70; // player alpha1 copy?
extern u8 D_802D9D71; // player alpha2 copy?
extern DisplayContext D_80164000[];
extern f32 gCurtainScale;
extern f32 gCurtainScaleGoal;
@ -353,8 +354,8 @@ extern s32 D_802920E8[];
extern s32 D_802920E8[];
extern s32 D_80292110[];
extern UNK_PTR D_800F7BE8;
extern UNK_PTR D_800F7BBC;
extern s32 D_800F7BE8[];
extern s32 D_800F7BBC[];
extern s32 D_802C05CC;
@ -364,6 +365,6 @@ extern s16 gCurrentCamID;
extern s32 D_803DA800;
// Dead code
extern PlayerStatus* D_800FFC90; // gPlayerStatusPtr
extern PlayerStatus* dead_gPlayerStatusPtr;
#endif

View File

@ -48,7 +48,6 @@ void save_game_at_player_position(void) {
}
void func_802E1204(Entity* entity) {
if (!get_global_flag(SI_SAVE_FLAG(95))) {
s32* temp = &D_802EB390;
*temp = 0;

View File

@ -9,8 +9,6 @@ void state_init_language_select(void) {
}
void state_init_file_select(void) {
Camera* cameras = gCameras;
D_800A0931 = 0;
D_800A0932[0] = 0;
disable_player_input();
@ -19,30 +17,30 @@ void state_init_file_select(void) {
func_801452E8(0, 0);
func_80141100();
load_model_textures(0, 0, 0);
cameras[0].mode = 6;
cameras[0].unk_06 = 1;
cameras[0].nearClip = 16;
cameras[0].farClip = 4096;
cameras[0].flags |= 2;
gCameras[0].mode = 6;
gCameras[0].unk_06 = 1;
gCameras[0].nearClip = 16;
gCameras[0].farClip = 4096;
gCameras[0].flags |= 2;
gCurrentCameraID = 0;
cameras[1].flags |= 2;
cameras[2].flags |= 2;
cameras[3].flags |= 2;
cameras[0].vfov = 25.0f;
gCameras[1].flags |= 2;
gCameras[2].flags |= 2;
gCameras[3].flags |= 2;
gCameras[0].vfov = 25.0f;
set_cam_viewport(0, 12, 28, 296, 184);
cameras[0].unk_1E = 40;
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;
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;
gCameras[0].unk_1E = 40;
gCameras[0].lookAt_eye[0] = 500.0f;
gCameras[0].lookAt_eye[1] = 1000.0f;
gCameras[0].lookAt_eye[2] = 1500.0f;
gCameras[0].unk_5C = 150.0f;
gCameras[0].backgroundColor[0] = 0;
gCameras[0].backgroundColor[1] = 0;
gCameras[0].backgroundColor[2] = 0;
gCameras[0].unk_54 = 25.0f;
gCameras[0].unk_58 = 25.0f;
gCameras[0].unk_1C = 0;
gCameras[0].unk_20 = 100;
gCameras[0].unk_22 = 0;
gOverrideFlags |= 0x10000;
}

View File

@ -1,11 +1,10 @@
#include "common.h"
#include "nu/nusys.h"
void func_80035E54(void);
void func_80035DF0(s16 arg0) {
s16* tempPtr = &D_800A0942;
*tempPtr = arg0;
D_800A0942 = arg0;
}
void func_80035E00(void) {
@ -20,20 +19,16 @@ void func_80035E24(void) {
}
void func_80035E54(void) {
GameStatus** gameStatus = &gGameStatusPtr;
u16* mapTransitonAlpha;
D_800A0944 = 0;
D_800A0946 = 4;
(*gameStatus)->exitAngle = 0.0f;
mapTransitonAlpha = &gMapTransitionAlpha;
*mapTransitonAlpha = 0xFF;
gGameStatusPtr->exitAngle = 0.0f;
gMapTransitionAlpha = 0xFF;
nuContRmbForceStopEnd();
func_801382AC(mapTransitonAlpha);
func_801382AC(&gMapTransitionAlpha);
gOverrideFlags |= 0x8;
set_variable(0, SI_SAVE_VAR(1), (*gameStatus)->unk_A9);
set_variable(0, SI_SAVE_VAR(1), gGameStatusPtr->unk_A9);
timeFreezeMode = 0;
}
@ -66,16 +61,11 @@ void func_800363FC(void) {
}
}
s32 func_80036430(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
void func_80036430(void) {
gMapTransitionAlpha = 0xFF;
D_800A0942 = 0x14;
D_800A0944 = 0x01;
playerStatus->flags |= 0x1000;
return playerStatus->flags;
gPlayerStatus.flags |= 0x1000;
}
INCLUDE_ASM(s32, "111f0_len_860", func_8003646C);

View File

@ -1,16 +1,14 @@
#include "common.h"
void begin_state_intro(void) {
GameStatus** gameStatus = &gGameStatusPtr;
s8 unk_A8;
u8* mystery;
(*gameStatus)->loadMenuState = 0;
gGameStatusPtr->loadMenuState = 0;
set_curtain_scale_goal(1.0f);
set_curtain_fade_goal(0.3f);
unk_A8 = (*gameStatus)->unk_A8;
unk_A8 = gGameStatusPtr->unk_A8;
switch (unk_A8) {
case 0:
intro_logos_set_fade_alpha(0);
@ -25,9 +23,9 @@ void begin_state_intro(void) {
D_800A0964 = 0;
// hos_05 (Star Sanctuary)
(*gameStatus)->areaID = AREA_HOS;
(*gameStatus)->mapID = 5;
(*gameStatus)->entryID = 3;
gGameStatusPtr->areaID = AREA_HOS;
gGameStatusPtr->mapID = 5;
gGameStatusPtr->entryID = 3;
break;
case 1:
intro_logos_set_fade_alpha(0);
@ -42,24 +40,22 @@ void begin_state_intro(void) {
D_800A0964 = 0;
// hos_04 (Outside the Sanctuary)
(*gameStatus)->areaID = AREA_HOS;
(*gameStatus)->mapID = 4;
(*gameStatus)->entryID = 4;
gGameStatusPtr->areaID = AREA_HOS;
gGameStatusPtr->mapID = 4;
gGameStatusPtr->entryID = 4;
break;
default:
intro_logos_set_fade_alpha(0);
intro_logos_set_fade_color(208);
mystery = &D_800779B0;
gGameStatusPtr->unk_A8 = -1;
D_800A0956 = 6;
D_800A0958 = 6;
++*mystery;
if (*mystery >= 4) {
*mystery = 0;
D_800779B0++;
if (D_800779B0 >= 4) {
D_800779B0 = 0;
}
D_800A0964 = 3;

View File

@ -42,6 +42,8 @@ Gfx D_80077A50[] = {
};
extern s32 D_80077A2B;
extern s32* D_800A0978;
extern s32* D_800A097C;
extern s32 D_800A0980;
INCLUDE_ASM(s32, "121f0_len_1290", begin_state_title_screen);
@ -127,4 +129,36 @@ void title_draw_press_start(void) {
gDPPipeSync(gMasterGfxPos++);
}
INCLUDE_ASM(void, "121f0_len_1290", title_draw_copyright, f32 arg0);
void title_draw_copyright(f32 arg0) {
s32 alpha;
s32 i;
gSPDisplayList(gMasterGfxPos++, &D_80077A50);
gDPPipeSync(gMasterGfxPos++);
alpha = 255.0f - (arg0 * 255.0f);
if (alpha < 0xFF) {
if (alpha < 0) {
alpha = 0;
}
gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0, TEXEL0, 0,
PRIMITIVE, 0);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0, 0, 0, alpha);
}
for (i = 0; i < 2; i++) {
alpha = 0; // TODO figure out why this is needed
gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_IA, G_IM_SIZ_8b, 144, &D_800A097C[0x240 * i]);
gDPSetTile(gMasterGfxPos++, G_IM_FMT_IA, G_IM_SIZ_8b, 18, 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, 0x023C, 0x003C);
gDPPipeSync(gMasterGfxPos++);
gDPSetTile(gMasterGfxPos++, G_IM_FMT_IA, G_IM_SIZ_8b, 18, 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, 0x023C, 0x003C);
gSPTextureRectangle(gMasterGfxPos++, 0x0164, 0x2FC + (0x40 * i), 0x03A4, 0x33C + (0x40 * i), G_TX_RENDERTILE,
0, 0, 0x0400, 0x0400);
}
gDPPipeSync(gMasterGfxPos++);
}

View File

@ -11,12 +11,14 @@ extern s32 D_80073E00;
extern u16* D_80073E04;
extern s16 D_80073E08;
extern s16 D_80073E0A;
extern u16* D_8009A680;
extern s32 D_80073E10;
extern s16* D_8009A680;
extern OSViMode _osViModeNtscLan1;
extern OSViMode _osViModeMPalLan1;
void boot_main(void) {
OSViMode* viMode;
if (osTvType == OS_TV_NTSC) {
osViSetMode(&_osViModeNtscLan1);
osViSetSpecialFeatures(OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF | OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON);
@ -37,21 +39,15 @@ void boot_main(void) {
func_802B203C();
nuGfxFuncSet((NUGfxFunc) gfxRetrace_Callback);
nuGfxPreNMIFuncSet(gfxPreNMI_Callback);
{
// Required to match
s32* randSeed = &gRandSeed;
(*randSeed) += osGetCount();
}
gRandSeed += osGetCount();
nuGfxDisplayOn();
while (TRUE) {}
}
void gfxRetrace_Callback(s32 arg0) {
s32* temp_80073E00 = &D_80073E00;
if (*temp_80073E00 != 0) {
if (*temp_80073E00 == 1) {
if (D_80073E00 != 0) {
if (D_80073E00 == 1) {
nuGfxTaskAllEndWait();
if (arg0 == 0) {
u16* fb = (u16*) osViGetCurrentFramebuffer();
@ -63,25 +59,20 @@ void gfxRetrace_Callback(s32 arg0) {
D_80073E04 = fb;
nuGfxSetCfb(temp_8009A680, 3);
osViSwapBuffer(*temp_8009A680);
*temp_80073E00 = 2;
D_80073E00 = 2;
}
}
if (D_80073E00 == 2) {
gfx_task_main();
}
} else {
s16* temp_80073E0A = &D_80073E0A;
*temp_80073E0A ^= 1;
if (*temp_80073E0A == 0) {
s16* temp_80073E08;
D_80073E0A ^= 1;
if (D_80073E0A == 0) {
step_game_loop();
temp_80073E08 = &D_80073E08;
*temp_80073E08 = 1;
D_80073E08 = 1;
if (arg0 < 3) {
*temp_80073E08 = 0;
D_80073E08 = 0;
gfx_task_background();
gfx_draw_frame();
}

View File

@ -39,7 +39,6 @@ Gfx D_80074230[] = {
gsSPEndDisplayList(),
};
extern DisplayContext D_80164000[];
extern s16 D_8009A690;
void gfx_init_state(void);

View File

@ -7,30 +7,22 @@ INCLUDE_ASM(s32, "23680", spawn_drops);
#ifdef NON_MATCHING
s32 get_coin_drop_amount(Enemy* enemy) {
EncounterStatus* currentEncounter = &gCurrentEncounter;
s16* dropTables = enemy->dropTables;
s32 t1;
s32 t2;
s32 amt;
s32 mx;
s32 diff;
s32 max;
s32 min;
t1 = dropTables[89];
t2 = dropTables[90];
amt = enemy->drops->minCoinBonus;
mx = enemy->drops->maxCoinBonus;
min = t1;
max = t2;
if (max < min) {
min = t2;
max = t1;
if (enemy->drops->minCoinBonus > enemy->drops->maxCoinBonus) {
amt = enemy->drops->maxCoinBonus;
mx = enemy->drops->minCoinBonus;
}
diff = max - min;
diff = mx - amt;
amt = min;
if ((min < 0) || (diff != 0)) {
amt = rand_int(diff) + min;
if ((amt < 0) || (diff != 0)) {
amt = rand_int(diff) + amt;
}
if (amt < 0) {

View File

@ -26,11 +26,9 @@ s32 func_8004DA0C(s32 songName) {
s32 ret = 0;
if (songName != 0) {
BGMPlayer* player;
BGMPlayer* player = snd_get_player_with_song_name(songName);
do {
player = snd_get_player_with_song_name(songName);
} while (0);
do {} while (0);
do {
if (player == NULL) {

View File

@ -77,7 +77,6 @@ void func_800511BC(UnkAl834* arg0) {
temp->unk_25 = 1;
}
func_80051434(arg0, temp);
var = temp->unk_24;
}
}
}

View File

@ -8,33 +8,27 @@ void func_80052E30(u8 index) {
}
void snd_load_audio_data(s32 frequency) {
UnkAl19E0** temp_s4 = &D_8009A5C0;
UnkAl19E0* temp4;
s32* temp_v0_2;
ALHeap* alHeap;
u32 i;
s32 subroutine_arg7[2];
u8 temp6[4];
BGMPlayer** temp1 = &D_8009A664;
BGMPlayer** temp1_1;
SoundManager** temp2 = &D_8009A640;
SoundManager** temp2_1;
BGMPlayer** temp3;
UnkAl48* temp5;
alHeap = D_80078E54->unk_18;
*temp_s4 = alHeapAlloc(alHeap, 1, 0x19E0);
D_8009A5C0 = alHeapAlloc(alHeap, 1, 0x19E0);
(*temp1) = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer));
D_8009A664 = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer));
D_8009A5FC = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer));
D_8009A5CC = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer));
(*temp2) = alHeapAlloc(alHeap, 1, 0x6CC);
D_8009A640 = alHeapAlloc(alHeap, 1, 0x6CC);
D_8009A628 = alHeapAlloc(alHeap, 1, 0x834);
(*temp1)->soundManager = (*temp2);
D_8009A628->unk_00 = *(temp_s4);
D_8009A664->soundManager = D_8009A640;
D_8009A628->unk_00 = D_8009A5C0;
temp4 = *temp_s4;
temp4 = D_8009A5C0;
temp_v0_2 = alHeapAlloc(alHeap, 1, 0x8000);
temp4->currentTrackData[0] = &temp_v0_2[0];
temp4->currentTrackData[1] = &temp_v0_2[0x1400];
@ -91,30 +85,26 @@ void snd_load_audio_data(s32 frequency) {
temp4->banks[i] = alHeapAlloc(alHeap, 1, 0x840);
}
temp2_1 = &D_8009A640;
temp3 = &D_8009A5FC;
temp1_1 = &D_8009A664;
func_8004E158(*temp1_1, 1, 0, temp4);
func_8004E158(D_8009A664, 1, 0, temp4);
temp6[0] = 0;
temp6[1] = 3;
temp6[2] = 0xff;
temp6[3] = 0xff;
func_8004E344(*temp1_1, &temp6);
func_8004E158(*temp3, 2, 2, temp4);
func_8004E344(D_8009A664, &temp6);
func_8004E158(D_8009A5FC, 2, 2, temp4);
temp6[0] = 2;
temp6[1] = 0xff;
temp6[2] = 0xff;
temp6[3] = 0xff;
func_8004E344(*temp3, &temp6);
func_8004B440(*temp2_1, 4, 1, temp4, 0x10);
func_8004E344(D_8009A5FC, &temp6);
func_8004B440(D_8009A640, 4, 1, temp4, 0x10);
func_80050B90(D_8009A628, 6, 1, temp4);
func_80052614(temp4);
snd_load_BK_headers(temp4, alHeap);
if (snd_fetch_SBN_file(temp4->mseqFileList->unk_0, 0x20, subroutine_arg7) == 0) {
snd_read_rom(subroutine_arg7[0], temp4->dataSEF, subroutine_arg7[1] & 0xFFFFFF);
}
snd_load_sfx_groups_from_SEF(*temp2_1);
snd_load_sfx_groups_from_SEF(D_8009A640);
if (snd_fetch_SBN_file(temp4->mseqFileList->unk_2, 0x40, subroutine_arg7) == 0) {
snd_load_PER(temp4, subroutine_arg7[0]);
}
@ -189,7 +179,6 @@ void snd_update_sequence_players(void) {
UnkAl834* temp_s0 = D_8009A628;
BGMPlayer* bgmPlayer1;
BGMPlayer* bgmPlayer2;
s32* t1;
func_80053654(temp_s2);
@ -210,8 +199,7 @@ void snd_update_sequence_players(void) {
manager->unk_BA = func_8004C444(manager);
}
t1 = &D_80078DB0;
if (*t1 == 0) {
if (D_80078DB0 == 0) {
bgmPlayer1 = D_8009A5FC;
if (bgmPlayer1->fadeInfo.fadeTime != 0) {
snd_update_bgm_fade(bgmPlayer1);
@ -225,7 +213,7 @@ void snd_update_sequence_players(void) {
bgmPlayer1->unk_10 += bgmPlayer1->unk_0C;
bgmPlayer1->unk_5C = func_8004E4B8(bgmPlayer1);
}
if (*t1 == 0) {
if (D_80078DB0 == 0) {
if (temp_s2->unk_80 != 0) {
func_8004DFD4(temp_s2);
}

View File

@ -16,10 +16,8 @@ s32 D_80078E60[] = { 0x7FFF7FFC, 0x7FF57FE8, 0x7FD77FC0, 0x7FA57F84, 0x7F5F7F34,
INCLUDE_ASM(s32, "31650", func_80056250);
void func_800565A4(void) {
UnkAl0** sym = &D_80078E50;
if (*sym != NULL) {
*sym = NULL;
if (D_80078E50 != NULL) {
D_80078E50 = NULL;
}
}
@ -144,16 +142,14 @@ INCLUDE_ASM(s32, "31650", func_80057C54);
INCLUDE_ASM(s32, "31650", func_80057D0C);
void func_80057DC8(s32 arg0) {
s32* sym;
if (arg0 < 2) {
D_800A3FF0 = 0;
D_800A3FEE = 0;
}
sym = &D_800A3FF0;
*sym = arg0;
D_800A3FF0 = arg0;
if (arg0 >= 5) {
*sym = 4;
D_800A3FF0 = 4;
}
}

View File

@ -44,18 +44,16 @@ void func_80059D48(void) {
INCLUDE_ASM(s32, "341d0", update_effects);
s32 render_effects(void) {
EffectInstance** curEffectInst;
s32 i;
curEffectInst = &D_800B4398[0];
for (i = 0; i < ARRAY_COUNT(D_800B4398); i++) {
if ((curEffectInst[i] != NULL) && (curEffectInst[i]->flags & 1) && (curEffectInst[i]->flags & 8)) {
if ((D_800B4398[i] != NULL) && (D_800B4398[i]->flags & 1) && (D_800B4398[i]->flags & 8)) {
if (gGameStatusPtr->isBattle) {
if (curEffectInst[i]->flags & 4) {
curEffectInst[i]->effect->renderWorld(curEffectInst[i]);
if (D_800B4398[i]->flags & 4) {
D_800B4398[i]->effect->renderWorld(D_800B4398[i]);
}
} else if (!(curEffectInst[i]->flags & 4)) {
curEffectInst[i]->effect->renderWorld(curEffectInst[i]);
} else if (!(D_800B4398[i]->flags & 4)) {
D_800B4398[i]->effect->renderWorld(D_800B4398[i]);
}
}
}
@ -67,11 +65,10 @@ EffectInstance* func_8005A2BC(EffectBlueprint* effectBp) {
EffectInstance* newEffectInst;
Effect* curEffect;
s32 i;
EffectInstance** temp = &D_800B4398[0];
// Search for an unused instance
for (i = 0; i < ARRAY_COUNT(D_800B4398); i++) {
if (temp[i] == NULL) {
if (D_800B4398[i] == NULL) {
break;
}
}
@ -129,10 +126,9 @@ EffectInstance* func_8005A2BC(EffectBlueprint* effectBp) {
void remove_effect(EffectInstance* arg0) {
s32 i;
EffectInstance** temp = &D_800B4398[0];
for (i = 0; i < ARRAY_COUNT(D_800B4398); i++) {
if (temp[i] == arg0) {
if (D_800B4398[i] == arg0) {
break;
}
}
@ -152,16 +148,16 @@ void remove_effect(EffectInstance* arg0) {
void remove_all_effects(void) {
s32 i;
EffectInstance** temp = &D_800B4398[0];
for (i = 0; i < ARRAY_COUNT(D_800B4398); i++) {
EffectInstance* temp2 = temp[i];
EffectInstance* temp2 = D_800B4398[i];
if (temp2 != NULL && temp2->flags & 4) {
if (temp2->data != NULL) {
general_heap_free(temp2->data);
}
general_heap_free(temp2);
temp[i] = NULL;
D_800B4398[i] = NULL;
}
}
}

View File

@ -15,10 +15,8 @@ void poll_rumble(void) {
void start_rumble(s32 freq, s32 frame) {
if (gGameStatusPtr->demoState == 0) {
u16* sym = &D_80074260;
if (*sym != 0) {
s32 symx2 = *sym * 2;
if (D_80074260 != 0) {
s32 symx2 = D_80074260 * 2;
if (frame > symx2) {
frame = symx2;
@ -33,17 +31,13 @@ void start_rumble(s32 freq, s32 frame) {
}
void update_max_rumble_duration(void) {
s32* sym = &D_80074264;
u16* sym2;
if (*sym != gGameStatusPtr->currentButtons) {
*sym = gGameStatusPtr->currentButtons;
if (D_80074264 != gGameStatusPtr->currentButtons) {
D_80074264 = gGameStatusPtr->currentButtons;
reset_max_rumble_duration();
}
sym2 = &D_80074260;
if (*sym2 != 0) {
(*sym2)--;
if (D_80074260 != 0) {
D_80074260--;
}
}

View File

@ -182,11 +182,12 @@ void func_80029860(s32 dramAddr, s32 devAddr, s32 size) {
}
s32 _advance_rng(void) {
s32* rngVal = &gRandSeed;
gRandSeed *= 0x5D588B65;
gRandSeed++;
gGameStatusPtr->nextRNG = *rngVal = (*rngVal * 0x5D588B65) + 1;
gGameStatusPtr->nextRNG = gRandSeed;
return *rngVal;
return gRandSeed;
}
f32 func_80029934(void) {

View File

@ -1,5 +1,12 @@
#include "common.h"
extern s32 D_800760C0;
extern Mtx D_8009BAA8[];
extern s32 D_80076078;
extern s32 D_80077140;
extern s32 D_800771E8;
void initialize_curtains(void) {
gCurtainDrawCallback = NULL;
gCurtainScale = 2.0f;
@ -11,7 +18,66 @@ void initialize_curtains(void) {
void update_curtains(void) {
}
INCLUDE_ASM(s32, "6e40_len_500", render_curtains);
void render_curtains(void) {
if (gCurtainScaleGoal != gCurtainScale) {
gCurtainScale += (gCurtainScaleGoal - gCurtainScale) * 0.1;
}
if (gCurtainFadeGoal != gCurtainFade) {
gCurtainFade += (gCurtainFadeGoal - gCurtainFade) * 0.03;
}
if (gCurtainScale < 1.9) {
Mtx m;
f32 scale;
s8 rgb;
gDPPipeSync(gMasterGfxPos++);
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(D_8009A64C));
gSPDisplayList(gMasterGfxPos++, &D_800760C0);
guFrustumF(m.m[0], -80.0f, 80.0f, -60.0f, 60.0f, 160.0f, 640.0f, 1.0f);
guMtxF2L(m.m[0], &D_8009BAA8[0]);
gSPMatrix(gMasterGfxPos++, &D_8009BAA8[0], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
scale = gCurtainScale - 0.01;
if (scale < 1.0f) {
scale = 1.0f;
}
guPositionF(m.m[0], 0.0f, 0.0f, 0.0f, scale * 0.1, 0.0f, 0.0f, -320.0f);
guMtxF2L(m.m[0], &D_8009BAA8[1]);
gSPMatrix(gMasterGfxPos++, &D_8009BAA8[1], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
rgb = 255.0f - (gCurtainFade * 255.0f);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, rgb, rgb, rgb, 255);
gSPDisplayList(gMasterGfxPos++, &D_80076078);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
gDPPipeSync(gMasterGfxPos++);
}
if (gCurtainDrawCallback != NULL) {
gCurtainDrawCallback();
}
if (!(gGameStatusPtr->contBitPattern & 1)) {
if ((get_game_mode() == 0x10) || (get_game_mode() == 2) || (gGameStatusPtr->demoState != 0)) {
s32 alpha = ((gGameStatusPtr->frameCounter) % 0x18) << 5;
if (alpha > 255) {
alpha = 255;
}
gSPDisplayList(gMasterGfxPos++, &D_800760C0);
gSPDisplayList(gMasterGfxPos++, &D_80077140);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0xFF, 0x20, 0x10, alpha);
gSPDisplayList(gMasterGfxPos++, &D_800771E8);
}
}
}
void set_curtain_scale_goal(f32 scale) {
gCurtainScaleGoal = scale;

View File

@ -6,8 +6,7 @@ void begin_state_init(void) {
}
void step_init_state(void) {
GameStatus** gameStatusPtr = &gGameStatusPtr;
GameStatus* gameStatus = *gameStatusPtr;
GameStatus* gameStatus = gGameStatusPtr;
s32 i;
if (gameStatus->loadMenuState != 0) {
@ -16,18 +15,18 @@ void step_init_state(void) {
}
gOverrideFlags = 0;
(*gameStatusPtr)->areaID = 0;
(*gameStatusPtr)->isBattle = 0;
gGameStatusPtr->areaID = 0;
gGameStatusPtr->isBattle = 0;
gameStatus->prevArea = -1;
gameStatus->mapID = 0;
gameStatus->entryID = 0;
(*gameStatusPtr)->unk_76 = 0;
(*gameStatusPtr)->disableScripts = 0;
(*gameStatusPtr)->unk_7D = 0;
(*gameStatusPtr)->unk_A8 = -1;
(*gameStatusPtr)->unk_AA = 0;
(*gameStatusPtr)->unk_A9 = -1;
(*gameStatusPtr)->demoState = 0;
gGameStatusPtr->unk_76 = 0;
gGameStatusPtr->disableScripts = 0;
gGameStatusPtr->unk_7D = 0;
gGameStatusPtr->unk_A8 = -1;
gGameStatusPtr->unk_AA = 0;
gGameStatusPtr->unk_A9 = -1;
gGameStatusPtr->demoState = 0;
general_heap_create();
func_8011D890();
@ -63,8 +62,8 @@ void step_init_state(void) {
initialize_curtains();
for (i = 0; i < 4; i++) {
(*gameStatusPtr)->unk_50[i] = 4;
(*gameStatusPtr)->unk_48[i] = 0xF;
gGameStatusPtr->unk_50[i] = 4;
gGameStatusPtr->unk_48[i] = 0xF;
}
fio_has_valid_backup();

View File

@ -47,9 +47,8 @@ s16 intro_logos_fade_out(s16 addAlpha) {
}
void intro_logos_update_fade(void) {
GameStatus** gameStatus = &gGameStatusPtr;
set_transition_stencil_zoom_0(0, (*gameStatus)->bootAlpha);
set_transition_stencil_color(0, (*gameStatus)->bootBlue, (*gameStatus)->bootGreen, (*gameStatus)->bootRed);
set_transition_stencil_zoom_0(0, gGameStatusPtr->bootAlpha);
set_transition_stencil_color(0, gGameStatusPtr->bootBlue, gGameStatusPtr->bootGreen, gGameStatusPtr->bootRed);
}
void begin_state_battle(void) {
@ -59,19 +58,21 @@ void begin_state_battle(void) {
#ifdef NON_MATCHING
void step_battle(void) {
s32 phi_a0;
u32 currentBattleSection;
u32 unk_47B;
if (D_800A0900 == 5) {
if (D_8009A658[1] != D_8009A64C) {
return;
}
(D_800A0900)--;
D_800A0900--;
gOverrideFlags |= 0x8;
nuContRmbForceStop();
}
if (D_800A0900 >= 0) {
if (D_800A0900 > 0) {
(D_800A0900)--;
D_800A0900--;
} else {
D_800A0900 = -1;
nuGfxSetCfb(&D_800778A0, 2);
@ -84,19 +85,23 @@ void step_battle(void) {
func_802B20B4();
func_80149670(0);
currentBattleSection = gBattleStatus.currentBattleSection;
unk_47B = gBattleStatus.unk_47B;
// This part sucks
if ((gGameStatusPtr->peachFlags & 1)) {
if (gBattleStatus.currentBattleSection != 0x26 || gBattleStatus.unk_47B != 0) {
phi_a0 = 5;
} else {
gGameStatusPtr->peachFlags |= 1;
phi_a0 = 6;
}
} else {
if (gGameStatusPtr->peachFlags & 1) {
gGameStatusPtr->peachFlags |= 1;
phi_a0 = 6;
} else if (currentBattleSection == 0x26) {
if (unk_47B == 0) {
gGameStatusPtr->peachFlags |= 1;
phi_a0 = 6;
} else {
phi_a0 = 5;
}
} else {
phi_a0 = 5;
}
spr_init_sprites(phi_a0);
clear_model_data();
@ -141,7 +146,6 @@ void step_battle(void) {
INCLUDE_ASM(s32, "ebd0_len_6a0", step_battle);
#endif
void func_80033B54(void) {
draw_encounter_ui();
if (D_800A0900 < 0) {

View File

@ -37,10 +37,9 @@ NUPiOverlaySegment D_8007795C = {
void appendGfx_intro_logos();
// bss?
extern s8 D_800A0910[];
extern s8* D_800A0910;
void state_init_logos(void) {
Camera* cameras = &gCameras;
s8* romStart;
s8* romEnd;
s32* logoRam;
@ -58,41 +57,41 @@ void state_init_logos(void) {
logoRam = heap_malloc(romEnd - romStart);
temp_800A0910 = &D_800A0910;
*temp_800A0910 = logoRam;
D_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;
D_800A0918 = D_800A0910 + 0x0;
D_800A0914 = D_800A0910 + 0x7000;
D_800A091C = D_800A0910 + 0x15000;
nuContRmbForceStop();
create_cameras_a();
cameras[0].mode = 6;
cameras[0].unk_06 = 1;
cameras[0].nearClip = 0x10;
cameras[0].farClip = 0x1000;
gCameras[0].mode = 6;
gCameras[0].unk_06 = 1;
gCameras[0].nearClip = 0x10;
gCameras[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;
gCameras[0].vfov = 25.0f;
gCameras[0].flags |= 0x2;
gCameras[1].flags |= 0x2;
gCameras[2].flags |= 0x2;
gCameras[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;
gCameras[0].unk_1E = 0x28;
gCameras[0].backgroundColor[0] = 0;
gCameras[0].backgroundColor[1] = 0;
gCameras[0].backgroundColor[2] = 0;
gCameras[0].unk_54 = 25.0f;
gCameras[0].unk_58 = 25.0f;
gCameras[0].unk_1C = 0;
gCameras[0].unk_20 = 100;
gCameras[0].unk_22 = 0;
gCameras[0].lookAt_eye[0] = 500.0f;
gCameras[0].lookAt_eye[1] = 1000.0f;
gCameras[0].lookAt_eye[2] = 1500.0f;
gCameras[0].unk_5C = 150.0f;
clear_script_list();
clear_dynamic_entity_list();
func_8011D890();
@ -109,11 +108,7 @@ void state_init_logos(void) {
gGameStatusPtr->enableBackground = FALSE;
}
//INCLUDE_ASM(s32, "f270_len_1190", state_step_logos);
void state_step_logos(void) {
s32 gameModeTemp;
s32* temp800A0910;
if (gGameStatusPtr->bSkipIntro) {
if (intro_logos_fade_out(0xA) != 0) {
set_curtain_scale(1.0f);
@ -122,16 +117,12 @@ void state_step_logos(void) {
}
} else {
switch (gGameStatusPtr->loadMenuState) {
GameStatus** gameStatus;
case 1:
gameStatus = &gGameStatusPtr;
if ((*gameStatus)->menuCounter == 0) {
if (gGameStatusPtr->menuCounter == 0) {
intro_logos_set_fade_color(208);
(*gameStatus)->loadMenuState++;
gGameStatusPtr->loadMenuState++;
}
(*gameStatus)->menuCounter--;
gGameStatusPtr->menuCounter--;
break;
case 2:
if (intro_logos_fade_out(0xA) != 0) {
@ -140,20 +131,16 @@ void state_step_logos(void) {
break;
case 3:
if (intro_logos_fade_in(0xA) != 0) {
GameStatus** gameStatus = &gGameStatusPtr;
(*gameStatus)->loadMenuState++;
(*gameStatus)->menuCounter = 40;
gGameStatusPtr->loadMenuState++;
gGameStatusPtr->menuCounter = 40;
}
break;
case 4:
gameStatus = &gGameStatusPtr;
if ((*gameStatus)->menuCounter == 0) {
(*gameStatus)->loadMenuState++;
if (gGameStatusPtr->menuCounter == 0) {
gGameStatusPtr->loadMenuState++;
intro_logos_set_fade_color(208);
}
(*gameStatus)->menuCounter--;
gGameStatusPtr->menuCounter--;
break;
case 5:
if (intro_logos_fade_out(0xA) != 0) {
@ -163,20 +150,17 @@ void state_step_logos(void) {
case 0:
case 6:
if (intro_logos_fade_in(0xA) != 0) {
GameStatus** gameStatus = &gGameStatusPtr;
(*gameStatus)->loadMenuState++;
(*gameStatus)->menuCounter = 30;
gGameStatusPtr->loadMenuState++;
gGameStatusPtr->menuCounter = 30;
}
break;
case 7:
gameStatus = &gGameStatusPtr;
if ((*gameStatus)->menuCounter == 0) {
(*gameStatus)->loadMenuState++;
if (gGameStatusPtr->menuCounter == 0) {
gGameStatusPtr->loadMenuState++;
intro_logos_set_fade_color(208);
(*gameStatus)->menuCounter = 30;
gGameStatusPtr->menuCounter = 30;
}
(*gameStatus)->menuCounter--;
gGameStatusPtr->menuCounter--;
break;
case 8:
if (gGameStatusPtr->menuCounter == 0) {
@ -190,10 +174,8 @@ void state_step_logos(void) {
break;
case 9:
if (intro_logos_fade_out(0xA) != 0) {
GameStatus** gameStatus = &gGameStatusPtr;
(*gameStatus)->menuCounter = 15;
(*gameStatus)->loadMenuState++;
gGameStatusPtr->menuCounter = 15;
gGameStatusPtr->loadMenuState++;
}
break;
case 10:
@ -204,9 +186,8 @@ void state_step_logos(void) {
}
break;
case 11:
temp800A0910 = &D_800A0910;
heap_free(*temp800A0910);
*temp800A0910 = 0;
heap_free(D_800A0910);
D_800A0910 = 0;
intro_logos_set_fade_alpha(255);
gGameStatusPtr->unk_A8 = 0;
@ -314,7 +295,7 @@ void state_init_pause(void) {
}
void state_step_pause(void) {
s32 temp800A0921_2 = D_800A0921;
s32 oldIsBattle = D_800A0921;
switch (D_800A0921) {
case 0:
@ -343,7 +324,7 @@ void state_step_pause(void) {
gGameStatusPtr->unk_15E = gGameStatusPtr->unk_15C;
sfx_stop_env_sounds();
func_8003B1A8();
gGameStatusPtr->isBattle = temp800A0921_2;
gGameStatusPtr->isBattle = oldIsBattle;
allocate_hit_tables();
battle_heap_create();
nuContRmbForceStop();
@ -409,12 +390,11 @@ void state_step_unpause(void) {
if (D_800A0920 >= 0) {
if (D_800A0920 != 0) {
(D_800A0920)--;
D_800A0920--;
}
if (D_800A0920 == 0) {
if (D_800A0920 == 0) {
PlayerStatus* playerStatus;
MapConfig* mapConfig;
Map* map;
s32 assetData;
@ -472,8 +452,7 @@ void state_step_unpause(void) {
func_800E98C4();
set_time_freeze_mode(1);
D_800A0921 = 3;
playerStatus = &gPlayerStatus;
playerStatus->alpha2 = playerStatus->alpha1 - 1;
gPlayerStatus.alpha2 = gPlayerStatus.alpha1 - 1;
D_802D9D71 = D_802D9D70 + 1;
update_counters();

View File

@ -2,7 +2,7 @@
#include "map.h"
#include "npc.h"
s32 func_802DE2AC(s32 arg0, s32 arg1, f32 arg2);
s32 spr_update_sprite(s32 arg0, s32 arg1, f32 arg2);
void npc_callback_no_op(void) {
}
@ -128,16 +128,16 @@ void set_npc_sprite(Npc* npc, s32 anim, s32** extraAnimList) {
if (!(flagsTemp & 0x40000000)) {
if (!(flagsTemp & NPC_FLAG_1000000)) {
func_802DE2AC(npc->spriteInstanceID, anim, npc->animationSpeed);
spr_update_sprite(npc->spriteInstanceID, anim, npc->animationSpeed);
}
}
}
void enable_npc_blur(Npc* npc) {
BlurBuffer* blurBuf;
s32 i;
if (!(npc->flags & 0x100000)) {
BlurBuffer* blurBuf;
s32 i;
npc->flags |= 0x100000;
blurBuf = heap_malloc(sizeof(BlurBuffer));
@ -228,7 +228,7 @@ INCLUDE_ASM(s32, "npc", func_8003C3D8);
INCLUDE_ASM(s32, "npc", func_8003C428);
INCLUDE_ASM(s32, "npc", func_8003C444);
INCLUDE_ASM(s32, "npc", npc_update_decorations);
INCLUDE_ASM(s32, "npc", func_8003C53C);
@ -396,7 +396,6 @@ void func_8003E338(void) {
void clear_encounter_status(void) {
EncounterStatus* currentEncounter = &gCurrentEncounter;
GameStatus** gameStatus;
s32 i;
s32 j;
@ -418,14 +417,13 @@ void clear_encounter_status(void) {
}
}
gameStatus = &gGameStatusPtr;
currentEncounter->numEncounters = 0;
currentEncounter->eFirstStrike = 0;
currentEncounter->hitType = 0;
currentEncounter->unk_0A = 0;
currentEncounter->currentAreaIndex = (*gameStatus)->areaID;
currentEncounter->currentMapIndex = (*gameStatus)->mapID;
currentEncounter->currentEntryIndex = (*gameStatus)->entryID;
currentEncounter->currentAreaIndex = gGameStatusPtr->areaID;
currentEncounter->currentMapIndex = gGameStatusPtr->mapID;
currentEncounter->currentEntryIndex = gGameStatusPtr->entryID;
currentEncounter->npcGroupList = 0;
currentEncounter->unk_08 = 0;
currentEncounter->unk_12 = 0;
@ -439,8 +437,7 @@ void func_8003E50C(void) {
}
void func_8003E514(s8 arg0) {
EncounterStatus* currentEncounter = &gCurrentEncounter;
currentEncounter->unk_08 = arg0;
gCurrentEncounter.unk_08 = arg0;
}
void update_counters(void) {
@ -492,10 +489,12 @@ void draw_encounter_ui(void) {
}
void draw_first_strike_ui(void) {
if (gGameState != 0) {
if (gGameState == 3) {
switch (gGameState) {
case 0:
default:
break;
case 3:
show_first_strike_message();
}
}
}

View File

@ -291,7 +291,7 @@ INCLUDE_ASM(s32, "sprite", func_802DE0C0);
INCLUDE_ASM(s32, "sprite", func_802DE0EC);
INCLUDE_ASM(s32, "sprite", func_802DE2AC, s32 arg0, s32 arg1, f32 arg2);
INCLUDE_ASM(s32, "sprite", spr_update_sprite, s32 arg0, s32 arg1, f32 arg2);
INCLUDE_ASM(s32, "sprite", func_802DE3D8);

View File

@ -33,7 +33,9 @@ f32 D_800F7B70[] = { 2.0f, 4.0f, 32.0f, -32.0f };
s16 D_800F7B80 = 0;
s32 D_800F7B84[] = { 0, 0, 0};
f32 D_800F7B90 = 0.0;
s32 D_800F7B94[] = { 0x00390000, 0x00390002, 0x00390003, 0x00390004, 0x00390005, 0x00390008, 0x00390007, 0x00390013, 0x00390014, 0xFFFFFFFF, 0x005A0000, 0x005A0002, 0x005A0003, 0x005A0004, 0x005A0006, 0x005A0007, 0x005A0009, 0x005A000A, 0x005A000B, 0x005A001A, 0xFFFFFFFF, 0x00580000, 0x00580001, 0x00580002, 0x00580004, 0x00580005, 0x00580006, 0x00580007, 0x00580008, 0x00580009, 0x00580012, 0x00580014, 0x0058001B, 0xFFFFFFFF };
s32 D_800F7B94[] = { 0x00390000, 0x00390002, 0x00390003, 0x00390004, 0x00390005, 0x00390008, 0x00390007, 0x00390013, 0x00390014, 0xFFFFFFFF, };
s32 D_800F7BBC[] = { 0x005A0000, 0x005A0002, 0x005A0003, 0x005A0004, 0x005A0006, 0x005A0007, 0x005A0009, 0x005A000A, 0x005A000B, 0x005A001A, 0xFFFFFFFF, };
s32 D_800F7BE8[] = { 0x00580000, 0x00580001, 0x00580002, 0x00580004, 0x00580005, 0x00580006, 0x00580007, 0x00580008, 0x00580009, 0x00580012, 0x00580014, 0x0058001B, 0xFFFFFFFF};
DisguiseAnims world_actions_peachDisguises[] = {
{0x00580001, 0x00580004, 0x00580006, 0x00580008, 0x00580000, 0x0058001B},

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
#include "dgb_01.h"
Gfx D_00C057F0_1[] = {
Gfx D_80247F70_C057F0[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),

View File

@ -1,6 +1,6 @@
#include "dgb_01.h"
Gfx D_00C06870_1[] = {
Gfx D_80248FF0_C06870[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),

View File

@ -1,6 +1,6 @@
#include "dgb_01.h"
Gfx D_00C070F0_1[] = {
Gfx D_80249870_C070F0[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),

View File

@ -1,6 +1,6 @@
#include "dgb_01.h"
Gfx D_00C07570_1[] = {
Gfx D_80249CF0_C07570[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),

View File

@ -1,6 +1,6 @@
#include "dgb_01.h"
Gfx D_00C079F0_1[] = {
Gfx D_8024A170_C079F0[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),

View File

@ -1,6 +1,6 @@
#include "dgb_01.h"
Gfx D_00C07E70_1[] = {
Gfx D_8024A5F0_C07E70[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),

View File

@ -1,6 +1,6 @@
#include "dgb_01.h"
Gfx D_00C07E70_11[] = {
Gfx D_8024AE70_C086F0[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),

View File

@ -1,6 +1,6 @@
#include "dgb_01.h"
Gfx D_8024B6F0_1[] = {
Gfx D_8024B6F0_C08F70[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),

View File

@ -13,7 +13,7 @@ void N(DeadUnkNpcAIFunc14)(ScriptInstance* script, NpcAISettings* aiSettings) {
npc->jumpVelocity = jumpVelocity;
npc->jumpScale = jumpScale;
npc->moveSpeed = aiSettings->chaseSpeed;
npc->yaw = dead_atan2(npc->pos.x, npc->pos.z, D_800FFC90->position.x, D_800FFC90->position.z);
npc->yaw = dead_atan2(npc->pos.x, npc->pos.z, dead_gPlayerStatusPtr->position.x, dead_gPlayerStatusPtr->position.z);
enemy->varTable[2] = 0;

View File

@ -1,6 +1,8 @@
#include "common.h"
#include "goompa.h"
static s32 goompa_802BD600;
void world_goompa_init(Npc* partner) {
partner->collisionHeight = 24;
partner->collisionRadius = 20;
@ -36,7 +38,7 @@ Script world_goompa_take_out = SCRIPT({
GoompaTakeOut();
});
s32 D_802BD58C_324E9C = 0x802BD600;
s32 D_802BD58C_324E9C = &goompa_802BD600;
Script world_goompa_update = SCRIPT({
func_802BD14C_324A5C();

View File

@ -1,16 +1,134 @@
#include "common.h"
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80280000);
extern s32 MessagePlural;
extern s32 MessageSingular;
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80280088);
extern s32 D_80286520;
extern s32 D_80286524;
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_8028017C);
ApiStatus func_802803C8(ScriptInstance* script, s32 isInitialCall);
ApiStatus func_80280410(ScriptInstance* script, s32 isInitialCall);
ApiStatus ShowShopPurchaseDialog(ScriptInstance* script, s32 isInitialCall);
ApiStatus ShowShopOwnerDialog(ScriptInstance* script, s32 isInitialCall);
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80280208);
s32 D_80283E80_7E4D00[] = { 0x00000043, 0x00000006, SpeakToPlayer, 0xFE363C81, 0xFE363C82, 0xFE363C83, 0x00000000, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000, };
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_802802D0);
s32 D_80283EB0_7E4D30[] = { 0x00000043, 0x00000006, ContinueSpeech, 0xFE363C81, 0xFE363C82, 0xFE363C83, 0x00000000, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000, };
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_8028035C);
s32 D_80283EE0_7E4D60[] = { 0x00000043, 0x00000005, EndSpeech, 0xFE363C81, 0xFE363C82, 0xFE363C83, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFE363C81, 0xFE363C82, 0xFE363C83, 0x00000000, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000, };
s32 D_80283F2C_7E4DAC[] = { 0x00000043, 0x00000005, EndSpeech, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, };
s32 D_80283F58_7E4DD8[] = { 0x00000043, 0x00000002, GetCurrentPartner, 0xFE363C81, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000004, 0x00000001, 0x0000000A, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000002, 0x00000004, 0x00000001, 0x0000000A, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000003, 0x00000004, 0x00000001, 0x0000000A, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000043, 0x00000001, func_802803C8, 0x0000000A, 0x00000002, 0xFE363C82, 0x00000000, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_80280410, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000, };
s32 D_80284034_7E4EB4[] = { 0x00000043, 0x00000002, ShowShopPurchaseDialog, 0xFE363C80, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000001, ShowShopOwnerDialog, 0x00000002, 0x00000000, 0x00000001, 0x00000000, };
static s32 D_80286520;
static s32 D_80286524;
s32 shop_owner_begin_speech(s32 messageIndex) {
Shop* shop = gGameStatusPtr->mapShop;
s32 shopStringID = shop->owner->shopStringIDs[messageIndex];
ScriptInstance* script = start_script(&D_80283E80_7E4D00, 1, 0);
script->varTable[0] = shopStringID;
script->varTable[1] = shop->owner->npcID;
script->varTable[2] = shop->owner->talkAnim;
script->varTable[3] = shop->owner->idleAnim;
return script->id;
}
s32 shop_owner_buy_dialog(s32 messageIndex, s32 itemName, s32 coinCost, s32 bpCost) {
Shop* shop = gGameStatusPtr->mapShop;
s32 shopStringID = shop->owner->shopStringIDs[messageIndex];
ScriptInstance *script;
s32 phi_a0;
set_message_string(itemName, 0);
set_message_value(coinCost, 1);
if (bpCost > 0) {
set_message_value(bpCost, 2);
} else {
if (coinCost == 1) {
phi_a0 = &MessageSingular;
} else {
phi_a0 = &MessagePlural;
}
set_message_string(phi_a0, 2);
}
script = start_script(&D_80283E80_7E4D00, 1, 0);
script->varTable[0] = shopStringID;
script->varTable[1] = shop->owner->npcID;
script->varTable[2] = shop->owner->talkAnim;
script->varTable[3] = shop->owner->idleAnim;
return script->id;
}
s32 shop_owner_continue_speech(s32 messageIndex) {
Shop* shop = gGameStatusPtr->mapShop;
s32 shopStringID = shop->owner->shopStringIDs[messageIndex];
ScriptInstance* script = start_script(&D_80283EB0_7E4D30, 1, 0);
script->varTable[0] = shopStringID;
script->varTable[1] = shop->owner->npcID;
script->varTable[2] = shop->owner->talkAnim;
script->functionTemp[3].s = script->varTable[3] = shop->owner->idleAnim;
return script->id;
}
s32 shop_owner_continue_speech_with_quantity(s32 messageIndex, s32 amount) {
Shop* shop = gGameStatusPtr->mapShop;
s32 shopStringID = shop->owner->shopStringIDs[messageIndex];
s32 phi_a0;
ScriptInstance* script;
set_message_value(amount, 0);
if (amount == 1) {
phi_a0 = &MessageSingular;
} else {
phi_a0 = &MessagePlural;
}
set_message_string(phi_a0, 1);
script = start_script(&D_80283EB0_7E4D30, 1, 0);
script->varTable[0] = shopStringID;
script->varTable[1] = shop->owner->npcID;
script->varTable[2] = shop->owner->talkAnim;
script->functionTemp[3].s = script->varTable[3] = shop->owner->idleAnim;
return script->id;
}
s32 shop_owner_reset_speech(s32 messageIndex) {
Shop* shop = gGameStatusPtr->mapShop;
s32 shopStringID = shop->owner->shopStringIDs[messageIndex];
ScriptInstance* script = start_script(&D_80283EE0_7E4D60, 1, 0);
script->varTable[0] = shopStringID;
script->varTable[1] = shop->owner->npcID;
script->varTable[2] = shop->owner->talkAnim;
script->functionTemp[3].s = script->varTable[3] = shop->owner->idleAnim;
return script->id;
}
s32 shop_owner_end_speech(void) {
Shop* shop = gGameStatusPtr->mapShop;
ScriptInstance* script = start_script(&D_80283F2C_7E4DAC, 1, 0);
script->varTable[0] = shop->owner->npcID;
script->varTable[1] = shop->owner->talkAnim;
script->functionTemp[3].s = script->varTable[2] = shop->owner->idleAnim;
return script->id;
}
ApiStatus func_802803C8(ScriptInstance* script, s32 isInitialCall) {
PlayerStatus* playerStatus = &gPlayerStatus;
@ -30,30 +148,96 @@ ApiStatus func_802803C8(ScriptInstance* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
// BSS nop issue
#ifdef NON_MATCHING
ApiStatus func_80280410(ScriptInstance* script, s32 isInitialCall) {
Shop* shop = gGameStatusPtr->mapShop;
s32 var1 = get_variable(script, *script->ptrReadPos);
if (!(shop->flags & 8)) {
shop->unk_08 = var1;
shop->flags |= 1;
func_800E98EC();
shop->unk_358 = 5;
if (gGameStatusPtr->pressedButtons & 0x8000) {
ScriptInstance* childScript;
disable_player_input();
disable_player_static_collisions();
childScript = start_script(&D_80284034_7E4EB4, 1, 0);
childScript->varTable[0] = var1;
D_80286520 = childScript;
D_80286524 = childScript->id;
shop->flags |= 8;
return ApiStatus_BLOCK;
} else {
return ApiStatus_DONE2;
}
} else if (does_script_exist(D_80286524)) {
return ApiStatus_BLOCK;
}
shop->flags &= ~0x8;
enable_player_static_collisions();
enable_player_input();
return ApiStatus_DONE2;
}
#else
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80280410);
#endif
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_8028051C);
INCLUDE_ASM(ApiStatus, "world/script_api/7E0E80", ShowShopPurchaseDialog, ScriptInstance* script, s32 isInitialCall);
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80280954);
INCLUDE_ASM(s32, "world/script_api/7E0E80", shop_open_item_select_popup);
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80280AC4);
INCLUDE_ASM(s32, "world/script_api/7E0E80", shop_update_item_select_popup);
void func_80280B44(void) {
void shop_close_item_select_popup(void) {
func_800F1538();
func_800E9900();
func_800E98C4();
close_status_menu();
}
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80280B78);
// Ordering issue
#ifdef NON_MATCHING
s32 shop_get_sell_price(s32 itemID) {
Shop* shop = gGameStatusPtr->mapShop;
s32 numItems = shop->numSpecialPrices;
s32 i;
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80280BD0);
for (i = 0; i < numItems; i++) {
if (shop->staticPriceList[i].itemID == itemID) {
return shop->staticPriceList[i].sellPrice;
}
}
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_80281434);
return gItemTable[itemID].sellValue;
}
#else
INCLUDE_ASM(s32, "world/script_api/7E0E80", shop_get_sell_price);
#endif
INCLUDE_ASM(s32, "world/script_api/7E0E80", func_802814D0);
INCLUDE_ASM(ApiStatus, "world/script_api/7E0E80", ShowShopOwnerDialog, ScriptInstance* script, s32 isInitialCall);
INCLUDE_ASM(s32, "world/script_api/7E0E80", draw_shop_items);
void shop_draw_item_name(s32 arg0, s32 posX, s32 posY) {
Shop* shop = gGameStatusPtr->mapShop;
StaticInventoryItem* siItem = &shop->staticInventory[shop->unk_08];
StaticItem* item = &gItemTable[siItem->unk_00];
draw_msg(item->nameString, posX + 60 - (get_string_width(item->nameString, 0) >> 1), posY + 6, 255, 0, 0);
}
void shop_draw_item_desc(s32 arg0, s32 posX, s32 posY) {
Shop* shop = gGameStatusPtr->mapShop;
StaticInventoryItem* item = &shop->staticInventory[shop->unk_08];
draw_msg(item->unk_08, posX + 8, posY, 255, 0xA, 0);
}
INCLUDE_ASM(s32, "world/script_api/7E0E80", shop_draw_items);
INCLUDE_ASM(ApiStatus, "world/script_api/7E0E80", MakeShop, ScriptInstance* script, s32 isInitialCall);

View File

@ -38,25 +38,17 @@ void load_world_script_api(void) {
}
void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
PlayerStatus* playerStatus;
GameStatus** gameStatus;
GameStatus** gameStatus2;
GameStatus** gameStatus3;
s32 initStatus;
s32 initStatus = 0;
Map* map;
MapConfig* temp800A41E8;
s32* overrideFlags;
char texStr[17];
s32 decompressedSize;
initStatus = 0;
sfx_stop_env_sounds();
gOverrideFlags &= ~0x40;
gOverrideFlags &= ~0x80;
gameStatus = &gGameStatusPtr;
(*gameStatus)->unk_84 = 0;
gGameStatusPtr->unk_84 = 0;
func_8002D160();
func_802B2078();
func_8011D890();
@ -66,14 +58,14 @@ void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
switch (loadType) {
case 0:
clear_area_flags();
(*gameStatus)->loadType = 0;
gGameStatusPtr->loadType = 0;
break;
case 1:
fio_deserialize_state();
areaID = (*gameStatus)->areaID;
mapID = (*gameStatus)->mapID;
(*gameStatus)->prevArea = areaID;
(*gameStatus)->loadType = 1;
areaID = gGameStatusPtr->areaID;
mapID = gGameStatusPtr->mapID;
gGameStatusPtr->prevArea = areaID;
gGameStatusPtr->loadType = 1;
break;
}
@ -84,7 +76,7 @@ void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
sprintf(&D_800D9230, "%s_shape", map->id);
sprintf(&D_800D91E0, "%s_hit", map->id);
strcpy(texStr, map->id);
texStr[3] = 0;
texStr[3] = '\0';
sprintf(&D_800B0CF0, "%s_tex", texStr);
D_800A41E0 = map;
@ -97,9 +89,7 @@ void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
dma_copy(map->dmaStart, map->dmaEnd, map->dmaDest);
}
temp800A41E8 = &D_800A41E8;
*temp800A41E8 = *map->config;
D_800A41E8 = *map->config;
temp800A41E8 = &D_800A41E8;
if (map->init != 0) {
@ -129,8 +119,7 @@ void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
clear_dynamic_entity_list();
clear_script_list();
create_cameras_a();
gameStatus2 = &gGameStatusPtr;
spr_init_sprites((*gameStatus2)->unk_84);
spr_init_sprites(gGameStatusPtr->unk_84);
func_8011E224();
clear_entity_models();
npc_list_clear();
@ -140,7 +129,7 @@ void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
func_80148040();
use_default_background_settings();
if ((*gameStatus2)->unk_A8 == -1) {
if (gGameStatusPtr->unk_A8 == -1) {
func_80138188();
}
@ -159,8 +148,7 @@ void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
clear_printers();
clear_item_entity_data();
playerStatus = &gPlayerStatus;
playerStatus->targetYaw = playerStatus->currentYaw;
gPlayerStatus.targetYaw = gPlayerStatus.currentYaw;
func_801497FC(D_8008FF60[map->unk_1C.u32 % 4]);
sfx_reset_door_sounds();
@ -192,10 +180,9 @@ void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) {
}
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;
gGameStatusPtr->unk_90 = 1000;
gGameStatusPtr->unk_92 = 1000;
gGameStatusPtr->mainScriptID = start_script_in_group(temp800A41E8->main, 0, 0, 0)->id;
}
s32 get_current_map_config() {

View File

@ -6,3 +6,5 @@ assembler_command = "mips-linux-gnu-as -march=vr4300 -mabi=32"
OVERRIDE_FLAG_CHECK = "int"
OS_K0_TO_PHYSICAL = "int"
"G_.*" = "int"
"TEXEL.*" = "int"
PRIMITIVE = "int"

View File

@ -77,6 +77,9 @@ def read_symbol_addrs():
unique_lines.add(line)
for line in unique_lines:
if "_ROM_START" in line or "_ROM_END" in line:
continue
main, ext = line.rstrip().split(";")
opt = ext.split("//")[-1].strip().split(" ")
@ -84,7 +87,6 @@ def read_symbol_addrs():
type = ""
rom = -1
args = []
for thing in list(opt):
if thing.strip() == "":
opt.remove(thing)
@ -97,6 +99,11 @@ def read_symbol_addrs():
elif "dead:" in thing:
dead = True
eqsplit = main.split(" = ")
if len(eqsplit) != 2:
print(f"Line malformed: '{main}'")
sys.exit(1)
name, addr = main.split(" = ")
if not dead:
@ -117,6 +124,9 @@ def read_elf():
components = line.split()
name = components[-1]
if "_ROM_START" in name or "_ROM_END" in name:
continue
if "/" in name or \
name in ignores or \
name.startswith("_") or \

View File

@ -3,37 +3,118 @@
.section .data
glabel D_802E9D90
.word 0x00000003, 0x00000000, func_802E3650, 0x00000009, 0x0000014E, 0x00000002, func_802E31EC, 0x00000003, 0x00000006, func_802E328C, 0x00000002, func_80110678, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E3650, 0x00000002, func_80110678, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E3650, 0x00000009, 0x0000014E, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E3650, 0x00000009, 0x0000014E, 0x00000002, func_802E3714, 0x00000002, func_80110678, 0x00000003, 0x00000000, func_802E3728, 0x00000003, 0x00000000, func_802E37E4, 0x00000004, 0x00000000, 0x00000000
.word 0x00000003, 0x00000000, func_802E3650, 0x00000009, 0x0000014E, 0x00000002, func_802E31EC, 0x00000003, 0x00000006, func_802E328C, 0x00000002, func_80110678, 0x00000004, 0x00000000, 0x00000000
glabel D_802E9DCC
.word 0x00000003, 0x00000000, func_802E3650, 0x00000002, func_80110678, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E3650, 0x00000009, 0x0000014E, 0x00000004, 0x00000000, 0x00000000
glabel D_802E9E0C
.word 0x00000003, 0x00000000, func_802E3650, 0x00000009, 0x0000014E, 0x00000002, func_802E3714, 0x00000002, func_80110678, 0x00000003, 0x00000000, func_802E3728, 0x00000003, 0x00000000, func_802E37E4, 0x00000004, 0x00000000, 0x00000000
glabel D_802E9E54
.word 0x00000002, func_802E3714, 0x00000003, 0x00000000, func_802E3728, 0x00000003, 0x00000000, func_802E37E4, 0x00000001, 0x802E9E0C, 0x00000000
.word 0x00000002, func_802E3714, 0x00000003, 0x00000000, func_802E3728, 0x00000003, 0x00000000, func_802E37E4, 0x00000001, D_802E9E0C, 0x00000000
glabel D_802E9E80
.word 0x00000006, 0x00000007, 0x00000001, 0x00000007, 0x00000020, 0x00000002, func_802E2FD0, 0x00000003, 0x00000001, 0x00000000, 0x00000007, 0x20000000, 0x00000000, 0x00000003, 0x00000000, func_802E2450, 0x00000002, func_80110678, 0x00000007, 0x00000001, 0x00000007, 0x00000020, 0x00000002, func_802E2FD0, 0x00000009, 0x0000014E, 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x20000000, 0x00000000, 0x00000003, 0x00000000, func_802E3650, 0x00000009, 0x0000014E, 0x00000002, func_80110678, 0x00000004, 0x00000000, 0x00000000, 0x00000002, func_802E3B08, 0x00000005, 0x00000001, 0x00000003, 0x00000000, func_802E3A48, 0x00000009, 0x0000014E, 0x00000002, func_802E38D8, 0x00000002, func_802E3714, 0x00000003, 0x00000000, func_802E3728, 0x00000003, 0x00000000, func_802E37E4, 0x00000004, 0x00000001, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004E0, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004A0, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004F0, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004F0, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004E0, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000338, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004A0, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000CC8, 0x00000002, 0x00000000
.word 0x00000006, 0x00000007, 0x00000001, 0x00000007, 0x00000020, 0x00000002, func_802E2FD0, 0x00000003, 0x00000001, 0x00000000, 0x00000007, 0x20000000, 0x00000000
glabel D_802E9EB4
.word 0x00000003, 0x00000000, func_802E2450, 0x00000002, func_80110678, 0x00000007, 0x00000001, 0x00000007, 0x00000020, 0x00000002, func_802E2FD0, 0x00000009, 0x0000014E, 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x20000000, 0x00000000
glabel D_802E9F00
.word 0x00000003, 0x00000000, func_802E3650, 0x00000009, 0x0000014E, 0x00000002, func_80110678, 0x00000004, 0x00000000, 0x00000000
glabel D_802E9F28
.word 0x00000002, func_802E3B08, 0x00000005, 0x00000001, 0x00000003, 0x00000000, func_802E3A48, 0x00000009, 0x0000014E, 0x00000002, func_802E38D8, 0x00000002, func_802E3714, 0x00000003, 0x00000000, func_802E3728, 0x00000003, 0x00000000, func_802E37E4, 0x00000004, 0x00000001, 0x00000000
glabel D_802E9F80
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004E0, 0x00000002, 0x00000000
glabel D_802E9F9C
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000
glabel D_802E9FB8
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004A0, 0x00000002, 0x00000000
glabel D_802E9FD4
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004F0, 0x00000002, 0x00000000
glabel D_802E9FF0
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004F0, 0x00000002, 0x00000000
glabel D_802EA00C
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004E0, 0x00000002, 0x00000000
glabel D_802EA028
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000338, 0x00000002, 0x00000000
glabel D_802EA044
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0004A0, 0x00000002, 0x00000000
glabel D_802EA060
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000CC8, 0x00000002, 0x00000000
glabel D_802EA07C
.word 0x42000020, 0x802E9F80, 0x00000000, entity_init_Hammer1Block_normal, 0x802E9E0C, func_802E3BA4, 0x00E42240, 0x00E42740, 0x0B191919
.word 0x42000020, D_802E9F80, 0x00000000, entity_init_Hammer1Block_normal, D_802E9E0C, func_802E3BA4, 0x00E42240, 0x00E42740, 0x0B191919
glabel D_802EA0A0
.word 0x42000020, 0x802E9F9C, 0x00000000, entity_init_Hammer1Block_normal, 0x802E9E0C, func_802E3BA4, 0x00E42740, 0x00E431F0, 0x13191919
.word 0x42000020, D_802E9F9C, 0x00000000, entity_init_Hammer1Block_normal, D_802E9E0C, func_802E3BA4, 0x00E42740, 0x00E431F0, 0x13191919
glabel D_802EA0C4
.word 0x42800020, 0x802EA044, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9EB4, func_802E3BA4, 0x00E3DDB0, 0x00E3E260, 0x0D191919, 0x42000020, 0x802E9FB8, 0x00000000, func_802E3898, 0x802E9F28, func_802E3BA4, 0x00E3DDB0, 0x00E3E260, 0x0E191919, 0x42800020, 0x802E9FD4, 0x00000000, entity_init_Hammer1Block_normal, 0x802E9F00, func_802E3BA4, 0x00E31530, 0x00E31A30, 0x15323232, 0x42800020, 0x802E9FD4, 0x00000000, entity_init_Hammer1Block_normal, 0x802E9F00, func_802E3BA4, 0x00E31530, 0x00E31A30, 0x15643232, 0x42800020, 0x802E9FD4, 0x00000000, entity_init_Hammer1Block_normal, 0x802E9F00, func_802E3BA4, 0x00E31530, 0x00E31A30, 0x15323264, 0x42800020, 0x802E9FD4, 0x00000000, entity_init_HammerBlock_small, 0x802E9DCC, func_802E3BA4, 0x00E31530, 0x00E31A30, 0x18191919, 0x42800020, 0x802E9FF0, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9DCC, func_802E3BA4, 0x00E31A30, 0x00E31F30, 0x16323232, 0x42800020, 0x802E9FF0, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9DCC, func_802E3BA4, 0x00E31A30, 0x00E31F30, 0x16643232, 0x42800020, 0x802E9FF0, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9DCC, func_802E3BA4, 0x00E31A30, 0x00E31F30, 0x16323264, 0x42800020, 0x802E9FF0, 0x00000000, entity_init_HammerBlock_small, 0x802E9DCC, func_802E3BA4, 0x00E31A30, 0x00E31F30, 0x19191919, 0x42800020, 0x802EA00C, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9DCC, func_802E3BA4, 0x00E31F30, 0x00E32420, 0x17323232, 0x42800020, 0x802EA00C, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9DCC, func_802E3BA4, 0x00E31F30, 0x00E32420, 0x17643232, 0x42800020, 0x802EA00C, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9DCC, func_802E3BA4, 0x00E31F30, 0x00E32420, 0x17323264, 0x42800020, 0x802EA00C, 0x00000000, entity_init_HammerBlock_small, 0x802E9DCC, func_802E3BA4, 0x00E31F30, 0x00E32420, 0x1A191919
.word 0x42800020, D_802EA044, 0x00000000, entity_init_Hammer23Block_normal, D_802E9EB4, func_802E3BA4, 0x00E3DDB0, 0x00E3E260, 0x0D191919, 0x42000020, D_802E9FB8, 0x00000000, func_802E3898, D_802E9F28, func_802E3BA4, 0x00E3DDB0, 0x00E3E260, 0x0E191919, 0x42800020, D_802E9FD4, 0x00000000, entity_init_Hammer1Block_normal, D_802E9F00, func_802E3BA4, 0x00E31530, 0x00E31A30, 0x15323232, 0x42800020, D_802E9FD4, 0x00000000, entity_init_Hammer1Block_normal, D_802E9F00, func_802E3BA4, 0x00E31530, 0x00E31A30, 0x15643232, 0x42800020, D_802E9FD4, 0x00000000, entity_init_Hammer1Block_normal, D_802E9F00, func_802E3BA4, 0x00E31530, 0x00E31A30, 0x15323264, 0x42800020, D_802E9FD4, 0x00000000, entity_init_HammerBlock_small, D_802E9DCC, func_802E3BA4, 0x00E31530, 0x00E31A30, 0x18191919, 0x42800020, D_802E9FF0, 0x00000000, entity_init_Hammer23Block_normal, D_802E9DCC, func_802E3BA4, 0x00E31A30, 0x00E31F30, 0x16323232, 0x42800020, D_802E9FF0, 0x00000000, entity_init_Hammer23Block_normal, D_802E9DCC, func_802E3BA4, 0x00E31A30, 0x00E31F30, 0x16643232, 0x42800020, D_802E9FF0, 0x00000000, entity_init_Hammer23Block_normal, D_802E9DCC, func_802E3BA4, 0x00E31A30, 0x00E31F30, 0x16323264, 0x42800020, D_802E9FF0, 0x00000000, entity_init_HammerBlock_small, D_802E9DCC, func_802E3BA4, 0x00E31A30, 0x00E31F30, 0x19191919, 0x42800020, D_802EA00C, 0x00000000, entity_init_Hammer23Block_normal, D_802E9DCC, func_802E3BA4, 0x00E31F30, 0x00E32420, 0x17323232, 0x42800020, D_802EA00C, 0x00000000, entity_init_Hammer23Block_normal, D_802E9DCC, func_802E3BA4, 0x00E31F30, 0x00E32420, 0x17643232, 0x42800020, D_802EA00C, 0x00000000, entity_init_Hammer23Block_normal, D_802E9DCC, func_802E3BA4, 0x00E31F30, 0x00E32420, 0x17323264, 0x42800020, D_802EA00C, 0x00000000, entity_init_HammerBlock_small, D_802E9DCC, func_802E3BA4, 0x00E31F30, 0x00E32420, 0x1A191919
glabel D_802EA2BC
.word 0x40000020, 0x802EA028, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9DCC, func_802E3BA4, 0x00E3DA60, 0x00E3DDB0, 0x0C191919, 0x40000020, 0x802EA060, 0x00000000, entity_init_Hammer23Block_normal, D_802E9D90, func_802E3BA4, 0x00E43B20, 0x00E44800, 0x211E1919, 0x00000000, 0x00000000, 0x00000000
.word 0x40000020, D_802EA028, 0x00000000, entity_init_Hammer23Block_normal, D_802E9DCC, func_802E3BA4, 0x00E3DA60, 0x00E3DDB0, 0x0C191919, 0x40000020, D_802EA060, 0x00000000, entity_init_Hammer23Block_normal, D_802E9D90, func_802E3BA4, 0x00E43B20, 0x00E44800, 0x211E1919, 0x00000000, 0x00000000, 0x00000000
glabel D_802EA310
.word 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x20000000, 0x00000000, 0x00000002, func_802E4154, 0x00000003, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E3E80, 0x00000009, 0x0000014E, 0x00000002, func_802E3F0C, 0x00000002, func_802E421C, 0x00000003, 0x00000001, 0x00000000, 0x00000007, 0x00000001, 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x20000000, 0x00000000, 0x00000002, func_802E4154, 0x00000003, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E3E9C, 0x00000009, 0x0000014E, 0x00000002, func_802E3F0C, 0x00000002, func_802E421C, 0x00000003, 0x00000001, 0x00000000, 0x00000007, 0x00000001, 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x20000000, 0x00000000, 0x00000003, 0x00000001, 0x00000000, 0x00000002, func_802E40A0, 0x00000003, 0x0000000A, func_802E3EE0, 0x00000002, func_802E4484, 0x00000002, func_802E4108, 0x00000003, 0x00000001, 0x00000000, 0x00000007, 0x00000001, 0x00000007, 0x04000000, 0x00000000, 0x00000003, 0x00000000, func_802E3E80, 0x00000002, func_802E44F8, 0x00000009, 0x0000014E, 0x00000002, func_802E405C, 0x00000002, func_802E3714, 0x00000003, 0x00000000, func_802E3728, 0x00000003, 0x00000000, func_802E37E4, 0x00000002, func_802E44CC, 0x00000002, func_802E4540, 0x00000007, 0x00000001, 0x00000007, 0x00000020, 0x00000002, func_802E4040, 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x04000000, 0x00000000, 0x00E459F0, 0x00E46E10, 0x00E46E10, 0x00E470B0, 0x00E470B0, 0x00E484F0, 0x00E484F0, 0x00E48780, 0x00E48780, 0x00E49BE0, 0x00E49BE0, 0x00E49E40, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000, 0x00000004, 0x00000016, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000, 0x00000004, 0x00000016, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000, 0x42000020, 0x802EA4F4, 0x00000000, func_802E464C, 0x802EA328, func_802E3BA4, 0x00E3B870, 0x00E3C320, 0x0F191919, 0x42000020, 0x802EA510, 0x00000000, func_802E4694, 0x802EA38C, func_802E3BA4, 0x00E3B870, 0x00E3C320, 0x11191919, 0x42000020, 0x802EA52C, 0x00000000, func_802E464C, 0x802EA328, func_802E3BA4, 0x00E3C320, 0x00E3CDD0, 0x14191919, 0x42000020, 0x802EA548, 0x00000000, func_802E4694, 0x802EA38C, func_802E3BA4, 0x00E3C320, 0x00E3CDD0, 0x12191919, 0xC2080020, 0x0000023C, 0x00000084, func_802E46BC, 0x802EA440, func_802E3BA4, 0x802EA4C4, 0x00000000, 0x10191919
.word 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x20000000, 0x00000000
glabel D_802EA328
.word 0x00000002, func_802E4154, 0x00000003, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E3E80, 0x00000009, 0x0000014E, 0x00000002, func_802E3F0C, 0x00000002, func_802E421C, 0x00000003, 0x00000001, 0x00000000, 0x00000007, 0x00000001, 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x20000000, 0x00000000
glabel D_802EA38C
.word 0x00000002, func_802E4154, 0x00000003, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E3E9C, 0x00000009, 0x0000014E, 0x00000002, func_802E3F0C, 0x00000002, func_802E421C, 0x00000003, 0x00000001, 0x00000000, 0x00000007, 0x00000001, 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x20000000, 0x00000000
glabel D_802EA3F0
.word 0x00000003, 0x00000001, 0x00000000, 0x00000002, func_802E40A0, 0x00000003, 0x0000000A, func_802E3EE0, 0x00000002, func_802E4484, 0x00000002, func_802E4108, 0x00000003, 0x00000001, 0x00000000, 0x00000007, 0x00000001, 0x00000007, 0x04000000, 0x00000000
glabel D_802EA440
.word 0x00000003, 0x00000000, func_802E3E80, 0x00000002, func_802E44F8, 0x00000009, 0x0000014E, 0x00000002, func_802E405C, 0x00000002, func_802E3714, 0x00000003, 0x00000000, func_802E3728, 0x00000003, 0x00000000, func_802E37E4, 0x00000002, func_802E44CC, 0x00000002, func_802E4540, 0x00000007, 0x00000001, 0x00000007, 0x00000020, 0x00000002, func_802E4040, 0x00000003, 0x00000002, 0x00000000, 0x00000007, 0x04000000, 0x00000000
glabel D_802EA4C4
.word 0x00E459F0, 0x00E46E10, 0x00E46E10, 0x00E470B0
glabel D_802EA4D4
.word 0x00E470B0, 0x00E484F0, 0x00E484F0, 0x00E48780
glabel D_802EA4E4
.word 0x00E48780, 0x00E49BE0, 0x00E49BE0, 0x00E49E40
glabel D_802EA4F4
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000
glabel D_802EA510
.word 0x00000004, 0x00000016, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000
glabel D_802EA52C
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000
glabel D_802EA548
.word 0x00000004, 0x00000016, 0x00000001, 0x0000003C, 0x0A000A90, 0x00000002, 0x00000000, 0x42000020, D_802EA4F4, 0x00000000, func_802E464C, D_802EA328, func_802E3BA4, 0x00E3B870, 0x00E3C320, 0x0F191919, 0x42000020, D_802EA510, 0x00000000, func_802E4694, D_802EA38C, func_802E3BA4, 0x00E3B870, 0x00E3C320, 0x11191919, 0x42000020, D_802EA52C, 0x00000000, func_802E464C, D_802EA328, func_802E3BA4, 0x00E3C320, 0x00E3CDD0, 0x14191919, 0x42000020, D_802EA548, 0x00000000, func_802E4694, D_802EA38C, func_802E3BA4, 0x00E3C320, 0x00E3CDD0, 0x12191919, 0xC2080020, 0x0000023C, 0x00000084, func_802E46BC, D_802EA440, func_802E3BA4, D_802EA4C4, 0x00000000, 0x10191919
glabel D_802EA618
.word 0x42080020, 0x0000023C, 0x00000084, func_802E46BC, 0x802EA3F0, 0x00000000, 0x802EA4C4, 0x00000000, 0x0F191919
.word 0x42080020, 0x0000023C, 0x00000084, func_802E46BC, D_802EA3F0, 0x00000000, D_802EA4C4, 0x00000000, 0x0F191919
glabel D_802EA63C
.word 0x42080020, 0x0000022C, 0x00000084, func_802E46BC, 0x802EA3F0, 0x00000000, 0x802EA4D4, 0x00000000, 0x0F191919
.word 0x42080020, 0x0000022C, 0x00000084, func_802E46BC, D_802EA3F0, 0x00000000, D_802EA4D4, 0x00000000, 0x0F191919
glabel D_802EA660
.word 0x42080020, 0x00000094, 0x00000084, func_802E46BC, 0x802EA3F0, 0x00000000, 0x802EA4E4, 0x00000000, 0x14191919, 0x00000000, 0x00000000, 0x00000000, 0x00000002, func_802E5428, 0x00000003, 0x00000000, func_802E545C, 0x00000002, func_802E4DE0, 0x00000002, func_802E54A8, 0x00000003, 0x00000000, func_802E548C, 0x00000002, func_802E54CC, 0x00000003, 0x00000000, func_802E555C, 0x00000003, 0x0000003C, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E5308, 0x00000009, 0x0000014E, 0x00000002, func_80110678, 0x00000002, func_802E31EC, 0x00000003, 0x00000006, func_802E328C, 0x00000004, 0x00000000, 0x00000000
.word 0x42080020, 0x00000094, 0x00000084, func_802E46BC, D_802EA3F0, 0x00000000, D_802EA4E4, 0x00000000, 0x14191919, 0x00000000, 0x00000000, 0x00000000
glabel D_802EA690
.word 0x00000002, func_802E5428, 0x00000003, 0x00000000, func_802E545C, 0x00000002, func_802E4DE0, 0x00000002, func_802E54A8, 0x00000003, 0x00000000, func_802E548C, 0x00000002, func_802E54CC, 0x00000003, 0x00000000, func_802E555C, 0x00000003, 0x0000003C, 0x00000000, 0x00000004, 0x00000000, 0x00000000
glabel D_802EA6EC
.word 0x00000003, 0x00000000, func_802E5308, 0x00000009, 0x0000014E, 0x00000002, func_80110678, 0x00000002, func_802E31EC, 0x00000003, 0x00000006, func_802E328C, 0x00000004, 0x00000000, 0x00000000
glabel D_802EA728
.word 0x00000004, 0x0000000D, 0x00000001, 0x0000003C, 0x0A000700, 0x00000002, 0x00000000
@ -42,10 +123,16 @@ glabel D_802EA744
.word 0x00000004, 0x00000016, 0x00000001, 0x0000003C, 0x0A0007B0, 0x00000002, 0x00000000
glabel D_802EA760
.word 0x00000004, 0x00000016, 0x00000001, 0x0000003C, 0x0A000808, 0x00000002, 0x00000000, 0x00000004, 0x00000022, 0x00000001, 0x0000003C, 0x0A000918, 0x00000002, 0x00000000, 0x42000020, 0x802EA77C, 0x00000000, entity_init_Hammer23Block_normal, 0x802E9E0C, func_802E3BA4, 0x00E431F0, 0x00E43B20, 0x1F191919
.word 0x00000004, 0x00000016, 0x00000001, 0x0000003C, 0x0A000808, 0x00000002, 0x00000000
glabel D_802EA77C
.word 0x00000004, 0x00000022, 0x00000001, 0x0000003C, 0x0A000918, 0x00000002, 0x00000000, 0x42000020, D_802EA77C, 0x00000000, entity_init_Hammer23Block_normal, D_802E9E0C, func_802E3BA4, 0x00E431F0, 0x00E43B20, 0x1F191919
glabel D_802EA7BC
.short 0x0020, 0x00D8, 0x802E, 0xA728, 0x0000, 0x0000, 0x802E, 0x540C, 0x802E, 0xA690, 0x0000, 0x0000, 0x00E4, 0x9E40, 0x00E4, 0xA6A0, 0x3F12, 0x0612, 0x4200, 0x0020, 0x802E, 0xA77C, 0x0000, 0x0000, 0x802E, 0x5648, 0x802E, 0xA6EC, 0x802E, 0x3BA4, 0x00E4, 0x31F0, 0x00E4, 0x3B20, 0x1B19, 0x1919, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x802E, 0x56EC, 0x0000, 0x0005, 0x0000, 0x0001, 0x0000, 0x0003, 0x0000, 0x0000, 0x802E, 0x56D0, 0x0000, 0x0009, 0x0000, 0x014E, 0x0000, 0x0002, 0x802E, 0x31EC, 0x0000, 0x0003, 0x0000, 0x0006, 0x802E, 0x328C, 0x0000, 0x0002, 0x8011, 0x0678, 0x0000, 0x0004, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0A00
.word 0x002000D8, D_802EA728, 0x00000000, func_802E540C, D_802EA690, 0x00000000, 0x00E49E40, 0x00E4A6A0, 0x3F120612, 0x42000020, D_802EA77C, 0x00000000, func_802E5648, D_802EA6EC, func_802E3BA4, 0x00E431F0, 0x00E43B20, 0x1B191919, 0x00000000, 0x00000000, 0x00000000
glabel D_802EA810
.short 0x0000, 0x0002, 0x802E, 0x56EC, 0x0000, 0x0005, 0x0000, 0x0001, 0x0000, 0x0003, 0x0000, 0x0000, 0x802E, 0x56D0, 0x0000, 0x0009, 0x0000, 0x014E, 0x0000, 0x0002, 0x802E, 0x31EC, 0x0000, 0x0003, 0x0000, 0x0006, 0x802E, 0x328C, 0x0000, 0x0002, 0x8011, 0x0678, 0x0000, 0x0004, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0A00
glabel D_802EA862
.short 0x0200, 0x0A00, 0x0220, 0x0A00, 0x0240, 0x0A00, 0x0260
@ -54,13 +141,49 @@ glabel D_802EA870
.byte 0x14
glabel D_802EA871
.byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x14, 0x03, 0x02, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2E, 0x5E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2E, 0x5E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3C, 0x0A, 0x00, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3C, 0x80, 0x2E, 0x98, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3C, 0x0A, 0x00, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3C, 0x80, 0x2E, 0x98, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x20, 0x80, 0x2E, 0xA8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2E, 0x57, 0xE4, 0x80, 0x2E, 0xA8, 0x10, 0x80, 0x2E, 0x3B, 0xA4, 0x00, 0xE4, 0x48, 0x00, 0x00, 0xE4, 0x51, 0x10, 0x22, 0x19, 0x19, 0x19
.byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x14, 0x03, 0x02, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0x00, 0x00
glabel D_802EA880
.word 0x00000003, 0x00000000, func_802E5E50, 0x00000000
glabel D_802EA890
.word 0x00000003, 0x00000000, func_802E5E50, 0x00000000
glabel D_802EA8A0
.word 0x00000004, 0x0000000D, 0x00000001, 0x0000003C, 0x0A0008F8, 0x00000002, 0x00000000
glabel D_802EA8BC
.word 0x00000004, 0x00000016, 0x00000001, 0x0000003C, D_802E9828, 0x00000002, 0x00000000
glabel D_802EA8D8
.word 0x00000004, 0x0000000D, 0x00000001, 0x0000003C, 0x0A0008C8, 0x00000002, 0x00000000
glabel D_802EA8F4
.word 0x00000004, 0x00000016, 0x00000001, 0x0000003C, D_802E9828, 0x00000002, 0x00000000, 0x42000020, D_802EA8A0, 0x00000000, func_802E57E4, D_802EA810, func_802E3BA4, 0x00E44800, 0x00E45110, 0x22191919
glabel D_802EA934
.word 0x00200130, 0x802EA8BC, 0x00000000, func_802E5F50, 0x802EA880, 0x00000000, 0x00E4A6A0, 0x00E4AA80, 0x41120612, 0x42000020, 0x802EA8D8, 0x00000000, func_802E5800, 0x802EA810, func_802E3BA4, 0x00E45110, 0x00E459F0, 0x23191919, 0x00200130, 0x802EA8F4, 0x00000000, func_802E5F7C, 0x802EA890, 0x00000000, 0x00E4AA80, 0x00E4B2E0, 0x42120612, 0x00000003, 0x00000000, func_802E5FB0, 0x00000003, 0x0000000A, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E6064, 0x00000003, 0x00000002, 0x00000000, 0x00000002, func_802E6118, 0x00000003, 0x00000003, 0x00000000, 0x00000002, func_802E6178, 0x00000003, 0x0000000A, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00E657A0, 0x00E67120, 0x00E67120, 0x00E68580, 0x00E68580, 0x00E69D50, 0x00E69D50, 0x00E6B1B0, 0x20080000, 0x0000131C, 0x000001B8, func_802E6194, 0x802EA9A0, 0x00000000, 0x802EAA10, 0x00000000, 0x2F281928, 0x20080004, 0x0000131C, 0x000001B8, func_802E619C, 0x802EA9C4, 0x00000000, 0x802EAA20, 0x00000000, 0x2E281928, 0x00000000, 0x00000000, 0x00000002, func_802E6338, 0x00000005, 0x00000001, 0x00000002, func_802E6390, 0x00000003, 0x00000000, func_802E63A8, 0x00000003, 0x00000000, func_802E6574, 0x00000004, 0x00000001, 0x00000000, 0x00000004, 0x00000001, 0x00000005, 0x00010000, 0x00000001, 0x0000003C, 0x0A000280, 0x00000002, 0x00000000
.word 0x00200130, D_802EA8BC, 0x00000000, func_802E5F50, D_802EA880, 0x00000000, 0x00E4A6A0, 0x00E4AA80, 0x41120612, 0x42000020, D_802EA8D8, 0x00000000, func_802E5800, D_802EA810, func_802E3BA4, 0x00E45110, 0x00E459F0, 0x23191919, 0x00200130, D_802EA8F4, 0x00000000, func_802E5F7C, D_802EA890, 0x00000000, 0x00E4AA80, 0x00E4B2E0, 0x42120612
glabel D_802EA9A0
.word 0x00000003, 0x00000000, func_802E5FB0, 0x00000003, 0x0000000A, 0x00000000, 0x00000004, 0x00000000, 0x00000000
glabel D_802EA9C4
.word 0x00000003, 0x00000000, func_802E6064, 0x00000003, 0x00000002, 0x00000000, 0x00000002, func_802E6118, 0x00000003, 0x00000003, 0x00000000, 0x00000002, func_802E6178, 0x00000003, 0x0000000A, 0x00000000, 0x00000004, 0x00000000, 0x00000000
glabel D_802EAA10
.word 0x00E657A0, 0x00E67120, 0x00E67120, 0x00E68580
glabel D_802EAA20
.word 0x00E68580, 0x00E69D50, 0x00E69D50, 0x00E6B1B0, 0x20080000, 0x0000131C, 0x000001B8, func_802E6194, D_802EA9A0, 0x00000000, D_802EAA10, 0x00000000, 0x2F281928, 0x20080004, 0x0000131C, 0x000001B8, func_802E619C, D_802EA9C4, 0x00000000, D_802EAA20, 0x00000000, 0x2E281928, 0x00000000, 0x00000000
glabel D_802EAA80
.word 0x00000002, func_802E6338, 0x00000005, 0x00000001, 0x00000002, func_802E6390, 0x00000003, 0x00000000, func_802E63A8, 0x00000003, 0x00000000, func_802E6574, 0x00000004, 0x00000001, 0x00000000
glabel D_802EAABC
.word 0x00000004, 0x00000001, 0x00000005, 0x00010000, 0x00000001, 0x0000003C, 0x0A000280, 0x00000002, 0x00000000
glabel D_802EAAE0
.word 0x00000004, 0x00000001, 0x00000005, 0x00010000, 0x00000001, 0x0000003C, 0x0A0002A0, 0x00000002, 0x00000000, 0x0001007C, 0x802EAABC, 0x00000000, func_802E6C24, 0x802EAA80, 0x00000000, 0x00E56BA0, 0x00E56E60, 0x303C003C, 0x00000000, 0x00000000
.word 0x00000004, 0x00000001, 0x00000005, 0x00010000, 0x00000001, 0x0000003C, 0x0A0002A0, 0x00000002, 0x00000000, 0x0001007C, D_802EAABC, 0x00000000, func_802E6C24, D_802EAA80, 0x00000000, 0x00E56BA0, 0x00E56E60, 0x303C003C, 0x00000000, 0x00000000
glabel D_802EAB30
.word 0x00000056, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF3D, 0xFFFFFE9A, 0xFFFFFDD5, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF24F0280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24ACA80, 0xF24A5280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A9A80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000057, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
@ -75,13 +198,40 @@ glabel D_802EAC84
.word 0x00000056, 0x00000000, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A9A80, 0x00000000, 0xF24DC280, 0xF24ACE80, 0xF24A3A80, 0x00000057, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel D_802EACC8
.word 0x00000056, 0x00000000, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0x00000003, 0x00000057, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000002, func_802E7034, 0x00000003, 0x00000000, func_802E70B0, 0x00000002, func_802E6E20, 0x00000002, func_802E7AE4, 0x00000002, func_802E71F8, 0x00000003, 0x00000000, func_802E75E4, 0x00000002, func_802E7C70, 0x00000003, 0x00000000, func_802E7CB8, 0x00000002, func_802E75C0, 0x00000002, func_802E6E90, 0x00000003, 0x00000000, func_802E742C, 0x00000003, 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000
.word 0x00000056, 0x00000000, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0x00000003, 0x00000057, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel D_802EACFC
.word 0x00000002, func_802E7034, 0x00000003, 0x00000000, func_802E70B0, 0x00000002, func_802E6E20, 0x00000002, func_802E7AE4, 0x00000002, func_802E71F8, 0x00000003, 0x00000000, func_802E75E4, 0x00000002, func_802E7C70, 0x00000003, 0x00000000, func_802E7CB8, 0x00000002, func_802E75C0, 0x00000002, func_802E6E90, 0x00000003, 0x00000000, func_802E742C, 0x00000003, 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000
glabel D_802EAD7C
.word 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000002, func_802E7034, 0x00000003, 0x00000000, func_802E70B0, 0x00000002, func_802E71F8, 0x00000002, func_802E7C70, 0x00000002, func_802E7D28, 0x00000003, 0x00000000, func_802E7230, 0x00000002, func_802E7C8C, 0x00000003, 0x00000000, func_802E742C, 0x00000003, 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000EB8, 0x00000002, 0x00000000, 0x40000038, 0x802EADF0, 0x00000000, func_802E7D54, 0x802EACFC, 0x00000000, 0x00E648D0, 0x00E657A0, 0x32322D2E, 0xC0000038, 0x802EADF0, 0x00000000, entity_init_Chest, 0x802EAD8C, 0x00000000, 0x00E648D0, 0x00E657A0, 0x321C1A17, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A004338, 0x00000002, 0x00000000
.word 0x00000003, 0x00000000, 0x00000000, 0x00000000
glabel D_802EAD8C
.word 0x00000002, func_802E7034, 0x00000003, 0x00000000, func_802E70B0, 0x00000002, func_802E71F8, 0x00000002, func_802E7C70, 0x00000002, func_802E7D28, 0x00000003, 0x00000000, func_802E7230, 0x00000002, func_802E7C8C, 0x00000003, 0x00000000, func_802E742C, 0x00000003, 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000
glabel D_802EADF0
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000EB8, 0x00000002, 0x00000000, 0x40000038, D_802EADF0, 0x00000000, func_802E7D54, D_802EACFC, 0x00000000, 0x00E648D0, 0x00E657A0, 0x32322D2E, 0xC0000038, D_802EADF0, 0x00000000, entity_init_Chest, D_802EAD8C, 0x00000000, 0x00E648D0, 0x00E657A0, 0x321C1A17, 0x00000000, 0x00000000, 0x00000000
glabel D_802EAE60
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A004338, 0x00000002, 0x00000000
glabel D_802EAE7C
.word 0x00000004, 0x00000011, 0x00000001, 0x0000003C, D_802E9828, 0x00000002, 0x00000000, 0x00000003, 0x00000000, func_802E8858, 0x00000007, 0x00000020, 0x00000002, func_802E88EC, 0x00000003, 0x00000000, func_802E7FA0, 0x00000007, 0x00000001, 0x00000007, 0x20000000, 0x00000000, 0x42000394, 0x802EAE60, 0x00000000, func_802E7F40, 0x802EAE98, 0x00000000, 0x00E51640, 0x00E55A40, 0x24231E23, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E89B0, 0x00000003, 0x00000000, func_802E89F8, 0x00000003, 0x00000000, func_802E8A58, 0x00000003, 0x00000000, func_802E8ADC, 0x00000002, func_802E8BC0, 0x00000003, 0x00000000, func_802E8C94, 0x00000002, player_enter_blue_pipe, 0x00000003, 0x00000000, func_802E8D74, 0x00000002, func_802E8E10, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0006B8, 0x00000002, 0x00000000, 0x0000001C, 0x802EAF64, 0x00000000, func_802E8F94, 0x802EAF00, 0x00000000, 0x00E58CD0, 0x00E59480, 0x2B283228, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0x00000000, func_802E9050, 0x00000000, 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000A68, 0x00000002, 0x00000000
.word 0x00000004, 0x00000011, 0x00000001, 0x0000003C, D_802E9828, 0x00000002, 0x00000000
glabel D_802EAE98
.word 0x00000003, 0x00000000, func_802E8858, 0x00000007, 0x00000020, 0x00000002, func_802E88EC, 0x00000003, 0x00000000, func_802E7FA0, 0x00000007, 0x00000001, 0x00000007, 0x20000000, 0x00000000, 0x42000394, D_802EAE60, 0x00000000, func_802E7F40, D_802EAE98, 0x00000000, 0x00E51640, 0x00E55A40, 0x24231E23, 0x00000000, 0x00000000
glabel D_802EAF00
.word 0x00000003, 0x00000000, func_802E89B0, 0x00000003, 0x00000000, func_802E89F8, 0x00000003, 0x00000000, func_802E8A58, 0x00000003, 0x00000000, func_802E8ADC, 0x00000002, func_802E8BC0, 0x00000003, 0x00000000, func_802E8C94, 0x00000002, player_enter_blue_pipe, 0x00000003, 0x00000000, func_802E8D74, 0x00000002, func_802E8E10, 0x00000000
glabel D_802EAF64
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A0006B8, 0x00000002, 0x00000000, 0x0000001C, D_802EAF64, 0x00000000, func_802E8F94, D_802EAF00, 0x00000000, 0x00E58CD0, 0x00E59480, 0x2B283228, 0x00000000, 0x00000000, 0x00000000
glabel D_802EAFB0
.word 0x00000003, 0x00000000, func_802E9050, 0x00000000
glabel D_802EAFC0
.word 0x00000004, 0x00000001, 0x00000001, 0x0000003C, 0x0A000A68, 0x00000002, 0x00000000
glabel D_802EAFDC
.word 0x0E000008, 0x802EAFC0, 0x00000000, 0x00000000, 0x802EAFB0, 0x00000000, 0x00E59480, 0x00E59F00, 0x33283214
.word 0x0E000008, D_802EAFC0, 0x00000000, 0x00000000, D_802EAFB0, 0x00000000, 0x00E59480, 0x00E59F00, 0x33283214

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -21,10 +21,16 @@ glabel D_80078348
.short 0x0000, 0x0001, 0x0000, 0x000E, 0x0000, 0x0000, 0x0000, 0x000D, 0x0000, 0x4E20, 0x0000, 0x0000, 0x0000, 0x7FFF, 0x0000, 0x0000, 0x0000
glabel D_8007836A
.short 0x0000, 0x0000, 0x7FFF, 0x034A, 0x0349, 0x0100, 0x0000, 0x0100, 0x0000, 0x0008, 0x0012, 0x3C7F, 0x2D7F, 0x2B5F, 0x1D00, 0xFF00, 0x2700, 0xFF00, 0x0000, 0x0100, 0x0000, 0x0008, 0x001A, 0x3C7F, 0x237F, 0x3C3F, 0x2A1F, 0x2A0F, 0x2A07, 0x2A03, 0x3600, 0xFF00, 0x3600, 0xFF00, 0x0000, 0x3433, 0x7F26, 0x3F16, 0x00FF, 0x343B, 0x7F3B, 0x3FFF, 0x0000
.short 0x0000, 0x0000, 0x7FFF, 0x034A, 0x0349, 0x0100, 0x0000
glabel D_80078378
.word 0x01000000, 0x00080012, 0x3C7F2D7F, 0x2B5F1D00, 0xFF002700, 0xFF000000
glabel D_80078390
.word 0x01000000, 0x0008001A, 0x3C7F237F, 0x3C3F2A1F, 0x2A0F2A07, 0x2A033600, 0xFF003600, 0xFF000000, 0x34337F26, 0x3F1600FF, 0x343B7F3B, 0x3FFF0000
glabel D_800783C0
.word 0x80078378, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390, 0x80078390
.word D_80078378, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390, D_80078390
glabel D_80078400
.word func_8004CE70, func_8004CEA4, func_8004CEC4, func_8004CF0C

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -3,13 +3,19 @@
.section .data
glabel D_800936C0
.word 0x00000043, 0x00000001, func_8005DB00, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0xFE363C80, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C83, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000004, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000010, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000008, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000014, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000008, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x0000000C, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000006, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000001, 0x00000043, 0x00000003, BindNpcAI, 0xFFFFFFFF, 0x800939A4, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00040200, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000808, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0xFE363C80, 0x00000000, 0x00000043, 0x00000001, func_8005DD54, 0x00000043, 0x00000007, func_802CFD30, 0xFFFFFFFF, 0x00000006, 0xFE363C82, 0xFE363C82, 0xFE363C82, 0x00000000, 0x00000027, 0x00000002, 0xFE363C80, 0x0000001E, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000007, func_802CFD30, 0xFFFFFFFF, 0x00000006, 0x000000FF, 0x000000FF, 0x000000FF, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00040000, 0x00000000, 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000000, 0x00000043, 0x00000001, func_8005DDF0, 0x00000043, 0x00000003, BindNpcAI, 0xFFFFFFFF, 0xFE363C81, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000
.word 0x00000043, 0x00000001, func_8005DB00, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0xFE363C80, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C83, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000004, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000010, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000008, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000014, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000008, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x0000000C, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000006, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C81, 0xFE363C83, 0x00000027, 0x00000002, 0xFE363C81, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel D_800939A4
.word 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000001, 0x00000043, 0x00000003, BindNpcAI, 0xFFFFFFFF, D_800939A4, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00040200, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00000808, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0xFE363C82, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0xFE363C80, 0x00000000, 0x00000043, 0x00000001, func_8005DD54, 0x00000043, 0x00000007, func_802CFD30, 0xFFFFFFFF, 0x00000006, 0xFE363C82, 0xFE363C82, 0xFE363C82, 0x00000000, 0x00000027, 0x00000002, 0xFE363C80, 0x0000001E, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000005, SetNpcRotation, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000007, func_802CFD30, 0xFFFFFFFF, 0x00000006, 0x000000FF, 0x000000FF, 0x000000FF, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFF, 0x00040000, 0x00000000, 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000000, 0x00000043, 0x00000001, func_8005DDF0, 0x00000043, 0x00000003, BindNpcAI, 0xFFFFFFFF, 0xFE363C81, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_80093B80
.word 0x00000000, 0x4E755379, 0x7374656D, 0x322E3035, 0x00000000
.word 0x00000000
glabel D_80093B84
.word 0x4E755379, 0x7374656D, 0x322E3035, 0x00000000
glabel D_80093B94
.word 0x80093B84, 0x00000000, 0x00000000
.word D_80093B84, 0x00000000, 0x00000000
glabel D_80093BA0
.word 0x80096030, 0x80097660
@ -24,7 +30,10 @@ glabel nuContPakCompanyCode
.short 0x0000, 0x0000
glabel nuContPakGameCode
.word 0x00000000, 0x00000000, contPakOpen, contPakFree, contPakFileOpen, contPakFileReadWrite, contPakFileDelete, contPakFileState, contPakFileNum, contPakRepairId, 0x00000000
.word 0x00000000
glabel D_80093CA8
.word 0x00000000, contPakOpen, contPakFree, contPakFileOpen, contPakFileReadWrite, contPakFileDelete, contPakFileState, contPakFileNum, contPakRepairId, 0x00000000
glabel nuContPakCallBack
.word 0x00000000, 0x80093CA8, 0x02000000, 0x00000000
.word 0x00000000, D_80093CA8, 0x02000000, 0x00000000

View File

@ -78,7 +78,7 @@ glabel D_80095940
.ascii "0123456789abcdef\0\0\0\0"
glabel D_80095954
.word 0x30313233, 0x34353637, 0x38394142, 0x43444546, 0x00000000, 0x00000000, 0x00000000
.ascii "0123456789ABCDEF\0\0\0\0\0\0\0\0\0\0\0\0"
glabel D_80095970
.short 0x0000
@ -87,7 +87,10 @@ glabel D_80095972
.short 0x0000
glabel D_80095974
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800959A0
.short 0x0000
glabel D_800959A2
.short 0x0000
@ -102,7 +105,7 @@ glabel D_800959D0
.word D_80095970
glabel D_800959D4
.word 0x800959A0, 0x00000000, 0x00000000
.word D_800959A0, 0x00000000, 0x00000000
glabel D_800959E0
.word 0x10000000, 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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