From a37f30dc94913818df1f8213f83034fe9b6e861e Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Tue, 14 Feb 2023 22:14:14 +0900 Subject: [PATCH] Modern gcc + shiftability work (#942) * wip changes for modern gcc * more * wip * blah * Define explicit size for symbol * Clean up evt_handle_exec1 * wip * . * fixes & VLA macro * VLA innit * wipz * Fix potential UB * meowp * meowp2 * fixies * git subrepo pull --force tools/splat subrepo: subdir: "tools/splat" merged: "e1f0b17917" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "e1f0b17917" git-subrepo: version: "0.4.5" origin: "https://github.com/ingydotnet/git-subrepo" commit: "aa416e4" * fixules * git subrepo pull --force tools/splat subrepo: subdir: "tools/splat" merged: "3ba3277e57" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "3ba3277e57" git-subrepo: version: "0.4.5" origin: "https://github.com/ingydotnet/git-subrepo" commit: "aa416e4" * more shiftability + symbols work * git subrepo pull --force tools/splat subrepo: subdir: "tools/splat" merged: "02879e52a7" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "02879e52a7" git-subrepo: version: "0.4.5" origin: "https://github.com/ingydotnet/git-subrepo" commit: "aa416e4" * more * revert bss changes for now, new heaps overlay for aligning stuff to 0x1000 (not sure how necessary that is, so maybe will revert later on) * 'fixing' jp shift build * more * more syms * more progress * more * ididid * git subrepo pull --force tools/splat subrepo: subdir: "tools/splat" merged: "de54da38f5" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "de54da38f5" git-subrepo: version: "0.4.5" origin: "https://github.com/ingydotnet/git-subrepo" commit: "aa416e4" * git subrepo pull --force tools/splat subrepo: subdir: "tools/splat" merged: "a27dc436a6" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "a27dc436a6" git-subrepo: version: "0.4.5" origin: "https://github.com/ingydotnet/git-subrepo" commit: "aa416e4" * blah * stuff's broken, but at least it's maybe cleaner * modern gcc back * revert * shifting all overlays - works so far * progs * another * modern gcc flag, re-enabled all ifdef shift stuff * fixies * progress * fixes, matching build * heaps3 overlay and some symbol names * changies * PR comments & cleanup --- .vscode/settings.json | 13 +- include/common_structs.h | 7 - include/effects.h | 6 +- include/macros.h | 26 + include/model.h | 6 +- include/variables.h | 10 - src/101b90_len_8f0.c | 16 +- src/16F740.c | 18 +- src/17D6A0.c | 4 +- src/18F340.c | 1 + src/19FAF0.c | 3 +- src/1AF230.c | 4 +- src/415D90.c | 25 +- src/7E9D0.c | 3 +- src/8800.c | 2 +- src/a5dd0_len_114e0.c | 56 +- src/actor_api.c | 21 +- src/audio/25f00_len_940.c | 1 + src/audio/2e230_len_2190.c | 11 +- src/battle/area_kzn2/actor/lava_bud.c | 15 +- src/battle/area_kzn2/actor/lava_piranha.c | 19 +- src/battle/battle.h | 19 +- src/battle/move/earthquake_jump/785B20.c | 2 + src/battle/partner/lakilester.c | 4 +- src/common/FoliageTransform.inc.c | 6 +- src/common/StartRumbleWithParams.inc.c | 4 +- src/d0a70_len_4fe0.c | 8 +- src/draw_box.c | 9 +- src/effects.c | 5 +- src/encounter_api.c | 40 +- src/entity/default/BoardedFloor.c | 2 +- src/entity/default/BombableRock.c | 2 + src/evt/evt.c | 77 +- src/evt/f8f60_len_1560.c | 25 +- src/gcc/udivmoddi4.inc.c | 2 +- src/heap.c | 9 +- src/heaps.c | 16 + src/heaps2.c | 4 + src/heaps3.c | 7 + src/inspect_icon.c | 2 + src/jp/7E00.c | 2 +- src/load_obfuscation_shims.c | 2 +- src/main.c | 16 +- src/main_loop.c | 2 +- src/model_clear_render_tasks.c | 3 + src/model_clear_render_tasks.h | 6 + src/msg.c | 14 +- src/msg_data_2.c | 2 + src/os/nusys/nugfxinit.c | 7 +- src/sprite.c | 11 +- src/sprite.h | 2 +- src/state_battle.c | 19 +- src/state_file_select.c | 12 +- src/state_pause.c | 19 +- src/texture_memory.c | 6 + src/world/action/use_spinning_flower.c | 2 + src/world/area_dgb/dgb_01/dgb_01_7.c | 2 + .../area_end/end_00/end_00_3_parade_setup.c | 6 +- .../area_end/end_01/end_01_3_parade_setup.c | 6 +- src/world/area_hos/hos_05/hos_05_5_intro.c | 94 +-- .../area_kmr/kmr_20/kmr_20_4_documents.c | 27 +- src/world/area_kmr/kmr_21/kmr_21_1_main.c | 2 +- src/world/area_osr/osr_03/osr_03_3_intro.c | 5 +- src/world/area_tik/common/DripVolumes.inc.c | 2 +- src/world/common/lava_piranha/part1.inc.c | 21 +- src/world/dead/area_kzn/kzn_19/kzn_19_4_npc.c | 21 +- src/world/model_anim/kzn/0A.c | 2 + src/world/partner/lakilester.c | 2 + src/world/script_api/enter_exit.c | 2 + src/world/world.c | 20 +- src/world_use_item.c | 2 + tools/build/configure.py | 71 +- tools/build/ld/multilink_calc.py | 88 +++ ver/jp/asm/nonmatchings/35770/func_8005A3A4.s | 4 +- ...nc_8002CA00.s => load_obfuscation_shims.s} | 2 +- ver/jp/asm/nonmatchings/E860/func_80033574.s | 2 +- ver/jp/splat-shift.yaml | 2 + ver/jp/undefined_syms.txt | 2 + .../spr_init_player_raster_cache.s | 4 +- ver/us/splat-shift.yaml | 2 + ver/us/splat.yaml | 674 +++++++++++++++++- ver/us/symbol_addrs.txt | 26 +- ver/us/undefined_syms.txt | 124 +++- 83 files changed, 1438 insertions(+), 412 deletions(-) create mode 100644 src/heaps.c create mode 100644 src/heaps2.c create mode 100644 src/heaps3.c create mode 100644 src/model_clear_render_tasks.c create mode 100644 src/model_clear_render_tasks.h create mode 100644 src/texture_memory.c create mode 100755 tools/build/ld/multilink_calc.py rename ver/jp/asm/nonmatchings/7E00/{func_8002CA00.s => load_obfuscation_shims.s} (99%) create mode 100644 ver/jp/splat-shift.yaml create mode 100644 ver/us/splat-shift.yaml diff --git a/.vscode/settings.json b/.vscode/settings.json index 80e15330a9..9f4c463565 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,14 +17,13 @@ ], "git.ignoreLimitWarning": true, "search.exclude": { - "**/build/src": true, - "docs/doxygen": true, - "ctx.c": true, - "ver/current": true, - "ver/us/build": true, - "ver/jp/build": true, - "expected": true, "**/*.i": true, + "**/build/src": true, + "ctx.c": true, + "docs/doxygen": true, + "expected": true, + "ver/jp/expected": true, + "ver/us/expected": true }, "python.autoComplete.extraPaths": [ "./tools" diff --git a/include/common_structs.h b/include/common_structs.h index dc14e0565d..2ccacdb06a 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -2509,11 +2509,4 @@ typedef struct LavaPiranhaVine { /* 0x1DC */ s32 numPoints; } LavaPiranhaVine; -// TODO look into making options here better. it's really an array of 5 substructs, each having and [8][2] array -typedef struct PlayerCelebrationAnimOptions { - /* 0x00 */ s16 randomChance; - /* 0x02 */ s16 hpBasedChance; - /* 0x04 */ s32 options[0]; -} PlayerCelebrationAnimOptions; // size = 0x8 - #endif diff --git a/include/effects.h b/include/effects.h index 6b5e45dcf8..f57c777cd5 100644 --- a/include/effects.h +++ b/include/effects.h @@ -1524,10 +1524,6 @@ typedef struct RadiatingEnergyOrbFXData { /* 0x30 */ f32 unk_30; } RadiatingEnergyOrbFXData; // size = 0x34 -typedef struct QuizmoAnswerFXData { - /* 0x00 */ char todo[0]; -} QuizmoAnswerFXData; // size = unknown - typedef struct MotionBlurFlameFXData { /* 0x00 */ s32 unk_00; /* 0x04 */ f32 unk_04; @@ -2719,7 +2715,7 @@ typedef union { struct ChompDropFXData* chompDrop; struct QuizmoStageFXData* quizmoStage; struct RadiatingEnergyOrbFXData* radiatingEnergyOrb; - struct QuizmoAnswerFXData* quizmoAnswer; + void* quizmoAnswer; struct MotionBlurFlameFXData* motionBlurFlame; struct EnergyOrbWaveFXData* energyOrbWave; struct MerlinHouseStarsFXData* merlinHouseStars; diff --git a/include/macros.h b/include/macros.h index fc1e38e83d..30f3a17673 100644 --- a/include/macros.h +++ b/include/macros.h @@ -5,9 +5,23 @@ #include "include_asm.h" #ifndef M2CTX + +#ifdef SHIFT +#define SHIFT_BSS __attribute__ ((section (".bss"))) +#else +#define SHIFT_BSS extern +#endif + +#ifdef SHIFT +#define MATCHING_BSS(size) +#else +#define MATCHING_BSS(size) static BSS u8 padding_bss[size]; +#endif + #define BSS __attribute__ ((section (".bss"))) #define TRANSPARENT_UNION __attribute__ ((__transparent_union__)) #else +#define SHIFT_BSS static #define BSS static #define TRANSPARENT_UNION #endif @@ -90,6 +104,12 @@ #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 240 +#define COLLISION_HEAP_SIZE 0x18000 +#define GENERAL_HEAP_SIZE 0x54000 +#define SPRITE_HEAP_SIZE 0x40000 +#define BATTLE_HEAP_SIZE 0x25800 +#define FRAME_BUFFER_SIZE 0x25800 + #define CAM_NEAR_CLIP 16 #define CAM_FAR_CLIP 4096 @@ -193,4 +213,10 @@ .models = { names } \ } +#ifdef OLD_GCC +#define VLA 0 +#else +#define VLA +#endif + #endif diff --git a/include/model.h b/include/model.h index 9572062418..9681ebb284 100644 --- a/include/model.h +++ b/include/model.h @@ -83,7 +83,7 @@ typedef ModelTransformGroup* ModelTransformGroupList[MAX_MODEL_TRANSFORM_GROUPS] typedef struct ModelIDList { u16 count; - u16 list[0]; + u16 list[VLA]; } ModelIDList; typedef struct ModelLocalVertexCopy { @@ -150,6 +150,8 @@ typedef enum ExtraTileTypes { EXTRA_TILE_4 = 4, } ExtraTileTypes; +#define SHAPE_SIZE_LIMIT 0x8000 + typedef struct ShapeFile { /* 0x00 */ ModelNode* root; /* 0x04 */ Vtx_t* vertexTable; @@ -158,7 +160,7 @@ typedef struct ShapeFile { /* 0x10 */ char** zoneNames; /* 0x14 */ unsigned char pad_14[0xC]; // end header - /* 0x20 */ u8 data[0]; + /* 0x20 */ u8 data[SHAPE_SIZE_LIMIT - 0x20]; } ShapeFile; // size = variable typedef ModelTreeInfo ModelTreeInfoList[0x200]; diff --git a/include/variables.h b/include/variables.h index 4db99c06fe..2790da5f1d 100644 --- a/include/variables.h +++ b/include/variables.h @@ -127,7 +127,6 @@ extern char wMapTexName[]; extern char wMapHitName[]; extern char wMapShapeName[]; extern char wMapBgName[]; -extern struct ShapeFile D_80210000; extern u8 D_802D9D70; // player alpha1 copy? extern u8 D_802D9D71; // player alpha2 copy? @@ -214,17 +213,8 @@ extern AnimID HammerBroDisguiseExtraAnims[]; extern s16 gCurrentCamID; -extern HeapNode gSpriteHeapPtr; - extern s32 D_8029C890[10][5]; -// frame buffers -extern u16 D_8038F800[]; -extern u16 D_803B5000[]; -extern u16 D_803DA800[]; - -extern HeapNode heap_collisionHead; -extern HeapNode heap_generalHead; extern HeapNode heap_battleHead; extern u32 bMarioIdleAnims[]; diff --git a/src/101b90_len_8f0.c b/src/101b90_len_8f0.c index b25948d6a5..56db1e8822 100644 --- a/src/101b90_len_8f0.c +++ b/src/101b90_len_8f0.c @@ -10,6 +10,8 @@ #endif extern s32 spr_allocateBtlComponentsOnWorldHeap; +extern HeapNode heap_generalHead; +extern HeapNode heap_spriteHead; BSS s32 spr_asset_entry[2]; BSS s32 D_802DFEB8[101]; @@ -91,9 +93,9 @@ SpriteAnimData* spr_load_sprite(s32 idx, s32 isPlayerSprite, s32 useTailAlloc) { ptr1++; if (useTailAlloc) { - animData = _heap_malloc_tail(&gSpriteHeapPtr, *ptr1); + animData = _heap_malloc_tail(&heap_spriteHead, *ptr1); } else { - animData = _heap_malloc(&gSpriteHeapPtr, *ptr1); + animData = _heap_malloc(&heap_spriteHead, *ptr1); } decode_yay0(data, animData); general_heap_free(data); @@ -146,7 +148,6 @@ SpriteAnimData* spr_load_sprite(s32 idx, s32 isPlayerSprite, s32 useTailAlloc) { return animData; } -#ifndef SHIFT void spr_init_player_raster_cache(s32 cacheSize, s32 maxRasterSize) { void* raster; s32 i; @@ -157,7 +158,7 @@ void spr_init_player_raster_cache(s32 cacheSize, s32 maxRasterSize) { SpriteDataHeader[0] += SPRITE_ROM_START; SpriteDataHeader[1] += SPRITE_ROM_START; SpriteDataHeader[2] += SPRITE_ROM_START; - raster = _heap_malloc(&gSpriteHeapPtr, maxRasterSize * cacheSize); + raster = _heap_malloc(&heap_spriteHead, maxRasterSize * cacheSize); for (i = 0; i < ARRAY_COUNT(PlayerRasterCache); i++) { PlayerRasterCache[i].raster = raster; @@ -174,9 +175,6 @@ void spr_init_player_raster_cache(s32 cacheSize, s32 maxRasterSize) { nuPiReadRom(SpriteDataHeader[0], &PlayerRasterHeader, sizeof(PlayerRasterHeader)); nuPiReadRom(SpriteDataHeader[0] + PlayerRasterHeader[0], D_802E0C20, sizeof(D_802E0C20)); } -#else -INCLUDE_ASM_SHIFT(void, "101b90_len_8f0", spr_init_player_raster_cache); -#endif IMG_PTR spr_get_player_raster(s32 rasterIndex, s32 playerSpriteID) { PlayerSpriteCacheEntry* temp_s0; @@ -341,7 +339,7 @@ void spr_load_npc_extra_anims(SpriteAnimData* header, u32* extraAnimList) { } } - _heap_realloc(&gSpriteHeapPtr, header, (s32)writePos - (s32)header); + _heap_realloc(&heap_spriteHead, header, (s32)writePos - (s32)header); } SpriteComponent** spr_allocate_components(s32 count) { @@ -362,7 +360,7 @@ SpriteComponent** spr_allocate_components(s32 count) { listPos = listStart; component = (SpriteComponent*) listPos; } else { - listStart = _heap_malloc(&gSpriteHeapPtr, totalSize); + listStart = _heap_malloc(&heap_spriteHead, totalSize); listPos = listStart; component = (SpriteComponent*) listPos; } diff --git a/src/16F740.c b/src/16F740.c index bb72dd764a..5ea67be029 100644 --- a/src/16F740.c +++ b/src/16F740.c @@ -11,10 +11,10 @@ extern StageListRow* gCurrentStagePtr; extern s16 D_802809F6; extern s16 D_802809F8; extern s32 BattleScreenFadeAmt; -extern EvtScript EVS_OnBattleInit[]; +extern EvtScript EVS_OnBattleInit; extern s32 D_80281454[]; -extern EvtScript EVS_Mario_OnActorCreate[]; -extern EvtScript EVS_Peach_OnActorCreate[]; +extern EvtScript EVS_Mario_OnActorCreate; +extern EvtScript EVS_Peach_OnActorCreate; BSS s32 BattleEnemiesCreated; BSS u8 D_8029F244; @@ -29,6 +29,8 @@ BSS s32 D_8029F264; s32 dispatch_damage_event_player_0(s32 damageAmount, s32 event); +extern ShapeFile gMapShapeData; + void btl_merlee_on_start_turn(void) { BattleStatus* battleStatus = &gBattleStatus; EncounterStatus* currentEncounter = &gCurrentEncounter; @@ -217,12 +219,12 @@ void btl_state_update_normal_start(void) { BattleEnemiesCreated = battle->formationSize; set_screen_overlay_params_back(255, -1.0f); compressedAsset = load_asset_by_name(stage->shape, &size); - decode_yay0(compressedAsset, &D_80210000); + decode_yay0(compressedAsset, &gMapShapeData); general_heap_free(compressedAsset); ASSERT(size <= 0x8000); - model = D_80210000.root; + model = gMapShapeData.root; textureRom = get_asset_offset(stage->texture, &size); if (model != NULL) { load_data_for_models(model, textureRom, size); @@ -311,7 +313,7 @@ void btl_state_update_normal_start(void) { battleStatus->buffEffect = fx_partner_buff(0, 0.0f, 0.0f, 0.0f, 0.0f, 0); func_800E9810(); gCurrentCameraID = CAM_BATTLE; - script = start_script(EVS_OnBattleInit, EVT_PRIORITY_A, 0); + script = start_script(&EVS_OnBattleInit, EVT_PRIORITY_A, 0); battleStatus->camMovementScript = script; battleStatus->camMovementScriptID = script->id; gBattleSubState = BTL_SUBSTATE_NORMAL_START_CREATE_ENEMIES; @@ -382,9 +384,9 @@ void btl_state_update_normal_start(void) { load_player_actor(); actor = battleStatus->playerActor; if (gBattleStatus.flags2 & BS_FLAGS2_PEACH_BATTLE) { - script = start_script(EVS_Peach_OnActorCreate, EVT_PRIORITY_A, 0); + script = start_script(&EVS_Peach_OnActorCreate, EVT_PRIORITY_A, 0); } else { - script = start_script(EVS_Mario_OnActorCreate, EVT_PRIORITY_A, 0); + script = start_script(&EVS_Mario_OnActorCreate, EVT_PRIORITY_A, 0); } actor->takeTurnScript = script; actor->takeTurnScriptID = script->id; diff --git a/src/17D6A0.c b/src/17D6A0.c index 058ffc7ee6..f667db07d0 100644 --- a/src/17D6A0.c +++ b/src/17D6A0.c @@ -2426,7 +2426,7 @@ s32 bMessages[] = { [BTL_MSG_17] MSG_Menus_EnemyParalyzed, [BTL_MSG_18] MSG_Menus_EnemyElectrified, [BTL_MSG_19] MSG_Menus_EnemyCantMove, - + [BTL_MSG_1A] MSG_Menus_StarEnergyRecharged, [BTL_MSG_1B] MSG_Menus_StarEnergyMaxedOut, [BTL_MSG_1C] MSG_Menus_StarEnergyFilled, @@ -2434,7 +2434,7 @@ s32 bMessages[] = { [BTL_MSG_1E] MSG_Menus_DefenseUp, [BTL_MSG_1F] MSG_Menus_0084, [BTL_MSG_20] MSG_Menus_0085, - + [BTL_MSG_21] MSG_Menus_EnemyTransparent, [BTL_MSG_22] MSG_Menus_EnemyElectricCharge, [BTL_MSG_23] MSG_Menus_PartnerInjured, diff --git a/src/18F340.c b/src/18F340.c index 442541d3cb..280dee3a61 100644 --- a/src/18F340.c +++ b/src/18F340.c @@ -6,6 +6,7 @@ #include "sprite/npc/Twink.h" #include "sprite/npc/BattleMerlee.h" #include "battle/action_cmd/flee.h" +#include "battle/battle.h" extern HudScript HES_Happy; extern HudScript HES_HPDrain; diff --git a/src/19FAF0.c b/src/19FAF0.c index 71e36b1b26..06890cda59 100644 --- a/src/19FAF0.c +++ b/src/19FAF0.c @@ -1653,8 +1653,9 @@ ApiStatus PlayerTestEnemy(Evt* script, s32 isInitialCall) { ApiStatus DispatchDamagePlayerEvent(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; + s32 damageAmount = evt_get_variable(script, *args++); - if (dispatch_damage_event_player_0(evt_get_variable(script, *args++), *args++) < 0) { + if (dispatch_damage_event_player_0(damageAmount, *args++) < 0) { return ApiStatus_BLOCK; } diff --git a/src/1AF230.c b/src/1AF230.c index 6ae0b19beb..bf4a7bff11 100644 --- a/src/1AF230.c +++ b/src/1AF230.c @@ -127,6 +127,4 @@ ApiStatus LoadStarPowerScript(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -#ifndef SHIFT -static BSS u8 bss_padding[0x1390]; -#endif +MATCHING_BSS(0x1390); diff --git a/src/415D90.c b/src/415D90.c index 13947c763a..efdcf5fb6c 100644 --- a/src/415D90.c +++ b/src/415D90.c @@ -409,9 +409,6 @@ BSS s32 D_802AD658[5]; // msg IDs BSS s32 D_802AD66C; BSS s32 D_802AD670; -//TODO remove it in func_802A45D8 and use D_802AD670 instead -extern s8 D_802AD673; - BSS s32 D_802AD674; // unused? BSS s32 D_802AD678[6]; BSS s32 D_802AD690[6]; @@ -438,6 +435,9 @@ void btl_init_menu_partner(void); void func_800F52BC(void); void func_800F16CC(void); +void btl_init_menu_boots(void); +void btl_init_menu_hammer(void); + void btl_main_menu_init(void) { D_802AD006 = 255; BattleMenuAlpha = 255; @@ -1664,8 +1664,8 @@ void func_802A45D8(void) { s8 temp802AD673; BattleSubmenuStratsState = 0; - D_802AD605 = D_802AD673; - D_802AD606 = D_802AD673; + D_802AD605 = D_802AD670; + D_802AD606 = D_802AD670; D_802AD608 = 0; D_802AD60A = D_802AD66C; @@ -1681,12 +1681,12 @@ void func_802A45D8(void) { D_802AD624 = 255; D_802AD60B = 1; - temp802AD673 = D_802AD673; + temp802AD673 = D_802AD670; - if (D_802AD673 < 0) { - D_802AD608 = D_802AD673; + if ((s8) D_802AD670 < 0) { + D_802AD608 = D_802AD670; } - if (D_802AD673 >= D_802AD609) { + if ((s8) D_802AD670 >= D_802AD609) { D_802AD608 = (temp802AD673 + 1 - D_802AD60A); } @@ -1696,7 +1696,7 @@ void func_802A45D8(void) { } D_802AD60C = -D_802AD608 * 13; - D_802AD60E = (D_802AD673 - D_802AD608) * 13; + D_802AD60E = ((s8) D_802AD670 - D_802AD608) * 13; D_802AD607 = 0; D_802AD6D4 = 0; } @@ -2138,7 +2138,7 @@ s32 can_btl_state_update_switch_to_player(void) { } } -extern s32 D_8008EEF0[]; +extern s32 D_8008EEF0[]; // TODO MOVE s32 func_802A58D0(void) { BattleStatus* battleStatus = &gBattleStatus; @@ -2183,9 +2183,6 @@ s32 func_802A58D0(void) { return !partnerCantMove; } -void btl_init_menu_boots(void); -void btl_init_menu_hammer(void); - void btl_state_update_player_menu(void) { BattleStatus* battleStatus = &gBattleStatus; PlayerData* playerData = &gPlayerData; diff --git a/src/7E9D0.c b/src/7E9D0.c index 10ed607083..c622af4114 100644 --- a/src/7E9D0.c +++ b/src/7E9D0.c @@ -8,8 +8,7 @@ #include "ld_addrs.h" #ifdef SHIFT -// TODO same address as all world actions - picked the first one -#define PLAYER_ACTION_VRAM_DEF world_action_idle_VRAM +#define PLAYER_ACTION_VRAM_DEF texture_memory_VRAM_END #else #define PLAYER_ACTION_VRAM_DEF (void*) 0x802B6000 #endif diff --git a/src/8800.c b/src/8800.c index f9db462eec..2e32cf7b16 100644 --- a/src/8800.c +++ b/src/8800.c @@ -4,7 +4,7 @@ #include "hud_element.h" #include "camera.h" -f32 D_8009A5EC; +//extern f32 D_8009A5EC; TODO BSS void render_models(void); void execute_render_tasks(void); diff --git a/src/a5dd0_len_114e0.c b/src/a5dd0_len_114e0.c index 99ed17e117..30e4033fe4 100644 --- a/src/a5dd0_len_114e0.c +++ b/src/a5dd0_len_114e0.c @@ -6,17 +6,21 @@ #include "hud_element.h" #include "effects.h" #include "nu/nusys.h" +#include "model_clear_render_tasks.h" + +extern Addr MapTextureMemory; #ifdef SHIFT -#define MODEL_TEXTURE_BASE_ADDRESS 0x8028E000 // TODO shiftability -#define BATTLE_ENTITY_HEAP_BASE 0x80267FF0 // TODO shiftability -#define AREA_SPECIFIC_ENTITY_VRAM entity_default_VRAM -#define BATTLE_ENTITY_HEAP_BOTTOM 0x80250000 // TODO shiftability +extern Addr WorldEntityHeapBase; +#define WORLD_ENTITY_HEAP_BOTTOM 0x80650000 // TODO shiftability (used only for munchlesia, hacky as hell) +#define WORLD_ENTITY_HEAP_BASE (s32) WorldEntityHeapBase +// TODO this only refers to one of 3 overlays which happen to share the same address space +// but don't necessarily have to +#define AREA_SPECIFIC_ENTITY_VRAM (s32) entity_default_VRAM #else -#define MODEL_TEXTURE_BASE_ADDRESS 0x8028E000 -#define BATTLE_ENTITY_HEAP_BASE 0x80267FF0 +#define WORLD_ENTITY_HEAP_BOTTOM 0x80250000 +#define WORLD_ENTITY_HEAP_BASE 0x80267FF0 #define AREA_SPECIFIC_ENTITY_VRAM 0x802BAE00 -#define BATTLE_ENTITY_HEAP_BOTTOM 0x80250000 #endif typedef struct Fog { @@ -398,7 +402,7 @@ Gfx D_8014B400[21][5] = { }, }; -void* mdl_textureBaseAddress = (void*) MODEL_TEXTURE_BASE_ADDRESS; +void* mdl_textureBaseAddress = (void*) &MapTextureMemory; u8 mdl_bgMultiplyColorA = 0; u8 mdl_bgMultiplyColorR = 0; @@ -1115,9 +1119,7 @@ extern s32 mdl_renderTaskCount; extern TextureHandle mdl_textureHandles[128]; -extern RenderTask mdl_clearRenderTasks[3][0x100]; - -extern s32 D_801A7000; // todo ??? +extern Addr BattleEntityHeapBottom; // todo ??? extern u16 depthCopyBuffer[16]; @@ -1145,6 +1147,8 @@ void load_model_transforms(ModelNode* model, ModelNode* parent, Matrix4f mdlTxMt s32 is_identity_fixed_mtx(Mtx* mtx); void build_custom_gfx(void); +MATCHING_BSS(0x3A0); + void update_entities(void) { s32 i; @@ -1415,7 +1419,7 @@ void render_entities(void) { gPlayerStatusPtr->position.z, entity->position.x, entity->position.z) > 200.0f - ) { + ) { continue; } @@ -1883,10 +1887,10 @@ void clear_entity_data(s32 arg0) { } if (!gGameStatusPtr->isBattle) { - gEntityHeapBottom = BATTLE_ENTITY_HEAP_BOTTOM; - gEntityHeapBase = BATTLE_ENTITY_HEAP_BASE; + gEntityHeapBottom = WORLD_ENTITY_HEAP_BOTTOM; + gEntityHeapBase = WORLD_ENTITY_HEAP_BASE; } else { - gEntityHeapBottom = (s32)&D_801A7000; + gEntityHeapBottom = (s32)BattleEntityHeapBottom; gEntityHeapBase = gEntityHeapBottom + 0x3000; } @@ -1904,8 +1908,8 @@ void clear_entity_data(s32 arg0) { void init_entity_data(void) { if (!gGameStatusPtr->isBattle) { - gEntityHeapBottom = BATTLE_ENTITY_HEAP_BOTTOM; - gEntityHeapBase = BATTLE_ENTITY_HEAP_BASE; + gEntityHeapBottom = WORLD_ENTITY_HEAP_BOTTOM; + gEntityHeapBase = WORLD_ENTITY_HEAP_BASE; reload_world_entity_data(); } else { s32 i; @@ -1913,7 +1917,7 @@ void init_entity_data(void) { for (i = 0; i < 4; i++) { bEntityBlueprint[i] = 0; } - gEntityHeapBottom = (s32)&D_801A7000; + gEntityHeapBottom = (s32)BattleEntityHeapBottom; gEntityHeapBase = gEntityHeapBottom + 0x3000; } gCurrentEntityListPtr = get_entity_list(); @@ -3672,7 +3676,13 @@ void func_80114B58(u32 romOffset, TextureHandle* handle, TextureHeader* header, handle->gfx = (Gfx*) mdl_nextTextureAddress; memcpy(&handle->header, header, sizeof(*header)); func_801180E8(header, (Gfx**)&mdl_nextTextureAddress, handle->raster, handle->palette, handle->auxRaster, handle->auxPalette, 0, 0, 0, 0); + + #ifndef OLD_GCC + gSPEndDisplayList(mdl_nextTextureAddress); + mdl_nextTextureAddress += 8; + #else gSPEndDisplayList(((Gfx*)mdl_nextTextureAddress)++); + #endif } void load_tile_header(ModelNodeProperty* propertyName, s32 romOffset, s32 size) { @@ -3938,7 +3948,7 @@ void _load_model_textures(ModelNode* model, s32 romOffset, s32 size) { } void load_model_textures(ModelNode* model, s32 romOffset, s32 size) { - s32 battleOffset = ((gGameStatusPtr->isBattle != 0) << 17); + s32 battleOffset = ((gGameStatusPtr->isBattle != 0) << 17); // TODO FIX mdl_nextTextureAddress = mdl_textureBaseAddress + battleOffset; @@ -5899,8 +5909,8 @@ s32 is_model_center_visible(u16 modelID, s32 depthQueryID, f32* screenX, f32* sc } if (outX >= 0.0f && outY >= 0.0f && outX < 320.0f && outY < 240.0f) { gDPPipeSync(gMasterGfxPos++); - // Load a 4x1 pixel tile of the depth buffer - gDPLoadTextureTile(gMasterGfxPos++, osVirtualToPhysical(&nuGfxZBuffer[(s32) outY * 320]), G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 1, + // Load a 4x1 pixel tile of the depth buffer + gDPLoadTextureTile(gMasterGfxPos++, osVirtualToPhysical(&nuGfxZBuffer[(s32) outY * 320]), G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 1, (s32) outX, 0, (s32) outX + 3, 0, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, @@ -6005,8 +6015,8 @@ s32 is_point_visible(f32 x, f32 y, f32 z, s32 depthQueryID, f32* screenX, f32* s } if (outX >= 0.0f && outY >= 0.0f && outX < 320.0f && outY < 240.0f) { gDPPipeSync(gMasterGfxPos++); - // Load a 4x1 pixel tile of the depth buffer - gDPLoadTextureTile(gMasterGfxPos++, osVirtualToPhysical(&nuGfxZBuffer[(s32) outY * 320]), G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 1, + // Load a 4x1 pixel tile of the depth buffer + gDPLoadTextureTile(gMasterGfxPos++, osVirtualToPhysical(&nuGfxZBuffer[(s32) outY * 320]), G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, 1, (s32) outX, 0, (s32) outX + 3, 0, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, diff --git a/src/actor_api.c b/src/actor_api.c index 6132ee994a..24633d5d27 100644 --- a/src/actor_api.c +++ b/src/actor_api.c @@ -810,12 +810,17 @@ ApiStatus SetAnimation(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; s32 actorID = evt_get_variable(script, *args++); Actor* actor; + s32 a1; + s32 animationIndex; if (actorID == ACTOR_SELF) { actorID = script->owner1.actorID; } - set_animation(actorID, evt_get_variable(script, *args++), evt_get_variable(script, *args++)); + a1 = evt_get_variable(script, *args++); + animationIndex = evt_get_variable(script, *args++); + + set_animation(actorID, a1, animationIndex); return ApiStatus_DONE2; } @@ -845,12 +850,17 @@ ApiStatus SetAnimationRate(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; s32 actorID = evt_get_variable(script, *args++); Actor* actor; + s32 partIndex; + f32 rate; if (actorID == ACTOR_SELF) { actorID = script->owner1.actorID; } - set_animation_rate(actorID, evt_get_variable(script, *args++), evt_get_float_variable(script, *args++)); + partIndex = evt_get_variable(script, *args++); + rate = evt_get_float_variable(script, *args++); + + set_animation_rate(actorID, partIndex, rate); return ApiStatus_DONE2; } @@ -885,12 +895,17 @@ ApiStatus GetActorYaw(Evt* script, s32 isInitialCall) { ApiStatus SetPartYaw(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; s32 actorID = evt_get_variable(script, *args++); + s32 partIndex; + s32 yaw; if (actorID == ACTOR_SELF) { actorID = script->owner1.actorID; } - set_part_yaw(actorID, evt_get_variable(script, *args++), evt_get_variable(script, *args++)); + partIndex = evt_get_variable(script, *args++); + yaw = evt_get_variable(script, *args++); + + set_part_yaw(actorID, partIndex, yaw); return ApiStatus_DONE2; } diff --git a/src/audio/25f00_len_940.c b/src/audio/25f00_len_940.c index 3e4ef829af..7b27b1a49c 100644 --- a/src/audio/25f00_len_940.c +++ b/src/audio/25f00_len_940.c @@ -26,6 +26,7 @@ extern AuSynDriver auSynDriver; extern u64 rspbootUcodeBuffer[]; extern u64 n_aspMain_text_bin[]; extern u64 n_aspMain_data_bin[]; + extern u8 AuHeapBase[AUDIO_HEAP_SIZE]; extern u64 AuStack[NU_AU_STACK_SIZE / sizeof(u64)]; diff --git a/src/audio/2e230_len_2190.c b/src/audio/2e230_len_2190.c index b8adfd687b..9092977e2b 100644 --- a/src/audio/2e230_len_2190.c +++ b/src/audio/2e230_len_2190.c @@ -21,7 +21,6 @@ void func_80052E30(u8 index) { voice->priority = AU_PRIORITY_FREE; } -#ifndef SHIFT void au_engine_init(s32 outputRate) { AuGlobals* globals; ALHeap* alHeap; @@ -41,7 +40,6 @@ void au_engine_init(s32 outputRate) { gBGMPlayerA->soundManager = gSoundManager; gAuAmbienceManager->globals = gSoundGlobals; - globals = gSoundGlobals; dummyTrackData = alHeapAlloc(alHeap, 1, 0x8000); globals->dataBGM[0] = (BGMHeader*) &dummyTrackData[0]; @@ -49,7 +47,7 @@ void au_engine_init(s32 outputRate) { globals->dataMSEQ[0] = (MSEQHeader*) &dummyTrackData[0x1C00]; globals->dataMSEQ[1] = (MSEQHeader*) &dummyTrackData[0x1400]; - for (i = 0; i < 1; i++) { + for (i = 0; i < ARRAY_COUNT(globals->unk_globals_6C); i++) { globals->unk_globals_6C[i].bgmPlayer = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer)); } @@ -67,7 +65,7 @@ void au_engine_init(s32 outputRate) { globals->audioThreadCallbacks[0] = NULL; globals->audioThreadCallbacks[1] = NULL; - for (i = 0; i < 1; i++) { + for (i = 0; i < ARRAY_COUNT(globals->unk_globals_6C); i++) { globals->unk_globals_6C[i].unk_4 = 0; globals->unk_globals_6C[i].unk_5 = 0; } @@ -96,7 +94,7 @@ void au_engine_init(s32 outputRate) { au_load_INIT(globals, SBN_ROM_OFFSET, alHeap); - for (i = 0; i < 3; i++) { + for (i = 0; i < ARRAY_COUNT(globals->banks); i++) { globals->banks[i] = alHeapAlloc(alHeap, 1, 0x840); } @@ -145,9 +143,6 @@ void au_engine_init(s32 outputRate) { au_delay_channel(0); func_80055050(alHeap); } -#else -INCLUDE_ASM_SHIFT(void, "audio/2e230_len_2190", au_engine_init); -#endif static void au_reset_instrument(Instrument* instrument) { instrument->base = DummyInstrumentBase; diff --git a/src/battle/area_kzn2/actor/lava_bud.c b/src/battle/area_kzn2/actor/lava_bud.c index 4216be5cd3..50fb6c624a 100644 --- a/src/battle/area_kzn2/actor/lava_bud.c +++ b/src/battle/area_kzn2/actor/lava_bud.c @@ -31,13 +31,22 @@ extern ActorBlueprint b_area_kzn2_petit_piranha_bomb; extern Formation N(formation_petit_piranha_1); extern Formation N(formation_petit_piranha_2); +static s32 N(unusedArray)[64]; + +MATCHING_BSS(0x8A0); + +BSS u8 Vine3Base[0x2000]; +BSS u8 Vine2Base[0x3000]; +BSS u8 Vine1Base[0x3000]; +BSS u8 Vine0Base[0x4000]; + enum { VINE_1 = 1, VINE_2 = 2, }; -#define VINE_1_BASE AUX_DATA_ADDR_1 -#define VINE_2_BASE AUX_DATA_ADDR_2 +#define VINE_1_BASE (s32) Vine1Base +#define VINE_2_BASE (s32) Vine2Base s32 N(idleAnimations)[] = { STATUS_NORMAL, ANIM_LavaBud_Anim03, @@ -161,8 +170,6 @@ ActorBlueprint NAMESPACE = { .statusMessageOffset = { 0, 0 }, }; -static s32 N(unusedArray)[64]; - EvtScript N(init) = { EVT_USE_ARRAY(N(unusedArray)) EVT_CALL(SetActorVar, ACTOR_SELF, 5, 0) diff --git a/src/battle/area_kzn2/actor/lava_piranha.c b/src/battle/area_kzn2/actor/lava_piranha.c index 3115761bfa..4185c34a98 100644 --- a/src/battle/area_kzn2/actor/lava_piranha.c +++ b/src/battle/area_kzn2/actor/lava_piranha.c @@ -279,10 +279,21 @@ enum { VINE_4 = 4, }; -#define VINE_0_BASE AUX_DATA_ADDR_0 -#define VINE_1_BASE AUX_DATA_ADDR_1 -#define VINE_2_BASE AUX_DATA_ADDR_2 -#define VINE_3_BASE AUX_DATA_ADDR_3 +#ifdef SHIFT +extern Addr Vine3Base; +extern Addr Vine2Base; +extern Addr Vine1Base; +extern Addr Vine0Base; +#define VINE_0_BASE (s32) Vine0Base +#define VINE_1_BASE (s32) Vine1Base +#define VINE_2_BASE (s32) Vine2Base +#define VINE_3_BASE (s32) Vine3Base +#else +#define VINE_0_BASE 0x80234000 +#define VINE_1_BASE 0x80231000 +#define VINE_2_BASE 0x8022E000 +#define VINE_3_BASE 0x8022C000 +#endif BSS LavaPiranhaVine N(VineData)[NUM_VINES]; BSS s32 N(VineRenderState); diff --git a/src/battle/battle.h b/src/battle/battle.h index 87094f8f75..6e22d6525c 100644 --- a/src/battle/battle.h +++ b/src/battle/battle.h @@ -400,6 +400,13 @@ typedef struct ActorOffsets { /* 0x03 */ s8 shadow; } ActorOffsets; // size = 0x04 +// TODO look into making options here better. it's really an array of 5 substructs, each having an [8][2] array +typedef struct PlayerCelebrationAnimOptions { + /* 0x00 */ s16 randomChance; + /* 0x02 */ s16 hpBasedChance; + /* 0x04 */ s32 options[80]; +} PlayerCelebrationAnimOptions; // size = 0x8 + extern Battle* gCurrentBattlePtr; extern ActorOffsets bActorOffsets[ACTOR_TYPE_COUNT]; @@ -408,16 +415,4 @@ void func_80072BCC(s32 arg0); void load_demo_battle(u32 index); Actor* create_actor(Formation formation); -#ifdef SHIFT -#define AUX_DATA_ADDR_0 world_model_anim_kzn_01_VRAM // (picked the first overlay among those with this address) -#define AUX_DATA_ADDR_1 battle_area_omo2_1_VRAM // (picked the first overlay among those with this address) -#define AUX_DATA_ADDR_2 0x8022E000 // TODO shiftability -#define AUX_DATA_ADDR_3 0x8022C000 // TODO shiftability -#else -#define AUX_DATA_ADDR_0 0x80234000 -#define AUX_DATA_ADDR_1 0x80231000 -#define AUX_DATA_ADDR_2 0x8022E000 -#define AUX_DATA_ADDR_3 0x8022C000 -#endif - #endif diff --git a/src/battle/move/earthquake_jump/785B20.c b/src/battle/move/earthquake_jump/785B20.c index 35219f3904..b6c7cbb9f1 100644 --- a/src/battle/move/earthquake_jump/785B20.c +++ b/src/battle/move/earthquake_jump/785B20.c @@ -8,3 +8,5 @@ ApiStatus func_802A10E4_785C04(Evt* script, s32 isInitialCall) { script->varTable[0] = 3; return ApiStatus_DONE2; } + +MATCHING_BSS(0x3CC0); diff --git a/src/battle/partner/lakilester.c b/src/battle/partner/lakilester.c index faef104d71..d926071c88 100644 --- a/src/battle/partner/lakilester.c +++ b/src/battle/partner/lakilester.c @@ -40,8 +40,6 @@ typedef struct HurricaneState { /* 0x74 */ char unk_74[0x10]; } HurricaneState; - - static s32 sSavedHurricaneIntensity; static s32 sBreathSizeIncrease; static s32 sMaxPower; @@ -1768,3 +1766,5 @@ EvtScript N(hurricane) = { EVT_RETURN EVT_END }; + +MATCHING_BSS(0xCC0); diff --git a/src/common/FoliageTransform.inc.c b/src/common/FoliageTransform.inc.c index 577b5421e4..70071793b6 100644 --- a/src/common/FoliageTransform.inc.c +++ b/src/common/FoliageTransform.inc.c @@ -4,7 +4,7 @@ typedef struct FoliageModelList { s32 count; - s32 models[0]; + s32 models[VLA]; } FoliageModelList; typedef struct FoliageDropList { @@ -15,12 +15,12 @@ typedef struct FoliageDropList { s32 spawnMode; Bytecode pickupFlag; Bytecode spawnFlag; - } drops[0]; + } drops[VLA]; } FoliageDropList; typedef struct FoliageVectorList { s32 count; - Vec3i vectors[0]; + Vec3i vectors[VLA]; } FoliageVectorList; typedef struct SearchBushConfig { diff --git a/src/common/StartRumbleWithParams.inc.c b/src/common/StartRumbleWithParams.inc.c index 091385fa9b..a6f08a9a0d 100644 --- a/src/common/StartRumbleWithParams.inc.c +++ b/src/common/StartRumbleWithParams.inc.c @@ -3,8 +3,10 @@ API_CALLABLE(N(StartRumbleWithParams)) { Bytecode* args = script->ptrReadPos; + s32 var0 = evt_get_variable(script, *args++); + s32 var1 = evt_get_variable(script, *args++); - start_rumble(evt_get_variable(script, *args++), evt_get_variable(script, *args++)); + start_rumble(var0, var1); return ApiStatus_DONE2; } diff --git a/src/d0a70_len_4fe0.c b/src/d0a70_len_4fe0.c index 94b426e280..bda447247c 100644 --- a/src/d0a70_len_4fe0.c +++ b/src/d0a70_len_4fe0.c @@ -70,6 +70,8 @@ typedef struct PackedVtx { typedef FoldState FoldStateList[90]; +extern HeapNode heap_spriteHead; + // BSS extern FoldImageRec D_80156920; extern Vtx* D_80156948[2]; @@ -167,10 +169,10 @@ void fold_init(void) { s32 i; for (i = 0; i < ARRAY_COUNT(D_80156948); i++) { - D_80156948[i] = _heap_malloc(&gSpriteHeapPtr, D_8014EE60 * sizeof(*(D_80156948[0]))); + D_80156948[i] = _heap_malloc(&heap_spriteHead, D_8014EE60 * sizeof(*(D_80156948[0]))); } - D_80156954 = (FoldStateList*)_heap_malloc(&gSpriteHeapPtr, ARRAY_COUNT(*D_80156954) * sizeof((*D_80156954)[0])); + D_80156954 = (FoldStateList*)_heap_malloc(&heap_spriteHead, ARRAY_COUNT(*D_80156954) * sizeof((*D_80156954)[0])); for (i = 0; i < ARRAY_COUNT(*D_80156954); i++) { fold_init_state(&(*D_80156954)[i]); @@ -1576,7 +1578,7 @@ void func_8013E2F0(FoldState* state, Matrix4f mtx) { if ((D_80151328->flags & 1) && (state->flags & (FOLD_STATE_FLAG_100000 | FOLD_STATE_FLAG_80000)) && (state->renderType == FOLD_RENDER_TYPE_0 || state->renderType == FOLD_RENDER_TYPE_2 - || state->renderType == FOLD_RENDER_TYPE_7 + || state->renderType == FOLD_RENDER_TYPE_7 || state->renderType == FOLD_RENDER_TYPE_B)) { s32 alpha = 255; gDPScrollMultiTile2_4b(gMasterGfxPos++, fold_currentImage->raster, G_IM_FMT_CI, diff --git a/src/draw_box.c b/src/draw_box.c index ccd7d7eb5f..a70eab2b14 100644 --- a/src/draw_box.c +++ b/src/draw_box.c @@ -11,7 +11,8 @@ typedef struct DefaultWindowStyle { /* 0x07 */ Color_RGBA8 color2; } DefaultWindowStyle; // size = 0x0B -static Vtx gBoxQuadBuffer[][16]; +#define BOX_QUAD_BUFFER_NUM 21 +extern Vtx gBoxQuadBuffer[BOX_QUAD_BUFFER_NUM][16]; DefaultWindowStyle gBoxDefaultStyles[] = { { @@ -432,8 +433,8 @@ s32 draw_box(s32 flags, WindowStyle windowStyle, s32 posX, s32 posY, s32 posZ, s if (flags & DRAW_FLAG_ROTSCALE) { quads = gBoxQuadBuffer[gBoxQuadIndex++]; - if (gBoxQuadIndex > 20) { - gBoxQuadIndex = 0; + if (gBoxQuadIndex > BOX_QUAD_BUFFER_NUM - 1) { + gBoxQuadIndex = 0; } } @@ -761,7 +762,7 @@ s32 draw_box(s32 flags, WindowStyle windowStyle, s32 posX, s32 posY, s32 posZ, s gDPSetTexturePersp(gMasterGfxPos++, G_TP_NONE); gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE); if(fpDrawContents != NULL) { - if(quads != NULL) { + if (quads != NULL) { void* mdl_address = mdl_get_next_texture_address(width * height * 2); if(mdl_address != 0) { gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, OS_K0_TO_PHYSICAL(mdl_address)); diff --git a/src/effects.c b/src/effects.c index 57f520d1d9..e35cd93446 100644 --- a/src/effects.c +++ b/src/effects.c @@ -6,14 +6,13 @@ typedef s32 TlbEntry[0x1000 / 4]; typedef TlbEntry TlbMappablePage[15]; -extern TlbMappablePage D_80197000; - #define EFFECT_LOADED 1 extern EffectGraphics gEffectGraphicsData[15]; extern EffectInstance* gEffectInstances[96]; -extern s32 D_801A6000; +extern TlbMappablePage D_80197000; +extern Addr D_801A6000; #define FX_ENTRY(name, gfx_name) { \ name##_main, effect_##name##_ROM_START, effect_##name##_ROM_END, effect_##name##_VRAM, gfx_name##_ROM_START, \ diff --git a/src/encounter_api.c b/src/encounter_api.c index 0418eb5529..eefc1d9b1a 100644 --- a/src/encounter_api.c +++ b/src/encounter_api.c @@ -8,7 +8,7 @@ ApiStatus SetEncounterStatusFlags(Evt* script, s32 isInitialCall) { EncounterStatus* currentEncounter = &gCurrentEncounter; s32 flagBits = *args++; - if (evt_get_variable(script, *args)) { + if (evt_get_variable(script, *args++)) { currentEncounter->flags |= flagBits; } else { currentEncounter->flags &= ~flagBits; @@ -369,7 +369,7 @@ ApiStatus BindNpcIdle(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Enemy* owner = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); - EvtScript* aiBytecode = (EvtScript*)evt_get_variable(script, *args); + EvtScript* aiBytecode = (EvtScript*)evt_get_variable(script, *args++); if (npcID == NPC_SELF) { npcID = owner->npcID; @@ -419,7 +419,7 @@ ApiStatus EnableNpcAI(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Enemy* npc = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); - s32 var2 = evt_get_variable(script, *args); + s32 var2 = evt_get_variable(script, *args++); if (npcID == NPC_SELF) { npcID = npc->npcID; @@ -487,7 +487,7 @@ ApiStatus BindNpcAux(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Enemy* npc = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); - EvtScript* auxBytecode = (EvtScript*)evt_get_variable(script, *args); + EvtScript* auxBytecode = (EvtScript*)evt_get_variable(script, *args++); if (npcID == NPC_SELF) { npcID = npc->npcID; @@ -536,7 +536,7 @@ ApiStatus EnableNpcAux(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Enemy* npc = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); - s32 var2 = evt_get_variable(script, *args); + s32 var2 = evt_get_variable(script, *args++); if (npcID == NPC_SELF) { npcID = npc->npcID; @@ -559,7 +559,7 @@ ApiStatus BindNpcInteract(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Enemy* npc = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); - EvtScript* interactBytecode = (EvtScript*)evt_get_variable(script, *args); + EvtScript* interactBytecode = (EvtScript*)evt_get_variable(script, *args++); if (npcID == NPC_SELF) { npcID = npc->npcID; @@ -579,7 +579,7 @@ ApiStatus BindNpcHit(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Enemy* npc = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); - EvtScript* hitBytecode = (EvtScript*)evt_get_variable(script, *args); + EvtScript* hitBytecode = (EvtScript*)evt_get_variable(script, *args++); if (npcID == NPC_SELF) { npcID = npc->npcID; @@ -599,7 +599,7 @@ ApiStatus BindNpcDefeat(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Enemy* npc = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); - EvtScript* defeatBytecode = (EvtScript*)evt_get_variable(script, *args); + EvtScript* defeatBytecode = (EvtScript*)evt_get_variable(script, *args++); if (npcID == -1) { npcID = npc->npcID; @@ -623,8 +623,11 @@ ApiStatus SetSelfVar(Evt* script, s32 isInitialCall) { ApiStatus GetSelfVar(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; + Enemy* owner = script->owner1.enemy; + s32 var1 = evt_get_variable(script, *args++); + s32 var0 = *args++; - evt_set_variable(script, *args++, script->owner1.enemy->varTable[evt_get_variable(script, *args++)]); + evt_set_variable(script, var0, owner->varTable[var1]); return ApiStatus_DONE2; } @@ -633,7 +636,7 @@ ApiStatus SetNpcVar(Evt* script, s32 isInitialCall) { Enemy* npc = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); s32 varIdx = evt_get_variable(script, *args++); - s32 val = evt_get_variable(script, *args); + s32 val = evt_get_variable(script, *args++); if (npcID == NPC_SELF) { npcID = npc->npcID; @@ -686,7 +689,7 @@ ApiStatus SetSelfEnemyFlagBits(Evt* script, s32 isInitialCall) { Enemy* owner = script->owner1.enemy; s32 bits = *args++; - if (evt_get_variable(script, *args)) { + if (evt_get_variable(script, *args++)) { owner->flags |= bits; } else { owner->flags &= ~bits; @@ -699,7 +702,7 @@ ApiStatus SelfEnemyOverrideSyncPos(Evt* script, s32 isInitialCall) { Enemy* owner = script->owner1.enemy; Npc* npc = get_npc_unsafe(script->owner2.npcID); - owner->unk_07 = evt_get_variable(script, *args); + owner->unk_07 = evt_get_variable(script, *args++); owner->unk_10.x = npc->pos.x; owner->unk_10.y = npc->pos.y; owner->unk_10.z = npc->pos.z; @@ -708,7 +711,9 @@ ApiStatus SelfEnemyOverrideSyncPos(Evt* script, s32 isInitialCall) { } ApiStatus GetSelfNpcID(Evt* script, s32 isInitialCall) { - evt_set_variable(script, *script->ptrReadPos, script->owner1.enemy->npcID); + Bytecode* args = script->ptrReadPos; + + evt_set_variable(script, *args++, script->owner1.enemy->npcID); return ApiStatus_DONE2; } @@ -730,7 +735,7 @@ ApiStatus SetEnemyFlagBits(Evt* script, s32 isInitialCall) { Enemy* npc = script->owner1.enemy; s32 npcID = evt_get_variable(script, *args++); s32 bits = *args++; - s32 var2 = evt_get_variable(script, *args); + s32 var2 = evt_get_variable(script, *args++); if (npcID == NPC_SELF) { npcID = npc->npcID; @@ -738,7 +743,7 @@ ApiStatus SetEnemyFlagBits(Evt* script, s32 isInitialCall) { npc = get_enemy(npcID); - if (var2 != NULL) { + if (var2) { npc->flags |= bits; } else { npc->flags &= ~bits; @@ -804,7 +809,8 @@ ApiStatus func_800458CC(Evt* script, s32 isInitialCall) { ApiStatus OnPlayerFled(Evt* script, s32 isInitialCall) { Enemy* enemy = script->owner1.enemy; Npc* npc = get_npc_unsafe(enemy->npcID); - s32 skipReaction = evt_get_variable(script, *script->ptrReadPos); + Bytecode* args = script->ptrReadPos; + s32 skipReaction = evt_get_variable(script, *args++); enemy->aiFlags |= ENEMY_AI_FLAG_SUSPEND; @@ -838,7 +844,7 @@ ApiStatus OnPlayerFled(Evt* script, s32 isInitialCall) { ApiStatus SetTattleMessage(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; s32 enemyId = evt_get_variable(script, *args++); - u32 tattleMsg = evt_get_variable(script, *args); + u32 tattleMsg = evt_get_variable(script, *args++); Enemy* npc = get_enemy(enemyId); npc->tattleMsg = tattleMsg; diff --git a/src/entity/default/BoardedFloor.c b/src/entity/default/BoardedFloor.c index 3c91cdae9c..68835238a5 100644 --- a/src/entity/default/BoardedFloor.c +++ b/src/entity/default/BoardedFloor.c @@ -229,7 +229,7 @@ void Entity_BoardedFloor_shatter(Entity* entity) { entity_set_render_script(entity, &Entity_BoardedFloor_RenderScriptShattered); } -EntityScript Entity_BoardedFloor_Script = { +EntityModelScript Entity_BoardedFloor_Script = { es_ClearFlags(ENTITY_FLAG_DISABLE_COLLISION) es_SetCallback(Entity_BoardedFloor_idle, 0) es_PlaySound(SOUND_2092) diff --git a/src/entity/default/BombableRock.c b/src/entity/default/BombableRock.c index f4e9c62dfb..b0917ea9d1 100644 --- a/src/entity/default/BombableRock.c +++ b/src/entity/default/BombableRock.c @@ -272,3 +272,5 @@ EntityBlueprint Entity_BombableRock2 = { .entityType = ENTITY_TYPE_BOMBABLE_ROCK, .aabbSize = { 50, 50, 100 } }; + +MATCHING_BSS(0x100); diff --git a/src/evt/evt.c b/src/evt/evt.c index 5e0a8b3a29..52c2696f00 100644 --- a/src/evt/evt.c +++ b/src/evt/evt.c @@ -124,8 +124,10 @@ ApiStatus evt_handle_wait_seconds(Evt* script) { ApiStatus evt_handle_if_equal(Evt* script) { Bytecode* args = script->ptrReadPos; + s32 val1 = evt_get_variable(script, *args++); + s32 val2 = evt_get_variable(script, *args++); - if (evt_get_variable(script, *args++) != evt_get_variable(script, *args++)) { + if (val1 != val2) { script->ptrNextLine = evt_skip_if(script); return ApiStatus_DONE2; } @@ -134,8 +136,10 @@ ApiStatus evt_handle_if_equal(Evt* script) { ApiStatus evt_handle_if_not_equal(Evt* script) { Bytecode* args = script->ptrReadPos; + s32 val1 = evt_get_variable(script, *args++); + s32 val2 = evt_get_variable(script, *args++); - if (evt_get_variable(script, *args++) == evt_get_variable(script, *args++)) { + if (val1 == val2) { script->ptrNextLine = evt_skip_if(script); return ApiStatus_DONE2; } @@ -144,8 +148,10 @@ ApiStatus evt_handle_if_not_equal(Evt* script) { ApiStatus evt_handle_if_less(Evt* script) { Bytecode* args = script->ptrReadPos; + s32 val1 = evt_get_variable(script, *args++); + s32 val2 = evt_get_variable(script, *args++); - if (evt_get_variable(script, *args++) >= evt_get_variable(script, *args++)) { + if (val1 >= val2) { script->ptrNextLine = evt_skip_if(script); return ApiStatus_DONE2; } @@ -154,8 +160,10 @@ ApiStatus evt_handle_if_less(Evt* script) { ApiStatus evt_handle_if_greater(Evt* script) { Bytecode* args = script->ptrReadPos; + s32 val1 = evt_get_variable(script, *args++); + s32 val2 = evt_get_variable(script, *args++); - if (evt_get_variable(script, *args++) <= evt_get_variable(script, *args++)) { + if (val1 <= val2) { script->ptrNextLine = evt_skip_if(script); return ApiStatus_DONE2; } @@ -164,8 +172,10 @@ ApiStatus evt_handle_if_greater(Evt* script) { ApiStatus evt_handle_if_less_equal(Evt* script) { Bytecode* args = script->ptrReadPos; + s32 val1 = evt_get_variable(script, *args++); + s32 val2 = evt_get_variable(script, *args++); - if (evt_get_variable(script, *args++) > evt_get_variable(script, *args++)) { + if (val1 > val2) { script->ptrNextLine = evt_skip_if(script); return ApiStatus_DONE2; } @@ -174,8 +184,10 @@ ApiStatus evt_handle_if_less_equal(Evt* script) { ApiStatus evt_handle_if_greater_equal(Evt* script) { Bytecode* args = script->ptrReadPos; + s32 val1 = evt_get_variable(script, *args++); + s32 val2 = evt_get_variable(script, *args++); - if (evt_get_variable(script, *args++) < evt_get_variable(script, *args++)) { + if (val1 < val2) { script->ptrNextLine = evt_skip_if(script); return ApiStatus_DONE2; } @@ -186,7 +198,7 @@ ApiStatus evt_handle_if_AND(Evt* script) { Bytecode* args = script->ptrReadPos; Bytecode var = *args++; - if ((evt_get_variable(script, var) & *args) == 0) { + if ((evt_get_variable(script, var) & *args++) == 0) { script->ptrNextLine = evt_skip_if(script); return ApiStatus_DONE2; } @@ -197,7 +209,7 @@ ApiStatus evt_handle_if_not_AND(Evt* script) { Bytecode* args = script->ptrReadPos; Bytecode var = *args++; - if ((evt_get_variable(script, var) & *args) != 0) { + if ((evt_get_variable(script, var) & *args++) != 0) { script->ptrNextLine = evt_skip_if(script); return ApiStatus_DONE2; } @@ -214,7 +226,8 @@ ApiStatus evt_handle_end_if(Evt* script) { } ApiStatus evt_handle_switch(Evt* script) { - Bytecode value = evt_get_variable(script, *script->ptrReadPos); + Bytecode* args = script->ptrReadPos; + Bytecode value = evt_get_variable(script, *args++); s32 switchDepth = ++script->switchDepth; ASSERT(switchDepth < 8); @@ -246,7 +259,7 @@ ApiStatus evt_handle_case_equal(Evt* script) { ASSERT(switchDepth >= 0); - var = evt_get_variable(script, *args); + var = evt_get_variable(script, *args++); switchBlockValue = script->switchBlockValue[switchDepth]; if (script->switchBlockState[switchDepth] <= 0) { @@ -269,7 +282,7 @@ ApiStatus evt_handle_case_not_equal(Evt* script) { ASSERT(switchDepth >= 0); - var = evt_get_variable(script, *args); + var = evt_get_variable(script, *args++); switchBlockValue = script->switchBlockValue[switchDepth]; if (script->switchBlockState[switchDepth] <= 0) { @@ -292,7 +305,7 @@ ApiStatus evt_handle_case_less(Evt* script) { ASSERT(switchDepth >= 0); - var = evt_get_variable(script, *args); + var = evt_get_variable(script, *args++); switchBlockValue = script->switchBlockValue[switchDepth]; if (script->switchBlockState[switchDepth] <= 0) { @@ -315,7 +328,7 @@ ApiStatus evt_handle_case_less_equal(Evt* script) { ASSERT(switchDepth >= 0); - var = evt_get_variable(script, *args); + var = evt_get_variable(script, *args++); switchBlockValue = script->switchBlockValue[switchDepth]; if (script->switchBlockState[switchDepth] <= 0) { @@ -338,7 +351,7 @@ ApiStatus evt_handle_case_greater(Evt* script) { ASSERT(switchDepth >= 0); - var = evt_get_variable(script, *args); + var = evt_get_variable(script, *args++); switchBlockValue = script->switchBlockValue[switchDepth]; if (script->switchBlockState[switchDepth] <= 0) { @@ -361,7 +374,7 @@ ApiStatus evt_handle_case_greater_equal(Evt* script) { ASSERT(switchDepth >= 0); - var = evt_get_variable(script, *args); + var = evt_get_variable(script, *args++); switchBlockValue = script->switchBlockValue[switchDepth]; if (script->switchBlockState[switchDepth] <= 0) { @@ -426,7 +439,7 @@ ApiStatus evt_handle_case_AND(Evt* script) { ASSERT(switchDepth >= 0); - var = *args; + var = *args++; switchBlockValue = script->switchBlockValue[switchDepth]; switchBlockState = script->switchBlockState[switchDepth]; @@ -451,7 +464,7 @@ ApiStatus evt_handle_case_equal_OR(Evt* script) { ASSERT(switchDepth >= 0); - var = evt_get_variable(script, *args); + var = evt_get_variable(script, *args++); switchBlockValue = script->switchBlockValue[switchDepth]; switchBlockState = script->switchBlockState[switchDepth]; @@ -476,7 +489,7 @@ ApiStatus evt_handle_case_equal_AND(Evt* script) { ASSERT(switchDepth >= 0); - var = evt_get_variable(script, *args); + var = evt_get_variable(script, *args++); switchBlockValue = script->switchBlockValue[switchDepth]; switchBlockState = script->switchBlockState[switchDepth]; @@ -531,9 +544,9 @@ ApiStatus evt_handle_end_switch(Evt* script) { ApiStatus evt_handle_set_var(Evt* script) { Bytecode* args = script->ptrReadPos; - s32 curPtrReadPos = args[0]; + s32 curPtrReadPos = *args++; - evt_set_variable(script, curPtrReadPos, evt_get_variable(script, args[1])); + evt_set_variable(script, curPtrReadPos, evt_get_variable(script, *args++)); return ApiStatus_DONE2; } @@ -546,7 +559,7 @@ ApiStatus evt_handle_set_float(Evt* script) { Bytecode* args = script->ptrReadPos; Bytecode var = *args++; - evt_set_float_variable(script, var, evt_get_float_variable(script, *args)); + evt_set_float_variable(script, var, evt_get_float_variable(script, *args++)); return ApiStatus_DONE2; } @@ -741,7 +754,7 @@ ApiStatus evt_handle_get_Nth_word(Evt* script) { Bytecode var; var = *args++; - evt_set_variable(script, var, script->buffer[evt_get_variable(script, *args)]); + evt_set_variable(script, var, script->buffer[evt_get_variable(script, *args++)]); return ApiStatus_DONE2; } @@ -815,7 +828,7 @@ ApiStatus evt_handle_get_Nth_float(Evt* script) { Bytecode var; var = *args++; - evt_set_float_variable(script, var, script->buffer[evt_get_variable(script, *args)]); + evt_set_float_variable(script, var, script->buffer[evt_get_variable(script, *args++)]); return ApiStatus_DONE2; } @@ -906,23 +919,22 @@ ApiStatus evt_handle_call(Evt* script) { } ApiStatus evt_handle_exec1(Evt* script) { + Bytecode* args = script->ptrReadPos; Evt* newScript; s32 i; - newScript = start_script_in_group((EvtScript*)evt_get_variable(script, *script->ptrReadPos), script->priority, 0, + newScript = start_script_in_group((EvtScript*)evt_get_variable(script, *args++), script->priority, 0, script->groupFlags); newScript->owner1 = script->owner1; newScript->owner2 = script->owner2; - i = 0; - while (i < ARRAY_COUNT(script->varTable)) { - newScript->varTable[i] = script->varTable[i++]; + for (i = 0; i < ARRAY_COUNT(script->varTable); i++) { + newScript->varTable[i] = script->varTable[i]; } - i = 0; - while (i < ARRAY_COUNT(script->varFlags)) { - newScript->varFlags[i] = script->varFlags[i++]; + for (i = 0; i < ARRAY_COUNT(script->varFlags); i++) { + newScript->varFlags[i] = script->varFlags[i]; } newScript->array = script->array; @@ -931,6 +943,7 @@ ApiStatus evt_handle_exec1(Evt* script) { return ApiStatus_DONE2; } + ApiStatus evt_handle_exec1_get_id(Evt* script) { Bytecode* args = script->ptrReadPos; EvtScript* newSource = (EvtScript*)evt_get_variable(script, *args++); @@ -1341,7 +1354,7 @@ ApiStatus func_802C73B0(Evt* script) { return ApiStatus_DONE2; } -s32 func_802C73B8(Evt* script) { +ApiStatus func_802C73B8(Evt* script) { s32 i; for (i = 0; i < MAX_SCRIPTS; i++) { @@ -1349,7 +1362,7 @@ s32 func_802C73B8(Evt* script) { break; } } - return 1; + return ApiStatus_DONE1; } s32 evt_execute_next_command(Evt* script) { diff --git a/src/evt/f8f60_len_1560.c b/src/evt/f8f60_len_1560.c index 7cf466702e..30de888b80 100644 --- a/src/evt/f8f60_len_1560.c +++ b/src/evt/f8f60_len_1560.c @@ -298,7 +298,7 @@ void load_path_data(s32 num, f32* normalizedLengths, Vec3f* pathPositions, Vec3f outVectors[num-1].x = 0.0f; outVectors[num-1].y = 0.0f; outVectors[num-1].z = 0.0f; - + for (i = 0; i < num - 1; i++) { lenBuf[i] = normalizedLengths[i+1] - normalizedLengths[i]; vecBuf[i+1].x = (pathPositions[i+1].x - pathPositions[i].x) / lenBuf[i]; @@ -337,7 +337,7 @@ void load_path_data(s32 num, f32* normalizedLengths, Vec3f* pathPositions, Vec3f outVectors[i].y = (outVectors[i].y - (lenBuf[i] * outVectors[i+1].y)) / vecBuf[i].y; outVectors[i].z = (outVectors[i].z - (lenBuf[i] * outVectors[i+1].z)) / vecBuf[i].z; } - + heap_free(lenBuf); heap_free(vecBuf); } @@ -348,7 +348,7 @@ void get_path_position(f32 alpha, Vec3f* outPos, s32 numVectors, f32* normalized f32 curProgress; f32 ax, ay, az, bx, by, bz, dx, dy, dz; s32 i; - + for (i = 0; i < limit;) { s32 temp_v1 = (i + limit) / 2; @@ -362,7 +362,7 @@ void get_path_position(f32 alpha, Vec3f* outPos, s32 numVectors, f32* normalized if (i > 0) { i--; } - + curLength = normalizedLengths[i+1] - normalizedLengths[i]; curProgress = alpha - normalizedLengths[i]; @@ -450,13 +450,12 @@ ApiStatus GetNextPathPos(Evt* script, s32 isInitialCall) { ApiStatus GetDist2D(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; Bytecode outVar = *args++; + f32 ax = evt_get_float_variable(script, *args++); + f32 ay = evt_get_float_variable(script, *args++); + f32 bx = evt_get_float_variable(script, *args++); + f32 by = evt_get_float_variable(script, *args++); - evt_set_float_variable(script, outVar, dist2D( - evt_get_float_variable(script, *args++), - evt_get_float_variable(script, *args++), - evt_get_float_variable(script, *args++), - evt_get_float_variable(script, *args++) - )); + evt_set_float_variable(script, outVar, dist2D(ax, ay, bx, by)); return ApiStatus_DONE2; } @@ -537,16 +536,18 @@ ApiStatus SetGameMode(Evt* script, s32 isInitialCall) { ApiStatus ClampAngleInt(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; + s32 angle = evt_get_variable(script, *args); - evt_set_variable(script, *args++, clamp_angle(evt_get_variable(script, *args))); + evt_set_variable(script, *args++, clamp_angle(angle)); return ApiStatus_DONE2; } ApiStatus ClampAngleFloat(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; + f32 angle = evt_get_float_variable(script, *args); - evt_set_float_variable(script, *args++, clamp_angle(evt_get_float_variable(script, *args))); + evt_set_float_variable(script, *args++, clamp_angle(angle)); return ApiStatus_DONE2; } diff --git a/src/gcc/udivmoddi4.inc.c b/src/gcc/udivmoddi4.inc.c index 1dab126343..de8a48b518 100644 --- a/src/gcc/udivmoddi4.inc.c +++ b/src/gcc/udivmoddi4.inc.c @@ -23,7 +23,7 @@ typedef union { #define __ll_lowpart(t) ((USItype) (t) % __ll_B) #define __ll_highpart(t) ((USItype) (t) / __ll_B) -#ifdef SHIFT +#ifndef OLD_GCC #define umul_ppmm(w1, w0, u, v) \ do { \ UDItype __x = (UDItype) (USItype) (u) * (USItype) (v); \ diff --git a/src/heap.c b/src/heap.c index 20285a182a..7aa150a715 100644 --- a/src/heap.c +++ b/src/heap.c @@ -1,7 +1,10 @@ #include "common.h" +extern HeapNode heap_generalHead; +extern HeapNode heap_collisionHead; + HeapNode* general_heap_create(void) { - return _heap_create(&heap_generalHead, 0x54000); + return _heap_create(&heap_generalHead, GENERAL_HEAP_SIZE); } void* general_heap_malloc(s32 size) { @@ -17,7 +20,7 @@ s32 general_heap_free(void* data) { } s32 battle_heap_create(void) { - if ((s32)_heap_create(&heap_battleHead, 0x25800) == -1) { + if ((s32)_heap_create(&heap_battleHead, BATTLE_HEAP_SIZE) == -1) { return -1; } else { return 0; @@ -45,7 +48,7 @@ s32 heap_free(void* data) { } s32 collision_heap_create(void) { - if ((s32)_heap_create(&heap_collisionHead, 0x18000) == -1) { + if ((s32)_heap_create(&heap_collisionHead, COLLISION_HEAP_SIZE) == -1) { return -1; } return 0; diff --git a/src/heaps.c b/src/heaps.c new file mode 100644 index 0000000000..b511527a31 --- /dev/null +++ b/src/heaps.c @@ -0,0 +1,16 @@ +#include "common.h" +#include "audio.h" +#include "model.h" + +typedef s32 TlbEntry[0x1000 / 4]; +typedef TlbEntry TlbMappablePage[15]; + +BSS TlbMappablePage D_80197000; +BSS u8 D_801A6000[0x1000]; +BSS u8 BattleEntityHeapBottom[0x3000]; +BSS u8 AuHeapBase[AUDIO_HEAP_SIZE]; +BSS u8 D_80200000[0x4000]; +BSS u8 D_80204000[0x3000]; +BSS u8 D_80207000[0x3000]; +BSS u8 D_8020A000[0x6000]; +BSS ShapeFile gMapShapeData; diff --git a/src/heaps2.c b/src/heaps2.c new file mode 100644 index 0000000000..29316228a0 --- /dev/null +++ b/src/heaps2.c @@ -0,0 +1,4 @@ +#include "common.h" + +BSS u8 WorldEntityHeapBase[0x10]; +BSS u8 heap_collisionHead[COLLISION_HEAP_SIZE]; diff --git a/src/heaps3.c b/src/heaps3.c new file mode 100644 index 0000000000..3097275e62 --- /dev/null +++ b/src/heaps3.c @@ -0,0 +1,7 @@ +#include "common.h" + +BSS u8 heap_generalHead[GENERAL_HEAP_SIZE]; +BSS u8 heap_spriteHead[SPRITE_HEAP_SIZE]; +BSS u16 gFrameBuf0[FRAME_BUFFER_SIZE / 2]; +BSS u16 gFrameBuf1[FRAME_BUFFER_SIZE / 2]; +BSS u16 gFrameBuf2[FRAME_BUFFER_SIZE / 2]; diff --git a/src/inspect_icon.c b/src/inspect_icon.c index 5c5993b755..180e27e84c 100644 --- a/src/inspect_icon.c +++ b/src/inspect_icon.c @@ -259,3 +259,5 @@ void func_802B79C8_E20AD8(void) { func_800EF3D4(0); partner_reset_tether_distance(); } + +MATCHING_BSS(0x30); diff --git a/src/jp/7E00.c b/src/jp/7E00.c index 0745881f70..faf95dfa0a 100644 --- a/src/jp/7E00.c +++ b/src/jp/7E00.c @@ -1,3 +1,3 @@ #include "common.h" -INCLUDE_ASM(s32, "7E00", func_8002CA00); +INCLUDE_ASM(s32, "7E00", load_obfuscation_shims); diff --git a/src/load_obfuscation_shims.c b/src/load_obfuscation_shims.c index 8566b6849b..49709ab27a 100644 --- a/src/load_obfuscation_shims.c +++ b/src/load_obfuscation_shims.c @@ -8,7 +8,7 @@ extern s8 obfuscated_obfuscation_shims_VRAM[]; #ifdef SHIFT void load_obfuscation_shims(void) { - dma_copy(obfuscation_shims_ROM_START, obfuscation_shims_ROM_END, obfuscation_shims_VRAM); + // no-op since in shiftable builds, we bypass the obfuscation } #else void load_obfuscation_shims(void) { diff --git a/src/main.c b/src/main.c index 1d78d22de5..fad5058e29 100644 --- a/src/main.c +++ b/src/main.c @@ -18,7 +18,6 @@ void gfx_init_state(void); #ifdef VERSION_US extern s32 D_80073E00; #else -void func_8002CA00(void); extern s32 D_80073DE0; #endif extern u16* D_80073E04; @@ -27,6 +26,13 @@ extern s16 D_80073E0A; extern s32 D_80073E10[]; extern u16* D_8009A680; +#ifdef SHIFT +void create_audio_system(void); +void load_engine_data(void); +#define shim_create_audio_system_obfuscated create_audio_system +#define shim_load_engine_data_obfuscated load_engine_data +#endif + void boot_main(void* data) { #ifdef VERSION_JP if (osTvType == OS_TV_NTSC) { @@ -37,7 +43,7 @@ void boot_main(void* data) { } else { PANIC(); } -#else // VERSION_JP +#else // not VERSION_JP 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); @@ -55,15 +61,9 @@ void boot_main(void* data) { is_debug_init(); nuGfxInit(); gGameStatusPtr->contBitPattern = nuContInit(); -#ifdef VERSION_US load_obfuscation_shims(); shim_create_audio_system_obfuscated(); shim_load_engine_data_obfuscated(); -#else - func_8002CA00(); - shim_create_audio_system_obfuscated(); - shim_load_engine_data_obfuscated(); -#endif nuGfxFuncSet((NUGfxFunc) gfxRetrace_Callback); nuGfxPreNMIFuncSet(gfxPreNMI_Callback); gRandSeed += osGetCount(); diff --git a/src/main_loop.c b/src/main_loop.c index 491618f88f..3901f53dab 100644 --- a/src/main_loop.c +++ b/src/main_loop.c @@ -68,7 +68,7 @@ Gfx D_80074230[] = { gsSPEndDisplayList(), }; -s32 timeFreezeMode; +//extern s32 timeFreezeMode; // TODO bss extern s16 D_8009A690; diff --git a/src/model_clear_render_tasks.c b/src/model_clear_render_tasks.c new file mode 100644 index 0000000000..1255bf293f --- /dev/null +++ b/src/model_clear_render_tasks.c @@ -0,0 +1,3 @@ +#include "model_clear_render_tasks.h" + +BSS RenderTask mdl_clearRenderTasks[NUM_RENDER_TASK_LISTS][NUM_RENDER_TASKS_IN_LIST]; diff --git a/src/model_clear_render_tasks.h b/src/model_clear_render_tasks.h new file mode 100644 index 0000000000..d8686ef670 --- /dev/null +++ b/src/model_clear_render_tasks.h @@ -0,0 +1,6 @@ +#include "common.h" + +#define NUM_RENDER_TASK_LISTS 3 +#define NUM_RENDER_TASKS_IN_LIST 0x100 + +extern RenderTask mdl_clearRenderTasks[NUM_RENDER_TASK_LISTS][NUM_RENDER_TASKS_IN_LIST]; diff --git a/src/msg.c b/src/msg.c index dc7eec5b8b..a4a765b338 100644 --- a/src/msg.c +++ b/src/msg.c @@ -11,8 +11,11 @@ enum RewindArrowStates { REWIND_ARROW_STATE_CHANGE_COLOR_BACK = 4, }; -// todo consider symbol +#ifdef SHIFT +#define MSG_ROM_START (s32)msg_ROM_START +#else #define MSG_ROM_START 0x1B83000 +#endif typedef MessageImageData* MessageImageDataList[1]; @@ -61,7 +64,7 @@ extern u16 gMsgGlobalWaveCounter; extern MessageImageDataList gMsgVarImages; extern s32 gMsgBGScrollAmtY; extern Gfx* D_80151338; -extern char gMessageBuffers[][1024]; +extern char gMessageBuffers[2][1024]; extern u8 gMessageMsgVars[3][32]; extern s16 D_80155C98; extern Mtx gMessageWindowProjMatrix[2]; @@ -1347,7 +1350,6 @@ void initialize_printer(MessagePrintState* printer, s32 arg1, s32 arg2) { printer->sizeScale = 1.0f; } -#ifndef SHIFT void dma_load_msg(u32 msgID, void* dest) { u8* addr = (u8*) MSG_ROM_START + (msgID >> 14); // (msgID >> 16) * 4 u8* offset[2]; // start, end @@ -1360,10 +1362,6 @@ void dma_load_msg(u32 msgID, void* dest) { // Load the msg data dma_copy(MSG_ROM_START + offset[0], MSG_ROM_START + offset[1], dest); } -#else -void dma_load_msg(u32 msgID, void* dest); -INCLUDE_ASM_SHIFT(void, "msg", dma_load_msg); -#endif s8* load_message_to_buffer(s32 msgID) { s8* prevBufferPos; @@ -1372,7 +1370,7 @@ s8* load_message_to_buffer(s32 msgID) { prevBufferPos = gMessageBuffers[gNextMessageBuffer]; gNextMessageBuffer++; - if (gNextMessageBuffer >= 2) { + if (gNextMessageBuffer >= ARRAY_COUNT(gMessageBuffers)) { gNextMessageBuffer = 0; } diff --git a/src/msg_data_2.c b/src/msg_data_2.c index d36aaa3748..6503cb7319 100644 --- a/src/msg_data_2.c +++ b/src/msg_data_2.c @@ -115,3 +115,5 @@ BSS IMG_BIN D_802EE8D0[0x5100]; BSS IMG_BIN D_802F39D0[0xB88]; BSS char MSG_unused[8]; BSS PAL_BIN D_802F4560[80][8]; + +MATCHING_BSS(0x6DA0); diff --git a/src/os/nusys/nugfxinit.c b/src/os/nusys/nugfxinit.c index cd2770db2a..995bcd4053 100644 --- a/src/os/nusys/nugfxinit.c +++ b/src/os/nusys/nugfxinit.c @@ -8,8 +8,11 @@ NUUcode nugfx_ucode = { gspF3DEX2kawase_fifo_text_bin, gspF3DEX2kawase_fifo_data_bin, }; -u16* FrameBuf[3] = { - D_8038F800, D_803B5000, D_803DA800 +extern u16 gFrameBuf0[]; +extern u16 gFrameBuf1[]; +extern u16 gFrameBuf2[]; +u16* FrameBuf[] = { + gFrameBuf0, gFrameBuf1, gFrameBuf2 }; Gfx rdpstateinit_dl[] = { diff --git a/src/sprite.c b/src/sprite.c index 058d37ca77..ba5614272c 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -1,5 +1,8 @@ #include "sprite.h" +extern HeapNode heap_generalHead; +extern HeapNode heap_spriteHead; + BSS s32 D_802DF520; // unused? BSS s32 spr_allocateBtlComponentsOnWorldHeap; BSS s32 D_802DF528[2]; // unused? @@ -126,7 +129,7 @@ PlayerSpriteSet spr_playerSpriteSets[] = { void spr_init_quad_cache(void) { s32 i; - D_802DFE44 = _heap_malloc(&gSpriteHeapPtr, ARRAY_COUNT(D_802DFE48) * sizeof(*D_802DFE44)); + D_802DFE44 = _heap_malloc(&heap_spriteHead, ARRAY_COUNT(D_802DFE48) * sizeof(*D_802DFE44)); for (i = 0; i < ARRAY_COUNT(D_802DFE48); i++) { D_802DFE48[i] = -1; @@ -771,7 +774,7 @@ void spr_init_sprites(s32 playerSpriteSet) { s32 i; spr_allocateBtlComponentsOnWorldHeap = FALSE; - _heap_create(&gSpriteHeapPtr, 0x40000); + _heap_create(&heap_spriteHead, 0x40000); fold_init(); for (i = 0; i < ARRAY_COUNT(spr_playerSprites); i++) { @@ -1200,13 +1203,13 @@ s32 spr_free_sprite(s32 spriteInstanceID) { if (NpcSpriteInstanceCount[spriteIndex] == 0) { NpcSpriteData[spriteIndex] = NULL; - _heap_free(&gSpriteHeapPtr, spriteData); + _heap_free(&heap_spriteHead, spriteData); } if (spr_allocateBtlComponentsOnWorldHeap) { _heap_free(&heap_generalHead, compList); } else { - _heap_free(&gSpriteHeapPtr, compList); + _heap_free(&heap_spriteHead, compList); } SpriteInstances[spriteInstanceID].spriteIndex = 0; diff --git a/src/sprite.h b/src/sprite.h index 3ab65c097c..4ca27c7262 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -75,7 +75,7 @@ typedef struct SpriteAnimData { /* 0x04 */ PAL_PTR* palettesOffset; /* 0x08 */ s32 maxComponents; /* 0x0C */ s32 colorVariations; - /* 0x10 */ SpriteAnimComponent** animListStart[0]; + /* 0x10 */ SpriteAnimComponent** animListStart[VLA]; } SpriteAnimData; // size = 0x14 typedef struct SpriteInstance { diff --git a/src/state_battle.c b/src/state_battle.c index f73a5916cd..020193097b 100644 --- a/src/state_battle.c +++ b/src/state_battle.c @@ -6,8 +6,11 @@ #include "battle/battle.h" #include "model.h" -u16* D_800778A0[] = { - D_8038F800, D_803B5000, D_803DA800 +extern u16 gFrameBuf0[]; +extern u16 gFrameBuf1[]; +extern u16 gFrameBuf2[]; +u16* bFrameBuffers[] = { + gFrameBuf0, gFrameBuf1, gFrameBuf2 }; s32 D_800778AC[] = { @@ -18,6 +21,12 @@ s32 D_800778AC[] = { extern s32 D_800A0904; extern s32 D_800A0908; +#ifdef SHIFT +#define shim_battle_heap_create_obfuscated battle_heap_create +#endif + +extern ShapeFile gMapShapeData; + void state_init_battle(void) { D_800A0900 = 5; } @@ -41,7 +50,7 @@ void state_step_battle(void) { return; } else { D_800A0900 = -1; - nuGfxSetCfb(D_800778A0, 2); + nuGfxSetCfb(bFrameBuffers, 2); nuContRmbForceStopEnd(); sfx_stop_env_sounds(); func_8003B1A8(); @@ -125,7 +134,7 @@ void state_step_end_battle(void) { MapConfig* mapConfig; D_800A0900 = -1; - nuGfxSetCfb(D_800778A0, 3); + nuGfxSetCfb(bFrameBuffers, 3); gOverrideFlags &= ~GLOBAL_OVERRIDES_8; nuContRmbForceStopEnd(); sfx_stop_env_sounds(); @@ -163,7 +172,7 @@ void state_step_end_battle(void) { partner_init_after_battle(playerData->currentPartner); load_map_script_lib(); mapShape = load_asset_by_name(wMapShapeName, &sizeTemp); - decode_yay0(mapShape, &D_80210000); + decode_yay0(mapShape, &gMapShapeData); general_heap_free(mapShape); initialize_collision(); restore_map_collision_data(); diff --git a/src/state_file_select.c b/src/state_file_select.c index adb66c9c8c..a296d183ec 100644 --- a/src/state_file_select.c +++ b/src/state_file_select.c @@ -6,7 +6,10 @@ #include "sprite.h" #include "model.h" -u16* D_80077980[] = { D_8038F800, D_803B5000, D_803DA800 }; +extern u16 gFrameBuf0[]; +extern u16 gFrameBuf1[]; +extern u16 gFrameBuf2[]; +u16* fsFrameBuffers[] = { gFrameBuf0, gFrameBuf1, gFrameBuf2 }; NUPiOverlaySegment D_8007798C = { .romStart = filemenu_ROM_START, @@ -23,6 +26,7 @@ NUPiOverlaySegment D_8007798C = { u8 D_800779B0 = 0; extern s32 D_80200000; +extern ShapeFile gMapShapeData; void state_init_language_select(void) { D_800A0931 = 0; @@ -99,7 +103,7 @@ void state_step_language_select(void) { case 2: D_800A0930--; if (D_800A0930 == 0) { - nuGfxSetCfb(D_80077980, 2); + nuGfxSetCfb(fsFrameBuffers, 2); if (nuGfxCfb[2] == nuGfxCfb_ptr) { gOverrideFlags &= ~GLOBAL_OVERRIDES_8; } else { @@ -265,7 +269,7 @@ void state_step_exit_language_select(void) { BackgroundHeader* bgHeader; D_800A0930 = -1; - nuGfxSetCfb(D_80077980, ARRAY_COUNT(D_80077980)); + nuGfxSetCfb(fsFrameBuffers, ARRAY_COUNT(fsFrameBuffers)); filemenu_cleanup(); gOverrideFlags &= ~GLOBAL_OVERRIDES_8; mapSettings = get_current_map_settings(); @@ -288,7 +292,7 @@ void state_step_exit_language_select(void) { init_entity_data(); init_trigger_list(); mapShape = load_asset_by_name(wMapShapeName, &mapShapeSize); - decode_yay0(mapShape, &D_80210000); + decode_yay0(mapShape, &gMapShapeData); general_heap_free(mapShape); initialize_collision(); restore_map_collision_data(); diff --git a/src/state_pause.c b/src/state_pause.c index 413aca830e..760f87d519 100644 --- a/src/state_pause.c +++ b/src/state_pause.c @@ -6,7 +6,12 @@ #include "sprite.h" #include "model.h" -u16* D_80077950[] = { D_8038F800, D_803B5000, D_803DA800 }; +extern u16 gFrameBuf0[]; +extern u16 gFrameBuf1[]; +extern u16 gFrameBuf2[]; +u16* pause_frameBuffers[] = { gFrameBuf0, gFrameBuf1, gFrameBuf2 }; + +extern ShapeFile gMapShapeData; NUPiOverlaySegment D_8007795C = { .romStart = pause_ROM_START, @@ -56,7 +61,7 @@ void state_step_pause(void) { if (D_800A0920 == 0) { D_800A0920 = -1; - nuGfxSetCfb(D_80077950, 2); + nuGfxSetCfb(pause_frameBuffers, 2); gGameStatusPtr->savedBackgroundDarkness = gGameStatusPtr->backgroundDarkness; sfx_stop_env_sounds(); func_8003B1A8(); @@ -133,11 +138,11 @@ void state_step_unpause(void) { if (D_800A0920 == 0) { MapSettings* mapSettings; MapConfig* mapConfig; - void* assetData; + void* mapShape; s32 assetSize; D_800A0920 = -1; - nuGfxSetCfb(D_80077950, ARRAY_COUNT(D_80077950)); + nuGfxSetCfb(pause_frameBuffers, ARRAY_COUNT(pause_frameBuffers)); pause_cleanup(); gOverrideFlags &= ~GLOBAL_OVERRIDES_8; mapSettings = get_current_map_settings(); @@ -164,9 +169,9 @@ void state_step_unpause(void) { sfx_set_reverb_mode(SavedReverbMode); bgm_reset_max_volume(); load_map_script_lib(); - assetData = load_asset_by_name(wMapShapeName, &assetSize); - decode_yay0(assetData, &D_80210000); - general_heap_free(assetData); + mapShape = load_asset_by_name(wMapShapeName, &assetSize); + decode_yay0(mapShape, &gMapShapeData); + general_heap_free(mapShape); initialize_collision(); restore_map_collision_data(); diff --git a/src/texture_memory.c b/src/texture_memory.c new file mode 100644 index 0000000000..89f463ead3 --- /dev/null +++ b/src/texture_memory.c @@ -0,0 +1,6 @@ +#include "common.h" + +#define MAP_TEXTURE_MEMORY_SIZE 0x20000 +#define BTL_TEXTURE_MEMORY_SIZE 0x8000 + +BSS u8 MapTextureMemory[MAP_TEXTURE_MEMORY_SIZE + BTL_TEXTURE_MEMORY_SIZE]; diff --git a/src/world/action/use_spinning_flower.c b/src/world/action/use_spinning_flower.c index 75162d2325..6826aa1f60 100644 --- a/src/world/action/use_spinning_flower.c +++ b/src/world/action/use_spinning_flower.c @@ -285,3 +285,5 @@ void action_update_use_spinning_flower(void) { break; } } + +MATCHING_BSS(0x100); diff --git a/src/world/area_dgb/dgb_01/dgb_01_7.c b/src/world/area_dgb/dgb_01/dgb_01_7.c index 787cdf468e..2de16bd69b 100644 --- a/src/world/area_dgb/dgb_01/dgb_01_7.c +++ b/src/world/area_dgb/dgb_01/dgb_01_7.c @@ -3580,3 +3580,5 @@ Mtx N(D_80253960_C111E0) = {{ }}; #include "smash_bridges_anim.inc.c" + +MATCHING_BSS(0x4930); diff --git a/src/world/area_end/end_00/end_00_3_parade_setup.c b/src/world/area_end/end_00/end_00_3_parade_setup.c index 3af47183ed..cf1c7d786d 100644 --- a/src/world/area_end/end_00/end_00_3_parade_setup.c +++ b/src/world/area_end/end_00/end_00_3_parade_setup.c @@ -1,6 +1,8 @@ #include "end_00.h" #include "effects.h" +extern HeapNode heap_spriteHead; + extern s32 spr_allocateBtlComponentsOnWorldHeap; extern ParadeNpcInfo N(ParadeNpcsTable)[]; @@ -53,7 +55,7 @@ API_CALLABLE(N(ParadeSpriteHeapMalloc)) { s32 heapSize = evt_get_variable(script, *args++); s32 outVar = *args++; - evt_set_variable(script, outVar, (s32) _heap_malloc(&gSpriteHeapPtr, heapSize)); + evt_set_variable(script, outVar, (s32) _heap_malloc(&heap_spriteHead, heapSize)); return ApiStatus_DONE2; } @@ -61,7 +63,7 @@ API_CALLABLE(N(ParadeSpriteHeapFree)) { Bytecode* args = script->ptrReadPos; s32 pointer = *args++; - _heap_free(&gSpriteHeapPtr, (void*) evt_get_variable(script, pointer)); + _heap_free(&heap_spriteHead, (void*) evt_get_variable(script, pointer)); return ApiStatus_DONE2; } diff --git a/src/world/area_end/end_01/end_01_3_parade_setup.c b/src/world/area_end/end_01/end_01_3_parade_setup.c index 2f6440d00d..394cd34688 100644 --- a/src/world/area_end/end_01/end_01_3_parade_setup.c +++ b/src/world/area_end/end_01/end_01_3_parade_setup.c @@ -1,6 +1,8 @@ #include "end_01.h" #include "effects.h" +extern HeapNode heap_spriteHead; + extern s32 spr_allocateBtlComponentsOnWorldHeap; extern ParadeNpcInfo N(ParadeNpcsTable)[]; @@ -49,7 +51,7 @@ API_CALLABLE(N(ParadeSpriteHeapMalloc)) { s32 heapSize = evt_get_variable(script, *args++); s32 outVar = *args++; - evt_set_variable(script, outVar, (s32) _heap_malloc(&gSpriteHeapPtr, heapSize)); + evt_set_variable(script, outVar, (s32) _heap_malloc(&heap_spriteHead, heapSize)); return ApiStatus_DONE2; } @@ -57,7 +59,7 @@ API_CALLABLE(N(ParadeSpriteHeapFree)) { Bytecode* args = script->ptrReadPos; s32 pointer = *args++; - _heap_free(&gSpriteHeapPtr, (void*) evt_get_variable(script, pointer)); + _heap_free(&heap_spriteHead, (void*) evt_get_variable(script, pointer)); return ApiStatus_DONE2; } diff --git a/src/world/area_hos/hos_05/hos_05_5_intro.c b/src/world/area_hos/hos_05/hos_05_5_intro.c index 26d90caf0a..1133874606 100644 --- a/src/world/area_hos/hos_05/hos_05_5_intro.c +++ b/src/world/area_hos/hos_05/hos_05_5_intro.c @@ -45,7 +45,7 @@ s32 N(missing_802494FC_94FC)[] = { 0x50, 0x50, 0x51, 0x51, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x57, 0x57, 0x58, 0x58, 0x59, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, - 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, + 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, }; s32 N(D_802495DC_A3381C) = 0; @@ -61,7 +61,7 @@ CameraControlSettings N(IntroCamSettings0) = { .viewPitch = -16.8, .flag = FALSE, }; - + CameraControlSettings N(IntroCamSettings1) = { .type = CAMERA_SETTINGS_TYPE_0, .boomLength = 130.4, @@ -486,7 +486,7 @@ s16 N(UnusedBowserHoverOffsets)[] = { }; s16 N(UnusedBowserLeapPath)[] = { - 360, 345, 330, 315, 300, 285, 270, 255, + 360, 345, 330, 315, 300, 285, 270, 255, 240, 225, 215, 203, 191, 180, 170, 161, 153, 146, 140, 135 }; @@ -1315,7 +1315,7 @@ s32 N(StarSpiritLeapBackScalars)[] = { EVT_FLOAT(0.955), EVT_FLOAT(0.93), EVT_FLOAT(0.968), EVT_FLOAT(0.95), EVT_FLOAT(0.979), EVT_FLOAT(0.97), - EVT_FLOAT(0.985), EVT_FLOAT(0.985), + EVT_FLOAT(0.985), EVT_FLOAT(0.985), EVT_FLOAT(0.995), EVT_FLOAT(0.995), EVT_FLOAT(0.998), EVT_FLOAT(0.998), EVT_FLOAT(0.999), EVT_FLOAT(0.999), @@ -1488,7 +1488,9 @@ void N(worker_draw_story_graphics)(void) { } #ifdef SHIFT -#define TAPE_OFFSET title_tape_ROM_START - title_bg_1_ROM_START +// TODO this breaks stuff to enable it for the shift build +// #define TAPE_OFFSET title_tape_ROM_START - title_bg_1_ROM_START +#define TAPE_OFFSET 0x2A440 #else #define TAPE_OFFSET 0x2A440 #endif @@ -1595,7 +1597,7 @@ s32 N(StoryPageDuration)[] = { [STORY_PAGE_STARRY_SKY] 338, [STORY_PAGE_SHRINE_EXT] 338, [STORY_PAGE_STAR_ROD] 338, - [STORY_PAGE_SHRINE_INT] 622, + [STORY_PAGE_SHRINE_INT] 622, }; s32 N(NextPageAnimOffsetsX)[] = { @@ -1605,46 +1607,46 @@ s32 N(NextPageAnimOffsetsX)[] = { }; u8 N(BowserSilhouetteShakeY)[] = { - 240, 240, 240, 240, 210, 197, 185, 174, - 168, 170, 170, 170, 170, 170, 170, 167, - 165, 164, 163, 162, 162, 161, 161, 162, - 162, 163, 164, 165, 167, 170, 173, 175, - 176, 176, 175, 172, 171, 170, 170, 167, - 165, 164, 164, 165, 167, 170, 173, 175, - 176, 176, 175, 173, 170, 167, 165, 164, - 164, 165, 167, 170, 173, 175, 176, 176, - 175, 173, 170, 167, 165, 164, 165, 164, - 165, 164, 165, 164, 165, 164, 165, 164, - 165, 164, 165, 164, 165, 164, 164, 165, - 167, 170, 173, 175, 176, 176, 176, 176, - 176, 176, 174, 170, 167, 165, 164, 164, - 165, 167, 170, 170, 167, 165, 164, 164, - 165, 167, 170, 170, 167, 165, 164, 164, - 165, 167, 170, 170, 167, 165, 164, 164, - 165, 167, 170, 170, 167, 165, 164, 164, - 165, 167, 170, 170, 167, 165, 164, 164, - 165, 167, 170, 170, 167, 165, 164, 165, - 166, 167, 166, 165, 166, 167, 166, 165, - 166, 167, 166, 165, 166, 167, 166, 167, - 168, 169, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 173, 175, - 176, 176, 175, 173, 170, 167, 165, 164, - 164, 165, 167, 170, 173, 175, 176, 176, - 175, 173, 170, 167, 165, 164, 164, 165, - 167, 170, 173, 174, 175, 174, 173, 170, - 167, 165, 164, 164, 165, 167, 170, 173, - 175, 176, 176, 175, 173, 170, 167, 165, - 164, 164, 165, 167, 170, 173, 175, 176, - 176, 175, 173, 170, 167, 165, 164, 164, - 165, 167, 169, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 167, - 165, 164, 164, 165, 167, 170, 170, 167, - 165, 164, 164, 165, 167, 170, 173, 175, - 176, 176, 175, 173, 170, 167, 165, 164, - 164, 165, 167, 170, 173, 175, 176, 176, - 175, 173, 170, 167, 165, 164, 164, 165, - 167, 170, 173, 175, 176, 176, 175, 173, - 170, 167, 165, 164, 164, 165, 167, 170, + 240, 240, 240, 240, 210, 197, 185, 174, + 168, 170, 170, 170, 170, 170, 170, 167, + 165, 164, 163, 162, 162, 161, 161, 162, + 162, 163, 164, 165, 167, 170, 173, 175, + 176, 176, 175, 172, 171, 170, 170, 167, + 165, 164, 164, 165, 167, 170, 173, 175, + 176, 176, 175, 173, 170, 167, 165, 164, + 164, 165, 167, 170, 173, 175, 176, 176, + 175, 173, 170, 167, 165, 164, 165, 164, + 165, 164, 165, 164, 165, 164, 165, 164, + 165, 164, 165, 164, 165, 164, 164, 165, + 167, 170, 173, 175, 176, 176, 176, 176, + 176, 176, 174, 170, 167, 165, 164, 164, + 165, 167, 170, 170, 167, 165, 164, 164, + 165, 167, 170, 170, 167, 165, 164, 164, + 165, 167, 170, 170, 167, 165, 164, 164, + 165, 167, 170, 170, 167, 165, 164, 164, + 165, 167, 170, 170, 167, 165, 164, 164, + 165, 167, 170, 170, 167, 165, 164, 165, + 166, 167, 166, 165, 166, 167, 166, 165, + 166, 167, 166, 165, 166, 167, 166, 167, + 168, 169, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 173, 175, + 176, 176, 175, 173, 170, 167, 165, 164, + 164, 165, 167, 170, 173, 175, 176, 176, + 175, 173, 170, 167, 165, 164, 164, 165, + 167, 170, 173, 174, 175, 174, 173, 170, + 167, 165, 164, 164, 165, 167, 170, 173, + 175, 176, 176, 175, 173, 170, 167, 165, + 164, 164, 165, 167, 170, 173, 175, 176, + 176, 175, 173, 170, 167, 165, 164, 164, + 165, 167, 169, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 167, + 165, 164, 164, 165, 167, 170, 170, 167, + 165, 164, 164, 165, 167, 170, 173, 175, + 176, 176, 175, 173, 170, 167, 165, 164, + 164, 165, 167, 170, 173, 175, 176, 176, + 175, 173, 170, 167, 165, 164, 164, 165, + 167, 170, 173, 175, 176, 176, 175, 173, + 170, 167, 165, 164, 164, 165, 167, 170, }; u16 N(BowserSilhouetteLeapX)[] = { diff --git a/src/world/area_kmr/kmr_20/kmr_20_4_documents.c b/src/world/area_kmr/kmr_20/kmr_20_4_documents.c index aeb904b28d..351123b413 100644 --- a/src/world/area_kmr/kmr_20/kmr_20_4_documents.c +++ b/src/world/area_kmr/kmr_20/kmr_20_4_documents.c @@ -98,21 +98,20 @@ s32 N(LetterBodyStringIDs)[] = { MSG_Document_Letter_Mario12_Body, }; -//TODO shiftability -- these are offsets relative to 0x10F1B0 s32 N(LetterDmaOffsets)[] = { - 0x0000B290, 0x0000D158, - 0x0000D178, 0x0000EB78, - 0x0000ED78, 0x00010778, - 0x00010978, 0x00012378, - 0x00012578, 0x00013F78, - 0x00014178, 0x00015B78, - 0x00015D78, 0x00017778, - 0x00017978, 0x00019378, - 0x00019578, 0x0001AF78, - 0x0001B178, 0x0001CB78, - 0x0001CD78, 0x0001E778, - 0x0001E978, 0x00020378, - 0x00020578, 0x00021F78, + (s32) charset_postcard_OFFSET, (s32) charset_postcard_pal_OFFSET + 5, + (s32) charset_letter_content_1_OFFSET, (s32) charset_letter_content_1_pal_OFFSET + 6, + (s32) charset_letter_content_2_OFFSET, (s32) charset_letter_content_2_pal_OFFSET + 6, + (s32) charset_letter_content_3_OFFSET, (s32) charset_letter_content_3_pal_OFFSET + 6, + (s32) charset_letter_content_4_OFFSET, (s32) charset_letter_content_4_pal_OFFSET + 6, + (s32) charset_letter_content_5_OFFSET, (s32) charset_letter_content_5_pal_OFFSET + 6, + (s32) charset_letter_content_6_OFFSET, (s32) charset_letter_content_6_pal_OFFSET + 6, + (s32) charset_letter_content_7_OFFSET, (s32) charset_letter_content_7_pal_OFFSET + 6, + (s32) charset_letter_content_8_OFFSET, (s32) charset_letter_content_8_pal_OFFSET + 6, + (s32) charset_letter_content_9_OFFSET, (s32) charset_letter_content_9_pal_OFFSET + 6, + (s32) charset_letter_content_10_OFFSET, (s32) charset_letter_content_10_pal_OFFSET + 6, + (s32) charset_letter_content_11_OFFSET, (s32) charset_letter_content_11_pal_OFFSET + 6, + (s32) charset_letter_content_12_OFFSET, (s32) charset_letter_content_12_pal_OFFSET + 6, }; API_CALLABLE(N(InitLetters)){ diff --git a/src/world/area_kmr/kmr_21/kmr_21_1_main.c b/src/world/area_kmr/kmr_21/kmr_21_1_main.c index f1268990a1..f6dbe8e49b 100644 --- a/src/world/area_kmr/kmr_21/kmr_21_1_main.c +++ b/src/world/area_kmr/kmr_21/kmr_21_1_main.c @@ -6,7 +6,7 @@ typedef struct TitleDataFile { /* 0x08 */ s32 img_offset_press_start; /* 0x0C */ unsigned char unk_0C[4]; // end of header - /* 0x10 */ s8 data[0]; + /* 0x10 */ s8 data[VLA]; } TitleDataFile; // size may vary static TitleDataFile* TitleData; diff --git a/src/world/area_osr/osr_03/osr_03_3_intro.c b/src/world/area_osr/osr_03/osr_03_3_intro.c index 64881245c4..bd0e204acb 100644 --- a/src/world/area_osr/osr_03/osr_03_3_intro.c +++ b/src/world/area_osr/osr_03/osr_03_3_intro.c @@ -2,8 +2,9 @@ API_CALLABLE(N(MakeCastleChainAngle)) { Bytecode* args = script->ptrReadPos; - - evt_set_variable(script, *args++, sin_deg(evt_get_variable(script, *args)) * 20.0f); + s32 angle = evt_get_variable(script, *args); + + evt_set_variable(script, *args++, sin_deg(angle) * 20.0f); return ApiStatus_DONE2; } diff --git a/src/world/area_tik/common/DripVolumes.inc.c b/src/world/area_tik/common/DripVolumes.inc.c index 0f9669df45..67f76b490c 100644 --- a/src/world/area_tik/common/DripVolumes.inc.c +++ b/src/world/area_tik/common/DripVolumes.inc.c @@ -196,5 +196,5 @@ typedef struct DripVolume { typedef struct DripVolumeList { /* 0x00 */ s32 count; - /* 0x04 */ DripVolume volumes[0]; + /* 0x04 */ DripVolume volumes[VLA]; } DripVolumeList; // size = variable diff --git a/src/world/common/lava_piranha/part1.inc.c b/src/world/common/lava_piranha/part1.inc.c index c05402c479..29356425bb 100644 --- a/src/world/common/lava_piranha/part1.inc.c +++ b/src/world/common/lava_piranha/part1.inc.c @@ -6,12 +6,21 @@ enum { NUM_VINES = 4 }; -enum { - VINE_0_BASE = 0x80200000, - VINE_1_BASE = 0x80204000, - VINE_2_BASE = 0x80207000, - VINE_3_BASE = 0x8020A000, -}; // TODO shiftability -- hard-coded addresses in gBackgroundImage +#ifdef SHIFT +extern Addr D_80200000; +extern Addr D_80204000; +extern Addr D_80207000; +extern Addr D_8020A000; +#define VINE_0_BASE (s32) &D_80200000 +#define VINE_1_BASE (s32) &D_80204000 +#define VINE_2_BASE (s32) &D_80207000 +#define VINE_3_BASE (s32) &D_8020A000 +#else +#define VINE_0_BASE 0x80200000 +#define VINE_1_BASE 0x80204000 +#define VINE_2_BASE 0x80207000 +#define VINE_3_BASE 0x8020A000 +#endif #include "world/common/lava_piranha/skele1.c" #include "world/common/lava_piranha/skele2.c" diff --git a/src/world/dead/area_kzn/kzn_19/kzn_19_4_npc.c b/src/world/dead/area_kzn/kzn_19/kzn_19_4_npc.c index 2a563d5ef6..a668f2bd7c 100644 --- a/src/world/dead/area_kzn/kzn_19/kzn_19_4_npc.c +++ b/src/world/dead/area_kzn/kzn_19/kzn_19_4_npc.c @@ -13,12 +13,21 @@ enum { NUM_VINES = 4 }; -enum { - VINE_0_BASE = 0x80200000, - VINE_1_BASE = 0x80204000, - VINE_2_BASE = 0x80207000, - VINE_3_BASE = 0x8020A000, -}; // TODO shiftability -- hard-coded addresses in gBackgroundImage +#ifdef SHIFT +extern Addr D_80200000; +extern Addr D_80204000; +extern Addr D_80207000; +extern Addr D_8020A000; +#define VINE_0_BASE (s32) &D_80200000 +#define VINE_1_BASE (s32) &D_80204000 +#define VINE_2_BASE (s32) &D_80207000 +#define VINE_3_BASE (s32) &D_8020A000 +#else +#define VINE_0_BASE 0x80200000 +#define VINE_1_BASE 0x80204000 +#define VINE_2_BASE 0x80207000 +#define VINE_3_BASE 0x8020A000 +#endif #include "./kzn_19_anim1.c" #include "./kzn_19_anim2.c" diff --git a/src/world/model_anim/kzn/0A.c b/src/world/model_anim/kzn/0A.c index 7a6caddf24..21b90a785b 100644 --- a/src/world/model_anim/kzn/0A.c +++ b/src/world/model_anim/kzn/0A.c @@ -1295,3 +1295,5 @@ AnimScript LavaPiranha_ModelScript_0A = { AS_END_LOOP, AS_END, }; + +MATCHING_BSS(0x8FB0); diff --git a/src/world/partner/lakilester.c b/src/world/partner/lakilester.c index 959ed51f11..cee4e3538c 100644 --- a/src/world/partner/lakilester.c +++ b/src/world/partner/lakilester.c @@ -1197,3 +1197,5 @@ EvtScript world_lakilester_while_riding = { EVT_RETURN EVT_END }; + +MATCHING_BSS(0xB0); diff --git a/src/world/script_api/enter_exit.c b/src/world/script_api/enter_exit.c index 4a5c891688..4228da4f37 100644 --- a/src/world/script_api/enter_exit.c +++ b/src/world/script_api/enter_exit.c @@ -468,3 +468,5 @@ EvtScript BaseEnterDoor = { EVT_RETURN EVT_END }; + +MATCHING_BSS(0x7AB0); diff --git a/src/world/world.c b/src/world/world.c index 855a80e466..1f190adc11 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -41,8 +41,8 @@ s32 pad_map_table[] = { 0, 0 }; #define ASSET_TABLE_FIRST_ENTRY (ASSET_TABLE_ROM_START + ASSET_TABLE_HEADER_SIZE) // bss -MapSettings gMapSettings; -MapConfig* gMapConfig; +extern MapSettings gMapSettings; +extern MapConfig* gMapConfig; typedef struct { /* 0x00 */ char name[16]; @@ -54,6 +54,12 @@ typedef struct { void fio_deserialize_state(void); void load_map_hit_asset(void); +#ifdef SHIFT +#define shim_general_heap_create_obfuscated general_heap_create +#endif + +extern ShapeFile gMapShapeData; + void load_map_script_lib(void) { dma_copy(world_script_api_ROM_START, world_script_api_ROM_END, world_script_api_VRAM); } @@ -118,7 +124,7 @@ void load_map_by_IDs(s16 areaID, s16 mapID, s16 loadType) { } if (!skipLoadingAssets) { - ShapeFile* shapeFile = &D_80210000; + ShapeFile* shapeFile = &gMapShapeData; void* yay0Asset = load_asset_by_name(wMapShapeName, &decompressedSize); decode_yay0(yay0Asset, shapeFile); @@ -233,7 +239,6 @@ s32 get_map_IDs_by_name(const char* mapName, s16* areaID, s16* mapID) { return FALSE; } -#ifndef SHIFT void* load_asset_by_name(const char* assetName, u32* decompressedSize) { AssetHeader firstHeader; AssetHeader* assetTableBuffer; @@ -254,11 +259,7 @@ void* load_asset_by_name(const char* assetName, u32* decompressedSize) { heap_free(assetTableBuffer); return ret; } -#else -INCLUDE_ASM_SHIFT(void*, "world/world", load_asset_by_name); -#endif -#ifndef SHIFT s32 get_asset_offset(char* assetName, s32* compressedSize) { AssetHeader firstHeader; AssetHeader* assetTableBuffer; @@ -277,9 +278,6 @@ s32 get_asset_offset(char* assetName, s32* compressedSize) { heap_free(assetTableBuffer); return ret; } -#else -INCLUDE_ASM_SHIFT(s32, "world/world", get_asset_offset); -#endif #define AREA(area, jp_name) { ARRAY_COUNT(area##_maps), area##_maps, "area_" #area, jp_name } diff --git a/src/world_use_item.c b/src/world_use_item.c index 6ddc34c227..124f728b68 100644 --- a/src/world_use_item.c +++ b/src/world_use_item.c @@ -203,3 +203,5 @@ EvtScript EVS_World_UseItem = { EVT_RETURN EVT_END }; + +MATCHING_BSS(0x2700); diff --git a/tools/build/configure.py b/tools/build/configure.py index 72e15f02fa..ed2cb87a10 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -33,7 +33,7 @@ def exec_shell(command: List[str]) -> str: return ret.stdout def write_ninja_rules(ninja: ninja_syntax.Writer, cpp: str, cppflags: str, extra_cflags: str, use_ccache: bool, - non_matching: bool, debug: bool): + non_matching: bool, shift: bool, debug: bool): # platform-specific if sys.platform == "darwin": iconv = "tools/iconv.py UTF-8 SHIFT-JIS" @@ -68,16 +68,25 @@ def write_ninja_rules(ninja: ninja_syntax.Writer, cpp: str, cppflags: str, extra "-DVERSION=$version -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc" cflags = f"-c -G0 -O2 -gdwarf-2 -x c -B {BUILD_TOOLS}/cc/gcc/ {extra_cflags}" - cflags_modern = f"-c -G0 -fno-builtin-bcopy -fno-tree-loop-distribute-patterns -funsigned-char -mabi=32 -mgp32 -mfp32 -mno-gpopt -mabi=32 -mfix4300 -fno-toplevel-reorder -mno-abicalls -fno-pic -fno-exceptions -fno-stack-protector -fno-zero-initialized-in-bss -O2 -march=vr4300 -w -gdwarf-2 -x c {extra_cflags}" + cflags_modern = f"-c -G0 -fno-builtin-bcopy -fno-tree-loop-distribute-patterns -funsigned-char -mabi=32 -mgp32 -mfp32 -mno-gpopt -mabi=32 -mfix4300 -fno-toplevel-reorder -mno-abicalls -fno-pic -fno-exceptions -fno-stack-protector -fno-zero-initialized-in-bss -O2 -march=vr4300 -Wno-builtin-declaration-mismatch -gdwarf-2 -x c {extra_cflags}" cflags_272 = f"-c -G0 -mgp32 -mfp32 -mips3 {extra_cflags}" cflags_272 = cflags_272.replace("-ggdb3","-g1") ninja.variable("python", sys.executable) - ninja.rule("ld", - description="link($version) $out", - command=f"{cross}ld -T ver/$version/build/undefined_syms.txt -T ver/$version/undefined_syms_auto.txt -T ver/$version/undefined_funcs_auto.txt -Map $mapfile --no-check-sections -T $in -o $out", - ) + ld_args = f"-T ver/$version/build/undefined_syms.txt -T ver/$version/undefined_syms_auto.txt -T ver/$version/undefined_funcs_auto.txt -Map $mapfile --no-check-sections -T $in -o $out" + + if shift: + ninja.rule("ld", + description="link($version) $out", + command=f"{cross}ld $$(tools/build/ld/multilink_calc.py $version hardcode) {ld_args} && \ + {cross}ld $$(tools/build/ld/multilink_calc.py $version calc) {ld_args}", + ) + else: + ninja.rule("ld", + description="link($version) $out", + command=f"{cross}ld {ld_args}", + ) Z64_DEBUG = "" if debug: @@ -244,7 +253,7 @@ class Configure: self.version_path = ROOT / f"ver/{version}" self.linker_entries = None - def split(self, assets: bool, code: bool, debug: bool): + def split(self, assets: bool, code: bool, shift: bool, debug: bool): import split modes = ["ld"] @@ -259,6 +268,9 @@ class Configure: if debug: splat_file += [str(self.version_path / "splat-debug.yaml")] + if shift: + splat_file += [str(self.version_path / "splat-shift.yaml")] + split.main( splat_file, modes, @@ -316,7 +328,8 @@ class Configure: # ¯\_(ツ)_/¯ return path - def write_ninja(self, ninja: ninja_syntax.Writer, skip_outputs: Set[str], non_matching: bool, debug: bool): + def write_ninja(self, ninja: ninja_syntax.Writer, skip_outputs: Set[str], non_matching: bool, modern_gcc: bool, + debug: bool): import segtypes import segtypes.common.data import segtypes.n64.yay0 @@ -326,7 +339,8 @@ class Configure: built_objects = set() generated_headers = [] - def build(object_paths: Union[Path, List[Path]], src_paths: List[Path], task: str, variables: Dict[str, str] = {}, implicit_outputs: List[str] = []): + def build(object_paths: Union[Path, List[Path]], src_paths: List[Path], task: str, + variables: Dict[str, str] = {}, implicit_outputs: List[str] = []): if not isinstance(object_paths, list): object_paths = [object_paths] @@ -393,9 +407,8 @@ class Configure: if entry.src_paths[0].suffixes[-1] == ".cpp": task = "cxx" - top_lev_name = seg.get_most_parent().name - # if "evt" in top_lev_name: - # task = "cc_modern" + if modern_gcc: + task = "cc_modern" if seg.name.endswith("osFlash"): task = "cc_ido" @@ -405,7 +418,7 @@ class Configure: cflags = cflags.replace("gcc_272", "") # Dead cod - if isinstance(seg, segtypes.common.c.CommonSegC) and seg.rom_start >= 0xEA0900: + if isinstance(seg, segtypes.common.c.CommonSegC) and isinstance(seg.rom_start, int) and seg.rom_start >= 0xEA0900: obj_path = str(entry.object_path) init_obj_path = Path(obj_path + ".dead") build(init_obj_path, entry.src_paths, task, variables={ @@ -702,12 +715,14 @@ class Configure: implicit=[CRC_TOOL], variables={ "version": self.version }, ) - ninja.build( - str(self.rom_ok_path()), - "sha1sum", - f"ver/{self.version}/checksum.sha1", - implicit=[str(self.rom_path())], - ) + + if not non_matching: + ninja.build( + str(self.rom_ok_path()), + "sha1sum", + f"ver/{self.version}/checksum.sha1", + implicit=[str(self.rom_path())], + ) ninja.build("generated_headers_" + self.version, "phony", generated_headers) @@ -736,6 +751,7 @@ if __name__ == "__main__": parser.add_argument("-d", "--debug", action="store_true", help="Generate debugging information") parser.add_argument("-n", "--non-matching", action="store_true", help="Compile nonmatching code. Combine with --debug for more detailed debug info") parser.add_argument("--shift", action="store_true", help="Build a shiftable ROM") + parser.add_argument("--modern-gcc", action="store_true", help="Use modern GCC instead of the original compiler") parser.add_argument("-w", "--no-warn", action="store_true", help="Inhibit compiler warnings") parser.add_argument("--ccache", action="store_true", help="Use ccache") args = parser.parse_args() @@ -800,6 +816,9 @@ if __name__ == "__main__": if args.shift: cppflags += " -DSHIFT" + if not args.modern_gcc: + cppflags += " -DOLD_GCC" + if not args.no_warn: cflags += " -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes" @@ -808,7 +827,9 @@ if __name__ == "__main__": ninja = ninja_syntax.Writer(open(str(ROOT / "build.ninja"), "w"), width=9999) - write_ninja_rules(ninja, args.cpp or "cpp", cppflags, cflags, args.ccache, args.non_matching, args.debug) + non_matching = args.non_matching or args.modern_gcc or args.shift + + write_ninja_rules(ninja, args.cpp or "cpp", cppflags, cflags, args.ccache, args.non_matching, args.shift, args.debug) write_ninja_for_tools(ninja) skip_files = set() @@ -823,12 +844,16 @@ if __name__ == "__main__": if not first_configure: first_configure = configure - configure.split(not args.no_split_assets, args.split_code, args.debug) - configure.write_ninja(ninja, skip_files, args.non_matching, args.debug) + configure.split(not args.no_split_assets, args.split_code, args.shift, args.debug) + configure.write_ninja(ninja, skip_files, non_matching, args.modern_gcc, args.debug) all_rom_oks.append(str(configure.rom_ok_path())) + assert(first_configure) first_configure.make_current(ninja) - ninja.build("all", "phony", all_rom_oks) + if non_matching: + ninja.build("all", "phony", [str(first_configure.rom_path())]) + else: + ninja.build("all", "phony", all_rom_oks) ninja.default("all") diff --git a/tools/build/ld/multilink_calc.py b/tools/build/ld/multilink_calc.py new file mode 100755 index 0000000000..046c859cb0 --- /dev/null +++ b/tools/build/ld/multilink_calc.py @@ -0,0 +1,88 @@ +#! /usr/bin/python3 + +import os +from pathlib import Path +import sys +from typing import Dict, List + +script_dir = Path(os.path.dirname(os.path.realpath(__file__))) +root_dir = script_dir / "../../.." + +HARDCODED_ADDR = 0x80000000 + +if __name__ == "__main__": + if len(sys.argv) != 3: + print(f"Usage: {sys.argv[0]} ") + print("mode: hardcode, calc") + sys.exit(1) + + version = sys.argv[1] + mode = sys.argv[2] + + syms_to_max = { + "entity_data_vram_end" : [ + "entity_default_VRAM_END", + "entity_jan_iwa_VRAM_END", + "entity_sbk_omo_VRAM_END", + ], + "world_action_vram_end": [ + "world_action_idle_VRAM_END", + "world_action_walk_VRAM_END", + "world_action_jump_VRAM_END", + "world_action_step_up_VRAM_END", + "world_action_land_VRAM_END", + "world_action_hammer_VRAM_END", + "world_action_spin_VRAM_END", + "world_action_tornado_jump_VRAM_END", + "world_action_spin_jump_VRAM_END", + "world_action_slide_VRAM_END", + "world_action_hit_fire_VRAM_END", + "world_action_hit_lava_VRAM_END", + "world_action_knockback_VRAM_END", + "world_action_misc_VRAM_END", + "world_action_use_munchlesia_VRAM_END", + "world_action_use_spinning_flower_VRAM_END", + "world_action_use_tweester_VRAM_END", + "world_action_sneaky_parasol_VRAM_END", + ] + } + + addrs: Dict[str, List[int]] = {} + + if mode == "hardcode": + out = "" + for sym in syms_to_max: + addrs[sym] = [HARDCODED_ADDR] + elif mode == "calc": + with open(root_dir / "ver" / version / "build/papermario.map") as f: + lines = f.readlines() + + finished = False + syms_to_go = set(syms_to_max.keys()) + for line in lines: + for sym in syms_to_max: + for max_sym in syms_to_max[sym]: + if f"{max_sym} = ." in line: + if sym not in addrs: + addrs[sym] = [] + addrs[sym].append(int(line.strip().split()[0], 16)) + syms_to_max[sym].remove(max_sym) + if len(syms_to_max[sym]) == 0: + syms_to_go.remove(sym) + if not syms_to_go: + finished = True + if finished: + break + + if syms_to_go: + print(f"Error: {syms_to_max} not found in map file") + sys.exit(1) + + out_addrs = {sym: max(addrs[sym]) for sym in addrs} + + out_addrs["entity_data_vram_end"] = out_addrs["entity_data_vram_end"] + out_addrs["world_action_vram_end"] - HARDCODED_ADDR + + out = "" + for sym in out_addrs: + out += f" --defsym {sym}=0x{out_addrs[sym]:X}" + print(out) diff --git a/ver/jp/asm/nonmatchings/35770/func_8005A3A4.s b/ver/jp/asm/nonmatchings/35770/func_8005A3A4.s index 212ee17a91..56082e7a89 100644 --- a/ver/jp/asm/nonmatchings/35770/func_8005A3A4.s +++ b/ver/jp/asm/nonmatchings/35770/func_8005A3A4.s @@ -25,7 +25,7 @@ glabel func_8005A3A4 /* 357F4 8005A3F4 2402FF7F */ addiu $v0, $zero, -0x81 /* 357F8 8005A3F8 00621824 */ and $v1, $v1, $v0 /* 357FC 8005A3FC ACA30000 */ sw $v1, ($a1) -/* 35800 8005A400 0C00B280 */ jal func_8002CA00 +/* 35800 8005A400 0C00B280 */ jal load_obfuscation_shims /* 35804 8005A404 A0800084 */ sb $zero, 0x84($a0) /* 35808 8005A408 0C0AC81E */ jal func_802B2078 /* 3580C 8005A40C 00108400 */ sll $s0, $s0, 0x10 @@ -166,7 +166,7 @@ glabel func_8005A3A4 /* 35A08 8005A608 0C052B88 */ jal func_8014AE20 /* 35A0C 8005A60C 00000000 */ nop .L8005A610: -/* 35A10 8005A610 0C00B280 */ jal func_8002CA00 +/* 35A10 8005A610 0C00B280 */ jal load_obfuscation_shims /* 35A14 8005A614 00000000 */ nop /* 35A18 8005A618 0C0AC81E */ jal func_802B2078 /* 35A1C 8005A61C 00000000 */ nop diff --git a/ver/jp/asm/nonmatchings/7E00/func_8002CA00.s b/ver/jp/asm/nonmatchings/7E00/load_obfuscation_shims.s similarity index 99% rename from ver/jp/asm/nonmatchings/7E00/func_8002CA00.s rename to ver/jp/asm/nonmatchings/7E00/load_obfuscation_shims.s index bbb27bcb84..4b3957ddca 100644 --- a/ver/jp/asm/nonmatchings/7E00/func_8002CA00.s +++ b/ver/jp/asm/nonmatchings/7E00/load_obfuscation_shims.s @@ -1,7 +1,7 @@ .set noat # allow manual use of $at .set noreorder # don't insert nops after branches -glabel func_8002CA00 +glabel load_obfuscation_shims /* 7E00 8002CA00 27BDFFC0 */ addiu $sp, $sp, -0x40 /* 7E04 8002CA04 AFB60030 */ sw $s6, 0x30($sp) /* 7E08 8002CA08 3C16759A */ lui $s6, 0x759a diff --git a/ver/jp/asm/nonmatchings/E860/func_80033574.s b/ver/jp/asm/nonmatchings/E860/func_80033574.s index c94409557d..5e1d47f116 100644 --- a/ver/jp/asm/nonmatchings/E860/func_80033574.s +++ b/ver/jp/asm/nonmatchings/E860/func_80033574.s @@ -52,7 +52,7 @@ glabel func_80033574 /* EA28 80033628 24020001 */ addiu $v0, $zero, 1 /* EA2C 8003362C 0C016AD4 */ jal func_8005AB50 /* EA30 80033630 A0620070 */ sb $v0, 0x70($v1) -/* EA34 80033634 0C00B280 */ jal func_8002CA00 +/* EA34 80033634 0C00B280 */ jal load_obfuscation_shims /* EA38 80033638 00000000 */ nop /* EA3C 8003363C 0C0AC82D */ jal func_802B20B4 /* EA40 80033640 00000000 */ nop diff --git a/ver/jp/splat-shift.yaml b/ver/jp/splat-shift.yaml new file mode 100644 index 0000000000..bdc2c9fec4 --- /dev/null +++ b/ver/jp/splat-shift.yaml @@ -0,0 +1,2 @@ +options: + ld_use_follows: True diff --git a/ver/jp/undefined_syms.txt b/ver/jp/undefined_syms.txt index aadb8abde3..fa0277086d 100644 --- a/ver/jp/undefined_syms.txt +++ b/ver/jp/undefined_syms.txt @@ -1,2 +1,4 @@ osTvType = 0x80000300; osViModeNtscLan1 = 0x80095800; +load_engine_data = 0x80000000; +create_audio_system = 0x80000000; diff --git a/ver/us/asm/shiftable/101b90_len_8f0/spr_init_player_raster_cache.s b/ver/us/asm/shiftable/101b90_len_8f0/spr_init_player_raster_cache.s index c935d039fb..f9b1f15215 100644 --- a/ver/us/asm/shiftable/101b90_len_8f0/spr_init_player_raster_cache.s +++ b/ver/us/asm/shiftable/101b90_len_8f0/spr_init_player_raster_cache.s @@ -18,8 +18,8 @@ glabel spr_init_player_raster_cache /* 101E84 802DED94 2406000C */ addiu $a2, $zero, 0xc /* 101E88 802DED98 3C060194 */ lui $a2, %hi(_1943000_ROM_START + 0x10) /* 101E8C 802DED9C 34C63010 */ addiu $a2, $a2, %lo(_1943000_ROM_START + 0x10) -/* 101E90 802DEDA0 3C048035 */ lui $a0, %hi(gSpriteHeapPtr) -/* 101E94 802DEDA4 2484F800 */ addiu $a0, $a0, %lo(gSpriteHeapPtr) +/* 101E90 802DEDA0 3C048035 */ lui $a0, %hi(heap_spriteHead) +/* 101E94 802DEDA4 2484F800 */ addiu $a0, $a0, %lo(heap_spriteHead) /* 101E98 802DEDA8 8E020000 */ lw $v0, ($s0) /* 101E9C 802DEDAC 02510018 */ mult $s2, $s1 /* 101EA0 802DEDB0 3C01802E */ lui $at, %hi(PlayerRasterCacheSize) diff --git a/ver/us/splat-shift.yaml b/ver/us/splat-shift.yaml new file mode 100644 index 0000000000..bdc2c9fec4 --- /dev/null +++ b/ver/us/splat-shift.yaml @@ -0,0 +1,2 @@ +options: + ld_use_follows: True diff --git a/ver/us/splat.yaml b/ver/us/splat.yaml index 80fc2ea688..03ae3dc9a9 100644 --- a/ver/us/splat.yaml +++ b/ver/us/splat.yaml @@ -24,6 +24,8 @@ options: create_undefined_syms_auto: False undefined_funcs_auto_path: ver/us/undefined_funcs_auto.txt undefined_syms_auto_path: ver/us/undefined_syms_auto.txt + ld_wildcard_sections: True + ld_use_follows: False asset_stack: - us segments: @@ -375,7 +377,8 @@ segments: type: code start: 0x759B0 vram: 0x800DC500 - follows_vram: main + vram_of_symbol: D_804DC500 + #follows_vram: main subsegments: - [0x759B0, hasm, bss2] - [0x759B0, c, npc_collision] @@ -863,11 +866,20 @@ segments: - [0xE59D0, .data, audio/sfx] - [0xE5DF0, .data, audio/e0b30_len_b80] - [0xE5E40] + - name: heaps + type: code + start: 0xE79B0 + vram: 0x80197000 + subalign: 0x1000 + follows_vram: engine2 + subsegments: + - [0xE79B0, c, heaps] - name: evt type: code dir: evt start: 0xE79B0 vram: 0x802C3000 + follows_vram: world_use_item subsegments: - [0xE79B0, c, script_list] - [0xE92D0, c, evt] @@ -1025,6 +1037,13 @@ segments: - [0x10EEB0, palette, ui/msg/rewind_arrow] - [0x10EED0, rgba16, ui/msg/star, 16, 18] - [0x10F110, i4, ui/msg/star_silhouette, 16, 20] + - type: code + name: heaps3 + start: 0x10F1B0 + vram: 0x802FB800 + follows_vram: font_width + subsegments: + - [0x10F1B0, c, heaps3] - type: group dir: charset vram: 0 @@ -1043,37 +1062,64 @@ segments: - [0x1164A8, pm_charset_palettes, title, 1] - [0x1164B8, ci8, peach_letter, 150, 105] - [0x11A240, palette, peach_letter] + - [0x11A440, linker_offset, postcard] - [0x11A440, ci4, postcard, 150, 105] + - [0x11C308, linker_offset, postcard_pal] - [0x11C308, palette, postcard] + - [0x11C328, linker_offset, letter_content_1] - [0x11C328, ci8, letter_content_1, 70, 95] + - [0x11DD28, linker_offset, letter_content_1_pal] - [0x11DD28, palette, letter_content_1] + - [0x11DF28, linker_offset, letter_content_2] - [0x11DF28, ci8, letter_content_2, 70, 95] + - [0x11F928, linker_offset, letter_content_2_pal] - [0x11F928, palette, letter_content_2] + - [0x11FB28, linker_offset, letter_content_3] - [0x11FB28, ci8, letter_content_3, 70, 95] + - [0x121528, linker_offset, letter_content_3_pal] - [0x121528, palette, letter_content_3] + - [0x121728, linker_offset, letter_content_4] - [0x121728, ci8, letter_content_4, 70, 95] + - [0x123128, linker_offset, letter_content_4_pal] - [0x123128, palette, letter_content_4] + - [0x123328, linker_offset, letter_content_5] - [0x123328, ci8, letter_content_5, 70, 95] + - [0x124D28, linker_offset, letter_content_5_pal] - [0x124D28, palette, letter_content_5] + - [0x124F28, linker_offset, letter_content_6] - [0x124F28, ci8, letter_content_6, 70, 95] + - [0x126928, linker_offset, letter_content_6_pal] - [0x126928, palette, letter_content_6] + - [0x126B28, linker_offset, letter_content_7] - [0x126B28, ci8, letter_content_7, 70, 95] + - [0x128528, linker_offset, letter_content_7_pal] - [0x128528, palette, letter_content_7] + - [0x128728, linker_offset, letter_content_8] - [0x128728, ci8, letter_content_8, 70, 95] + - [0x12A128, linker_offset, letter_content_8_pal] - [0x12A128, palette, letter_content_8] + - [0x12A328, linker_offset, letter_content_9] - [0x12A328, ci8, letter_content_9, 70, 95] + - [0x12BD28, linker_offset, letter_content_9_pal] - [0x12BD28, palette, letter_content_9] + - [0x12BF28, linker_offset, letter_content_10] - [0x12BF28, ci8, letter_content_10, 70, 95] + - [0x12D928, linker_offset, letter_content_10_pal] - [0x12D928, palette, letter_content_10] + - [0x12DB28, linker_offset, letter_content_11] - [0x12DB28, ci8, letter_content_11, 70, 95] + - [0x12F528, linker_offset, letter_content_11_pal] - [0x12F528, palette, letter_content_11] + - [0x12F728, linker_offset, letter_content_12] - [0x12F728, ci8, letter_content_12, 70, 95] + - [0x131128, linker_offset, letter_content_12_pal] - [0x131128, palette, letter_content_12] - [0x131328, bin] # length 0x18, non zero - name: ui_images type: code start: 0x131340 vram: 0x8023E000 + vram_of_symbol: battle_code_vram_start subsegments: - [0x131340, ci4, ui/pause/unused_badge_points, 24, 24] - [0x131460, palette, ui/pause/unused_badge_points] @@ -1317,6 +1363,7 @@ segments: start: 0x16C8E0 name: battle_code vram: 0x8023E000 + vram_of_symbol: battle_code_vram_start subsegments: - [0x16C8E0, c, 16c8e0] - [0x16F740, c, 16F740] @@ -2584,6 +2631,7 @@ segments: name: world_partner_goombario start: 0x317020 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x317020, c, goombario] - [0x317B60] @@ -2592,6 +2640,7 @@ segments: name: world_partner_bombette start: 0x317E50 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x317E50, c, bombette] - [0x3195D0] @@ -2600,6 +2649,7 @@ segments: name: world_partner_parakarry start: 0x319670 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x319670, c, parakarry] - [0x31B000] @@ -2608,6 +2658,7 @@ segments: name: world_partner_kooper start: 0x31B120 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x31B120, c, kooper] - [0x31CB60] @@ -2616,6 +2667,7 @@ segments: name: world_partner_watt start: 0x31CC70 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x31CC70, c, watt] - [0x31DDC0] @@ -2624,6 +2676,7 @@ segments: name: world_partner_sushie start: 0x31DE70 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x31DE70, c, sushie] - [0x320B20] @@ -2632,6 +2685,7 @@ segments: name: world_partner_lakilester start: 0x320C50 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x320C50, c, lakilester] - [0x3239B0] @@ -2640,6 +2694,7 @@ segments: name: world_partner_bow start: 0x323A50 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x323A50, c, bow] - [0x324930] @@ -2648,6 +2703,7 @@ segments: name: world_partner_goompa start: 0x324A10 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x324A10, c, goompa] - [0x324E80] @@ -2656,6 +2712,7 @@ segments: name: world_partner_goombaria start: 0x324F10 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x324F10, c, goombaria] - [0x325000] @@ -2664,6 +2721,7 @@ segments: name: world_partner_twink start: 0x325070 vram: 0x802BD100 + vram_of_symbol: entity_data_vram_end subsegments: - [0x325070, c, twink] - [0x325160] @@ -2671,6 +2729,7 @@ segments: start: 0x3251D0 name: world_use_item vram: 0x802C0000 + vram_of_symbol: world_partner_vram_end subsegments: - [0x3251D0, c, world_use_item] - [0x3255E0] @@ -6820,6 +6879,7 @@ segments: ####################### - type: code start: 0x415D90 + name: 415D90 vram: 0x802A1000 follows_vram: battle_code subsegments: @@ -6828,6 +6888,7 @@ segments: - type: code start: 0x4219F0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_jump subsegments: @@ -6836,6 +6897,7 @@ segments: - type: code start: 0x422000 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_hammer subsegments: @@ -6844,6 +6906,7 @@ segments: - type: code start: 0x422AD0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_flee subsegments: @@ -6852,6 +6915,7 @@ segments: - type: code start: 0x4233F0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_break_free subsegments: @@ -6860,6 +6924,7 @@ segments: - type: code start: 0x423C70 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_whirlwind subsegments: @@ -6889,6 +6954,7 @@ segments: - type: code start: 0x425590 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_stop_leech subsegments: @@ -6897,6 +6963,7 @@ segments: - type: code start: 0x425B50 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_07 subsegments: @@ -6905,6 +6972,7 @@ segments: - type: code start: 0x426170 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_dizzy_shell subsegments: @@ -6913,6 +6981,7 @@ segments: - type: code start: 0x4269D0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_fire_shell subsegments: @@ -6921,6 +6990,7 @@ segments: - type: code start: 0x4273B0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_0A subsegments: @@ -6929,6 +6999,7 @@ segments: - type: code start: 0x427A70 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_bomb subsegments: @@ -6937,6 +7008,7 @@ segments: - type: code start: 0x4282E0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_body_slam subsegments: @@ -6945,6 +7017,7 @@ segments: - type: code start: 0x428A70 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_air_lift subsegments: @@ -6953,6 +7026,7 @@ segments: - type: code start: 0x429320 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_air_raid subsegments: @@ -6961,6 +7035,7 @@ segments: - type: code start: 0x429D20 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_squirt subsegments: @@ -6969,6 +7044,7 @@ segments: - type: code start: 0x42A4F0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_water_block subsegments: @@ -6998,6 +7074,7 @@ segments: - type: code start: 0x42C6F0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_tidal_wave subsegments: @@ -7006,6 +7083,7 @@ segments: - type: code start: 0x42CF10 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_power_shock subsegments: @@ -7014,6 +7092,7 @@ segments: - type: code start: 0x42DA10 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_mega_shock subsegments: @@ -7022,6 +7101,7 @@ segments: - type: code start: 0x42E3A0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_smack subsegments: @@ -7030,6 +7110,7 @@ segments: - type: code start: 0x42EE20 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_spiny_surge subsegments: @@ -7038,6 +7119,7 @@ segments: - type: code start: 0x42F6E0 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_hurricane subsegments: @@ -7046,6 +7128,7 @@ segments: - type: code start: 0x430020 vram: 0x802A9000 + vram_of_symbol: battle_move_end dir: battle/action_cmd name: action_cmd_spook subsegments: @@ -7059,6 +7142,7 @@ segments: type: code start: 0x4309A0 vram: 0x80218000 + follows_vram: heaps subalign: 4 subsegments: - [0x4309A0, c, area] @@ -7075,6 +7159,7 @@ segments: type: code start: 0x439A90 vram: 0x80218000 + follows_vram: heaps subalign: 4 subsegments: - [0x439A90, c, area] @@ -7094,6 +7179,7 @@ segments: type: code start: 0x447440 vram: 0x80218000 + follows_vram: heaps subalign: 4 subsegments: - [0x447440, c, area] @@ -7121,6 +7207,7 @@ segments: type: code start: 0x464490 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x464490, c, actor/chan] - [0x464560, c, actor/lee] @@ -7135,6 +7222,7 @@ segments: type: code start: 0x47F0B0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x47F0B0, c, actor/goombario_tutor] - [0x47F0D0, c, actor/ember] @@ -7148,6 +7236,7 @@ segments: type: code start: 0x48D1A0 vram: 0x80218000 + follows_vram: heaps subalign: 4 subsegments: - [0x48D1A0, c, area] @@ -7167,6 +7256,7 @@ segments: type: code start: 0x4A10A0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x4A10A0, c, area] - [0x4A10A0, c, actor/bullet_bill] @@ -7193,6 +7283,7 @@ segments: type: code start: 0x4B11F0 vram: 0x80218000 + follows_vram: heaps subalign: 4 subsegments: - [0x4B11F0, c, area] @@ -7218,6 +7309,7 @@ segments: type: code start: 0x4CF1B0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x4CF1B0, c, area] - [0x4CF1B0, c, actor/eldstar] @@ -7227,6 +7319,7 @@ segments: type: code start: 0x4D01F0 vram: 0x80218000 + follows_vram: heaps subalign: 4 subsegments: - [0x4D01F0, c, area] @@ -7242,6 +7335,7 @@ segments: type: code start: 0x4DA5E0 vram: 0x80218000 + follows_vram: heaps subalign: 16 # BSS alignment hack subsegments: - [0x4DA5E0, c, actor/pokey] @@ -7253,6 +7347,7 @@ segments: type: code start: 0x4E2740 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x4E2740, c, actor/pokey_mummy] - [0x4E2810, c, actor/swooper] @@ -7278,6 +7373,7 @@ segments: type: code start: 0x4EF4A0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x4EF4A0, c, actor/chain_chomp] - [0x4EFB30, c, actor/tutankoopa] @@ -7299,6 +7395,7 @@ segments: type: code start: 0x4F7BE0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x4F7BE0, c, actor/forest_fuzzy] - [0x4F7D50, c, actor/bzzap] @@ -7310,6 +7407,7 @@ segments: type: code start: 0x4FEA50 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x4FEA50, c, actor/hypergoomba] - [0x4FED30, c, actor/hyper_paragoomba] @@ -7328,6 +7426,7 @@ segments: type: code start: 0x50F020 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x50F020, c, actor/clubba] - [0x50F020, c, actor/tubba_blubba] @@ -7342,6 +7441,7 @@ segments: type: code start: 0x5125D0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x5125D0, c, actor/red_shy_guy] - [0x5126A0, c, actor/blue_shy_guy] @@ -7369,6 +7469,7 @@ segments: type: code start: 0x52B6A0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x52B6A0, c, actor/general_guy] - [0x52B7C0, c, actor/toy_tank] @@ -7379,42 +7480,49 @@ segments: type: code start: 0x543570 vram: 0x80231000 + vram_of_symbol: Vine1Base subsegments: - [0x543570, c, actor/shy_squad] - dir: battle/area_omo2_2 type: code start: 0x5483E0 vram: 0x80231000 + vram_of_symbol: Vine1Base subsegments: - [0x5483E0, c, actor/stilt_guy] - dir: battle/area_omo2_3 type: code start: 0x54CC70 vram: 0x80231000 + vram_of_symbol: Vine1Base subsegments: - [0x54CC70, c, actor/shy_stack] - dir: battle/area_omo2_4 type: code start: 0x552440 vram: 0x80231000 + vram_of_symbol: Vine1Base subsegments: - [0x552440, c, actor/signal_guy] - dir: battle/area_omo2_5 type: code start: 0x552BB0 vram: 0x80231000 + vram_of_symbol: Vine1Base subsegments: - [0x552BB0, c, actor/shy_squad_dup] - dir: battle/area_omo2_6 type: code start: 0x556C90 vram: 0x80231000 + vram_of_symbol: Vine1Base subsegments: - [0x556C90, c, actor/shy_guy_dup] - dir: battle/area_omo3 type: code start: 0x5573E0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x5573E0, c, actor/big_lantern_ghost] - [0x557870, c, stage/omo_01] @@ -7439,6 +7547,7 @@ segments: type: code start: 0x56E2A0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x56E2A0, c, actor/fuzzipede] - [0x56E800, c, stage/kgr_01] @@ -7448,6 +7557,7 @@ segments: type: code start: 0x573920 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x573920, c, actor/spear_guy] - [0x5739F0, c, actor/hurt_plant] @@ -7469,6 +7579,7 @@ segments: type: code start: 0x584940 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x584940, c, actor/putrid_piranha] - [0x584B90, c, actor/white_magikoopa] @@ -7486,6 +7597,7 @@ segments: type: code start: 0x58C2F0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x58C2F0, c, actor/lava_bubble] - [0x58C420, c, actor/putrid_piranha] @@ -7506,6 +7618,7 @@ segments: type: code start: 0x59E6E0 vram: 0x80218000 + follows_vram: heaps symbol_name_format: $VRAM_$ROM subsegments: - [0x59E6E0, c, anim/unused_gfx] @@ -7581,6 +7694,7 @@ segments: type: code start: 0x5B14B0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x5B14B0, c, actor/lakitu] - [0x5B14B0, c, actor/spiny] @@ -7609,6 +7723,7 @@ segments: type: code start: 0x5CE690 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x5CE690, c, actor/huff_n_puff] - [0x5CF2D0, c, actor/tuff_puff] @@ -7630,6 +7745,7 @@ segments: type: code start: 0x5EC490 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x5EC490, c, actor/dark_koopa] - [0x5EC560, c, actor/dark_paratroopa] @@ -7650,6 +7766,7 @@ segments: type: code start: 0x608AB0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x608AB0, c, actor/blooper] - [0x608CB0, c, actor/electro_blooper] @@ -7666,6 +7783,7 @@ segments: type: code start: 0x6186F0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x6186F0, c, actor/swooper] - [0x6187C0, c, actor/swoopula] @@ -7680,6 +7798,7 @@ segments: type: code start: 0x623BA0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x623BA0, c, actor/duplighost] - [0x625190, c, actor/gulpit] @@ -7698,6 +7817,7 @@ segments: type: code start: 0x63D1E0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x63D1E0, c, actor/monstar] - [0x63D710, c, actor/paragoomba] @@ -7738,6 +7858,7 @@ segments: type: code start: 0x648E10 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x648E10, c, actor/swoopula] - [0x649050, c, actor/albino_dino] @@ -7758,6 +7879,7 @@ segments: type: code start: 0x660750 vram: 0x80218000 + follows_vram: heaps subalign: 16 # BSS alignment hack subsegments: - [0x660750, c, actor/crystal_king] @@ -7768,6 +7890,7 @@ segments: type: code start: 0x669D80 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x669D80, c, actor/duplighost] - [0x66B370, c, actor/swoopula] @@ -7785,6 +7908,7 @@ segments: type: code start: 0x684A30 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x684A30, c, actor/bony_beetle] - [0x684B00, c, actor/dry_bones] @@ -7812,6 +7936,7 @@ segments: type: code start: 0x69F200 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x69F200, c, actor/bowser] - [0x69F320, c, actor/bowser_intro] @@ -7827,6 +7952,7 @@ segments: type: code start: 0x6BBB90 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x6BBB90, c, actor/anti_guy] - [0x6BBC60, c, actor/duplighost] @@ -7837,6 +7963,7 @@ segments: type: code start: 0x6CC070 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x6CC070, c, actor/bombshell_bill_blaster] - [0x6CC090, c, actor/bombshell_bill] @@ -7862,6 +7989,7 @@ segments: type: code start: 0x6DBDA0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x6DBDA0, c, area] - [0x6DBDA0, c, actor/kammy_koopa] @@ -7871,6 +7999,7 @@ segments: type: code start: 0x6DDDC0 vram: 0x80218000 + follows_vram: heaps subsegments: - [0x6DDDC0, c, actor/koopa_troopa] - [0x6DDE90, c, actor/fuzzy] @@ -7900,6 +8029,7 @@ segments: type: code start: 0x6F0B30 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x6F0B30, c, goompa] - [0x6F0B30] @@ -7908,6 +8038,7 @@ segments: type: code start: 0x6F10E0 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x6F10E0, c, goombario] - [0x6F2290] @@ -7916,6 +8047,7 @@ segments: type: code start: 0x6F5E80 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x6F5E80, c, kooper] - [0x6F62B0] @@ -7924,6 +8056,7 @@ segments: type: code start: 0x6FAD10 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x6FAD10, c, bombette] - [0x6FB350] @@ -7932,6 +8065,7 @@ segments: type: code start: 0x6FFD80 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x6FFD80, c, parakarry] - [0x701590] @@ -7940,6 +8074,7 @@ segments: type: code start: 0x703AF0 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x703AF0, c, watt] - [0x704A80] @@ -7948,6 +8083,7 @@ segments: type: code start: 0x707CA0 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x707CA0, c, sushie] - [0x708B70] @@ -7956,6 +8092,7 @@ segments: type: code start: 0x70BD10 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x70BD10, c, lakilester] - [0x70DEE0] @@ -7964,6 +8101,7 @@ segments: type: code start: 0x710EF0 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x710EF0, c, bow] - [0x7111F0] @@ -7972,6 +8110,7 @@ segments: type: code start: 0x714CF0 vram: 0x80238000 + vram_of_symbol: battle_partner_vram_start subsegments: - [0x714CF0, c, twink] - [0x714DC0] @@ -8829,6 +8968,7 @@ segments: name: starpoint start: 0x7A89A0 vram: 0x802A1000 + follows_vram: battle_code symbol_name_format: $VRAM_$ROM subsegments: - [0x7A89A0, c, starpoint] @@ -8911,6 +9051,7 @@ segments: type: code start: 0x7B5960 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7B5960, c, "01"] - name: world_model_anim_kzn_00 @@ -8918,6 +9059,7 @@ segments: type: code start: 0x7B6690 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7B6690, c, "00"] - name: world_model_anim_kzn_04 @@ -8925,6 +9067,7 @@ segments: type: code start: 0x7B70E0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7B70E0, c, "04"] - name: world_model_anim_kzn_05 @@ -8932,6 +9075,7 @@ segments: type: code start: 0x7B8030 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7B8030, c, "05"] - name: world_model_anim_kzn_06 @@ -8939,6 +9083,7 @@ segments: type: code start: 0x7B8D30 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7B8D30, c, "06"] - name: world_model_anim_kzn_07 @@ -8946,6 +9091,7 @@ segments: type: code start: 0x7B97E0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7B97E0, c, "07"] - name: world_model_anim_kzn_08 @@ -8953,6 +9099,7 @@ segments: type: code start: 0x7BA280 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7BA280, c, "08"] - name: world_model_anim_kzn_09 @@ -8960,6 +9107,7 @@ segments: type: code start: 0x7BB050 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7BB050, c, "09"] - name: world_model_anim_kzn_0A @@ -8967,6 +9115,7 @@ segments: type: code start: 0x7BBD80 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7BBD80, c, "0A"] - name: world_model_anim_kzn_0B @@ -8974,6 +9123,7 @@ segments: type: code start: 0x7BEDD0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7BEDD0, c, "0B"] - name: world_model_anim_kzn_0C @@ -8981,6 +9131,7 @@ segments: type: code start: 0x7C16C0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7C16C0, c, "0C"] - name: world_model_anim_kzn_0D @@ -8988,6 +9139,7 @@ segments: type: code start: 0x7C3A00 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7C3A00, c, "0D"] - name: world_model_anim_kzn_0E @@ -8995,6 +9147,7 @@ segments: type: code start: 0x7C44D0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7C44D0, c, "0E"] - name: world_model_anim_kzn_02 @@ -9002,6 +9155,7 @@ segments: type: code start: 0x7C4F50 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7C4F50, c, "02"] - name: world_model_anim_kzn_03 @@ -9009,6 +9163,7 @@ segments: type: code start: 0x7C7410 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7C7410, c, "03"] - name: world_model_anim_kzn_0F @@ -9016,6 +9171,7 @@ segments: type: code start: 0x7C7E50 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7C7E50, c, "0F"] - name: world_model_anim_kzn_10 @@ -9023,6 +9179,7 @@ segments: type: code start: 0x7CA850 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7CA850, c, "10"] - name: world_model_anim_kzn_11 @@ -9030,6 +9187,7 @@ segments: type: code start: 0x7CD5F0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7CD5F0, c, "11"] - name: world_model_anim_kzn_12 @@ -9037,6 +9195,7 @@ segments: type: code start: 0x7CDB30 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7CDB30, c, "12"] - name: world_model_anim_kzn_13 @@ -9044,6 +9203,7 @@ segments: type: code start: 0x7CEFF0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7CEFF0, c, "13"] - name: world_model_anim_kzn_14 @@ -9051,6 +9211,7 @@ segments: type: code start: 0x7CFCC0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7CFCC0, c, "14"] - name: world_model_anim_kzn_15 @@ -9058,6 +9219,7 @@ segments: type: code start: 0x7D0860 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D0860, c, "15"] - name: world_model_anim_kzn_16 @@ -9065,6 +9227,7 @@ segments: type: code start: 0x7D14E0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D14E0, c, "16"] - name: world_model_anim_kzn_17 @@ -9072,6 +9235,7 @@ segments: type: code start: 0x7D2080 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D2080, c, "17"] - name: world_model_anim_kzn_18 @@ -9079,6 +9243,7 @@ segments: type: code start: 0x7D2960 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D2960, c, "18"] - name: world_model_anim_kzn_19 @@ -9086,6 +9251,7 @@ segments: type: code start: 0x7D3260 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D3260, c, "19"] - name: world_model_anim_kzn_1A @@ -9093,6 +9259,7 @@ segments: type: code start: 0x7D5570 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D5570, c, "1A"] - name: world_model_anim_kzn_1B @@ -9100,6 +9267,7 @@ segments: type: code start: 0x7D6F80 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D6F80, c, "1B"] - name: world_model_anim_kzn_1C @@ -9107,6 +9275,7 @@ segments: type: code start: 0x7D76B0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D76B0, c, "1C"] - name: world_model_anim_kzn_1D @@ -9114,6 +9283,7 @@ segments: type: code start: 0x7D8FF0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D8FF0, c, "1D"] - name: world_model_anim_kzn_1E @@ -9121,6 +9291,7 @@ segments: type: code start: 0x7D96E0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D96E0, c, "1E"] - name: world_model_anim_kzn_1F @@ -9128,6 +9299,7 @@ segments: type: code start: 0x7D98E0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7D98E0, c, "1F"] - name: world_model_anim_kzn_20 @@ -9135,6 +9307,7 @@ segments: type: code start: 0x7DA140 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7DA140, c, "20"] - name: world_model_anim_kzn_21 @@ -9142,6 +9315,7 @@ segments: type: code start: 0x7DC180 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7DC180, c, "21"] - name: world_model_anim_kzn_22 @@ -9149,6 +9323,7 @@ segments: type: code start: 0x7DE970 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7DE970, c, "22"] - name: world_model_anim_kzn_23 @@ -9156,6 +9331,7 @@ segments: type: code start: 0x7DF2B0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7DF2B0, c, "23"] - name: world_model_anim_kzn_24 @@ -9163,18 +9339,29 @@ segments: type: code start: 0x7E03B0 vram: 0x80234000 + vram_of_symbol: Vine0Base subsegments: - [0x7E03B0, c, "24"] - - dir: world/script_api + - name: world_script_api + dir: world/script_api type: code start: 0x7E0E80 vram: 0x80280000 + follows_vram: heaps2 subsegments: - [0x7E0E80, c, shops] - [0x7E2AA0, c, rooms] - [0x7E3700, c, push_blocks] - [0x7E4690, c, enter_exit] - [0x7E7380] + - name: texture_memory + type: code + start: 0x7E73A0 + vram: 0x8028E000 + vram_of_symbol: world_battle_vram_end + subsegments: + - [0x7E73A0, c, texture_memory] + ############ ### Maps ### @@ -9184,6 +9371,7 @@ segments: type: code start: 0x7E73A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x7E73A0, c, machi_0_header] - [0x7E73A0, c, machi_1_tables] @@ -9199,6 +9387,7 @@ segments: type: code start: 0x7EAD10 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x7EAD10, c, mac_00_0_header] - [0x7EAD10, c, mac_00_1_music] @@ -9221,6 +9410,7 @@ segments: type: code start: 0x800880 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x800880, c, mac_01_0_header] - [0x800880, c, mac_01_1_music] @@ -9264,6 +9454,7 @@ segments: type: code start: 0x8232C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8232C0, c, mac_02_0_header] - [0x8232C0, c, mac_02_1_music] @@ -9279,6 +9470,7 @@ segments: type: code start: 0x831800 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x831800, c, mac_03_0_header] - [0x831800, c, mac_03_1_music] @@ -9295,6 +9487,7 @@ segments: type: code start: 0x842BD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x842BD0, c, mac_04_0_header] - [0x842C20, c, mac_04_1_music] @@ -9312,6 +9505,7 @@ segments: type: code start: 0x852170 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x852170, c, mac_05_0_header] - [0x852170, c, mac_05_1_music] @@ -9327,6 +9521,7 @@ segments: type: code start: 0x864B40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x864B40, c, mac_06_0_header] - [0x864B40, c, mac_06_1_main] @@ -9338,6 +9533,7 @@ segments: type: code start: 0x8694B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8694B0, c, tik_01_0_header] - [0x8694B0, c, tik_01_1_music] @@ -9351,6 +9547,7 @@ segments: type: code start: 0x86C740 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x86C740, c, tik_02_0_header] - [0x86C740, c, tik_02_1_music] @@ -9364,6 +9561,7 @@ segments: type: code start: 0x86EB00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x86EB00, c, tik_03_0_header] - [0x86EB00, c, tik_03_1_music] @@ -9378,6 +9576,7 @@ segments: type: code start: 0x871A30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x871A30, c, tik_04_0_header] - [0x871A30, c, tik_04_1_music] @@ -9391,6 +9590,7 @@ segments: type: code start: 0x874DC0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x874DC0, c, tik_05_0_header] - [0x874DC0, c, tik_05_1_music] @@ -9404,6 +9604,7 @@ segments: type: code start: 0x876EE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x876EE0, c, tik_06_0_header] - [0x876EE0, c, tik_06_1_music] @@ -9416,6 +9617,7 @@ segments: type: code start: 0x879BE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x879BE0, c, tik_07_0_header] - [0x879BE0, c, tik_07_1_music] @@ -9430,6 +9632,7 @@ segments: type: code start: 0x87EDF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x87EDF0, c, tik_08_0_header] - [0x87EDF0, c, tik_08_1_music] @@ -9443,6 +9646,7 @@ segments: type: code start: 0x8821C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8821C0, c, tik_09_0_header] - [0x8821C0, c, tik_09_1_music] @@ -9456,6 +9660,7 @@ segments: type: code start: 0x8863C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8863C0, c, tik_10_0_header] - [0x8863C0, c, tik_10_1_music] @@ -9468,6 +9673,7 @@ segments: type: code start: 0x888BD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x888BD0, c, tik_12_0_header] - [0x888BD0, c, tik_12_1_music] @@ -9481,6 +9687,7 @@ segments: type: code start: 0x88D600 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x88D600, c, tik_14_0_header] - [0x88D600, c, tik_14_1_music] @@ -9493,6 +9700,7 @@ segments: type: code start: 0x88FBA0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x88FBA0, c, tik_15_0_header] - [0x88FBA0, c, tik_15_1_music] @@ -9506,6 +9714,7 @@ segments: type: code start: 0x892A20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x892A20, c, tik_17_0_header] - [0x892A20, c, tik_17_1_music] @@ -9517,6 +9726,7 @@ segments: type: code start: 0x8956E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8956E0, c, tik_18_0_header] - [0x8956E0, c, tik_18_1_music] @@ -9530,6 +9740,7 @@ segments: type: code start: 0x8975E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8975E0, c, tik_19_0_header] - [0x8975E0, c, tik_19_1_music] @@ -9541,6 +9752,7 @@ segments: type: code start: 0x89A350 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x89A350, c, tik_20_0_header] - [0x89A350, c, tik_20_1_music] @@ -9553,6 +9765,7 @@ segments: type: code start: 0x89D7A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x89D7A0, c, tik_21_0_header] - [0x89D7A0, c, tik_21_1_music] @@ -9564,6 +9777,7 @@ segments: type: code start: 0x89FEC0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x89FEC0, c, tik_22_0_header] - [0x89FEC0, c, tik_22_1_music] @@ -9574,6 +9788,7 @@ segments: type: code start: 0x8A23D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8A23D0, c, tik_23_0_header] - [0x8A23D0, c, tik_23_1_music] @@ -9586,6 +9801,7 @@ segments: type: code start: 0x8A5A80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8A5A80, c, tik_24_0_header] - [0x8A5AD0, c, tik_24_1_music] @@ -9599,6 +9815,7 @@ segments: type: code start: 0x8A7F80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8A7F80, c, tik_25_0_header] - [0x8A7F80, c, tik_25_1_music] @@ -9610,6 +9827,7 @@ segments: type: code start: 0x8A9A10 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8A9A10, c, kgr_01_1_main] - [0x8A9B70, c, kgr_01_2_wiggle] @@ -9620,6 +9838,7 @@ segments: type: code start: 0x8AA450 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8AA450, c, kgr_02_1_main] - [0x8AA5B0, c, kgr_02_2_unused] @@ -9631,6 +9850,7 @@ segments: type: code start: 0x8ABF90 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8ABF90, c, kmr_00_0_header] - [0x8ABF90, c, kmr_00_1_music] @@ -9644,6 +9864,7 @@ segments: type: code start: 0x8B0070 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8B0070, c, kmr_02_0_header] - [0x8B0070, c, kmr_02_1_music] @@ -9676,6 +9897,7 @@ segments: type: code start: 0x8C7F90 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8C7F90, c, kmr_03_0_header] - [0x8C7F90, c, kmr_03_1_music] @@ -9690,6 +9912,7 @@ segments: type: code start: 0x8CA900 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8CA900, c, kmr_04_0_header] - [0x8CA900, c, kmr_04_1_music] @@ -9714,6 +9937,7 @@ segments: type: code start: 0x8CE070 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8CE070, c, kmr_05_0_header] - [0x8CE070, c, kmr_05_1_music] @@ -9727,6 +9951,7 @@ segments: type: code start: 0x8D1510 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8D1510, c, kmr_06_0_header] - [0x8D1510, c, kmr_06_1_music] @@ -9740,6 +9965,7 @@ segments: type: code start: 0x8D3DC0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8D3DC0, c, kmr_07_0_header] - [0x8D3DC0, c, kmr_07_1_music] @@ -9752,6 +9978,7 @@ segments: type: code start: 0x8D5E00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8D5E00, c, kmr_09_0_header] - [0x8D5E00, c, kmr_09_1_music] @@ -9764,6 +9991,7 @@ segments: type: code start: 0x8D84D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8D84D0, c, kmr_10_0_header] - [0x8D84D0, c, kmr_10_1_music] @@ -9777,6 +10005,7 @@ segments: type: code start: 0x8DA100 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8DA100, c, kmr_11_0_header] - [0x8DA100, c, kmr_11_1_music] @@ -9796,6 +10025,7 @@ segments: type: code start: 0x8EB360 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8EB360, c, kmr_12_0_header] - [0x8EB360, c, kmr_12_1_music] @@ -9808,6 +10038,7 @@ segments: type: code start: 0x8EBE20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8EBE20, c, kmr_20_0_header] - [0x8EBE20, c, kmr_20_1_music] @@ -9847,6 +10078,7 @@ segments: type: code start: 0x8FEE80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8FEE80, c, kmr_21_0_header] - [0x8FEE90, c, kmr_21_1_main] @@ -9856,6 +10088,7 @@ segments: type: code start: 0x8FF670 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x8FF670, c, kmr_22_0_header] - [0x8FF680, c, kmr_22_1_main] @@ -9876,6 +10109,7 @@ segments: type: code start: 0x907A30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x907A30, c, kmr_23_0_header] - [0x907A40, c, kmr_23_1_main] @@ -9897,6 +10131,7 @@ segments: type: code start: 0x90B240 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x90B240, c, kmr_24_0_header] - [0x90B250, c, kmr_24_1_main] @@ -9906,6 +10141,7 @@ segments: type: code start: 0x90B6D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x90B6D0, c, kmr_30_0_header] - [0x90B6D0, c, kmr_30_1_main] @@ -9917,6 +10153,7 @@ segments: type: code start: 0x90CC40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x90CC40, c, iwa_00_0_header] - [0x90CC40, c, iwa_00_1_main] @@ -9929,6 +10166,7 @@ segments: type: code start: 0x90F6B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x90F6B0, c, iwa_01_0_header] - [0x90F6B0, c, iwa_01_1_main] @@ -9954,6 +10192,7 @@ segments: type: code start: 0x915D70 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x915D70, c, iwa_02_0_header] - [0x915D70, c, iwa_02_1_main] @@ -9965,6 +10204,7 @@ segments: type: code start: 0x918BB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x918BB0, c, iwa_03_0_header] - [0x918BB0, c, iwa_03_1_main] @@ -9977,6 +10217,7 @@ segments: type: code start: 0x91B8E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x91B8E0, c, iwa_04_0_header] - [0x91B8E0, c, iwa_04_1_music] @@ -9989,6 +10230,7 @@ segments: type: code start: 0x91E570 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x91E570, c, iwa_10_0_header] - [0x91E570, c, iwa_10_1_music] @@ -10005,6 +10247,7 @@ segments: type: code start: 0x9269F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9269F0, c, iwa_11_0_header] - [0x9269F0, c, iwa_11_1_music] @@ -10018,6 +10261,7 @@ segments: type: code start: 0x929270 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x929270, c, sbk_00_0_header] - [0x929270, c, sbk_00_1_main] @@ -10029,6 +10273,7 @@ segments: type: code start: 0x929A90 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x929A90, c, sbk_01_1_main] - [0x929AD0, c, sbk_01_2_npc] @@ -10038,6 +10283,7 @@ segments: type: code start: 0x92A2B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x92A2B0, c, sbk_02_0_header] - [0x92A2F0, c, sbk_02_1_music] @@ -10051,6 +10297,7 @@ segments: type: code start: 0x92F8B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x92F8B0, c, sbk_03_1_main] - [0x92F8F0, c, sbk_03_2_npc] @@ -10060,6 +10307,7 @@ segments: type: code start: 0x9304D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9304D0, c, sbk_04_1_main] - [0x930510, c, sbk_04_2_npc] @@ -10069,6 +10317,7 @@ segments: type: code start: 0x930CF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x930CF0, c, sbk_05_1_main] - [0x930D30, c, sbk_05_2_entity] @@ -10079,6 +10328,7 @@ segments: type: code start: 0x9325C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9325C0, c, sbk_06_1_main] - [0x932600, c, sbk_06_2_npc] @@ -10090,6 +10340,7 @@ segments: type: code start: 0x933C80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x933C80, c, sbk_10_1_main] - [0x933C80, c, sbk_10_2_entity] @@ -10099,6 +10350,7 @@ segments: type: code start: 0x934040 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x934040, c, sbk_11_1_main] - [0x934080, c, sbk_11_2_npc] @@ -10108,6 +10360,7 @@ segments: type: code start: 0x934D40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x934D40, c, sbk_12_1_main] - [0x934D80, c, sbk_12_2_npc] @@ -10117,6 +10370,7 @@ segments: type: code start: 0x9357E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9357E0, c, sbk_13_1_main] - [0x935820, c, sbk_13_2_npc] @@ -10126,6 +10380,7 @@ segments: type: code start: 0x9366E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9366E0, c, sbk_14_1_main] - [0x9366E0, c, sbk_14_2_entity] @@ -10135,6 +10390,7 @@ segments: type: code start: 0x936CD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x936CD0, c, sbk_15_1_main] - [0x936D10, c, sbk_15_2_npc] @@ -10144,6 +10400,7 @@ segments: type: code start: 0x937570 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x937570, c, sbk_16_1_main] - [0x9375B0, c, sbk_16_2_foliage] @@ -10153,6 +10410,7 @@ segments: type: code start: 0x938590 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x938590, c, sbk_20_1_main] - [0x9385D0, c, sbk_20_2_entity] @@ -10163,6 +10421,7 @@ segments: type: code start: 0x939560 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x939560, c, sbk_21_1_main] - [0x9395A0] @@ -10171,6 +10430,7 @@ segments: type: code start: 0x939930 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x939930, c, sbk_22_1_main] - [0x939970, c, sbk_22_2_npc] @@ -10181,6 +10441,7 @@ segments: type: code start: 0x93A760 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x93A760, c, sbk_23_1_main] - [0x93A760, c, sbk_23_2_entity] @@ -10190,6 +10451,7 @@ segments: type: code start: 0x93AC30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x93AC30, c, sbk_24_1_main] - [0x93AC70, c, sbk_24_2_npc] @@ -10201,6 +10463,7 @@ segments: type: code start: 0x93C280 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x93C280, c, sbk_25_1_main] - [0x93C2C0, c, sbk_25_2_npc] @@ -10212,6 +10475,7 @@ segments: type: code start: 0x93DCD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x93DCD0, c, sbk_26_1_main] - [0x93DD10, c, sbk_26_2_npc] @@ -10222,6 +10486,7 @@ segments: type: code start: 0x93F5B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x93F5B0, c, sbk_30_0_header] - [0x93F5B0, c, sbk_30_1_music] @@ -10234,6 +10499,7 @@ segments: type: code start: 0x944000 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x944000, c, sbk_31_1_main] - [0x944040, c, sbk_31_2_npc] @@ -10243,6 +10509,7 @@ segments: type: code start: 0x944A60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x944A60, c, sbk_32_1_main] - [0x944AA0, c, sbk_32_2_npc] @@ -10252,6 +10519,7 @@ segments: type: code start: 0x9459D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: # unusual organization - [0x9459D0, c, sbk_33_0_header] - [0x9459D0, c, sbk_33_1_entity] @@ -10262,6 +10530,7 @@ segments: type: code start: 0x945ED0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x945ED0, c, sbk_34_1_main] - [0x945F10, c, sbk_34_2_npc] @@ -10272,6 +10541,7 @@ segments: type: code start: 0x9486B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9486B0, c, sbk_35_1_main] - [0x9486F0, c, sbk_35_2_npc] @@ -10282,6 +10552,7 @@ segments: type: code start: 0x949E60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x949E60, c, sbk_36_1_main] - [0x949EA0, c, sbk_36_2_foliage] @@ -10292,6 +10563,7 @@ segments: type: code start: 0x94B3A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x94B3A0, c, sbk_40_1_main] - [0x94B3E0, c, sbk_40_2_npc] @@ -10302,6 +10574,7 @@ segments: type: code start: 0x94C040 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x94C040, c, sbk_41_1_main] - [0x94C040, c, sbk_41_2_entity] @@ -10311,6 +10584,7 @@ segments: type: code start: 0x94C510 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x94C510, c, sbk_42_1_main] - [0x94C550, c, sbk_42_2_npc] @@ -10320,6 +10594,7 @@ segments: type: code start: 0x94D170 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x94D170, c, sbk_43_1_main] - [0x94D170, c, sbk_43_2_entity] @@ -10329,6 +10604,7 @@ segments: type: code start: 0x94D5A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x94D5A0, c, sbk_44_1_main] - [0x94D5E0, c, sbk_44_2_npc] @@ -10338,6 +10614,7 @@ segments: type: code start: 0x94E4A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x94E4A0, c, sbk_45_1_main] - [0x94E4A0, c, sbk_45_2_entity] @@ -10347,6 +10624,7 @@ segments: type: code start: 0x94E9A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x94E9A0, c, sbk_46_1_main] - [0x94E9E0, c, sbk_46_2_npc] @@ -10358,6 +10636,7 @@ segments: type: code start: 0x950610 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x950610, c, sbk_50_1_main] - [0x950650] @@ -10366,6 +10645,7 @@ segments: type: code start: 0x950970 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x950970, c, sbk_51_1_main] - [0x9509B0, c, sbk_51_2_npc] @@ -10375,6 +10655,7 @@ segments: type: code start: 0x951670 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x951670, c, sbk_52_1_main] - [0x951670, c, sbk_52_2_entity] @@ -10384,6 +10665,7 @@ segments: type: code start: 0x951AE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x951AE0, c, sbk_53_1_main] - [0x951B20, c, sbk_53_2_npc] @@ -10393,6 +10675,7 @@ segments: type: code start: 0x952580 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x952580, c, sbk_54_1_main] - [0x952580, c, sbk_54_2_entity] @@ -10402,6 +10685,7 @@ segments: type: code start: 0x952A50 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x952A50, c, sbk_55_1_main] - [0x952A90, c, sbk_55_2_npc] @@ -10413,6 +10697,7 @@ segments: type: code start: 0x953FC0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x953FC0, c, sbk_56_1_main] - [0x954D80, c, sbk_56_2_entity] @@ -10423,6 +10708,7 @@ segments: type: code start: 0x9569F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9569F0, c, sbk_60_1_main] - [0x956A30, c, sbk_60_2_npc] @@ -10432,6 +10718,7 @@ segments: type: code start: 0x956F90 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x956F90, c, sbk_61_1_main] - [0x956F90, c, sbk_61_2_entity] @@ -10441,6 +10728,7 @@ segments: type: code start: 0x957350 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x957350, c, sbk_62_1_main] - [0x957390, c, sbk_62_2_npc] @@ -10450,6 +10738,7 @@ segments: type: code start: 0x957D70 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x957D70, c, sbk_63_1_main] - [0x957DB0, c, sbk_63_2_npc] @@ -10459,6 +10748,7 @@ segments: type: code start: 0x958590 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x958590, c, sbk_64_1_main] - [0x958590, c, sbk_64_2_entity] @@ -10468,6 +10758,7 @@ segments: type: code start: 0x958950 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x958950, c, sbk_65_1_main] - [0x958990] @@ -10476,6 +10767,7 @@ segments: type: code start: 0x958CB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x958CB0, c, sbk_66_1_main] - [0x958CF0, c, sbk_66_2_npc] @@ -10487,6 +10779,7 @@ segments: type: code start: 0x95AEB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x95AEB0, c, sbk_99_1_main] - [0x95AEB0, c, sbk_99_2_entity] @@ -10496,6 +10789,7 @@ segments: type: code start: 0x95B200 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x95B200, c, dro_01_0_header] - [0x95B200, c, dro_01_1_music] @@ -10511,6 +10805,7 @@ segments: type: code start: 0x9691C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9691C0, c, dro_02_0_header] - [0x9691C0, c, dro_02_1_music] @@ -10544,6 +10839,7 @@ segments: type: code start: 0x978140 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x978140, c, isk_01_0_header] - [0x978140, c, isk_01_1_music] @@ -10556,6 +10852,7 @@ segments: type: code start: 0x978710 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x978710, c, isk_02_0_header] - [0x978710, c, isk_02_1_main] @@ -10569,6 +10866,7 @@ segments: type: code start: 0x979E50 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x979E50, c, isk_03_0_header] - [0x979E50, c, isk_03_1_main] @@ -10581,6 +10879,7 @@ segments: type: code start: 0x97B630 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x97B630, c, isk_04_0_header] - [0x97B630, c, isk_04_1_music] @@ -10595,6 +10894,7 @@ segments: type: code start: 0x97DAD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x97DAD0, c, isk_05_0_header] - [0x97DAD0, c, isk_05_1_main] @@ -10606,6 +10906,7 @@ segments: type: code start: 0x980A20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x980A20, c, isk_06_0_header] - [0x980A20, c, isk_06_1_main] @@ -10618,6 +10919,7 @@ segments: type: code start: 0x982440 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x982440, c, isk_07_0_header] - [0x982440, c, isk_07_1_main] @@ -10633,6 +10935,7 @@ segments: type: code start: 0x984E30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x984E30, c, isk_08_0_header] - [0x984E30, c, isk_08_1_main] @@ -10644,6 +10947,7 @@ segments: type: code start: 0x9864E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9864E0, c, isk_09_0_header] - [0x9864E0, c, isk_09_1_music] @@ -10657,6 +10961,7 @@ segments: type: code start: 0x988B60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x988B60, c, isk_10_0_header] - [0x988B60, c, isk_10_1_main] @@ -10668,6 +10973,7 @@ segments: type: code start: 0x98AA10 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x98AA10, c, isk_11_0_header] - [0x98AA10, c, isk_11_1_music] @@ -10682,6 +10988,7 @@ segments: type: code start: 0x98D640 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x98D640, c, isk_12_0_header] - [0x98D640, c, isk_12_1_main] @@ -10694,6 +11001,7 @@ segments: type: code start: 0x98F7E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x98F7E0, c, isk_13_0_header] - [0x98F7E0, c, isk_13_1_main] @@ -10705,6 +11013,7 @@ segments: type: code start: 0x992730 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x992730, c, isk_14_0_header] - [0x992730, c, isk_14_1_main] @@ -10716,6 +11025,7 @@ segments: type: code start: 0x9951F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9951F0, c, isk_16_0_header] - [0x9951F0, c, isk_16_1_main] @@ -10728,6 +11038,7 @@ segments: type: code start: 0x997F70 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x997F70, c, isk_18_0_header] - [0x997F70, c, isk_18_1_main] @@ -10739,6 +11050,7 @@ segments: type: code start: 0x999740 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x999740, c, isk_19_0_header] - [0x999740, c, isk_19_1_music] @@ -10750,6 +11062,7 @@ segments: type: code start: 0x999C70 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x999C70, c, trd_00_0_header] - [0x999C70, c, trd_00_1_main] @@ -10761,6 +11074,7 @@ segments: type: code start: 0x99C990 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x99C990, c, trd_01_0_header] - [0x99C990, c, trd_01_1_main] @@ -10772,6 +11086,7 @@ segments: type: code start: 0x9A0FE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9A0FE0, c, trd_02_0_header] - [0x9A0FE0, c, trd_02_1_main] @@ -10783,6 +11098,7 @@ segments: type: code start: 0x9A4650 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9A4650, c, trd_03_0_header] - [0x9A4650, c, trd_03_1_main] @@ -10795,6 +11111,7 @@ segments: type: code start: 0x9A83F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9A83F0, c, trd_04_0_header] - [0x9A83F0, c, trd_04_1_main] @@ -10806,6 +11123,7 @@ segments: type: code start: 0x9AE700 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9AE700, c, trd_05_0_header] - [0x9AE700, c, trd_05_1_main] @@ -10818,6 +11136,7 @@ segments: type: code start: 0x9B1790 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9B1790, c, trd_06_0_header] - [0x9B1790, c, trd_06_1_main] @@ -10831,6 +11150,7 @@ segments: type: code start: 0x9B6980 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9B6980, c, trd_07_0_header] - [0x9B6980, c, trd_07_1_main] @@ -10842,6 +11162,7 @@ segments: type: code start: 0x9BB2A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9BB2A0, c, trd_08_0_header] - [0x9BB2A0, c, trd_08_1_main] @@ -10853,6 +11174,7 @@ segments: type: code start: 0x9BD660 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9BD660, c, trd_09_0_header] - [0x9BD660, c, trd_09_1_main] @@ -10865,6 +11187,7 @@ segments: type: code start: 0x9C2910 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9C2910, c, trd_10_0_header] - [0x9C2910, c, trd_10_1_main] @@ -10876,6 +11199,7 @@ segments: type: code start: 0x9C53E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9C53E0, c, nok_01_0_header] - [0x9C53E0, c, nok_01_1_music] @@ -10892,6 +11216,7 @@ segments: type: code start: 0x9D7020 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9D7020, c, nok_02_0_header] - [0x9D7020, c, nok_02_1_music] @@ -10910,6 +11235,7 @@ segments: type: code start: 0x9EB7F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9EB7F0, c, nok_03_0_header] - [0x9EB7F0, c, nok_03_1_music] @@ -10922,6 +11248,7 @@ segments: type: code start: 0x9EDBF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9EDBF0, c, nok_04_0_header] - [0x9EDBF0, c, nok_04_1_music] @@ -10935,6 +11262,7 @@ segments: type: code start: 0x9F4A40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9F4A40, c, nok_11_0_header] - [0x9F4A40, c, nok_11_1_music] @@ -10947,6 +11275,7 @@ segments: type: code start: 0x9FA7F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0x9FA7F0, c, nok_12_0_header] - [0x9FA7F0, c, nok_12_1_music] @@ -10962,6 +11291,7 @@ segments: type: code start: 0xA00600 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA00600, c, nok_13_0_header] - [0xA00600, c, nok_13_1_music] @@ -10975,6 +11305,7 @@ segments: type: code start: 0xA02840 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA02840, c, nok_14_0_header] - [0xA02840, c, nok_14_1_music] @@ -10988,6 +11319,7 @@ segments: type: code start: 0xA06F00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA06F00, c, nok_15_0_header] - [0xA06F00, c, nok_15_1_music] @@ -11001,6 +11333,7 @@ segments: type: code start: 0xA0BCF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA0BCF0, c, hos_00_0_header] - [0xA0BD40, c, hos_00_1_music] @@ -11016,6 +11349,7 @@ segments: type: code start: 0xA10880 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA10880, c, hos_01_0_header] - [0xA10880, c, hos_01_1_music] @@ -11030,6 +11364,7 @@ segments: type: code start: 0xA16220 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA16220, c, hos_02_0_header] - [0xA16220, c, hos_02_1_music] @@ -11044,6 +11379,7 @@ segments: type: code start: 0xA1B100 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA1B100, c, hos_03_0_header] - [0xA1B100, c, hos_03_1_music] @@ -11060,6 +11396,7 @@ segments: type: code start: 0xA26ED0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA26ED0, c, hos_04_0_header] - [0xA26ED0, c, hos_04_1_music] @@ -11075,6 +11412,7 @@ segments: type: code start: 0xA2A240 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA2A240, c, hos_05_0_header] - [0xA2A240, c, hos_05_1_music] @@ -11091,6 +11429,7 @@ segments: type: code start: 0xA394E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA394E0, c, hos_06_0_header] - [0xA394E0, c, hos_06_1_entity] @@ -11105,6 +11444,7 @@ segments: type: code start: 0xA3F740 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA3F740, c, hos_10_0_header] - [0xA3F760, c, hos_10_1_music] @@ -11120,6 +11460,7 @@ segments: type: code start: 0xA45930 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA45930, c, hos_20_0_header] - [0xA45930, c, hos_20_1_main] @@ -11130,6 +11471,7 @@ segments: type: code start: 0xA46F60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA46F60, c, kpa_01_0_header] - [0xA46F60, c, kpa_01_1_music] @@ -11142,6 +11484,7 @@ segments: type: code start: 0xA485C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA485C0, c, kpa_03_0_header] - [0xA485C0, c, kpa_03_1_music] @@ -11154,6 +11497,7 @@ segments: type: code start: 0xA4BF60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA4BF60, c, kpa_04_0_header] - [0xA4BF60, c, kpa_04_1_music] @@ -11165,6 +11509,7 @@ segments: type: code start: 0xA4CA20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA4CA20, c, kpa_08_0_header] - [0xA4CA20, c, kpa_08_1_music] @@ -11177,6 +11522,7 @@ segments: type: code start: 0xA4F000 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA4F000, c, kpa_09_0_header] - [0xA4F000, c, kpa_09_1_music] @@ -11189,6 +11535,7 @@ segments: type: code start: 0xA51980 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA51980, c, kpa_10_0_header] - [0xA51980, c, kpa_10_1_music] @@ -11201,6 +11548,7 @@ segments: type: code start: 0xA528C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA528C0, c, kpa_11_0_header] - [0xA528C0, c, kpa_11_1_music] @@ -11213,6 +11561,7 @@ segments: type: code start: 0xA54950 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA54950, c, kpa_12_0_header] - [0xA54990, c, kpa_12_1_music] @@ -11224,6 +11573,7 @@ segments: type: code start: 0xA55F20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA55F20, c, kpa_13_0_header] - [0xA55F60, c, kpa_13_1_music] @@ -11236,6 +11586,7 @@ segments: type: code start: 0xA574B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA574B0, c, kpa_14_0_header] - [0xA574F0, c, kpa_14_1_music] @@ -11248,6 +11599,7 @@ segments: type: code start: 0xA59390 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA59390, c, kpa_15_0_header] - [0xA59390, c, kpa_15_1_music] @@ -11259,6 +11611,7 @@ segments: type: code start: 0xA5A030 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA5A030, c, kpa_16_0_header] - [0xA5A030, c, kpa_16_1_music] @@ -11271,6 +11624,7 @@ segments: type: code start: 0xA5CA20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA5CA20, c, kpa_17_0_header] - [0xA5CA20, c, kpa_17_1_music] @@ -11283,6 +11637,7 @@ segments: type: code start: 0xA5E0C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA5E0C0, c, kpa_32_0_header] - [0xA5E0C0, c, kpa_32_1_music] @@ -11294,6 +11649,7 @@ segments: type: code start: 0xA5F080 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA5F080, c, kpa_33_0_header] - [0xA5F080, c, kpa_33_1_music] @@ -11305,6 +11661,7 @@ segments: type: code start: 0xA60040 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA60040, c, kpa_40_0_header] - [0xA60040, c, kpa_40_1_music] @@ -11315,6 +11672,7 @@ segments: type: code start: 0xA60470 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA60470, c, kpa_41_0_header] - [0xA60470, c, kpa_41_1_music] @@ -11325,6 +11683,7 @@ segments: type: code start: 0xA609D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA609D0, c, kpa_50_0_header] - [0xA609D0, c, kpa_50_1_music] @@ -11336,6 +11695,7 @@ segments: type: code start: 0xA64090 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA64090, c, kpa_51_0_header] - [0xA640E0, c, kpa_51_1_music] @@ -11347,6 +11707,7 @@ segments: type: code start: 0xA67100 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA67100, c, kpa_52_0_header] - [0xA67100, c, kpa_52_1_music] @@ -11359,6 +11720,7 @@ segments: type: code start: 0xA6ACA0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA6ACA0, c, kpa_53_0_header] - [0xA6ACF0, c, kpa_53_1_music] @@ -11371,6 +11733,7 @@ segments: type: code start: 0xA6CB00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA6CB00, c, kpa_60_0_header] - [0xA6CB00, c, kpa_60_1_music] @@ -11383,6 +11746,7 @@ segments: type: code start: 0xA6E3E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA6E3E0, c, kpa_61_0_header] - [0xA6E3E0, c, kpa_61_1_music] @@ -11395,6 +11759,7 @@ segments: type: code start: 0xA72220 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA72220, c, kpa_62_0_header] - [0xA72220, c, kpa_62_1_music] @@ -11406,6 +11771,7 @@ segments: type: code start: 0xA735B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA735B0, c, kpa_63_0_header] - [0xA735B0, c, kpa_63_1_music] @@ -11418,6 +11784,7 @@ segments: type: code start: 0xA74870 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA74870, c, kpa_70_0_header] - [0xA74870, c, kpa_70_1_music] @@ -11431,6 +11798,7 @@ segments: type: code start: 0xA784C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA784C0, c, kpa_81_0_header] - [0xA784C0, c, kpa_81_1_music] @@ -11442,6 +11810,7 @@ segments: type: code start: 0xA7A500 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA7A500, c, kpa_82_0_header] - [0xA7A500, c, kpa_82_1_music] @@ -11453,6 +11822,7 @@ segments: type: code start: 0xA83490 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA83490, c, kpa_83_0_header] - [0xA83490, c, kpa_83_1_music] @@ -11464,6 +11834,7 @@ segments: type: code start: 0xA867B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA867B0, c, kpa_90_0_header] - [0xA867B0, c, kpa_90_1_music] @@ -11474,6 +11845,7 @@ segments: type: code start: 0xA86A50 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA86A50, c, kpa_91_0_header] - [0xA86A50, c, kpa_91_1_music] @@ -11486,6 +11858,7 @@ segments: type: code start: 0xA8C7C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA8C7C0, c, kpa_94_0_header] - [0xA8C7C0, c, kpa_94_1_music] @@ -11496,6 +11869,7 @@ segments: type: code start: 0xA8CA80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA8CA80, c, kpa_95_0_header] - [0xA8CA80, c, kpa_95_1_music] @@ -11508,6 +11882,7 @@ segments: type: code start: 0xA927C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA927C0, c, kpa_96_0_header] - [0xA927C0, c, kpa_96_1_music] @@ -11519,6 +11894,7 @@ segments: type: code start: 0xA93160 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA93160, c, kpa_100_0_header] - [0xA931B0, c, kpa_100_1_music] @@ -11530,6 +11906,7 @@ segments: type: code start: 0xA93440 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA93440, c, kpa_101_0_header] - [0xA93440, c, kpa_101_1_music] @@ -11541,6 +11918,7 @@ segments: type: code start: 0xA93740 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA93740, c, kpa_102_0_header] - [0xA93740, c, kpa_102_1_music] @@ -11552,6 +11930,7 @@ segments: type: code start: 0xA99590 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA99590, c, kpa_111_0_header] - [0xA99590, c, kpa_111_1_music] @@ -11565,6 +11944,7 @@ segments: type: code start: 0xA9C990 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA9C990, c, kpa_112_0_header] - [0xA9C990, c, kpa_112_1_music] @@ -11575,6 +11955,7 @@ segments: type: code start: 0xA9CC30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA9CC30, c, kpa_113_0_header] - [0xA9CC30, c, kpa_113_1_music] @@ -11588,6 +11969,7 @@ segments: type: code start: 0xA9E980 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA9E980, c, kpa_114_0_header] - [0xA9E9D0, c, kpa_114_1_music] @@ -11599,6 +11981,7 @@ segments: type: code start: 0xA9ED40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xA9ED40, c, kpa_115_0_header] - [0xA9ED40, c, kpa_115_1_music] @@ -11611,6 +11994,7 @@ segments: type: code start: 0xAA1EE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAA1EE0, c, kpa_116_0_header] - [0xAA1EE0, c, kpa_116_1_music] @@ -11621,6 +12005,7 @@ segments: type: code start: 0xAA2180 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAA2180, c, kpa_117_0_header] - [0xAA2180, c, kpa_117_1_music] @@ -11631,6 +12016,7 @@ segments: type: code start: 0xAA23C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAA23C0, c, kpa_118_0_header] - [0xAA23C0, c, kpa_118_1_music] @@ -11641,6 +12027,7 @@ segments: type: code start: 0xAA2660 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAA2660, c, kpa_119_0_header] - [0xAA2660, c, kpa_119_1_music] @@ -11652,6 +12039,7 @@ segments: type: code start: 0xAA28F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAA28F0, c, kpa_121_0_header] - [0xAA28F0, c, kpa_121_1_music] @@ -11662,6 +12050,7 @@ segments: type: code start: 0xAA2D20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAA2D20, c, kpa_130_0_header] - [0xAA2D20, c, kpa_130_1_music] @@ -11673,6 +12062,7 @@ segments: type: code start: 0xAA7480 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAA7480, c, kpa_133_0_header] - [0xAA7480, c, kpa_133_1_music] @@ -11687,6 +12077,7 @@ segments: type: code start: 0xAA8FA0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAA8FA0, c, kpa_134_0_header] - [0xAA8FA0, c, kpa_134_1_music] @@ -11701,6 +12092,7 @@ segments: type: code start: 0xAAC830 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAAC830, c, osr_00_0_header] - [0xAAC830, c, osr_00_1_music] @@ -11714,6 +12106,7 @@ segments: type: code start: 0xAAFFF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAAFFF0, c, osr_01_0_header] - [0xAB0040, c, osr_01_1_music] @@ -11725,6 +12118,7 @@ segments: type: code start: 0xAB2170 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAB2170, c, osr_02_0_header] - [0xAB2190, c, osr_02_1_main] @@ -11737,6 +12131,7 @@ segments: type: code start: 0xAB6290 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAB6290, c, osr_03_0_header] - [0xAB62B0, c, osr_03_1_main] @@ -11751,6 +12146,7 @@ segments: type: code start: 0xAB92B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAB92B0, c, osr_04_0_header] - [0xAB9300, c, osr_04_1_main] @@ -11761,6 +12157,7 @@ segments: type: code start: 0xABB290 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xABB290, c, kkj_00_0_header] - [0xABB290, c, kkj_00_1_music] @@ -11775,6 +12172,7 @@ segments: type: code start: 0xAC5170 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAC5170, c, kkj_01_0_header] - [0xAC5170, c, kkj_01_1_music] @@ -11786,6 +12184,7 @@ segments: type: code start: 0xAC8D20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAC8D20, c, kkj_02_0_header] - [0xAC8D20, c, kkj_02_1_music] @@ -11797,6 +12196,7 @@ segments: type: code start: 0xAC9710 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAC9710, c, kkj_03_0_header] - [0xAC9730, c, kkj_03_1_music] @@ -11809,6 +12209,7 @@ segments: type: code start: 0xACAB20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xACAB20, c, kkj_10_0_header] - [0xACAB20, c, kkj_10_1_main] @@ -11821,6 +12222,7 @@ segments: type: code start: 0xACE140 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xACE140, c, kkj_11_0_header] - [0xACE140, c, kkj_11_1_main] @@ -11835,6 +12237,7 @@ segments: type: code start: 0xAD4090 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAD4090, c, kkj_12_0_header] - [0xAD4090, c, kkj_12_1_main] @@ -11845,6 +12248,7 @@ segments: type: code start: 0xAD5ED0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAD5ED0, c, kkj_13_0_header] - [0xAD5EF0, c, kkj_13_1_music] @@ -11858,6 +12262,7 @@ segments: type: code start: 0xADAEA0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xADAEA0, c, kkj_14_0_header] - [0xADAEF0, c, kkj_14_1_music] @@ -11881,6 +12286,7 @@ segments: type: code start: 0xAE5590 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAE5590, c, kkj_15_0_header] - [0xAE5590, c, kkj_15_1_music] @@ -11899,6 +12305,7 @@ segments: type: code start: 0xAED410 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAED410, c, kkj_16_0_header] - [0xAED410, c, kkj_16_1_main] @@ -11912,6 +12319,7 @@ segments: type: code start: 0xAF1C60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAF1C60, c, kkj_17_0_header] - [0xAF1C60, c, kkj_17_1_main] @@ -11923,6 +12331,7 @@ segments: type: code start: 0xAF2CA0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAF2CA0, c, kkj_18_0_header] - [0xAF2CA0, c, kkj_18_1_music] @@ -11935,6 +12344,7 @@ segments: type: code start: 0xAF7950 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAF7950, c, kkj_19_0_header] - [0xAF7950, c, kkj_19_1_music] @@ -11948,6 +12358,7 @@ segments: type: code start: 0xAFDB40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xAFDB40, c, kkj_20_0_header] - [0xAFDB40, c, kkj_20_1_music] @@ -11960,6 +12371,7 @@ segments: type: code start: 0xB022A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB022A0, c, kkj_21_0_header] - [0xB022A0, c, kkj_21_1_main] @@ -11969,6 +12381,7 @@ segments: type: code start: 0xB024F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB024F0, c, kkj_22_0_header] - [0xB024F0, c, kkj_22_1_music] @@ -11979,6 +12392,7 @@ segments: type: code start: 0xB02880 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB02880, c, kkj_23_0_header] - [0xB028A0, c, kkj_23_1_music] @@ -11992,6 +12406,7 @@ segments: type: code start: 0xB06570 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB06570, c, kkj_24_0_header] - [0xB06570, c, kkj_24_1_music] @@ -12003,6 +12418,7 @@ segments: type: code start: 0xB06A00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB06A00, c, kkj_25_0_header] - [0xB06A20, c, kkj_25_1_main] @@ -12020,6 +12436,7 @@ segments: type: code start: 0xB13120 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB13120, c, kkj_26_0_header] - [0xB13120, c, kkj_26_1_main] @@ -12031,6 +12448,7 @@ segments: type: code start: 0xB13D70 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB13D70, c, kkj_27_0_header] - [0xB13D70, c, kkj_27_1_music] @@ -12042,6 +12460,7 @@ segments: type: code start: 0xB14EA0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB14EA0, c, kkj_28_0_header] - [0xB14EA0, c, kkj_28_1_main] @@ -12051,6 +12470,7 @@ segments: type: code start: 0xB150B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB150B0, c, kkj_29_0_header] - [0xB150B0, c, kkj_29_1_main] @@ -12062,6 +12482,7 @@ segments: type: code start: 0xB1A900 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB1A900, c, tst_01_1_main] - [0xB1A900, c, tst_01_2_entity] @@ -12071,6 +12492,7 @@ segments: type: code start: 0xB1AC30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB1AC30, c, tst_02_1_main] - [0xB1AC30, c, tst_02_2_entity] @@ -12080,6 +12502,7 @@ segments: type: code start: 0xB1AF80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB1AF80, c, tst_03_1_main] - [0xB1AF80, c, tst_03_2_entity] @@ -12089,6 +12512,7 @@ segments: type: code start: 0xB1B570 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB1B570, c, tst_04_1_main] - [0xB1B7D0, c, tst_04_2_entity] @@ -12100,6 +12524,7 @@ segments: type: code start: 0xB1C540 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB1C540, c, tst_10_1_main] - [0xB1C540] @@ -12108,6 +12533,7 @@ segments: type: code start: 0xB1CA50 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB1CA50, c, tst_11_1_main] - [0xB1CA50, c, tst_11_2_extra] @@ -12117,6 +12543,7 @@ segments: type: code start: 0xB1D2F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB1D2F0, c, tst_12_1_main] - name: tst_13 @@ -12124,6 +12551,7 @@ segments: type: code start: 0xB1D760 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB1D760, c, tst_13_1_main] - start: 0xB1DB20 @@ -12139,6 +12567,7 @@ segments: type: code start: 0xB20470 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB20470, c, tst_20_1_main] - name: jan_00 @@ -12146,6 +12575,7 @@ segments: type: code start: 0xB20540 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB20540, c, jan_00_0_header] - [0xB20540, c, jan_00_1_main] @@ -12159,6 +12589,7 @@ segments: type: code start: 0xB28030 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB28030, c, jan_01_0_header] - [0xB28030, c, jan_01_1_music] @@ -12172,6 +12603,7 @@ segments: type: code start: 0xB2C470 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB2C470, c, jan_02_0_header] - [0xB2C470, c, jan_02_1_music] @@ -12185,6 +12617,7 @@ segments: type: code start: 0xB34BD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB34BD0, c, jan_03_0_header] - [0xB34BD0, c, jan_03_1_music] @@ -12200,6 +12633,7 @@ segments: type: code start: 0xB44770 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB44770, c, jan_04_0_header] - [0xB447B0, c, jan_04_1_music] @@ -12218,6 +12652,7 @@ segments: type: code start: 0xB4AA70 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB4AA70, c, jan_05_0_header] - [0xB4AAB0, c, jan_05_1_music] @@ -12233,6 +12668,7 @@ segments: type: code start: 0xB52830 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB52830, c, jan_06_0_header] - [0xB52830, c, jan_06_1_main] @@ -12248,6 +12684,7 @@ segments: type: code start: 0xB59870 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB59870, c, jan_07_0_header] - [0xB59870, c, jan_07_1_music] @@ -12261,6 +12698,7 @@ segments: type: code start: 0xB5E2B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB5E2B0, c, jan_08_0_header] - [0xB5E2B0, c, jan_08_1_music] @@ -12275,6 +12713,7 @@ segments: type: code start: 0xB65AB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB65AB0, c, jan_09_0_header] - [0xB65AB0, c, jan_09_1_main] @@ -12288,6 +12727,7 @@ segments: type: code start: 0xB6C390 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB6C390, c, jan_10_0_header] - [0xB6C390, c, jan_10_1_music] @@ -12303,6 +12743,7 @@ segments: type: code start: 0xB70860 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB70860, c, jan_11_0_header] - [0xB70860, c, jan_11_1_music] @@ -12314,6 +12755,7 @@ segments: type: code start: 0xB730B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB730B0, c, jan_12_0_header] - [0xB730B0, c, jan_12_1_main] @@ -12327,6 +12769,7 @@ segments: type: code start: 0xB767B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB767B0, c, jan_13_0_header] - [0xB767B0, c, jan_13_1_main] @@ -12339,6 +12782,7 @@ segments: type: code start: 0xB7A050 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB7A050, c, jan_14_0_header] - [0xB7A050, c, jan_14_1_main] @@ -12351,6 +12795,7 @@ segments: type: code start: 0xB7D920 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB7D920, c, jan_15_0_header] - [0xB7D920, c, jan_15_1_main] @@ -12363,6 +12808,7 @@ segments: type: code start: 0xB80000 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB80000, c, jan_16_0_header] - [0xB80000, c, jan_16_1_music] @@ -12376,6 +12822,7 @@ segments: type: code start: 0xB837C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB837C0, c, jan_17_0_header] - [0xB837C0, c, jan_17_1_music] @@ -12387,6 +12834,7 @@ segments: type: code start: 0xB83B90 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB83B90, c, jan_18_0_header] - [0xB83B90, c, jan_18_1_music] @@ -12398,6 +12846,7 @@ segments: type: code start: 0xB83E60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB83E60, c, jan_19_0_header] - [0xB83E60, c, jan_19_1_music] @@ -12409,6 +12858,7 @@ segments: type: code start: 0xB84180 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB84180, c, jan_22_0_header] - [0xB84180, c, jan_22_1_music] @@ -12424,6 +12874,7 @@ segments: type: code start: 0xB8FCD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB8FCD0, c, jan_23_0_header] - [0xB8FCD0, c, jan_23_1_music] @@ -12435,6 +12886,7 @@ segments: type: code start: 0xB93440 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB93440, c, mim_01_0_header] - [0xB93440, c, mim_01_1_music] @@ -12449,6 +12901,7 @@ segments: type: code start: 0xB97C00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB97C00, c, mim_02_0_header] - [0xB97C00, c, mim_02_1_music] @@ -12462,6 +12915,7 @@ segments: type: code start: 0xB9B480 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB9B480, c, mim_03_0_header] - [0xB9B480, c, mim_03_1_music] @@ -12476,6 +12930,7 @@ segments: type: code start: 0xB9D960 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xB9D960, c, mim_04_0_header] - [0xB9D960, c, mim_04_1_music] @@ -12490,6 +12945,7 @@ segments: type: code start: 0xBA0730 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBA0730, c, mim_05_0_header] - [0xBA07A0, c, mim_05_1_music] @@ -12504,6 +12960,7 @@ segments: type: code start: 0xBA4780 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBA4780, c, mim_06_0_header] - [0xBA4780, c, mim_06_1_music] @@ -12518,6 +12975,7 @@ segments: type: code start: 0xBAA140 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBAA140, c, mim_07_0_header] - [0xBAA140, c, mim_07_1_music] @@ -12532,6 +12990,7 @@ segments: type: code start: 0xBAD940 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBAD940, c, mim_08_0_header] - [0xBAD940, c, mim_08_1_music] @@ -12545,6 +13004,7 @@ segments: type: code start: 0xBB2E00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBB2E00, c, mim_09_0_header] - [0xBB2E00, c, mim_09_1_music] @@ -12559,6 +13019,7 @@ segments: type: code start: 0xBB59E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBB59E0, c, mim_10_0_header] - [0xBB59E0, c, mim_10_1_music] @@ -12571,6 +13032,7 @@ segments: type: code start: 0xBB7070 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBB7070, c, mim_11_0_header] - [0xBB7070, c, mim_11_1_music] @@ -12585,6 +13047,7 @@ segments: type: code start: 0xBBB380 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBBB380, c, mim_12_0_header] - [0xBBB380, c, mim_12_1_music] @@ -12598,6 +13061,7 @@ segments: type: code start: 0xBBD1A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBBD1A0, c, obk_01_0_header] - [0xBBD1A0, c, obk_01_1_music] @@ -12613,6 +13077,7 @@ segments: type: code start: 0xBC2A90 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBC2A90, c, obk_02_0_header] - [0xBC2A90, c, obk_02_1_music] @@ -12627,6 +13092,7 @@ segments: type: code start: 0xBC4280 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBC4280, c, obk_03_0_header] - [0xBC4280, c, obk_03_1_music] @@ -12642,6 +13108,7 @@ segments: type: code start: 0xBC7E60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBC7E60, c, obk_04_0_header] - [0xBC7E60, c, obk_04_1_music] @@ -12656,6 +13123,7 @@ segments: type: code start: 0xBCD060 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBCD060, c, obk_05_0_header] - [0xBCD060, c, obk_05_1_music] @@ -12670,6 +13138,7 @@ segments: type: code start: 0xBCE690 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBCE690, c, obk_06_0_header] - [0xBCE690, c, obk_06_1_music] @@ -12682,6 +13151,7 @@ segments: type: code start: 0xBCEBF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBCEBF0, c, obk_07_0_header] - [0xBCEBF0, c, obk_07_1_music] @@ -12696,6 +13166,7 @@ segments: type: code start: 0xBD3870 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBD3870, c, obk_08_0_header] - [0xBD3870, c, obk_08_1_music] @@ -12710,6 +13181,7 @@ segments: type: code start: 0xBDA7B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBDA7B0, c, obk_09_0_header] - [0xBDA7B0, c, obk_09_1_music] @@ -12724,6 +13196,7 @@ segments: type: code start: 0xBDD1B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBDD1B0, c, arn_02_0_header] - [0xBDD1B0, c, arn_02_1_music] @@ -12736,6 +13209,7 @@ segments: type: code start: 0xBDED90 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBDED90, c, arn_03_0_header] - [0xBDED90, c, arn_03_1_music] @@ -12748,6 +13222,7 @@ segments: type: code start: 0xBE37B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBE37B0, c, arn_04_0_header] - [0xBE37B0, c, arn_04_1_music] @@ -12760,6 +13235,7 @@ segments: type: code start: 0xBE7BE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBE7BE0, c, arn_05_0_header] - [0xBE7BE0, c, arn_05_1_music] @@ -12772,6 +13248,7 @@ segments: type: code start: 0xBECDF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBECDF0, c, arn_07_0_header] - [0xBECDF0, c, arn_07_1_music] @@ -12785,6 +13262,7 @@ segments: type: code start: 0xBF47A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBF47A0, c, arn_08_0_header] - [0xBF47A0, c, arn_08_1_music] @@ -12800,6 +13278,7 @@ segments: type: code start: 0xBF6060 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBF6060, c, arn_09_0_header] - [0xBF6060, c, arn_09_1_music] @@ -12813,6 +13292,7 @@ segments: type: code start: 0xBF6A00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBF6A00, c, arn_10_0_header] - [0xBF6A00, c, arn_10_1_music] @@ -12825,6 +13305,7 @@ segments: type: code start: 0xBF7680 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBF7680, c, arn_11_0_header] - [0xBF7680, c, arn_11_1_music] @@ -12836,6 +13317,7 @@ segments: type: code start: 0xBF8790 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBF8790, c, arn_12_0_header] - [0xBF8790, c, arn_12_1_music] @@ -12848,6 +13330,7 @@ segments: type: code start: 0xBF9410 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBF9410, c, arn_13_0_header] - [0xBF9410, c, arn_13_1_music] @@ -12860,6 +13343,7 @@ segments: type: code start: 0xBFA0A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBFA0A0, c, dgb_00_0_header] - [0xBFA0A0, c, dgb_00_1_music] @@ -12872,6 +13356,7 @@ segments: type: code start: 0xBFD880 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xBFD880, c, dgb_01_0_header] - [0xBFD880, c, dgb_01_1_music] @@ -12949,6 +13434,7 @@ segments: dir: world/area_dgb start: 0xC20F40 vram: 0x80200000 + vram_of_symbol: D_80200000 subsegments: - [0xC20F40, c, dgb_01_smash_bridges] - start: 0xC20F40 @@ -13250,6 +13736,7 @@ segments: type: code start: 0xC2EBA0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC2EBA0, c, dgb_02_0_header] - [0xC2EBA0, c, dgb_02_1_music] @@ -13261,6 +13748,7 @@ segments: type: code start: 0xC314E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC314E0, c, dgb_03_0_header] - [0xC314E0, c, dgb_03_1_music] @@ -13274,6 +13762,7 @@ segments: type: code start: 0xC36530 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC36530, c, dgb_04_0_header] - [0xC36530, c, dgb_04_1_music] @@ -13286,6 +13775,7 @@ segments: type: code start: 0xC3AA10 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC3AA10, c, dgb_05_0_header] - [0xC3AA10, c, dgb_05_1_music] @@ -13299,6 +13789,7 @@ segments: type: code start: 0xC3D080 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC3D080, c, dgb_06_0_header] - [0xC3D080, c, dgb_06_1_music] @@ -13311,6 +13802,7 @@ segments: type: code start: 0xC3DBF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC3DBF0, c, dgb_07_0_header] - [0xC3DBF0, c, dgb_07_1_music] @@ -13323,6 +13815,7 @@ segments: type: code start: 0xC3FDB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC3FDB0, c, dgb_08_0_header] - [0xC3FDB0, c, dgb_08_1_music] @@ -13335,6 +13828,7 @@ segments: type: code start: 0xC46BE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC46BE0, c, dgb_09_0_header] - [0xC46BE0, c, dgb_09_1_music] @@ -13347,6 +13841,7 @@ segments: type: code start: 0xC4C390 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC4C390, c, dgb_10_0_header] - [0xC4C390, c, dgb_10_1_music] @@ -13359,6 +13854,7 @@ segments: type: code start: 0xC4D3E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC4D3E0, c, dgb_11_0_header] - [0xC4D3E0, c, dgb_11_1_music] @@ -13370,6 +13866,7 @@ segments: type: code start: 0xC4DEF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC4DEF0, c, dgb_12_0_header] - [0xC4DEF0, c, dgb_12_1_music] @@ -13382,6 +13879,7 @@ segments: type: code start: 0xC4E960 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC4E960, c, dgb_13_0_header] - [0xC4E960, c, dgb_13_1_music] @@ -13394,6 +13892,7 @@ segments: type: code start: 0xC4F030 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC4F030, c, dgb_14_0_header] - [0xC4F030, c, dgb_14_1_music] @@ -13405,6 +13904,7 @@ segments: type: code start: 0xC4F510 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC4F510, c, dgb_15_0_header] - [0xC4F510, c, dgb_15_1_music] @@ -13417,6 +13917,7 @@ segments: type: code start: 0xC52540 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC52540, c, dgb_16_0_header] - [0xC52540, c, dgb_16_1_music] @@ -13429,6 +13930,7 @@ segments: type: code start: 0xC55A60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC55A60, c, dgb_17_0_header] - [0xC55A60, c, dgb_17_1_music] @@ -13440,6 +13942,7 @@ segments: type: code start: 0xC55F40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC55F40, c, dgb_18_0_header] - [0xC55F40, c, dgb_18_1_music] @@ -13452,6 +13955,7 @@ segments: type: code start: 0xC599D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC599D0, c, kzn_01_0_header] - [0xC599D0, c, kzn_01_1_main] @@ -13462,6 +13966,7 @@ segments: type: code start: 0xC5A740 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC5A740, c, kzn_02_0_header] - [0xC5A740, c, kzn_02_1_main] @@ -13474,6 +13979,7 @@ segments: type: code start: 0xC60D10 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC60D10, c, kzn_03_0_header] - [0xC60D10, c, kzn_03_1_main] @@ -13486,6 +13992,7 @@ segments: type: code start: 0xC68130 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC68130, c, kzn_04_0_header] - [0xC68130, c, kzn_04_1_main] @@ -13497,6 +14004,7 @@ segments: type: code start: 0xC6C0D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC6C0D0, c, kzn_05_0_header] - [0xC6C0D0, c, kzn_05_1_main] @@ -13506,6 +14014,7 @@ segments: type: code start: 0xC6C920 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC6C920, c, kzn_06_0_header] - [0xC6C920, c, kzn_06_1_main] @@ -13517,6 +14026,7 @@ segments: type: code start: 0xC6E330 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC6E330, c, kzn_07_0_header] - [0xC6E330, c, kzn_07_1_music] @@ -13529,6 +14039,7 @@ segments: type: code start: 0xC71480 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC71480, c, kzn_08_0_header] - [0xC71480, c, kzn_08_1_main] @@ -13541,6 +14052,7 @@ segments: type: code start: 0xC76CE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC76CE0, c, kzn_09_0_header] - [0xC76CE0, c, kzn_09_1_main] @@ -13553,6 +14065,7 @@ segments: type: code start: 0xC7E180 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC7E180, c, kzn_10_0_header] - [0xC7E180, c, kzn_10_1_main] @@ -13563,6 +14076,7 @@ segments: type: code start: 0xC801A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC801A0, c, kzn_11_0_header] - [0xC801A0, c, kzn_11_1_main] @@ -13574,6 +14088,7 @@ segments: type: code start: 0xC85AB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC85AB0, c, kzn_17_0_header] - [0xC85AB0, c, kzn_17_1_main] @@ -13586,6 +14101,7 @@ segments: type: code start: 0xC8C0A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC8C0A0, c, kzn_18_0_header] - [0xC8C0E0, c, kzn_18_1_main] @@ -13597,6 +14113,7 @@ segments: type: code start: 0xC8DBB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC8DBB0, c, kzn_19_0_header] - [0xC8DBB0, c, kzn_19_1_music] @@ -13625,6 +14142,7 @@ segments: type: code start: 0xC95F30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC95F30, c, kzn_20_0_header] - [0xC95F30, c, kzn_20_1_music] @@ -13636,6 +14154,7 @@ segments: type: code start: 0xC9A200 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC9A200, c, kzn_22_0_header] - [0xC9A200, c, kzn_22_1_music] @@ -13648,6 +14167,7 @@ segments: type: code start: 0xC9C300 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC9C300, c, kzn_23_0_header] - [0xC9C300, c, kzn_23_1_music] @@ -13659,6 +14179,7 @@ segments: type: code start: 0xC9DF20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xC9DF20, c, flo_00_0_header] - [0xC9DF20, c, flo_00_1_music] @@ -13673,6 +14194,7 @@ segments: type: code start: 0xCA72A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCA72A0, c, flo_03_0_header] - [0xCA72A0, c, flo_03_1_music] @@ -13686,6 +14208,7 @@ segments: type: code start: 0xCAC1F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCAC1F0, c, flo_07_0_header] - [0xCAC1F0, c, flo_07_1_music] @@ -13697,6 +14220,7 @@ segments: type: code start: 0xCAED40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCAED40, c, flo_08_0_header] - [0xCAED40, c, flo_08_1_music] @@ -13711,6 +14235,7 @@ segments: type: code start: 0xCB5000 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCB5000, c, flo_09_0_header] - [0xCB5000, c, flo_09_1_music] @@ -13724,6 +14249,7 @@ segments: type: code start: 0xCB9200 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCB9200, c, flo_10_0_header] - [0xCB9240, c, flo_10_1_music] @@ -13739,6 +14265,7 @@ segments: type: code start: 0xCBDCD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCBDCD0, c, flo_11_0_header] - [0xCBDCD0, c, flo_11_1_music] @@ -13751,6 +14278,7 @@ segments: type: code start: 0xCC0E30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCC0E30, c, flo_12_0_header] - [0xCC0E30, c, flo_12_1_music] @@ -13762,6 +14290,7 @@ segments: type: code start: 0xCC3810 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCC3810, c, flo_13_0_header] - [0xCC3810, c, flo_13_1_music] @@ -13775,6 +14304,7 @@ segments: type: code start: 0xCCB310 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCCB310, c, flo_14_0_header] - [0xCCB310, c, flo_14_1_music] @@ -13789,6 +14319,7 @@ segments: type: code start: 0xCD06C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCD06C0, c, flo_15_0_header] - [0xCD06C0, c, flo_15_1_music] @@ -13802,6 +14333,7 @@ segments: type: code start: 0xCD1E30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCD1E30, c, flo_16_0_header] - [0xCD1E30, c, flo_16_1_music] @@ -13816,6 +14348,7 @@ segments: type: code start: 0xCD72E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCD72E0, c, flo_17_0_header] - [0xCD72E0, c, flo_17_1_music] @@ -13829,6 +14362,7 @@ segments: type: code start: 0xCDC6A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCDC6A0, c, flo_18_0_header] - [0xCDC6A0, c, flo_18_1_music] @@ -13842,6 +14376,7 @@ segments: type: code start: 0xCE36F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCE36F0, c, flo_19_0_header] - [0xCE36F0, c, flo_19_1_music] @@ -13855,6 +14390,7 @@ segments: type: code start: 0xCE6700 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCE6700, c, flo_21_0_header] - [0xCE6700, c, flo_21_1_music] @@ -13867,6 +14403,7 @@ segments: type: code start: 0xCEC240 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCEC240, c, flo_22_0_header] - [0xCEC240, c, flo_22_1_music] @@ -13880,6 +14417,7 @@ segments: type: code start: 0xCEE260 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCEE260, c, flo_23_0_header] - [0xCEE260, c, flo_23_1_music] @@ -13892,6 +14430,7 @@ segments: type: code start: 0xCF0940 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCF0940, c, flo_24_0_header] - [0xCF0940, c, flo_24_1_music] @@ -13905,6 +14444,7 @@ segments: type: code start: 0xCF2BD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCF2BD0, c, flo_25_0_header] - [0xCF2BD0, c, flo_25_1_music] @@ -13919,6 +14459,7 @@ segments: type: code start: 0xCF7B70 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xCF7B70, c, sam_01_0_header] - [0xCF7B70, c, sam_01_1_music] @@ -13933,6 +14474,7 @@ segments: type: code start: 0xD05730 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD05730, c, sam_02_0_header] - [0xD05730, c, sam_02_1_music] @@ -13947,6 +14489,7 @@ segments: type: code start: 0xD110C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD110C0, c, sam_03_0_header] - [0xD110C0, c, sam_03_1_music] @@ -13959,6 +14502,7 @@ segments: type: code start: 0xD135D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD135D0, c, sam_04_0_header] - [0xD135D0, c, sam_04_1_music] @@ -13972,6 +14516,7 @@ segments: type: code start: 0xD187E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD187E0, c, sam_05_0_header] - [0xD187E0, c, sam_05_1_music] @@ -14013,6 +14558,7 @@ segments: type: code start: 0xD1FE90 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD1FE90, c, sam_06_0_header] - [0xD1FE90, c, sam_06_1_music] @@ -14026,6 +14572,7 @@ segments: type: code start: 0xD2BD30 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD2BD30, c, sam_07_0_header] - [0xD2BD30, c, sam_07_1_music] @@ -14039,6 +14586,7 @@ segments: type: code start: 0xD2FC80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD2FC80, c, sam_08_0_header] - [0xD2FC80, c, sam_08_1_music] @@ -14052,6 +14600,7 @@ segments: type: code start: 0xD362F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD362F0, c, sam_09_0_header] - [0xD362F0, c, sam_09_1_music] @@ -14064,6 +14613,7 @@ segments: type: code start: 0xD37800 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD37800, c, sam_10_0_header] - [0xD37800, c, sam_10_1_music] @@ -14077,6 +14627,7 @@ segments: type: code start: 0xD3A5D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD3A5D0, c, sam_11_0_header] - [0xD3A610, c, sam_11_1_music] @@ -14094,6 +14645,7 @@ segments: type: code start: 0xD4BA20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD4BA20, c, sam_12_0_header] - [0xD4BA20, c, sam_12_1_music] @@ -14107,6 +14659,7 @@ segments: type: code start: 0xD4D040 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD4D040, c, pra_01_0_header] - [0xD4D060, c, pra_01_1_music] @@ -14119,6 +14672,7 @@ segments: type: code start: 0xD4FFF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD4FFF0, c, pra_02_0_header] - [0xD50010, c, pra_02_1_music] @@ -14131,6 +14685,7 @@ segments: type: code start: 0xD53CB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD53CB0, c, pra_03_0_header] - [0xD53CD0, c, pra_03_1_music] @@ -14142,6 +14697,7 @@ segments: type: code start: 0xD54690 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD54690, c, pra_04_0_header] - [0xD546B0, c, pra_04_1_music] @@ -14154,6 +14710,7 @@ segments: type: code start: 0xD55BB0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD55BB0, c, pra_05_0_header] - [0xD55BD0, c, pra_05_1_music] @@ -14165,6 +14722,7 @@ segments: type: code start: 0xD57430 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD57430, c, pra_06_0_header] - [0xD57430, c, pra_06_1_music] @@ -14176,6 +14734,7 @@ segments: type: code start: 0xD58890 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD58890, c, pra_09_0_header] - [0xD588B0, c, pra_09_1_music] @@ -14187,6 +14746,7 @@ segments: type: code start: 0xD5F2B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD5F2B0, c, pra_10_0_header] - [0xD5F2D0, c, pra_10_1_music] @@ -14198,6 +14758,7 @@ segments: type: code start: 0xD61500 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD61500, c, pra_11_0_header] - [0xD61520, c, pra_11_1_music] @@ -14209,6 +14770,7 @@ segments: type: code start: 0xD62D10 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD62D10, c, pra_12_0_header] - [0xD62D10, c, pra_12_1_music] @@ -14220,6 +14782,7 @@ segments: type: code start: 0xD645E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD645E0, c, pra_13_0_header] - [0xD64600, c, pra_13_1_music] @@ -14231,6 +14794,7 @@ segments: type: code start: 0xD67D00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD67D00, c, pra_14_0_header] - [0xD67D20, c, pra_14_1_music] @@ -14242,6 +14806,7 @@ segments: type: code start: 0xD69810 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD69810, c, pra_15_0_header] - [0xD69830, c, pra_15_1_music] @@ -14253,6 +14818,7 @@ segments: type: code start: 0xD69B20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD69B20, c, pra_16_0_header] - [0xD69B40, c, pra_16_1_music] @@ -14263,6 +14829,7 @@ segments: type: code start: 0xD6B620 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD6B620, c, pra_18_0_header] - [0xD6B640, c, pra_18_1_music] @@ -14274,6 +14841,7 @@ segments: type: code start: 0xD6E9B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD6E9B0, c, pra_19_0_header] - [0xD6E9D0, c, pra_19_1_music] @@ -14285,6 +14853,7 @@ segments: type: code start: 0xD763A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD763A0, c, pra_20_0_header] - [0xD763C0, c, pra_20_1_music] @@ -14295,6 +14864,7 @@ segments: type: code start: 0xD77F20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD77F20, c, pra_21_0_header] - [0xD77F40, c, pra_21_1_music] @@ -14306,6 +14876,7 @@ segments: type: code start: 0xD78880 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD78880, c, pra_22_0_header] - [0xD788A0, c, pra_22_1_music] @@ -14317,6 +14888,7 @@ segments: type: code start: 0xD799F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD799F0, c, pra_27_0_header] - [0xD799F0, c, pra_27_1_music] @@ -14328,6 +14900,7 @@ segments: type: code start: 0xD7B2A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD7B2A0, c, pra_28_0_header] - [0xD7B2A0, c, pra_28_1_music] @@ -14339,6 +14912,7 @@ segments: type: code start: 0xD7CB50 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD7CB50, c, pra_29_0_header] - [0xD7CB70, c, pra_29_1_music] @@ -14351,6 +14925,7 @@ segments: type: code start: 0xD7ED60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD7ED60, c, pra_31_0_header] - [0xD7ED80, c, pra_31_1_music] @@ -14439,13 +15014,14 @@ segments: subsegments: - [0xD864A0] - [0xD86820, vtx, stairs] - - [0xD869E0] + - [0xD869E0] - [0xD869E0] - name: pra_32 dir: world/area_pra/pra_32 type: code start: 0xD86A00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD86A00, c, pra_32_0_header] - [0xD86A20, c, pra_32_1_music] @@ -14457,6 +15033,7 @@ segments: type: code start: 0xD896E0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD896E0, c, pra_33_0_header] - [0xD89700, c, pra_33_1_music] @@ -14468,6 +15045,7 @@ segments: type: code start: 0xD8B3B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD8B3B0, c, pra_34_0_header] - [0xD8B3D0, c, pra_34_1_music] @@ -14479,6 +15057,7 @@ segments: type: code start: 0xD8D250 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD8B3B0, c, pra_35_0_header] - [0xD8D270, c, pra_35_1_music] @@ -14491,6 +15070,7 @@ segments: type: code start: 0xD91700 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD91700, c, pra_36_0_header] - [0xD91700, c, pra_36_1_music] @@ -14502,6 +15082,7 @@ segments: type: code start: 0xD92F40 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD92F40, c, pra_37_0_header] - [0xD92F40, c, pra_37_1_music] @@ -14513,6 +15094,7 @@ segments: type: code start: 0xD955F0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD955F0, c, pra_38_0_header] - [0xD955F0, c, pra_38_1_music] @@ -14524,6 +15106,7 @@ segments: type: code start: 0xD97890 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD97890, c, pra_39_0_header] - [0xD97890, c, pra_39_1_music] @@ -14535,6 +15118,7 @@ segments: type: code start: 0xD999B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD999B0, c, pra_40_0_header] - [0xD999D0, c, pra_40_1_music] @@ -14546,6 +15130,7 @@ segments: type: code start: 0xD9AEF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD9AEF0, c, omo_01_0_header] - [0xD9AEF0, c, omo_01_1_music] @@ -14559,6 +15144,7 @@ segments: type: code start: 0xD9D4D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xD9D4D0, c, omo_02_0_header] - [0xD9D4D0, c, omo_02_1_music] @@ -14573,6 +15159,7 @@ segments: type: code start: 0xDA5240 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDA5240, c, omo_03_0_header] - [0xDA5240, c, omo_03_1_music] @@ -14589,6 +15176,7 @@ segments: type: code start: 0xDAD400 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDAD400, c, omo_04_0_header] - [0xDAD400, c, omo_04_1_music] @@ -14603,6 +15191,7 @@ segments: type: code start: 0xDB22C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDB22C0, c, omo_05_0_header] - [0xDB22C0, c, omo_05_1_music] @@ -14616,6 +15205,7 @@ segments: type: code start: 0xDB7910 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDB7910, c, omo_06_0_header] - [0xDB7910, c, omo_06_1_music] @@ -14630,6 +15220,7 @@ segments: type: code start: 0xDBD2B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDBD2B0, c, omo_07_0_header] - [0xDBD2B0, c, omo_07_1_music] @@ -14644,6 +15235,7 @@ segments: type: code start: 0xDC43D0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDC43D0, c, omo_08_0_header] - [0xDC43D0, c, omo_08_1_music] @@ -14658,6 +15250,7 @@ segments: type: code start: 0xDCCCD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDCCCD0, c, omo_09_0_header] - [0xDCCCD0, c, omo_09_1_music] @@ -14674,6 +15267,7 @@ segments: type: code start: 0xDD79B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDD79B0, c, omo_10_0_header] - [0xDD79B0, c, omo_10_1_music] @@ -14688,6 +15282,7 @@ segments: type: code start: 0xDDC830 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDDC830, c, omo_11_0_header] - [0xDDC830, c, omo_11_1_music] @@ -14701,6 +15296,7 @@ segments: type: code start: 0xDDF310 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDDF310, c, omo_12_0_header] - [0xDDF310, c, omo_12_1_music] @@ -14713,6 +15309,7 @@ segments: type: code start: 0xDE2490 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDE2490, c, omo_13_0_header] - [0xDE2490, c, omo_13_1_music] @@ -14726,6 +15323,7 @@ segments: type: code start: 0xDE56B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDE56B0, c, omo_14_0_header] - [0xDE56B0, c, omo_14_1_music] @@ -14737,6 +15335,7 @@ segments: type: code start: 0xDE8770 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDE8770, c, omo_15_0_header] - [0xDE8770, c, omo_15_1_music] @@ -14748,6 +15347,7 @@ segments: type: code start: 0xDEBED0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDEBED0, c, omo_16_0_header] - [0xDEBED0, c, omo_16_1_main] @@ -14759,6 +15359,7 @@ segments: type: code start: 0xDEEEA0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDEEEA0, c, omo_17_0_header] - [0xDEEEA0, c, omo_17_1_main] @@ -14772,6 +15373,7 @@ segments: type: code start: 0xDF6A00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xDF6A00, c, end_00_0_header] - [0xDF6A20, c, end_00_1_main] @@ -14791,6 +15393,7 @@ segments: type: code start: 0xE05360 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xE05360, c, end_01_0_header] - [0xE05370, c, end_01_1_main] @@ -14806,6 +15409,7 @@ segments: type: code start: 0xE0E7A0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xE0E7A0, c, mgm_00_0_header] - [0xE0E7A0, c, mgm_00_1_main] @@ -14817,6 +15421,7 @@ segments: type: code start: 0xE12760 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xE12760, c, mgm_01_0_header] - [0xE12760, c, mgm_01_1_main] @@ -14845,6 +15450,7 @@ segments: type: code start: 0xE15D80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xE15D80, c, mgm_02_0_header] - [0xE15D80, c, mgm_02_1_main] @@ -14865,6 +15471,7 @@ segments: type: code start: 0xE1E380 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xE1E380, c, mgm_03_0_header] - [0xE1E380, c, mgm_03_1_main] @@ -14873,14 +15480,23 @@ segments: type: code start: 0xE1E460 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xE1E460, c, gv_01_0_header] - [0xE1E460, c, gv_01_1_main] - [0xE1EC20] + - name: heaps2 + type: code + start: 0xE20110 + vram: 0x80267FF0 + vram_of_symbol: map_vram_end + subsegments: + - [0xE20110, c, heaps2] - type: code start: 0xE20110 name: inspect_icon vram: 0x802B7000 + vram_of_symbol: world_action_vram_end subsegments: - [0xE20110, c, inspect_icon] - start: 0xE20B30 @@ -14896,6 +15512,7 @@ segments: start: 0xE20EB0 name: speech_bubble vram: 0x802B7000 + vram_of_symbol: world_action_vram_end subsegments: - [0xE20EB0, c, speech_bubble] - start: 0xE215C0 @@ -14911,6 +15528,7 @@ segments: start: 0xE21870 name: pulse_stone vram: 0x802B7000 + vram_of_symbol: world_action_vram_end subsegments: - [0xE21870, c, pulse_stone] - start: 0xE21EB0 @@ -14927,6 +15545,7 @@ segments: start: 0xE225B0 name: i_spy vram: 0x802B7000 + vram_of_symbol: world_action_vram_end subsegments: - [0xE225B0, c, i_spy] - start: 0xE22B30 @@ -14940,11 +15559,19 @@ segments: - [0xE231B0, gfx, i_spy_dlist] - [0xE23228] - [0xE23230] + - type: code + name: model_clear_render_tasks + start: 0xE23260 + vram: 0x802B7E00 + vram_of_symbol: world_misc_vram_end + subsegments: + - [0xE23260, c, model_clear_render_tasks] - type: code name: world_action_idle dir: world/action start: 0xE23260 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE23260, c, idle] - [0xE23690] @@ -14953,6 +15580,7 @@ segments: dir: world/action start: 0xE236E0 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE236E0, c, walk] - [0xE23FF0] @@ -14961,6 +15589,7 @@ segments: dir: world/action start: 0xE24040 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE24040, c, jump] - type: code @@ -14968,6 +15597,7 @@ segments: dir: world/action start: 0xE245D0 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE245D0, c, step_up] - [0xE248D0] @@ -14976,6 +15606,7 @@ segments: dir: world/action start: 0xE24920 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE24920, c, land] - type: code @@ -14983,6 +15614,7 @@ segments: dir: world/action start: 0xE24ED0 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE24ED0, c, hammer] - [0xE25C80] @@ -14991,6 +15623,7 @@ segments: dir: world/action start: 0xE25D60 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE25D60, c, spin] - [0xE26700] @@ -14999,6 +15632,7 @@ segments: dir: world/action start: 0xE26710 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE26710, c, tornado_jump] - [0xE26DA0] @@ -15007,6 +15641,7 @@ segments: dir: world/action start: 0xE26DE0 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE26DE0, c, spin_jump] - [0xE274C0] @@ -15015,6 +15650,7 @@ segments: dir: world/action start: 0xE27510 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE27510, c, slide] - [0xE27C50] @@ -15023,6 +15659,7 @@ segments: dir: world/action start: 0xE27C90 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE27C90, c, hit_fire] - type: code @@ -15030,6 +15667,7 @@ segments: dir: world/action start: 0xE27F40 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE27F40, c, hit_lava] - [0xE28790] @@ -15038,6 +15676,7 @@ segments: dir: world/action start: 0xE287F0 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE287F0, c, knockback] - type: code @@ -15045,6 +15684,7 @@ segments: dir: world/action start: 0xE28A30 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE28A30, c, misc] - [0xE29190] @@ -15053,6 +15693,7 @@ segments: dir: world/action start: 0xE291A0 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE291A0, c, use_munchlesia] - [0xE29450] @@ -15061,6 +15702,7 @@ segments: dir: world/action start: 0xE29470 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE29470, c, use_spinning_flower] - [0xE2A300] @@ -15069,6 +15711,7 @@ segments: dir: world/action start: 0xE2A340 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE2A340, c, use_tweester] - [0xE2A690] @@ -15077,6 +15720,7 @@ segments: dir: world/action start: 0xE2A6B0 vram: 0x802B6000 + follows_vram: texture_memory subsegments: - [0xE2A6B0, c, sneaky_parasol] - [0xE2B430] @@ -15084,6 +15728,7 @@ segments: dir: entity/default start: 0xE2B530 vram: 0x802BAE00 + follows_vram: model_clear_render_tasks subsegments: - [0xE2B530, c, Padlock] - [0xE2BE40, c, BoardedFloor] @@ -15093,6 +15738,7 @@ segments: dir: entity/jan_iwa start: 0xE2D730 vram: 0x802BAE00 + follows_vram: model_clear_render_tasks subsegments: - [0xE2D730, c, Plants1] - [0xE2E5F0, c, Plants2] @@ -15102,6 +15748,7 @@ segments: dir: entity/sbk_omo start: 0xE2F750 vram: 0x802BAE00 + follows_vram: model_clear_render_tasks subsegments: - [0xE2F750, c, Tweester] - [0xE307C0, c, StarBoxLauncher] @@ -16262,6 +16909,7 @@ segments: type: code start: 0xEA0900 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEA0900, c, kzn_17_0_header] - [0xEA0900, c, kzn_17_1_main] @@ -16274,6 +16922,7 @@ segments: type: code start: 0xEA6FD0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEA6FD0, c, kzn_18_0_header] - [0xEA7010, c, kzn_18_1_main] @@ -16285,6 +16934,7 @@ segments: type: code start: 0xEA8AE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEA8AE0, c, kzn_19_0_header] - [0xEA8AE0, c, kzn_19_1_music] @@ -16299,6 +16949,7 @@ segments: type: code start: 0xEB0E60 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEB0E60, c, kzn_20_0_header] - [0xEB0E60, c, kzn_20_1_music] @@ -16310,6 +16961,7 @@ segments: type: code start: 0xEB5130 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEB5130, c, kzn_22_0_header] - [0xEB5130, c, kzn_22_1_music] @@ -16322,6 +16974,7 @@ segments: type: code start: 0xEB7230 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEB7230, c, kzn_23_0_header] - [0xEB7230, c, kzn_23_1_music] @@ -16333,6 +16986,7 @@ segments: type: code start: 0xEB8E50 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEB8E50, c, flo_00_0_header] - [0xEB8E50, c, flo_00_1_music] @@ -16347,6 +17001,7 @@ segments: type: code start: 0xEC2200 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEC2200, c, flo_03_0_header] - [0xEC2200, c, flo_03_1_music] @@ -16360,6 +17015,7 @@ segments: type: code start: 0xEC71B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEC71B0, c, flo_07_0_header] - [0xEC71B0, c, flo_07_1_music] @@ -16371,6 +17027,7 @@ segments: type: code start: 0xEC9D00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEC9D00, c, flo_08_0_header] - [0xEC9D00, c, flo_08_1_music] @@ -16385,6 +17042,7 @@ segments: type: code start: 0xECFFF0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xECFFF0, c, flo_09_0_header] - [0xECFFF0, c, flo_09_1_music] @@ -16398,6 +17056,7 @@ segments: type: code start: 0xED4220 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xED4220, c, flo_10_0_header] - [0xED4260, c, flo_10_1_music] @@ -16413,6 +17072,7 @@ segments: type: code start: 0xED8E20 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xED8E20, c, flo_11_0_header] - [0xED8E20, c, flo_11_1_music] @@ -16425,6 +17085,7 @@ segments: type: code start: 0xEDBFE0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEDBFE0, c, flo_12_0_header] - [0xEDBFE0, c, flo_12_1_music] @@ -16436,6 +17097,7 @@ segments: type: code start: 0xEDE9C0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEDE9C0, c, flo_13_0_header] - [0xEDE9C0, c, flo_13_1_music] @@ -16449,6 +17111,7 @@ segments: type: code start: 0xEE65B0 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEE65B0, c, flo_14_0_header] - [0xEE65B0, c, flo_14_1_music] @@ -16463,6 +17126,7 @@ segments: type: code start: 0xEEB990 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEEB990, c, flo_15_0_header] - [0xEEB990, c, flo_15_1_music] @@ -16476,6 +17140,7 @@ segments: type: code start: 0xEED100 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEED100, c, flo_16_0_header] - [0xEED100, c, flo_16_1_music] @@ -16490,6 +17155,7 @@ segments: type: code start: 0xEF2610 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEF2610, c, flo_17_0_header] - [0xEF2610, c, flo_17_1_music] @@ -16503,6 +17169,7 @@ segments: type: code start: 0xEF7A80 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEF7A80, c, flo_18_0_header] - [0xEF7A80, c, flo_18_1_music] @@ -16516,6 +17183,7 @@ segments: type: code start: 0xEFEB00 vram: 0x80240000 + vram_of_symbol: world_model_data_vram_end subsegments: - [0xEFEB00, c, flo_19_0_header] - [0xEFEB00, c, flo_19_1_music] diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index 13ec95518c..5a6385fb8d 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -1381,14 +1381,14 @@ D_80077814 = 0x80077814; // type:data rom:0x52C14 D_80077828 = 0x80077828; // type:data rom:0x52C28 D_8007783C = 0x8007783C; // type:data rom:0x52C3C gameModeMap = 0x80077850; // type:data rom:0x52C50 -D_800778A0 = 0x800778A0; // type:data rom:0x52CA0 +bFrameBuffers = 0x800778A0; // type:data rom:0x52CA0 D_800778AC = 0x800778AC; // type:data rom:0x52CAC D_800778C0 = 0x800778C0; // type:data rom:0x52CC0 D_800778C8 = 0x800778C8; // type:data rom:0x52CC8 D_80077908 = 0x80077908; // type:data rom:0x52D08 -D_80077950 = 0x80077950; // type:data rom:0x52D50 +pause_frameBuffers = 0x80077950; // type:data rom:0x52D50 D_8007795C = 0x8007795C; // type:data rom:0x52D5C -D_80077980 = 0x80077980; // type:data rom:0x52D80 +fsFrameBuffers = 0x80077980; // type:data rom:0x52D80 D_8007798C = 0x8007798C; // type:data rom:0x52D8C D_800779B0 = 0x800779B0; // type:data rom:0x52DB0 D_800779C0 = 0x800779C0; // type:data rom:0x52DC0 @@ -26050,11 +26050,11 @@ D_80164000 = 0x80164000; // type:data dead_gCollisionStatus = 0x80169B10; // type:data D_80197000 = 0x80197000; // type:data D_801A6000 = 0x801A6000; // type:data -D_801A7000 = 0x801A7000; // type:data +BattleEntityHeapBottom = 0x801A7000; // type:data AuHeapBase = 0x801AA000; // type:data D_80200000 = 0x80200000; // type:data gBackgroundImage = 0x80200000; // -D_80210000 = 0x80210000; // type:data +gMapShapeData = 0x80210000; // type:data D_80219040 = 0x80219040; // type:data spiked_goomba = 0x8021B0AC; // type:data paragoomba = 0x8021CD00; // type:data @@ -27265,10 +27265,10 @@ D_802EE8D0 = 0x802EE8D0; // type:data D_802F39D0 = 0x802F39D0; // type:data D_802F4560 = 0x802F4560; // type:data heap_generalHead = 0x802FB800; // type:data -gSpriteHeapPtr = 0x8034F800; // type:data -D_8038F800 = 0x8038F800; // type:data -D_803B5000 = 0x803B5000; // type:data -D_803DA800 = 0x803DA800; // type:data +heap_spriteHead = 0x8034F800; // type:data +gFrameBuf0 = 0x8038F800; // type:data +gFrameBuf1 = 0x803B5000; // type:data +gFrameBuf2 = 0x803DA800; // type:data heap_battleHead = 0x803DA800; // type:data D_A0000000 = 0xA0000000; // type:data D_A4000000 = 0xA4000000; // type:data @@ -27335,3 +27335,11 @@ dead_evt_get_variable = 0x802D4E8C; // type:func dead:yes dead_evt_set_variable = 0x802D5468; // type:func dead:yes dead_evt_get_float_variable = 0x802D57FC; // type:func dead:yes dead_evt_set_float_variable = 0x802D5A10; // type:func dead:yes +battle_partner_vram_start = 0x80238000; // type:data appears_after_overlays_addr:0x80218000 +battle_code_vram_start = 0x8023E000; // type:data appears_after_overlays_addr:0x80238000 +world_model_data_vram_end = 0x80240000; // type:data appears_after_overlays_addr:0x80234000 +map_vram_end = 0x80267FF0; // type:data appears_after_overlays_addr:0x80240000 +//world_action_vram_end = 0x802B7000; // type:data appears_after_overlays_addr:0x802B6000 +world_misc_vram_end = 0x802B7E00; // type:data appears_after_overlays_addr:0x802B7000 +//entity_data_vram_end = 0x802BD100; // type:data appears_after_overlays_addr:0x802BAE00 +world_partner_vram_end = 0x802C3000; // type:data appears_after_overlays_addr:0x802BD100 diff --git a/ver/us/undefined_syms.txt b/ver/us/undefined_syms.txt index 78e9a21b62..b3a197ded8 100644 --- a/ver/us/undefined_syms.txt +++ b/ver/us/undefined_syms.txt @@ -1,38 +1,92 @@ -// Obfuscation symbols -obfuscated_battle_heap_create = battle_heap_create - 0xFEFFFFF; -obfuscated_general_heap_create = general_heap_create - 0xFEFEFEF; -obfuscated_load_engine_data = load_engine_data - 0x315; -obfuscated_create_audio_system = create_audio_system - 0x7B; -obfuscated_obfuscation_shims_VRAM = obfuscation_shims_VRAM - 0xA912928; -obfuscated_obfuscation_shims_ROM_START = obfuscation_shims_ROM_START - 0x8939221; +// hard-coded things +gBackgroundImage = 0x80200000; // hard-coded inside mapfs for now +gMapShapeData = 0x80210000; // needs to be hard-coded atm due to pointers in shape data + +heap_battleHead = gFrameBuf2; + +D_804DC500 = 0x804DC500; -// hacks for various things fx_sun_undeclared = fx_sun; -D_802AD673 = 0x802AD673; // remove when func_802A45D8 is decompiled with D_802AD670 instead of D_802AD673 -#ifdef SHIFT -mdl_clearRenderTasks = MAX(inspect_icon_VRAM_END, speech_bubble_VRAM_END); -mdl_clearRenderTasks = MAX(mdl_clearRenderTasks, pulse_stone_VRAM_END); -mdl_clearRenderTasks = MAX(mdl_clearRenderTasks, i_spy_VRAM_END); -#else -mdl_clearRenderTasks = 0x802B7E00; -#endif +battle_move_end = mushroom_VRAM_END; +battle_move_end = MAX(battle_move_end, fire_flower_VRAM_END); +battle_move_end = MAX(battle_move_end, dusty_hammer_VRAM_END); +battle_move_end = MAX(battle_move_end, pow_block_VRAM_END); +battle_move_end = MAX(battle_move_end, pebble_VRAM_END); +battle_move_end = MAX(battle_move_end, volt_shroom_VRAM_END); +battle_move_end = MAX(battle_move_end, thunder_rage_VRAM_END); +battle_move_end = MAX(battle_move_end, snowman_doll_VRAM_END); +battle_move_end = MAX(battle_move_end, dried_shroom_VRAM_END); +battle_move_end = MAX(battle_move_end, shooting_star_VRAM_END); +battle_move_end = MAX(battle_move_end, sleepy_sheep_VRAM_END); +battle_move_end = MAX(battle_move_end, stone_cap_VRAM_END); +battle_move_end = MAX(battle_move_end, tasty_tonic_VRAM_END); +battle_move_end = MAX(battle_move_end, thunder_bolt_VRAM_END); +battle_move_end = MAX(battle_move_end, ultra_shroom_VRAM_END); +battle_move_end = MAX(battle_move_end, unknown_item_VRAM_END); +battle_move_end = MAX(battle_move_end, super_soda_VRAM_END); +battle_move_end = MAX(battle_move_end, hustle_drink_VRAM_END); +battle_move_end = MAX(battle_move_end, stop_watch_VRAM_END); +battle_move_end = MAX(battle_move_end, dizzy_dial_VRAM_END); +battle_move_end = MAX(battle_move_end, please_come_back_VRAM_END); +battle_move_end = MAX(battle_move_end, egg_missile_VRAM_END); +battle_move_end = MAX(battle_move_end, insecticide_herb_VRAM_END); +battle_move_end = MAX(battle_move_end, fright_jar_VRAM_END); +battle_move_end = MAX(battle_move_end, mystery_VRAM_END); +battle_move_end = MAX(battle_move_end, repel_gel_VRAM_END); +battle_move_end = MAX(battle_move_end, life_shroom_VRAM_END); +battle_move_end = MAX(battle_move_end, coconut_VRAM_END); +battle_move_end = MAX(battle_move_end, electro_pop_VRAM_END); +battle_move_end = MAX(battle_move_end, strange_cake_VRAM_END); +battle_move_end = MAX(battle_move_end, food_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_hammer_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_spin_smash_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_quake_hammer_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_jump_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_multibounce_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_power_bounce_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_sleep_stomp_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_dizzy_stomp_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_d_down_pound_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_jump_charge_0_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_hammer_charge_0_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_hammer_throw_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_mega_quake_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_hammer_charge_1_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_jump_charge_1_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_hammer_charge_2_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_jump_charge_2_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_auto_smash_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_auto_jump_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_power_quake_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_auto_multibounce_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_power_jump_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_super_jump_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_mega_jump_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_power_smash_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_super_smash_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_mega_smash_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_unknown_move_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_shrink_smash_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_shell_crack_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_d_down_jump_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_shrink_stomp_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_move_earthquake_jump_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_focus_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_refresh_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_lullaby_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_star_storm_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_chill_out_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_smooch_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_time_out_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_up_and_away_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_star_beam_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_peach_beam_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_peach_focus_VRAM_END); +battle_move_end = MAX(battle_move_end, battle_star_peach_dash_VRAM_END); -// hard-coded heapy things -D_80197000 = 0x80197000; // effect tlb stuff -D_801A6000 = 0x801A6000; // effect tlb stuff -D_801A7000 = 0x801A7000; -AuHeapBase = 0x801AA000; -D_80200000 = 0x80200000; -gBackgroundImage = 0x80200000; -D_80210000 = 0x80210000; -heap_collisionHead = 0x80268000; -heap_generalHead = 0x802FB800; -gSpriteHeapPtr = 0x8034F800; -D_8038F800 = 0x8038F800; -D_803B5000 = 0x803B5000; -D_803DA800 = 0x803DA800; -heap_battleHead = 0x803DA800; +world_battle_vram_end = battle_code_VRAM_END; +world_battle_vram_end = MAX(world_battle_vram_end, world_script_api_VRAM_END); // boot D_A0000000 = 0xA0000000; @@ -57,6 +111,14 @@ D_B0000000 = 0xB0000000; D_B0000008 = 0xB0000008; D_B0000010 = 0xB0000010; +// Obfuscation symbols +obfuscated_battle_heap_create = battle_heap_create - 0xFEFFFFF; +obfuscated_general_heap_create = general_heap_create - 0xFEFEFEF; +obfuscated_load_engine_data = load_engine_data - 0x315; +obfuscated_create_audio_system = create_audio_system - 0x7B; +obfuscated_obfuscation_shims_VRAM = obfuscation_shims_VRAM - 0xA912928; +obfuscated_obfuscation_shims_ROM_START = obfuscation_shims_ROM_START - 0x8939221; + // Invalid pointers from dead code dead_transform_point = transform_point + 0x12F0; dead_dma_copy = dma_copy + 0x12F0;