diff --git a/include/functions.h b/include/functions.h index 7a0b2d05fd..00b5d2068b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -88,6 +88,8 @@ s32 do_lateral_collision(s32, PlayerStatus*, f32*, f32*, f32*, f32, f32); Npc* make_disguise_npc(s32 peachDisguise); s32 partner_player_can_pause(void); +s32 disable_player_static_collisions(void); +s32 disable_player_input(void); void func_80027088(s32); diff --git a/src/code_109660_len_1270.c b/src/code_109660_len_1270.c index 690be24245..83ae8b118f 100644 --- a/src/code_109660_len_1270.c +++ b/src/code_109660_len_1270.c @@ -1,12 +1,6 @@ #include "common.h" #include "map.h" -MapConfig* get_current_map_header(void); -void disable_player_input(void); -void disable_player_static_collisions(void); -void move_player(s32, f32, f32); -s32 func_802E854C(); - typedef struct struct802E7DE0 { /* 0x000 */ s32 unk_000; /* 0x004 */ s32 unk_004; @@ -95,185 +89,3 @@ void func_802E88EC(Entity* entity, f32 arg1) { } } } - -typedef struct struct802E89B0 { - /* 0x00 */ s32 unk_00; - /* 0x04 */ s32 unk_04; - /* 0x08 */ s32 unk_08; - /* 0x0C */ s32 unk_0C; - /* 0x10 */ s32 unk_10; - /* 0x14 */ s32 unk_14; - /* 0x18 */ f32 unk_18; -} struct802E89B0; - -void func_802E89B0(Entity* entity) { - struct802E89B0* temp_s0; - - temp_s0 = entity->dataBuf; - if (get_global_flag(temp_s0->unk_14)) { - temp_s0->unk_04 = 0x10; - exec_entity_updatecmd(entity); - } -} - -extern f64 D_802EB380; - -void func_802E89F8(Entity* entity) { - s32 temp_v0; - struct802E89B0* temp; - - temp = entity->dataBuf; - temp->unk_04--; - if ((temp->unk_04 != -1) && (temp->unk_08 == 0)) { - entity->position.y += D_802EB380; - return; - } - temp->unk_04 = 0; - exec_entity_updatecmd(entity); -} - -void func_802E8A58(Entity* entity) { - struct802E89B0* temp = entity->dataBuf; - - if (temp->unk_0C == (*gGameStatusPtr)->entryID) { - switch (temp->unk_04) { - case 0: - if (gCollisionStatus.currentFloor > 0) { - temp->unk_04 = 1; - } - return; - case 1: - if (gCollisionStatus.currentFloor < 0) { - temp->unk_04 = 2; - } - return; - default: - exec_entity_updatecmd(entity); - return; - } - } else { - exec_entity_updatecmd(entity); - } -} - -#ifdef NON_MATCHING -// small regalloc issue -void func_802E8ADC(Entity* entity) { - PlayerStatus* playerStatus = &gPlayerStatus; - - if ((entity->unk_06 & 1) != 0) { - *D_8009A650 |= 0x40; - if ((playerStatus->flags & 0x3000) == 0) { - s32 phi_v0 = playerStatus->stickAxis[0]; - s32 temp_a0 = playerStatus->stickAxis[1]; - - if (phi_v0 < 0) { - phi_v0 = -phi_v0; - } - - if ((phi_v0 != 0) || (temp_a0 != 0)) { - if (atan2(0.0f, 0.0f, phi_v0, temp_a0) < 60.0f) { - exec_entity_updatecmd(entity); - return; - } - } - } - } else { - *D_8009A650 &= ~0x40; - } -} -#else -INCLUDE_ASM(s32, "code_109660_len_1270", func_802E8ADC); -#endif - -void func_802E8BC0(Entity* entity) { - PlayerStatus* playerStatus = &gPlayerStatus; - PlayerStatus* playerStatus2 = &gPlayerStatus; - struct802E89B0* temp = entity->dataBuf; - MapConfig* mapConfig = get_current_map_header(); - f32 temp_f20; - f32 entryX; - f32 entryZ; - - entryX = GET_MAP_ENTRY(mapConfig, temp->unk_0C)->x; - entryZ = GET_MAP_ENTRY(mapConfig, temp->unk_0C)->z; - temp->unk_04 = func_800E0088(entryX, entryZ) / playerStatus->runSpeed; - if (temp->unk_04 == 0) { - temp->unk_04 = 1; - } - - entryX = GET_MAP_ENTRY(mapConfig, temp->unk_0C)->x; - entryZ = GET_MAP_ENTRY(mapConfig, temp->unk_0C)->z; - temp_f20 = atan2(playerStatus2->position.x, playerStatus2->position.z, entryX, entryZ); - disable_player_input(); - disable_player_static_collisions(); - move_player(temp->unk_04, temp_f20, playerStatus2->runSpeed); -} - -void func_802E8C94(Entity* entity) { - Trigger* trigger = (Trigger*)entity->dataBuf; // TODO: is Trigger correct? - - if (--trigger->params1 == -1) { - exec_entity_updatecmd(entity); - } -} - -void player_enter_blue_pipe(Entity* bluePipe) { - PlayerStatus* playerStatus = &gPlayerStatus; - Trigger* pipeTrigger = (Trigger*)bluePipe->dataBuf; // TODO: is Trigger correct? - - playerStatus->targetYaw = CURRENT_CAM->currentYaw + 180.0f; - pipeTrigger->params1 = 0x19; - playerStatus->renderMode = 0xD; - - func_802DDFF8(0x10002, 5, 2, 1, 1, 0, 0); - play_sound(0x163); - disable_player_shadow(); -} - -void func_802E8D74(Entity* entity) { - PlayerStatus* playerStatus = &gPlayerStatus; - Trigger* entityTrigger = (Trigger*)entity->dataBuf; // TODO: is Trigger correct? - - playerStatus->position.y--; - entityTrigger->params1--; - - if (entityTrigger->params1 == -1) { - playerStatus->renderMode = 0xD; - playerStatus->position.y -= 50.0f; - func_802DDFF8(0x10002, 0, 0, 0, 0, 0, 0); - exec_entity_updatecmd(entity); - } -} - -void func_802E8E10(Entity* entity) { - Bytecode* triggerScriptStart = ((Trigger*)entity->dataBuf)->scriptStart; - - D_8009A650[0] &= ~0x40; - entity->boundScript = triggerScriptStart; - func_80110678(entity); -} - -INCLUDE_ASM(s32, "code_109660_len_1270", push_entity_matrix); - -f32 func_802E8F94(Entity* entity) { - struct802E89B0* temp_s0; - s32* temp = &D_8015C7D0; - s32 temp2; - s32 temp3; - s32 temp4; - f32* temp5; - - temp2 = temp[0]; - temp3 = temp[1]; - temp4 = temp[2]; - entity->unk_3C = &push_entity_matrix; - temp_s0 = entity->dataBuf; - temp5 = &entity->position.y; // required... wtf - temp_s0->unk_0C = temp2; - temp_s0->unk_10 = temp3; - temp_s0->unk_14 = temp4; - temp_s0->unk_18 = entity->position.y; - temp_s0->unk_08 = get_global_flag(temp_s0->unk_14); - *temp5 = entity->position.y - (temp_s0->unk_08 ? 15.0 : 52.0); -} diff --git a/src/code_10A230.c b/src/code_10A230.c new file mode 100644 index 0000000000..b2da09388b --- /dev/null +++ b/src/code_10A230.c @@ -0,0 +1,182 @@ +#include "common.h" +#include "map.h" + +typedef struct struct802E89B0 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ f32 unk_18; +} struct802E89B0; + +void func_802E89B0(Entity* entity) { + struct802E89B0* temp_s0; + + temp_s0 = entity->dataBuf; + if (get_global_flag(temp_s0->unk_14)) { + temp_s0->unk_04 = 0x10; + exec_entity_updatecmd(entity); + } +} + +void func_802E89F8(Entity* entity) { + s32 temp_v0; + struct802E89B0* temp; + + temp = entity->dataBuf; + temp->unk_04--; + if ((temp->unk_04 != -1) && (temp->unk_08 == 0)) { + entity->position.y += 2.3125; + return; + } + temp->unk_04 = 0; + exec_entity_updatecmd(entity); +} + +void func_802E8A58(Entity* entity) { + struct802E89B0* temp = entity->dataBuf; + + if (temp->unk_0C == (*gGameStatusPtr)->entryID) { + switch (temp->unk_04) { + case 0: + if (gCollisionStatus.currentFloor > 0) { + temp->unk_04 = 1; + } + return; + case 1: + if (gCollisionStatus.currentFloor < 0) { + temp->unk_04 = 2; + } + return; + default: + exec_entity_updatecmd(entity); + return; + } + } else { + exec_entity_updatecmd(entity); + } +} + +#ifdef NON_MATCHING +// small regalloc issue +void func_802E8ADC(Entity* entity) { + PlayerStatus* playerStatus = &gPlayerStatus; + + if ((entity->unk_06 & 1) != 0) { + *D_8009A650 |= 0x40; + if ((playerStatus->flags & 0x3000) == 0) { + s32 phi_v0 = playerStatus->stickAxis[0]; + s32 temp_a0 = playerStatus->stickAxis[1]; + + if (phi_v0 < 0) { + phi_v0 = -phi_v0; + } + + if ((phi_v0 != 0) || (temp_a0 != 0)) { + if (atan2(0.0f, 0.0f, phi_v0, temp_a0) < 60.0f) { + exec_entity_updatecmd(entity); + return; + } + } + } + } else { + *D_8009A650 &= ~0x40; + } +} +#else +INCLUDE_ASM(s32, "code_10A230", func_802E8ADC); +#endif + +void func_802E8BC0(Entity* entity) { + PlayerStatus* playerStatus = &gPlayerStatus; + PlayerStatus* playerStatus2 = &gPlayerStatus; + struct802E89B0* temp = entity->dataBuf; + MapConfig* mapConfig = get_current_map_header(); + f32 temp_f20; + f32 entryX; + f32 entryZ; + + entryX = GET_MAP_ENTRY(mapConfig, temp->unk_0C)->x; + entryZ = GET_MAP_ENTRY(mapConfig, temp->unk_0C)->z; + temp->unk_04 = func_800E0088(entryX, entryZ) / playerStatus->runSpeed; + if (temp->unk_04 == 0) { + temp->unk_04 = 1; + } + + entryX = GET_MAP_ENTRY(mapConfig, temp->unk_0C)->x; + entryZ = GET_MAP_ENTRY(mapConfig, temp->unk_0C)->z; + temp_f20 = atan2(playerStatus2->position.x, playerStatus2->position.z, entryX, entryZ); + disable_player_input(); + disable_player_static_collisions(); + move_player(temp->unk_04, temp_f20, playerStatus2->runSpeed); +} + +void func_802E8C94(Entity* entity) { + Trigger* trigger = (Trigger*)entity->dataBuf; // TODO: is Trigger correct? + + if (--trigger->params1 == -1) { + exec_entity_updatecmd(entity); + } +} + +void player_enter_blue_pipe(Entity* bluePipe) { + PlayerStatus* playerStatus = &gPlayerStatus; + Trigger* pipeTrigger = (Trigger*)bluePipe->dataBuf; // TODO: is Trigger correct? + + playerStatus->targetYaw = CURRENT_CAM->currentYaw + 180.0f; + pipeTrigger->params1 = 0x19; + playerStatus->renderMode = 0xD; + + func_802DDFF8(0x10002, 5, 2, 1, 1, 0, 0); + play_sound(0x163); + disable_player_shadow(); +} + +void func_802E8D74(Entity* entity) { + PlayerStatus* playerStatus = &gPlayerStatus; + Trigger* entityTrigger = (Trigger*)entity->dataBuf; // TODO: is Trigger correct? + + playerStatus->position.y--; + entityTrigger->params1--; + + if (entityTrigger->params1 == -1) { + playerStatus->renderMode = 0xD; + playerStatus->position.y -= 50.0f; + func_802DDFF8(0x10002, 0, 0, 0, 0, 0, 0); + exec_entity_updatecmd(entity); + } +} + +void func_802E8E10(Entity* entity) { + Bytecode* triggerScriptStart = ((Trigger*)entity->dataBuf)->scriptStart; + + D_8009A650[0] &= ~0x40; + entity->boundScript = triggerScriptStart; + func_80110678(entity); +} + +INCLUDE_ASM(s32, "code_10A230", push_entity_matrix); + +f32 func_802E8F94(Entity* entity) { + struct802E89B0* temp_s0; + s32* temp = &D_8015C7D0; + s32 temp2; + s32 temp3; + s32 temp4; + f32* temp5; + + temp2 = temp[0]; + temp3 = temp[1]; + temp4 = temp[2]; + entity->unk_3C = &push_entity_matrix; + temp_s0 = entity->dataBuf; + temp5 = &entity->position.y; // required... wtf + temp_s0->unk_0C = temp2; + temp_s0->unk_10 = temp3; + temp_s0->unk_14 = temp4; + temp_s0->unk_18 = entity->position.y; + temp_s0->unk_08 = get_global_flag(temp_s0->unk_14); + *temp5 = entity->position.y - (temp_s0->unk_08 ? 15.0 : 52.0); +} diff --git a/src/code_1b40_len_20b0.c b/src/code_1b40_len_20b0.c index ecb3a406f9..9fef5a0184 100644 --- a/src/code_1b40_len_20b0.c +++ b/src/code_1b40_len_20b0.c @@ -1,31 +1,38 @@ #include "common.h" -extern Gfx D_80074210[]; -extern Gfx D_80074230[]; - s8 D_80074020 = 1; s8 D_80074021 = 5; GameStatus gGameStatus = {0}; - GameStatus* gGameStatusPtr[1] = { &gGameStatus }; - s16 D_800741A0 = 0; - s16 D_800741A2 = 0; - s32 D_800741A4 = 0; - -s32 D_800741A8[] = { 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; - +s32 D_800741A8[] = { 0x00010000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000001, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, }; u16 gMatrixListPos = 0; - u16 D_800741F2 = 0; - u16 gCurrentDisplayContextIndex = 0; +s32 D_800741F8 = 0; +s32 D_800741FC = 0; +s32 D_80074200[] = { 0x028001E0, 0x01FF0000, 0x028001E0, 0x01FF0000 }; -s32 D_800741F8[] = { 0x00000000, 0x00000000, 0x028001E0, 0x01FF0000, 0x028001E0, 0x01FF0000, 0xE200001C, 0x0F0A4000, 0xFCFFFFFF, 0xFFFE793C, 0xE3001801, 0x00000040, 0xDF000000, 0x00000000, 0xDC080008, 0x80074200, 0xD9000000, 0x00000000, 0xD9FFFFFF, 0x00200405, 0xD7000000, 0x00000000, 0xDF000000, 0x00000000, 0x00000000, 0x00000000, }; +Gfx D_80074210[] = { + gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_BAYER), + gsSPEndDisplayList(), +}; +Gfx D_80074230[] = { + gsSPViewport(&D_80074200), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_OFF), + gsSPEndDisplayList(), +}; INCLUDE_ASM(void, "code_1b40_len_20b0", step_game_loop); @@ -33,23 +40,24 @@ INCLUDE_ASM(s32, "code_1b40_len_20b0", gfx_task_background); INCLUDE_ASM(s32, "code_1b40_len_20b0", gfx_draw_frame); -#ifdef NON_MATCHING void load_engine_data(void) { - GameStatus* phi_s0; + GameStatus** gameStatusPtrTemp = gGameStatusPtr; + GameStatus** gameStatusPtrTemp2 = gGameStatusPtr; + GameStatus* gameStatus3; s32 i; - dma_copy(code_code_FEE30_ROM_START, code_code_FEE30_ROM_END, code_code_FEE30_VRAM); - dma_copy(code_code_759B0_ROM_START, code_code_759B0_ROM_END, code_code_759B0_VRAM); - dma_copy(code_code_E79B0_ROM_START, code_code_E79B0_ROM_END, code_code_E79B0_VRAM); - dma_copy(code_code_102610_ROM_START, code_code_102610_ROM_END, code_code_102610_VRAM); - dma_copy(code_code_A5DD0_ROM_START, code_code_A5DD0_ROM_END, code_code_A5DD0_VRAM); - dma_copy(D_0010CC10, D_0010CC10_end, D_802EB3D0); // new segment required to fix this + dma_copy(&code_code_FEE30_ROM_START, &code_code_FEE30_ROM_END, &code_code_FEE30_VRAM); + dma_copy(&code_code_759B0_ROM_START, &code_code_759B0_ROM_END, &code_code_759B0_VRAM); + dma_copy(&code_code_E79B0_ROM_START, &code_code_E79B0_ROM_END, &code_code_E79B0_VRAM); + dma_copy(&code_code_102610_ROM_START, &code_code_102610_ROM_END, &code_code_102610_VRAM); + dma_copy(&code_code_A5DD0_ROM_START, &code_code_A5DD0_ROM_END, &code_code_A5DD0_VRAM); + dma_copy(&code_code_10CC10_ROM_START, &code_code_10CC10_ROM_END, &code_code_10CC10_VRAM); + D_8009A650[0] = 0; - phi_s0 = *gGameStatusPtr; (*gGameStatusPtr)->unk_79 = 0; + (*gameStatusPtrTemp2)->enableBackground = 0; (*gGameStatusPtr)->musicEnabled = 1; - phi_s0->unk_148 = 0; - (*gGameStatusPtr)->unk_7C = 1; + (*gameStatusPtrTemp)->unk_7C = 1; (*gGameStatusPtr)->unk_A8 = -1; (*gGameStatusPtr)->unk_AA = 0; (*gGameStatusPtr)->unk_81 = 0; @@ -58,12 +66,12 @@ void load_engine_data(void) { D_8009A5D8 = 0; (*gGameStatusPtr)->unk_75 = (*gGameStatusPtr)->unk_13C = 0; D_80074021 = 5; - (*gGameStatusPtr)->unk_168 = 0; + (*gGameStatusPtr)->saveCount = 0; fio_init_flash(); func_80028838(); general_heap_create(); func_8011D890(); - func_801230B8(); + clear_dynamic_entity_list(); clear_script_list(); create_cameras_a(); clear_player_status(); @@ -76,10 +84,10 @@ void load_engine_data(void) { clear_character_set(); clear_printers(); func_80112B98(); - func_800384BC(); + clear_npcs(); func_80141100(); clear_trigger_data(); - func_80110CB8(0); + clear_entity_data(0); clear_player_data(); func_8003E338(); clear_transition_stencil(); @@ -90,21 +98,18 @@ void load_engine_data(void) { reset_ambient_sounds(); func_80149618(); clear_windows(); - curtains_init(); + initialize_curtains(); poll_rumble(); - phi_s0 = *gGameStatusPtr; + gameStatus3 = gGameStatusPtr[0]; for (i = 0; i < 4; i++) { - phi_s0->unk_50[i] = 3; - phi_s0->unk_48[i] = 0xC; + gameStatus3->unk_50[i] = 3; + gameStatus3->unk_48[i] = 0xC; } D_8009A650[0] |= 8; set_game_mode(0); } -#else -INCLUDE_ASM(s32, "code_1b40_len_20b0", load_engine_data); -#endif //weird ordering issue #ifdef NON_MATCHING @@ -149,20 +154,17 @@ s32 func_80027190(void) { #ifdef NON_MATCHING void gfx_init_state(void) { + Gfx* temp; + gSPSegment(gMasterGfxPos++, 0x00, 0x0); gSPDisplayList(gMasterGfxPos++, OS_K0_TO_PHYSICAL(&D_80074230)); + temp = gMasterGfxPos++; gSPDisplayList(gMasterGfxPos++, OS_K0_TO_PHYSICAL(&D_80074210)); } #else INCLUDE_ASM(s32, "code_1b40_len_20b0", gfx_init_state); #endif -// void gfx_init_state(void) { -// gSPSegment(gMasterGfxPos++, 0x00, 0x00000000); -// gSPDisplayList(gMasterGfxPos++, D_00074230); -// gSPDisplayList(gMasterGfxPos++, D_00074210); -// } - INCLUDE_ASM(s32, "code_1b40_len_20b0", func_800271FC); INCLUDE_ASM(s32, "code_1b40_len_20b0", func_8002725C); diff --git a/tools/splat/.gitrepo b/tools/splat/.gitrepo index 4ff31e2d3e..a312251cc6 100644 --- a/tools/splat/.gitrepo +++ b/tools/splat/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/ethteck/splat.git branch = master - commit = f602284b3e7bc6513e412097c35b002a1d844c33 - parent = 6fb912cb08e7ec2d4f8a49129ee0011e1b253938 + commit = 3a68ae30a79639e2163dda9740c27098577e0faf + parent = f4d3ed342967e19607bf9c9ef70c280c474e2f6e method = merge cmdver = 0.4.3 diff --git a/tools/splat/segtypes/n64/code.py b/tools/splat/segtypes/n64/code.py index 4280a5229c..62fdd6cbe4 100644 --- a/tools/splat/segtypes/n64/code.py +++ b/tools/splat/segtypes/n64/code.py @@ -109,7 +109,7 @@ class Subsegment(): pass def split(self, segment, rom_bytes, base_path): - if self.should_run(segment.options) and not self.name.startswith("."): + if "skip" not in self.args and self.should_run(segment.options) and not self.name.startswith("."): self.split_inner(segment, rom_bytes, base_path, self.get_generic_out_path(base_path, segment.options)) @staticmethod diff --git a/ver/us/asm/nonmatchings/code_109660_len_1270/func_802E8ADC.s b/ver/us/asm/nonmatchings/code_10A230/func_802E8ADC.s similarity index 100% rename from ver/us/asm/nonmatchings/code_109660_len_1270/func_802E8ADC.s rename to ver/us/asm/nonmatchings/code_10A230/func_802E8ADC.s diff --git a/ver/us/asm/nonmatchings/code_109660_len_1270/push_entity_matrix.s b/ver/us/asm/nonmatchings/code_10A230/push_entity_matrix.s similarity index 100% rename from ver/us/asm/nonmatchings/code_109660_len_1270/push_entity_matrix.s rename to ver/us/asm/nonmatchings/code_10A230/push_entity_matrix.s diff --git a/ver/us/asm/nonmatchings/code_1b40_len_20b0/load_engine_data.s b/ver/us/asm/nonmatchings/code_1b40_len_20b0/load_engine_data.s deleted file mode 100644 index 9a5eeee075..0000000000 --- a/ver/us/asm/nonmatchings/code_1b40_len_20b0/load_engine_data.s +++ /dev/null @@ -1,176 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel load_engine_data -/* 21DC 80026DDC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 21E0 80026DE0 3C040010 */ lui $a0, 0x10 -/* 21E4 80026DE4 2484EE30 */ addiu $a0, $a0, -0x11d0 -/* 21E8 80026DE8 3C050010 */ lui $a1, 0x10 -/* 21EC 80026DEC 24A52610 */ addiu $a1, $a1, 0x2610 -/* 21F0 80026DF0 3C06802E */ lui $a2, %hi(func_802DBD40) -/* 21F4 80026DF4 24C6BD40 */ addiu $a2, $a2, %lo(func_802DBD40) -/* 21F8 80026DF8 AFBF0014 */ sw $ra, 0x14($sp) -/* 21FC 80026DFC 0C00A5CF */ jal dma_copy -/* 2200 80026E00 AFB00010 */ sw $s0, 0x10($sp) -/* 2204 80026E04 3C040007 */ lui $a0, 7 -/* 2208 80026E08 248459B0 */ addiu $a0, $a0, 0x59b0 -/* 220C 80026E0C 3C05000A */ lui $a1, 0xa -/* 2210 80026E10 24A55DD0 */ addiu $a1, $a1, 0x5dd0 -/* 2214 80026E14 3C06800E */ lui $a2, %hi(func_800DC500) -/* 2218 80026E18 24C6C500 */ addiu $a2, $a2, %lo(func_800DC500) -/* 221C 80026E1C 0C00A5CF */ jal dma_copy -/* 2220 80026E20 00000000 */ nop -/* 2224 80026E24 3C04000E */ lui $a0, 0xe -/* 2228 80026E28 248479B0 */ addiu $a0, $a0, 0x79b0 -/* 222C 80026E2C 3C050010 */ lui $a1, 0x10 -/* 2230 80026E30 24A5EE30 */ addiu $a1, $a1, -0x11d0 -/* 2234 80026E34 3C06802C */ lui $a2, %hi(sort_scripts) -/* 2238 80026E38 24C63000 */ addiu $a2, $a2, %lo(sort_scripts) -/* 223C 80026E3C 0C00A5CF */ jal dma_copy -/* 2240 80026E40 00000000 */ nop -/* 2244 80026E44 3C040010 */ lui $a0, 0x10 -/* 2248 80026E48 24842610 */ addiu $a0, $a0, 0x2610 -/* 224C 80026E4C 3C050011 */ lui $a1, 0x11 -/* 2250 80026E50 24A5CC10 */ addiu $a1, $a1, -0x33f0 -/* 2254 80026E54 3C06802E */ lui $a2, %hi(create_shadow_callback) -/* 2258 80026E58 24C60D90 */ addiu $a2, $a2, %lo(create_shadow_callback) -/* 225C 80026E5C 0C00A5CF */ jal dma_copy -/* 2260 80026E60 00000000 */ nop -/* 2264 80026E64 3C04000A */ lui $a0, 0xa -/* 2268 80026E68 24845DD0 */ addiu $a0, $a0, 0x5dd0 -/* 226C 80026E6C 3C05000E */ lui $a1, 0xe -/* 2270 80026E70 24A579B0 */ addiu $a1, $a1, 0x79b0 -/* 2274 80026E74 3C068011 */ lui $a2, %hi(update_entities) -/* 2278 80026E78 24C6F6D0 */ addiu $a2, $a2, %lo(update_entities) -/* 227C 80026E7C 0C00A5CF */ jal dma_copy -/* 2280 80026E80 00000000 */ nop -/* 2284 80026E84 3C040011 */ lui $a0, 0x11 -/* 2288 80026E88 2484CC10 */ addiu $a0, $a0, -0x33f0 -/* 228C 80026E8C 3C050011 */ lui $a1, 0x11 -/* 2290 80026E90 24A5F1B0 */ addiu $a1, $a1, -0xe50 -/* 2294 80026E94 3C06802F */ lui $a2, %hi(D_802EB3D0) -/* 2298 80026E98 24C6B3D0 */ addiu $a2, $a2, %lo(D_802EB3D0) -/* 229C 80026E9C 0C00A5CF */ jal dma_copy -/* 22A0 80026EA0 00000000 */ nop -/* 22A4 80026EA4 3C108007 */ lui $s0, %hi(gGameStatusPtr) -/* 22A8 80026EA8 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr) -/* 22AC 80026EAC 8E020000 */ lw $v0, ($s0) -/* 22B0 80026EB0 3C01800A */ lui $at, %hi(D_8009A650) -/* 22B4 80026EB4 AC20A650 */ sw $zero, %lo(D_8009A650)($at) -/* 22B8 80026EB8 A0400079 */ sb $zero, 0x79($v0) -/* 22BC 80026EBC 8E030000 */ lw $v1, ($s0) -/* 22C0 80026EC0 24040001 */ addiu $a0, $zero, 1 -/* 22C4 80026EC4 A064007A */ sb $a0, 0x7a($v1) -/* 22C8 80026EC8 8E020000 */ lw $v0, ($s0) -/* 22CC 80026ECC A4600148 */ sh $zero, 0x148($v1) -/* 22D0 80026ED0 A044007C */ sb $a0, 0x7c($v0) -/* 22D4 80026ED4 8E030000 */ lw $v1, ($s0) -/* 22D8 80026ED8 2402FFFF */ addiu $v0, $zero, -1 -/* 22DC 80026EDC A06200A8 */ sb $v0, 0xa8($v1) -/* 22E0 80026EE0 8E020000 */ lw $v0, ($s0) -/* 22E4 80026EE4 A04000AA */ sb $zero, 0xaa($v0) -/* 22E8 80026EE8 8E020000 */ lw $v0, ($s0) -/* 22EC 80026EEC A0400081 */ sb $zero, 0x81($v0) -/* 22F0 80026EF0 8E030000 */ lw $v1, ($s0) -/* 22F4 80026EF4 2402FFF8 */ addiu $v0, $zero, -8 -/* 22F8 80026EF8 A0620082 */ sb $v0, 0x82($v1) -/* 22FC 80026EFC 8E030000 */ lw $v1, ($s0) -/* 2300 80026F00 24020004 */ addiu $v0, $zero, 4 -/* 2304 80026F04 A0620083 */ sb $v0, 0x83($v1) -/* 2308 80026F08 8E020000 */ lw $v0, ($s0) -/* 230C 80026F0C 3C01800A */ lui $at, %hi(D_8009A5D8) -/* 2310 80026F10 AC20A5D8 */ sw $zero, %lo(D_8009A5D8)($at) -/* 2314 80026F14 A440013C */ sh $zero, 0x13c($v0) -/* 2318 80026F18 A0400075 */ sb $zero, 0x75($v0) -/* 231C 80026F1C 8E030000 */ lw $v1, ($s0) -/* 2320 80026F20 24020005 */ addiu $v0, $zero, 5 -/* 2324 80026F24 3C018007 */ lui $at, %hi(D_80074021) -/* 2328 80026F28 A0224021 */ sb $v0, %lo(D_80074021)($at) -/* 232C 80026F2C 0C00AE13 */ jal fio_init_flash -/* 2330 80026F30 AC600168 */ sw $zero, 0x168($v1) -/* 2334 80026F34 0C00A20E */ jal func_80028838 -/* 2338 80026F38 00000000 */ nop -/* 233C 80026F3C 0C00AB00 */ jal general_heap_create -/* 2340 80026F40 00000000 */ nop -/* 2344 80026F44 0C047624 */ jal func_8011D890 -/* 2348 80026F48 00000000 */ nop -/* 234C 80026F4C 0C048C2E */ jal clear_dynamic_entity_list -/* 2350 80026F50 00000000 */ nop -/* 2354 80026F54 0C0B0C77 */ jal clear_script_list -/* 2358 80026F58 00000000 */ nop -/* 235C 80026F5C 0C00B7BD */ jal create_cameras_a -/* 2360 80026F60 00000000 */ nop -/* 2364 80026F64 0C037F14 */ jal clear_player_status -/* 2368 80026F68 00000000 */ nop -/* 236C 80026F6C 0C0B763E */ jal func_802DD8F8 -/* 2370 80026F70 0000202D */ daddu $a0, $zero, $zero -/* 2374 80026F74 0C0482EC */ jal clear_entity_models -/* 2378 80026F78 00000000 */ nop -/* 237C 80026F7C 0C047889 */ jal func_8011E224 -/* 2380 80026F80 00000000 */ nop -/* 2384 80026F84 0C045751 */ jal clear_model_data -/* 2388 80026F88 00000000 */ nop -/* 238C 80026F8C 0C052010 */ jal func_80148040 -/* 2390 80026F90 00000000 */ nop -/* 2394 80026F94 0C05177E */ jal use_default_background_settings -/* 2398 80026F98 00000000 */ nop -/* 239C 80026F9C 0C048D98 */ jal clear_character_set -/* 23A0 80026FA0 00000000 */ nop -/* 23A4 80026FA4 0C048D9D */ jal clear_printers -/* 23A8 80026FA8 00000000 */ nop -/* 23AC 80026FAC 0C044AE6 */ jal func_80112B98 -/* 23B0 80026FB0 00000000 */ nop -/* 23B4 80026FB4 0C00E12F */ jal clear_npcs -/* 23B8 80026FB8 00000000 */ nop -/* 23BC 80026FBC 0C050440 */ jal func_80141100 -/* 23C0 80026FC0 00000000 */ nop -/* 23C4 80026FC4 0C0515A0 */ jal clear_trigger_data -/* 23C8 80026FC8 00000000 */ nop -/* 23CC 80026FCC 0C04432E */ jal clear_entity_data -/* 23D0 80026FD0 0000202D */ daddu $a0, $zero, $zero -/* 23D4 80026FD4 0C039CE8 */ jal clear_player_data -/* 23D8 80026FD8 00000000 */ nop -/* 23DC 80026FDC 0C00F8CE */ jal func_8003E338 -/* 23E0 80026FE0 00000000 */ nop -/* 23E4 80026FE4 0C04E042 */ jal clear_transition_stencil -/* 23E8 80026FE8 00000000 */ nop -/* 23EC 80026FEC 0C016727 */ jal clear_effect_data -/* 23F0 80026FF0 00000000 */ nop -/* 23F4 80026FF4 0C0514C8 */ jal clear_saved_variables -/* 23F8 80026FF8 00000000 */ nop -/* 23FC 80026FFC 0C04C3FC */ jal clear_item_entity_data -/* 2400 80027000 00000000 */ nop -/* 2404 80027004 0C052926 */ jal func_8014A498 -/* 2408 80027008 00000000 */ nop -/* 240C 8002700C 0C051C8C */ jal reset_ambient_sounds -/* 2410 80027010 00000000 */ nop -/* 2414 80027014 0C052586 */ jal func_80149618 -/* 2418 80027018 00000000 */ nop -/* 241C 8002701C 0C051CFC */ jal clear_windows -/* 2420 80027020 00000000 */ nop -/* 2424 80027024 0C00AE90 */ jal initialize_curtains -/* 2428 80027028 00000000 */ nop -/* 242C 8002702C 0C00A3B8 */ jal poll_rumble -/* 2430 80027030 00000000 */ nop -/* 2434 80027034 0000182D */ daddu $v1, $zero, $zero -/* 2438 80027038 24050003 */ addiu $a1, $zero, 3 -/* 243C 8002703C 2404000C */ addiu $a0, $zero, 0xc -/* 2440 80027040 8E100000 */ lw $s0, ($s0) -.L80027044: -/* 2444 80027044 A6050050 */ sh $a1, 0x50($s0) -/* 2448 80027048 A6040048 */ sh $a0, 0x48($s0) -/* 244C 8002704C 24630001 */ addiu $v1, $v1, 1 -/* 2450 80027050 28620004 */ slti $v0, $v1, 4 -/* 2454 80027054 1440FFFB */ bnez $v0, .L80027044 -/* 2458 80027058 26100002 */ addiu $s0, $s0, 2 -/* 245C 8002705C 3C03800A */ lui $v1, %hi(D_8009A650) -/* 2460 80027060 2463A650 */ addiu $v1, $v1, %lo(D_8009A650) -/* 2464 80027064 8C620000 */ lw $v0, ($v1) -/* 2468 80027068 0000202D */ daddu $a0, $zero, $zero -/* 246C 8002706C 34420008 */ ori $v0, $v0, 8 -/* 2470 80027070 0C00CD3C */ jal set_game_mode -/* 2474 80027074 AC620000 */ sw $v0, ($v1) -/* 2478 80027078 8FBF0014 */ lw $ra, 0x14($sp) -/* 247C 8002707C 8FB00010 */ lw $s0, 0x10($sp) -/* 2480 80027080 03E00008 */ jr $ra -/* 2484 80027084 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/splat.yaml b/ver/us/splat.yaml index 4c82aeb24e..5b6ec98ffb 100644 --- a/ver/us/splat.yaml +++ b/ver/us/splat.yaml @@ -200,7 +200,7 @@ segments: - [0x457c0, c, os/code_457c0_len_270] - [0x45a30, c, os/code_45a30_len_20] - [0x45a50, c, os/code_45a50_len_3a0] - - [0x45df0, hasm, os/exceptasm] + - [0x45df0, hasm, os/exceptasm, skip] - [0x46760, hasm, os/__osDisableInt] - [0x467D0, hasm, os/__osRestoreInt] - [0x467f0, c, os/code_467f0_len_90] @@ -427,6 +427,7 @@ segments: - [0x107830, c, code_107830_len_e70] - [0x1086a0, c, code_1086a0_len_fc0] - [0x109660, c, code_109660_len_1270] + - [0x10A230, c, code_10A230] - [0x10A8D0, c, code_10A8D0] - [0x10A9F0, data] #- [0x10A9F0, i4, shadow/square, 16, 16] @@ -443,7 +444,13 @@ segments: - [0x10CB30, .rodata, code_107830_len_e70] - [0x10CB70, .rodata, code_1086a0_len_fc0] - [0x10CBD0, .rodata, code_109660_len_1270] - - [0x10CC00, bin] + - [0x10CC00, .rodata, code_10A230] + - type: code + start: 0x10CC10 + vram: 0x802EB3D0 + subsections: + - [0x10CC10, bin] + - [0x10F1B0, bin] - [0x1164B8, ci8, peach_letter, 150, 105] - [0x11A23E, bin] - [0x11A240, palette, peach_letter] diff --git a/ver/us/undefined_syms.txt b/ver/us/undefined_syms.txt index 97325043b8..f847294859 100644 --- a/ver/us/undefined_syms.txt +++ b/ver/us/undefined_syms.txt @@ -39,68 +39,14 @@ func_80246500_806D80 = 0x80246500; func_80242040_8B20B0 = 0x80242040; EnterWalk = 0x80285960; ExitWalk = 0x80285CF4; -func_802440E8_804968 = 0x802440E8; spiked_goomba = 0x8021B0AC; paragoomba = 0x8021CD00; -StartRumbleWithParams = 0x80267D9C; rdpstateinit_dl = 0x80093bb8; LeoDiskHandle = 0x800B1B08; CartRomHandle = 0x800B4518; -D_802BFEFC = 0x802BFEFC; -D_802E9170 = 0x802E9170; -D_802E91F0 = 0x802E91F0; -D_802E9270 = 0x802E9270; -D_802E92B0 = 0x802E92B0; -D_802E98E0 = 0x802E98E0; -D_802E9904 = 0x802E9904; -D_802E99DC = 0x802E99DC; nusched = 0x800DA440; -D_80283770 = 0x80283770; -D_80291FA8 = 0x80291FA8; -D_80291FD0 = 0x80291FD0; -D_80291FF8 = 0x80291FF8; -D_80292020 = 0x80292020; -D_80292048 = 0x80292048; -D_80292070 = 0x80292070; -D_80292098 = 0x80292098; -D_802920C0 = 0x802920C0; -D_802920E8 = 0x802920E8; -D_80292110 = 0x80292110; D_8028358C = 0x8028358C; D_800F7BE8 = 0x800F7BE8; D_800F7BBC = 0x800F7BBC; D_800F7B94 = 0x800F7B94; D_802C05CC = 0x802C05CC; -D_80107CA8 = 0x80107CA8; -D_80107CF8 = 0x80107CF8; -D_80107D48 = 0x80107D48; -D_80107D98 = 0x80107D98; -D_80107DE8 = 0x80107DE8; -D_80107CA8 = 0x80107CA8; -D_80107E88 = 0x80107E88; -D_80107ED8 = 0x80107ED8; -D_80107F28 = 0x80107F28; -D_80107E38 = 0x80107E38; -D_80107FC8 = 0x80107FC8; -D_80107CD0 = 0x80107CD0; -D_80107D20 = 0x80107D20; -D_80107D70 = 0x80107D70; -D_80107DC0 = 0x80107DC0; -D_80107E10 = 0x80107E10; -D_80107CD0 = 0x80107CD0; -D_80107EB0 = 0x80107EB0; -D_80107F00 = 0x80107F00; -D_80107F50 = 0x80107F50; -D_80107E60 = 0x80107E60; -D_80107FF0 = 0x80107FF0; -D_801080B8 = 0x801080B8; -D_801080E0 = 0x801080E0; -D_80108108 = 0x80108108; -D_80108130 = 0x80108130; -D_80108158 = 0x80108158; -D_80108180 = 0x80108180; -D_801081A8 = 0x801081A8; -D_801081D0 = 0x801081D0; -D_801081F8 = 0x801081F8; -D_80108220 = 0x80108220; -D_80097D30 = 0x80097D30; diff --git a/ver/us/undefined_syms_auto.txt b/ver/us/undefined_syms_auto.txt index fd0adcf3c7..5bb6459d49 100644 --- a/ver/us/undefined_syms_auto.txt +++ b/ver/us/undefined_syms_auto.txt @@ -3759,7 +3759,6 @@ D_802E9CF8 = 0x802E9CF8; D_802E9D1C = 0x802E9D1C; D_802E9D40 = 0x802E9D40; D_802E9D64 = 0x802E9D64; -D_802EB380 = 0x802EB380; D_802EB390 = 0x802EB390; D_802EB394 = 0x802EB394; D_802EB398 = 0x802EB398;