Work on 1b40 (#213)

* rodata migration

* a5dd0 rodata migration

* e79b0 rodata migration

* more rodata migration

* more migration

* goombario rodata

* SetNpcCollision32

* removing old stuff

* oops

* UnkBackgroundFunc

* removing unnecessary files

* UnkBackgroundFunc2

* UnkStarFuncs

* .

* misc star decomp and AddHP

* oops

* AddFP

* fix offset, update symbol_addrs

* .

* git subrepo pull tools/splat

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

* re-disasm

* fix effect disasm

* oops

* fix lullaby

* fixing rodata

* load_engine_data

* removing undefined syms

* git subrepo pull tools/splat

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

* Skip exceptasm extraction
This commit is contained in:
Ethan Roseman 2021-03-15 09:30:09 -04:00 committed by GitHub
parent 44260c5bff
commit 943f612050
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 239 additions and 465 deletions

View File

@ -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);

View File

@ -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);
}

182
src/code_10A230.c Normal file
View File

@ -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);
}

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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;

View File

@ -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;