Files
af/include/segment_symbols.h
kuchenmitsahne a4d5910cdb m_random_field OK (#241)
* 25 functions OK

* 10 functions OK

* Add block type and block kind enums/defines

* Formatting/style pass

* Move `FieldMakeBlockType` to `m_field_make`

* Remove unused/duplicate defines

* Split data out for `m_quest` and `m_random_field`; rename data symbols

* Generate `m_random_field.c` and rename function symbols.

* mRF_BlockTypeDirect2GateType, mRF_BlockTypeDirect2GateData OK

* mRF_Type2BlockInfo, mRF_Info2BlockType, mRF_GateType2GateCount, mRF_SearchPond, mRF_Attr2BeastRoadAttr, mRF_CheckBeastRoad OK

* mFI_GetUnitCol OK; mRF_PrintDebug and mRF_BlockInf2CheckBeastRoad OK (pending data import).

* Fix `m_random_field` code split; all newly included functions OK

* Fix mRF_Malloc return type; formatting pass

* Name m_random_field_ovl

* Rename data symbols (m_random_field_ovl).

* Rename symbols (all functions named)

* Import data

* Declare overlay segment; rename symbols

* mRF_MakeRandomField OK (all functions matching).

* Extract asset `data_combi_table`

* Clean up mRF_MakeRandomField; document m_field_make.h

* Rename mCoBG_unkStruct->unk6 as unitAttribute

* Misc cleanup and formatting.

* Rename additional data symbols (m_random_field_ovl).

* Formatting pass

* Improve documentation of BackgroundAttribute enum.

* Formatting pass; add omitted attribute.
2025-06-04 16:38:23 -07:00

149 lines
4.0 KiB
C

#ifndef SEGMENT_SYMBOLS_H
#define SEGMENT_SYMBOLS_H
#include "ultra64.h"
#include "libc/stdint.h"
#include "other_types.h"
#define DECLARE_VRAM_SEGMENT(name) \
extern u8 name ## _VRAM[]; \
extern u8 name ## _VRAM_END[]
#define DECLARE_ROM_SEGMENT(name) \
extern u8 name ## _ROM_START[]; \
extern u8 name ## _ROM_END[]
#define DECLARE_DATA_SEGMENT(name) \
extern u8 name ## _DATA_START[]; \
extern u8 name ## _DATA_END[]; \
extern u8 name ## _DATA_SIZE[]
#define DECLARE_BSS_SEGMENT(name) \
extern u8 name ## _BSS_START[]; \
extern u8 name ## _BSS_END[]
#define DECLARE_SEGMENT(name) \
DECLARE_VRAM_SEGMENT(name); \
DECLARE_ROM_SEGMENT(name); \
DECLARE_DATA_SEGMENT(name); \
DECLARE_BSS_SEGMENT(name)
#define SEGMENT_VRAM_START(segment) (segment ## _VRAM)
#define SEGMENT_VRAM_END(segment) (segment ## _VRAM_END)
#define SEGMENT_VRAM_SIZE(segment) ((uintptr_t)SEGMENT_VRAM_END(segment) - (uintptr_t)SEGMENT_VRAM_START(segment))
#define SEGMENT_VRAM_RESOLVE_ADDR(segment, base, symbol) ((uintptr_t)(base) + (uintptr_t)&(symbol) - (uintptr_t)SEGMENT_VRAM_START(segment))
#define SEGMENT_ROM_START(segment) ((RomOffset)segment ## _ROM_START)
#define SEGMENT_ROM_END(segment) ((RomOffset)segment ## _ROM_END)
#define SEGMENT_ROM_SIZE(segment) (SEGMENT_ROM_END(segment) - SEGMENT_ROM_START(segment))
#define SEGMENT_ROM_SIZE_ALT(segment) ((size_t)(segment ## _ROM_END - segment ## _ROM_START))
#define SEGMENT_DATA_SIZE_CONST(segment) ((RomOffset)segment ## _DATA_SIZE)
#define SEGMENT_BSS_START(segment) (segment ## _BSS_START)
#define SEGMENT_BSS_END(segment) (segment ## _BSS_END)
#define SEGMENT_BSS_SIZE(segment) ((uintptr_t)SEGMENT_BSS_END(segment) - (uintptr_t)SEGMENT_BSS_START(segment))
DECLARE_SEGMENT(framebuffer);
DECLARE_SEGMENT(header);
DECLARE_SEGMENT(ipl3);
DECLARE_SEGMENT(entry);
DECLARE_SEGMENT(boot);
DECLARE_SEGMENT(dmadata);
DECLARE_SEGMENT(segment_027130);
DECLARE_SEGMENT(segment_13D9A0);
DECLARE_SEGMENT(code);
DECLARE_SEGMENT(buffers);
// TODO: the rest of segments
DECLARE_SEGMENT(segment_01136000);
DECLARE_SEGMENT(submenu_ovl);
DECLARE_SEGMENT(player_actor);
DECLARE_SEGMENT(tag_ovl);
DECLARE_SEGMENT(hand_ovl);
DECLARE_SEGMENT(haniwaPortrait_ovl);
DECLARE_SEGMENT(inventory_ovl);
DECLARE_SEGMENT(ovl__00789B60);
DECLARE_SEGMENT(ovl__0078A560);
DECLARE_SEGMENT(ovl__0078AE30);
DECLARE_SEGMENT(ledit_ovl);
DECLARE_SEGMENT(ovl__0078CB80);
DECLARE_SEGMENT(board_ovl);
DECLARE_SEGMENT(ovl__00792700);
DECLARE_SEGMENT(ovl__00794380);
DECLARE_SEGMENT(map_ovl);
DECLARE_SEGMENT(ovl__00797A50);
DECLARE_SEGMENT(ovl__00799580);
DECLARE_SEGMENT(ovl__0079A290);
DECLARE_SEGMENT(ovl__0079B120);
DECLARE_SEGMENT(ovl__0079C020);
DECLARE_SEGMENT(ovl__0079DA50);
DECLARE_SEGMENT(ovl__0079E430);
DECLARE_SEGMENT(ovl__0079F810);
DECLARE_SEGMENT(ovl__007A10E0);
DECLARE_SEGMENT(catalog_ovl);
DECLARE_SEGMENT(m_random_field_ovl);
DECLARE_SEGMENT(ac_set_ovl_insect);
DECLARE_SEGMENT(ac_set_ovl_gyoei);
DECLARE_SEGMENT(ac_weather_fine);
DECLARE_SEGMENT(ac_weather_rain);
DECLARE_SEGMENT(ac_weather_snow);
DECLARE_SEGMENT(ac_weather_sakura);
DECLARE_SEGMENT(ac_weather_leaf);
DECLARE_SEGMENT(m_mail_check_ovl);
DECLARE_SEGMENT(m_all_grow_ovl);
DECLARE_SEGMENT(locerrmsg);
DECLARE_SEGMENT(segment_00A58000);
DECLARE_SEGMENT(object_00D5B000);
DECLARE_SEGMENT(object_00D5D000);
DECLARE_SEGMENT(object_00D5E000);
DECLARE_SEGMENT(object_00DF4000);
DECLARE_SEGMENT(object_00DF5000);
DECLARE_SEGMENT(object_00E00000);
DECLARE_SEGMENT(segment_00E02000);
DECLARE_SEGMENT(segment_00E03000);
DECLARE_SEGMENT(segment_00E04000);
DECLARE_SEGMENT(segment_00E0D000);
DECLARE_SEGMENT(act_ball_b);
DECLARE_SEGMENT(act_ball_d);
DECLARE_SEGMENT(act_ball_s);
DECLARE_SEGMENT(segment_01408000);
DECLARE_SEGMENT(segment_01409000);
DECLARE_SEGMENT(segment_0140A000);
DECLARE_SEGMENT(segment_0140B000);
DECLARE_SEGMENT(object_017A1000);
DECLARE_SEGMENT(object_0182A000);
DECLARE_SEGMENT(segment_013E7000);
DECLARE_SEGMENT(int_sum_blue_bureau01);
DECLARE_SEGMENT(int_sum_hal_chest02);
DECLARE_SEGMENT(int_sum_clchest03);
#endif