diff --git a/.gitignore b/.gitignore index ee2d1e325..8c5705f18 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ docs/doxygen/ # Per-user configuration .python-version .make_options +.*env diff --git a/Makefile b/Makefile index df9ceaa04..69f7b69b5 100644 --- a/Makefile +++ b/Makefile @@ -108,7 +108,7 @@ endif # Check code syntax with host compiler ifneq ($(RUN_CC_CHECK),0) - CHECK_WARNINGS := -Wall -Wextra -Wno-format-security -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-variable -Wno-missing-braces -Wno-int-conversion -Wno-unused-but-set-variable -Wno-unused-label -Wno-sign-compare -Wno-tautological-compare + CHECK_WARNINGS := -Wall -Wextra -Werror-implicit-function-declaration -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-variable -Wno-missing-braces -Wno-unused-but-set-variable -Wno-unused-label -Wno-sign-compare -Wno-tautological-compare CC_CHECK := gcc -fno-builtin -fsyntax-only -funsigned-char -fdiagnostics-color -std=gnu89 -D _LANGUAGE_C -D NON_MATCHING $(IINC) -nostdinc $(CHECK_WARNINGS) ifneq ($(WERROR), 0) CC_CHECK += -Werror diff --git a/README.md b/README.md index 89d651dbd..d5f2255fd 100644 --- a/README.md +++ b/README.md @@ -68,12 +68,13 @@ The build process has the following package requirements: * python3 * pip3 * libpng-dev +* python3-venv Under Debian / Ubuntu (which we recommend using), you can install them with the following commands: ```bash sudo apt update -sudo apt install make git build-essential binutils-mips-linux-gnu python3 python3-pip libpng-dev +sudo apt install make git build-essential binutils-mips-linux-gnu python3 python3-pip libpng-dev python3-venv ``` #### 2. Clone the repository @@ -94,12 +95,27 @@ cd mm The build process has a few python packages required that are located in `requirements.txt`. -To install them simply run in a terminal: +It is recommend to setup a virtual environment for python to localize all dependencies. To create a virtual environment: ```bash -python3 -m pip install -r requirements.txt +python3 -m venv .mm-env ``` +To activate or deactivate the virtual environment run either: +```bash +# Activates the mm-env virtual environment +source .mm-env/bin/activate +# Deactivates the active virtual environment +deactivate +``` + +Once activated you can install the required dependencies: +```bash +pip install -r requirements.txt # or python3 -m pip if you want +``` + +**Important:** This virtual environment will need to be activated everytime you enter the repo. + #### 4. Prepare a base ROM Copy your ROM to inside the root of this new project directory, and rename the file of the baserom to reflect the version of ROM you are using. ex: `baserom.mm.us.rev1.z64` diff --git a/assets/xml/objects/object_nb.xml b/assets/xml/objects/object_nb.xml index 7ac63e118..f169abed9 100644 --- a/assets/xml/objects/object_nb.xml +++ b/assets/xml/objects/object_nb.xml @@ -2,10 +2,10 @@ - - - - + + + + diff --git a/assets/xml/objects/object_niw.xml b/assets/xml/objects/object_niw.xml index db47a439f..fcc178dde 100644 --- a/assets/xml/objects/object_niw.xml +++ b/assets/xml/objects/object_niw.xml @@ -1,7 +1,7 @@  - + @@ -18,7 +18,7 @@ - + diff --git a/assets/xml/objects/object_nnh.xml b/assets/xml/objects/object_nnh.xml index f7f546e25..3a806c792 100644 --- a/assets/xml/objects/object_nnh.xml +++ b/assets/xml/objects/object_nnh.xml @@ -2,7 +2,7 @@ - + diff --git a/assets/xml/objects/object_numa_obj.xml b/assets/xml/objects/object_numa_obj.xml index a450cf11a..ea2aa74a6 100644 --- a/assets/xml/objects/object_numa_obj.xml +++ b/assets/xml/objects/object_numa_obj.xml @@ -1,33 +1,33 @@  - - - - + + + + - - - - + + + + - + - + - - + + - + - + - + @@ -36,22 +36,22 @@ - - + + - + - + - + - + - + diff --git a/assets/xml/objects/object_ny.xml b/assets/xml/objects/object_ny.xml index 186dd91c3..3f2d3a908 100644 --- a/assets/xml/objects/object_ny.xml +++ b/assets/xml/objects/object_ny.xml @@ -1,6 +1,6 @@  - + diff --git a/assets/xml/objects/object_oF1d_map.xml b/assets/xml/objects/object_oF1d_map.xml index a241eac13..27270fb7f 100644 --- a/assets/xml/objects/object_oF1d_map.xml +++ b/assets/xml/objects/object_oF1d_map.xml @@ -14,7 +14,7 @@ - + @@ -32,9 +32,9 @@ - - - + + + @@ -60,7 +60,7 @@ - + @@ -68,7 +68,7 @@ - + @@ -128,15 +128,15 @@ - - - - - - + + + + + + - + diff --git a/assets/xml/objects/object_ob.xml b/assets/xml/objects/object_ob.xml index 1efe524b4..1d4447de5 100644 --- a/assets/xml/objects/object_ob.xml +++ b/assets/xml/objects/object_ob.xml @@ -7,8 +7,8 @@ - - + + @@ -40,8 +40,8 @@ - - + + @@ -94,8 +94,8 @@ - - - + + + diff --git a/assets/xml/objects/object_obj_chan.xml b/assets/xml/objects/object_obj_chan.xml index 0b378e8c1..108669b0e 100644 --- a/assets/xml/objects/object_obj_chan.xml +++ b/assets/xml/objects/object_obj_chan.xml @@ -1,14 +1,14 @@  - - + + - - + + diff --git a/assets/xml/objects/object_obj_danpeilift.xml b/assets/xml/objects/object_obj_danpeilift.xml index 2d3c26567..882ce1bce 100644 --- a/assets/xml/objects/object_obj_danpeilift.xml +++ b/assets/xml/objects/object_obj_danpeilift.xml @@ -1,7 +1,7 @@  - + - + diff --git a/assets/xml/objects/object_obj_dinner.xml b/assets/xml/objects/object_obj_dinner.xml index 6ca440035..f73716464 100644 --- a/assets/xml/objects/object_obj_dinner.xml +++ b/assets/xml/objects/object_obj_dinner.xml @@ -1,7 +1,7 @@  - - + + diff --git a/assets/xml/objects/object_obj_milk_bin.xml b/assets/xml/objects/object_obj_milk_bin.xml index 70daa6172..e67e0b15f 100644 --- a/assets/xml/objects/object_obj_milk_bin.xml +++ b/assets/xml/objects/object_obj_milk_bin.xml @@ -1,6 +1,6 @@  - + diff --git a/assets/xml/objects/object_obj_tokeidai.xml b/assets/xml/objects/object_obj_tokeidai.xml index 94a302ea4..9822eb149 100644 --- a/assets/xml/objects/object_obj_tokeidai.xml +++ b/assets/xml/objects/object_obj_tokeidai.xml @@ -32,47 +32,39 @@ - - - + + - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - + + - - - + + - - - + + diff --git a/assets/xml/objects/object_obj_usiyane.xml b/assets/xml/objects/object_obj_usiyane.xml index 339b25df9..99e6e0cb1 100644 --- a/assets/xml/objects/object_obj_usiyane.xml +++ b/assets/xml/objects/object_obj_usiyane.xml @@ -1,13 +1,13 @@  - - + + - - + + - + diff --git a/assets/xml/objects/object_obj_yasi.xml b/assets/xml/objects/object_obj_yasi.xml index 34ace132e..5971fc744 100644 --- a/assets/xml/objects/object_obj_yasi.xml +++ b/assets/xml/objects/object_obj_yasi.xml @@ -1,12 +1,12 @@  - + - + diff --git a/assets/xml/objects/object_omoya_obj.xml b/assets/xml/objects/object_omoya_obj.xml index 85389f314..e5483bd19 100644 --- a/assets/xml/objects/object_omoya_obj.xml +++ b/assets/xml/objects/object_omoya_obj.xml @@ -1,6 +1,6 @@  - + diff --git a/assets/xml/objects/object_open_obj.xml b/assets/xml/objects/object_open_obj.xml index 74a4101bd..3ad1dd436 100644 --- a/assets/xml/objects/object_open_obj.xml +++ b/assets/xml/objects/object_open_obj.xml @@ -1,15 +1,15 @@  - - + + - - - + + + - + diff --git a/assets/xml/objects/object_ot.xml b/assets/xml/objects/object_ot.xml index ae3b42d22..1b99fb071 100644 --- a/assets/xml/objects/object_ot.xml +++ b/assets/xml/objects/object_ot.xml @@ -1,12 +1,12 @@  - - - + + + - + @@ -49,6 +49,6 @@ - + diff --git a/assets/xml/objects/object_owl.xml b/assets/xml/objects/object_owl.xml index 8d17dcc5d..b07442a99 100644 --- a/assets/xml/objects/object_owl.xml +++ b/assets/xml/objects/object_owl.xml @@ -2,14 +2,14 @@ - + - + - + @@ -78,9 +78,9 @@ - - - + + + diff --git a/assets/xml/objects/object_oyu.xml b/assets/xml/objects/object_oyu.xml index bbf0b7f72..f674f0977 100644 --- a/assets/xml/objects/object_oyu.xml +++ b/assets/xml/objects/object_oyu.xml @@ -1,10 +1,10 @@  - + - + diff --git a/assets/xml/objects/object_po_composer.xml b/assets/xml/objects/object_po_composer.xml index 4ac60c00b..1a083b1b4 100644 --- a/assets/xml/objects/object_po_composer.xml +++ b/assets/xml/objects/object_po_composer.xml @@ -12,7 +12,7 @@ - + @@ -59,6 +59,7 @@ - + + diff --git a/include/audiothread_cmd.h b/include/audiothread_cmd.h index c9e6703dc..5fe7021fc 100644 --- a/include/audiothread_cmd.h +++ b/include/audiothread_cmd.h @@ -248,7 +248,7 @@ typedef enum { * @param sfxState */ #define AUDIOCMD_CHANNEL_SET_SFX_STATE(seqPlayerIndex, channelIndex, sfxState) \ - AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_SFX_STATE, seqPlayerIndex, channelIndex, 0), sfxState) + AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_CHANNEL_SET_SFX_STATE, seqPlayerIndex, channelIndex, 0), (s32)sfxState) /** * Set the reverb index. @@ -493,7 +493,7 @@ typedef enum { * @param functionPtr */ #define AUDIOCMD_GLOBAL_SET_CUSTOM_FUNCTION(functionType, functionPtr) \ - AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_CUSTOM_FUNCTION, 0, 0, functionType), functionPtr) + AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_CUSTOM_FUNCTION, 0, 0, functionType), (s32)functionPtr) /** * Do something related to the unloaded-type audio data in the heap. @@ -514,7 +514,7 @@ typedef enum { * @param data */ #define AUDIOCMD_GLOBAL_SET_REVERB_DATA(reverbIndex, dataType, data) \ - AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_REVERB_DATA, dataType, reverbIndex, 0), data) + AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_REVERB_DATA, dataType, reverbIndex, 0), (s32)data) /** * Change the sound mode of audio diff --git a/include/carthandle.h b/include/carthandle.h new file mode 100644 index 000000000..72d0821e5 --- /dev/null +++ b/include/carthandle.h @@ -0,0 +1,8 @@ +#ifndef CARTHANDLE_H +#define CARTHANDLE_H + +#include "ultra64.h" + +extern OSPiHandle* gCartHandle; + +#endif diff --git a/include/functions.h b/include/functions.h index 8ad230a60..59a28dc75 100644 --- a/include/functions.h +++ b/include/functions.h @@ -64,39 +64,6 @@ void MtxConv_F2L(Mtx* mtx, MtxF* mf); void MtxConv_L2F(MtxF* mtx, Mtx* mf); s32 func_80086620(OSMesgQueue* param_1, PadMgr* param_2, OSContStatus* param_3); -// void func_80086760(void); -// void func_80086794(void); -// void func_800867B4(void); -// void func_800867D4(void); -// void func_800867F4(void); -f32 func_80086814(f32 x); -// void func_80086834(void); -// void func_80086880(void); -// void func_800869A4(void); -// void func_80086AF0(void); -f32 func_80086B30(f32 y, f32 x); -// void func_80086C18(void); -f32 func_80086C48(f32 x); -// void func_80086C70(void); -f64 func_80086C7C(f64 param_1); -s32 func_80086C88(f32 param_1); -s32 func_80086C98(f64 param_1); -// void func_80086CA8(void); -f64 func_80086CB4(f64 param_1); -s32 func_80086CC0(f32 param_1); -s32 func_80086CD0(f64 param_1); -// void func_80086CE0(void); -f64 func_80086CEC(f64 param_1); -s32 func_80086CF8(f32 param_1); -s32 func_80086D08(f64 param_1); -// void func_80086D18(void); -f64 nearbyint(f64); -s32 func_80086D30(f32 param_1); -s32 func_80086D40(f64 param_1); -// void func_80086D50(void); -f64 func_80086D6C(f64 param_1); -s32 func_80086D8C(f32 param_1); -s32 func_80086DAC(f64 param_1); s32 PrintUtils_VPrintf(PrintCallback* pfn, const char* fmt, va_list args); s32 PrintUtils_Printf(PrintCallback* pfn, const char* fmt, ...); @@ -340,8 +307,8 @@ s32 func_800B7128(Player* player); s32 func_800B715C(PlayState* play); void Actor_SetCameraHorseSetting(PlayState* play, Player* player); void Actor_MountHorse(PlayState* play, Player* player, Actor* horse); -s32 func_800B724C(PlayState* play, Actor* actor, u8 csAction); -s32 func_800B7298(PlayState* play, Actor* actor, u8 csAction); +s32 Player_SetCsAction(PlayState* play, Actor* csActor, u8 csAction); +s32 Player_SetCsActionWithHaltedActors(PlayState* play, Actor* csActor, u8 csAction); void func_800B72F8(DynaPolyActor* dyna, f32 extraPushForce, s16 yRotation); s32 Player_IsFacingActor(Actor* actor, s16 maxAngleDiff, PlayState* play); @@ -356,9 +323,9 @@ void Actor_UpdateBgCheckInfo(PlayState* play, Actor* actor, f32 wallCheckHeight, Hilite* Hilite_DrawOpa(Vec3f* object, Vec3f* eye, Vec3f* lightDir, GraphicsContext* gfxCtx); void func_800B8050(Actor* actor, PlayState* play, s32 flag); void func_800B8118(Actor* actor, PlayState* play, s32 flag); -PosRot* Actor_GetFocus(PosRot* dest, Actor* actor); -PosRot* Actor_GetWorld(PosRot* dest, Actor* actor); -PosRot* Actor_GetWorldPosShapeRot(PosRot* dest, Actor* actor); +PosRot Actor_GetFocus(Actor* actor); +PosRot Actor_GetWorld(Actor* actor); +PosRot Actor_GetWorldPosShapeRot(Actor* actor); s32 Target_OutsideLeashRange(Actor* actor, Player* player, s32 ignoreLeash); s32 Actor_ProcessTalkRequest(Actor* actor, GameState* gameState); @@ -507,10 +474,10 @@ s32 Camera_CheckValidMode(Camera* camera, s16 mode); s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags); s32 Camera_ChangeSetting(Camera* camera, s16 setting); s32 Camera_ChangeActorCsCamIndex(Camera* camera, s32 bgCamIndex); -Vec3s* Camera_GetInputDir(Vec3s* dst, Camera* camera); +Vec3s Camera_GetInputDir(Camera* camera); s16 Camera_GetInputDirPitch(Camera* camera); s16 Camera_GetInputDirYaw(Camera* camera); -Vec3s* Camera_GetCamDir(Vec3s* dst, Camera* camera); +Vec3s Camera_GetCamDir(Camera* camera); s16 Camera_GetCamDirPitch(Camera* camera); s16 Camera_GetCamDirYaw(Camera* camera); s32 Camera_AddQuake(Camera* camera, s32 arg1, s16 y, s32 countdown); @@ -522,7 +489,7 @@ s16 Camera_UnsetStateFlag(Camera* camera, s16 flags); s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 bgCamIndex, f32 arg3, s16 timer1, s16 timer2, s16 timer3); s32 Camera_Copy(Camera* dstCam, Camera* srcCam); s32 Camera_IsDbgCamEnabled(void); -Vec3f* Camera_GetQuakeOffset(Vec3f* quakeOffset, Camera* camera); +Vec3f Camera_GetQuakeOffset(Camera* camera); void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3); s32 Camera_GetNegOne(void); s16 func_800E0238(Camera* camera); @@ -569,8 +536,8 @@ void Color_RGB8_Lerp(Color_RGB8* from, Color_RGB8* to, f32 lerp, Color_RGB8* dst void Lib_Nop801004FC(void); void* Lib_SegmentedToVirtual(void* ptr); void* Lib_SegmentedToVirtualNull(void* ptr); -void* Lib_VirtualToPhysical(void* ptr); -void* Lib_PhysicalToVirtual(void* ptr); +uintptr_t Lib_VirtualToPhysical(void* ptr); +void* Lib_PhysicalToVirtual(uintptr_t ptr); void LifeMeter_Init(PlayState* play); void LifeMeter_UpdateColors(PlayState* play); s32 LifeMeter_SaveInterfaceHealth(PlayState* play); @@ -711,7 +678,7 @@ void func_80109428(PlayState* play); // void func_80109F78(void); s32 Map_GetDungeonOrBossAreaIndex(PlayState* play); s32 Map_IsInDungeonOrBossArea(PlayState* play); -s32 func_8010A0A4(PlayState* play); +s32 MapExp_CurRoomHasMapI(PlayState* play); // void Map_GetDungeonAreaIndex(PlayState* play); // void Map_IsInDungeonArea(PlayState* play); // void Map_GetBossAreaIndex(PlayState* play); @@ -785,17 +752,17 @@ f32 OLib_Vec3fDistOutDiff(Vec3f* a, Vec3f* b, Vec3f* dest); f32 OLib_Vec3fDistXZ(Vec3f* a, Vec3f* b); f32 OLib_ClampMinDist(f32 val, f32 min); f32 OLib_ClampMaxDist(f32 val, f32 max); -Vec3f* OLib_Vec3fDistNormalize(Vec3f* dest, Vec3f* a, Vec3f* b); -Vec3f* OLib_VecSphToVec3f(Vec3f* dest, VecSph* sph); -Vec3f* OLib_VecGeoToVec3f(Vec3f* dest, VecGeo* geo); -VecSph* OLib_Vec3fToVecSph(VecSph* dest, Vec3f* vec); -VecGeo* OLib_Vec3fToVecGeo(VecGeo* dest, Vec3f* vec); -VecSph* OLib_Vec3fDiffToVecSph(VecSph* dest, Vec3f* a, Vec3f* b); -VecGeo* OLib_Vec3fDiffToVecGeo(VecGeo* dest, Vec3f* a, Vec3f* b); -Vec3f* OLib_AddVecGeoToVec3f(Vec3f* dest, Vec3f* a, VecGeo* geo); -Vec3f* OLib_Vec3fDiffRad(Vec3f* dest, Vec3f* a, Vec3f* b); -Vec3f* OLib_Vec3fDiffDegF(Vec3f* dest, Vec3f* a, Vec3f* b); -Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b); +Vec3f OLib_Vec3fDistNormalize(Vec3f* a, Vec3f* b); +Vec3f OLib_VecSphToVec3f(VecSph* sph); +Vec3f OLib_VecGeoToVec3f(VecGeo* geo); +VecSph OLib_Vec3fToVecSph(Vec3f* vec); +VecGeo OLib_Vec3fToVecGeo(Vec3f* vec); +VecSph OLib_Vec3fDiffToVecSph(Vec3f* a, Vec3f* b); +VecGeo OLib_Vec3fDiffToVecGeo(Vec3f* a, Vec3f* b); +Vec3f OLib_AddVecGeoToVec3f(Vec3f* a, VecGeo* geo); +Vec3f OLib_Vec3fDiffRad(Vec3f* a, Vec3f* b); +Vec3f OLib_Vec3fDiffDegF(Vec3f* a, Vec3f* b); +Vec3s OLib_Vec3fDiffBinAng(Vec3f* a, Vec3f* b); void OLib_Vec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); void OLib_Vec3fAdd(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); diff --git a/include/loadfragment.h b/include/loadfragment.h index db1f3a322..dcf749097 100644 --- a/include/loadfragment.h +++ b/include/loadfragment.h @@ -36,7 +36,7 @@ typedef struct OverlayRelocationSection { } OverlayRelocationSection; // size >= 0x18 // Fragment overlay load functions -size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, uintptr_t vramEnd, void* allocatedRamAddr); -void* Overlay_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, uintptr_t vramEnd); +size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* ramStart, void* ramEnd, void* allocatedRamAddr); +void* Overlay_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd); #endif diff --git a/include/main.h b/include/main.h index ce794714f..2b25dbb07 100644 --- a/include/main.h +++ b/include/main.h @@ -9,7 +9,7 @@ extern s32 gScreenWidth; extern s32 gScreenHeight; extern size_t gSystemHeapSize; -extern u32 gSegments[NUM_SEGMENTS]; +extern uintptr_t gSegments[NUM_SEGMENTS]; extern SchedContext gSchedContext; extern OSThread gGraphThread; extern PadMgr gPadMgr; diff --git a/include/segment_symbols.h b/include/segment_symbols.h index f2f40820a..4d5824138 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -24,9 +24,11 @@ #define SEGMENT_END(segment) (_ ## segment ## SegmentEnd) #define SEGMENT_SIZE(segment) ((uintptr_t)SEGMENT_END(segment) - (uintptr_t)SEGMENT_START(segment)) -#define SEGMENT_ROM_START(segment) (_ ## segment ## SegmentRomStart) -#define SEGMENT_ROM_END(segment) (_ ## segment ## SegmentRomEnd) -#define SEGMENT_ROM_SIZE(segment) ((uintptr_t)SEGMENT_ROM_END(segment) - (uintptr_t)SEGMENT_ROM_START(segment)) +#define SEGMENT_ROM_START(segment) ((uintptr_t) _ ## segment ## SegmentRomStart) +#define SEGMENT_ROM_START_OFFSET(segment, offset) ((uintptr_t) (( _ ## segment ## SegmentRomStart ) + (offset))) +#define SEGMENT_ROM_END(segment) ((uintptr_t) _ ## segment ## SegmentRomEnd) +#define SEGMENT_ROM_SIZE(segment) (SEGMENT_ROM_END(segment) - SEGMENT_ROM_START(segment)) +#define SEGMENT_ROM_SIZE_ALT(segment) ((size_t)( _ ## segment ## SegmentRomEnd - _ ## segment ## SegmentRomStart )) #define SEGMENT_BSS_START(segment) (_ ## segment ## SegmentBssStart) #define SEGMENT_BSS_END(segment) (_ ## segment ## SegmentBssEnd) diff --git a/include/sys_flashrom.h b/include/sys_flashrom.h index 5fc2821d6..24044bd64 100644 --- a/include/sys_flashrom.h +++ b/include/sys_flashrom.h @@ -5,7 +5,7 @@ typedef struct { /* 0x00 */ s32 requestType; - /* 0x04 */ OSMesg response; + /* 0x04 */ s32 response; /* 0x08 */ void* addr; /* 0x0C */ s32 pageNum; /* 0x10 */ s32 pageCount; diff --git a/include/tha.h b/include/tha.h index 805d421f9..9bf3c8572 100644 --- a/include/tha.h +++ b/include/tha.h @@ -3,6 +3,7 @@ #include "ultra64.h" #include "libc/stdint.h" +#include "libc/stddef.h" typedef struct TwoHeadArena { /* 0x0 */ size_t size; @@ -19,7 +20,7 @@ void* THA_AllocHeadByte(TwoHeadArena* tha); void* THA_AllocTail(TwoHeadArena* tha, size_t size); void* THA_AllocTailAlign16(TwoHeadArena* tha, size_t size); void* THA_AllocTailAlign(TwoHeadArena* tha, size_t size, uintptr_t mask); -s32 THA_GetRemaining(TwoHeadArena* tha); +ptrdiff_t THA_GetRemaining(TwoHeadArena* tha); u32 THA_IsCrash(TwoHeadArena* tha); void THA_Reset(TwoHeadArena* tha); void THA_Init(TwoHeadArena* tha, void* start, size_t size); diff --git a/include/variables.h b/include/variables.h index 14eaa2190..46923b0c8 100644 --- a/include/variables.h +++ b/include/variables.h @@ -10,7 +10,6 @@ extern u16 gFramebuffer1[SCREEN_HEIGHT][SCREEN_WIDTH]; // at 0x80000500 extern u8 D_80025D00[]; // data -extern OSPiHandle* gCartHandle; extern size_t gDmaMgrDmaBuffSize; extern vs32 gIrqMgrResetStatus; extern volatile OSTime sIrqMgrResetTime; diff --git a/include/z64.h b/include/z64.h index 147ddac99..17f22d183 100644 --- a/include/z64.h +++ b/include/z64.h @@ -229,7 +229,7 @@ typedef struct PlayState { /* 0x18770 */ void (*unk_18770)(struct PlayState* play, Player* player); /* 0x18774 */ s32 (*startPlayerFishing)(struct PlayState* play); /* 0x18778 */ s32 (*grabPlayer)(struct PlayState* play, Player* player); - /* 0x1877C */ s32 (*startPlayerCutscene)(struct PlayState* play, Player* player, PlayerCsAction csAction); + /* 0x1877C */ s32 (*tryPlayerCsAction)(struct PlayState* play, Player* player, PlayerCsAction csAction); /* 0x18780 */ void (*func_18780)(Player* player, struct PlayState* play); /* 0x18784 */ s32 (*damagePlayer)(struct PlayState* play, s32 damage); /* 0x18788 */ void (*talkWithPlayer)(struct PlayState* play, Actor* actor); diff --git a/include/z64audio.h b/include/z64audio.h index d2a9afd08..7beabf7e8 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -597,6 +597,7 @@ typedef struct { /* 0x4 */ s8 asSbyte; /* 0x4 */ u8 asUbyte; /* 0x4 */ u32 asUInt; + /* 0x4 */ void* asPtr; }; } AudioCmd; // size = 0x8 @@ -931,7 +932,7 @@ typedef struct { typedef void (*AudioCustomUpdateFunction)(void); typedef u32 (*AudioCustomSeqFunction)(s8 value, SequenceChannel* channel); -typedef s32 (*AudioCustomReverbFunction)(Sample*, s32, s8, s32); +typedef void* (*AudioCustomReverbFunction)(Sample*, s32, s8, s32); typedef Acmd* (*AudioCustomSynthFunction)(Acmd*, s32, s32); extern OSVoiceHandle gVoiceHandle; diff --git a/include/z64environment.h b/include/z64environment.h index 18e1fbf70..0988355f4 100644 --- a/include/z64environment.h +++ b/include/z64environment.h @@ -3,8 +3,10 @@ #include "PR/ultratypes.h" #include "PR/os_message.h" -#include "z64math.h" +#include "color.h" #include "z64dma.h" +#include "z64light.h" +#include "z64math.h" #include "unk.h" struct GameOverContext; diff --git a/include/z64message.h b/include/z64message.h index 1b84f90db..2a6eab7f3 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -199,8 +199,8 @@ typedef struct { u16 wchar[640]; // msgBufWide u64 force_structure_alignment_msg; } msgBuf; - /* 0x11D80 */ u32 messageStart; - /* 0x11D84 */ u32 messageEnd; + /* 0x11D80 */ uintptr_t messageStart; + /* 0x11D84 */ uintptr_t messageEnd; /* 0x11D88 */ u8 unk_11D88; // current Char Buffer ? } Font; // size = 0x11D90 diff --git a/include/z64player.h b/include/z64player.h index fac153052..32b673fe4 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -607,6 +607,7 @@ typedef struct struct_80122744_arg1 { } struct_80122744_arg1; // size = 0x8 typedef enum PlayerCsAction { + /* -1 */ PLAYER_CSACTION_NEG1 = -1, // Specific to Kafei, any negative number works /* 0x00 */ PLAYER_CSACTION_NONE, /* 0x01 */ PLAYER_CSACTION_1, /* 0x02 */ PLAYER_CSACTION_2, @@ -1145,7 +1146,7 @@ typedef struct Player { /* 0x395 */ u8 prevCsAction; // PlayerCsAction enum /* 0x396 */ u8 cueId; // PlayerCueId enum /* 0x397 */ u8 unk_397; // PlayerDoorType enum - /* 0x398 */ Actor* csActor; + /* 0x398 */ Actor* csActor; // Actor involved in a `csAction`. Typically the actor that invoked the cutscene. /* 0x39C */ UNK_TYPE1 unk_39C[0x4]; /* 0x3A0 */ Vec3f unk_3A0; /* 0x3AC */ Vec3f unk_3AC; diff --git a/spec b/spec index 10869f4ef..328a507a9 100644 --- a/spec +++ b/spec @@ -17,7 +17,7 @@ beginseg include "build/data/boot/rspboot.data.o" include "build/src/boot/idle.o" include "build/src/boot/viconfig.o" - include "build/data/boot/viconfig.data.o" + include "build/src/boot/carthandle.o" include "build/src/boot/z_std_dma.o" include "build/src/boot/yaz0.o" include "build/src/boot/irqmgr.o" @@ -42,7 +42,7 @@ beginseg include "build/src/boot/O2/system_malloc.o" include "build/src/boot/O2/rand.o" include "build/src/boot/O2/__osMalloc.o" - include "build/src/libultra/libc/sprintf.o" + include "build/src/boot/O2/sprintf.o" include "build/src/boot/O2/printutils.o" include "build/src/boot/O2/sleep.o" include "build/asm/boot/setcause.text.o" diff --git a/src/audio/lib/data.c b/src/audio/lib/data.c index eb931262b..ee56e5d10 100644 --- a/src/audio/lib/data.c +++ b/src/audio/lib/data.c @@ -1,6 +1,6 @@ #include "global.h" -s16 gLowPassFilterData[16 * 8] = { +s16 gLowPassFilterData[16 * 8] ALIGNED(16) = { /* 0x0 */ 0, 0, 0, 32767, 0, 0, 0, 0, // Identity filter (delta function) /* 0x1 */ 3854, 4188, 4398, 4469, 4398, 4188, 3854, 3416, // low-freq cutoff (more filtering) /* 0x2 */ 3415, 4314, 4915, 5126, 4915, 4314, 3415, 2351, @@ -19,7 +19,7 @@ s16 gLowPassFilterData[16 * 8] = { /* 0xF */ 841, -853, 863, 26829, 863, -853, 841, -820, // high-freq cutoff (less filtering) }; -s16 gHighPassFilterData[15 * 8] = { +s16 gHighPassFilterData[15 * 8] ALIGNED(16) = { /* 0x0 */ -289, -291, -289, 30736, -289, -291, -289, -290, // low-freq cutoff (less filtering) /* 0x1 */ -464, -467, -467, 29506, -467, -467, -464, -463, /* 0x2 */ -662, -670, -672, 28101, -672, -670, -662, -656, @@ -38,7 +38,7 @@ s16 gHighPassFilterData[15 * 8] = { }; // clang-format off -s16 gBandStopFilterData[105 * 8] = { +s16 gBandStopFilterData[105 * 8] ALIGNED(16) = { // Block 0 /* 0x00 */ -43, -716, -1205, 28210, -1205, -716, -43, 629, /* 0x01 */ 249, -919, -1819, 25489, -1819, -919, 249, 1301, @@ -173,7 +173,7 @@ s16 gBandStopFilterData[105 * 8] = { /* 0x68 */ 434, -453, 467, 29652, 467, -453, 434, -405, }; -s16 gBandPassFilterData[105 * 8] = { +s16 gBandPassFilterData[105 * 8] ALIGNED(16) = { // Block 0 /* 0x00 */ 687, 4058, 6599, 7544, 6599, 4058, 687, -2532, /* 0x01 */ -1303, 2777, 6337, 7745, 6337, 2777, -1303, -4185, @@ -308,7 +308,7 @@ s16 gBandPassFilterData[105 * 8] = { /* 0x68 */ -3854, 4188, -4398, 4469, -4398, 4188, -3854, 3415, }; -s16 gSawtoothWaveSample[] = { +s16 gSawtoothWaveSample[] ALIGNED(16) = { // 1st Harmonic 0, 1023, 2047, 3071, 4095, 5119, 6143, 7167, 8191, 9215, 10239, 11263, 12287, 13311, 14335, 15359, @@ -350,7 +350,7 @@ s16 gSawtoothWaveSample[] = { 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, }; -s16 gTriangleWaveSample[] = { +s16 gTriangleWaveSample[] ALIGNED(16) = { // 1st Harmonic 0, 2047, 4095, 6143, 8191, 10239, 12287, 14335, 16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719, @@ -392,7 +392,7 @@ s16 gTriangleWaveSample[] = { 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, }; -s16 gSineWaveSample[] = { +s16 gSineWaveSample[] ALIGNED(16) = { // 1st Harmonic 0, 3211, 6392, 9511, 12539, 15446, 18204, 20787, 23169, 25329, 27244, 28897, 30272, 31356, 32137, 32609, @@ -434,7 +434,7 @@ s16 gSineWaveSample[] = { 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, }; -s16 gSquareWaveSample[] = { +s16 gSquareWaveSample[] ALIGNED(16) = { // 1st Harmonic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -476,7 +476,7 @@ s16 gSquareWaveSample[] = { 0, 0, 32767, 32767, 0, 0, -32767, -32767, }; -s16 gWhiteNoiseSample[] = { +s16 gWhiteNoiseSample[] ALIGNED(16) = { // 1st Harmonic 0, -25689, -25791, 27803, -27568, -21030, 22174, 6298, 27071, -18531, 28649, 2284, 3380, 6890, -12682, -21114, @@ -519,7 +519,7 @@ s16 gWhiteNoiseSample[] = { }; // Sine White Noise? -s16 D_801D4790[] = { +s16 D_801D4790[] ALIGNED(16) = { // 1st Harmonic 0, 16316, 20148, 20257, 27209, -32657, 29264, 27259, -29394, -21494, -26410, 30770, 30033, 29130, 20206, 14129, @@ -562,7 +562,7 @@ s16 D_801D4790[] = { }; // Pulse Wave (duty cycle = 12.5%) -s16 gEighthPulseWaveSample[] = { +s16 gEighthPulseWaveSample[] ALIGNED(16) = { // 1st Harmonic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -605,7 +605,7 @@ s16 gEighthPulseWaveSample[] = { }; // Pulse Wave (duty cycle = 25%) -s16 gQuarterPulseWaveSample[] = { +s16 gQuarterPulseWaveSample[] ALIGNED(16) = { // 1st Harmonic 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/src/audio/lib/heap.c b/src/audio/lib/heap.c index 24bb7043d..e4412bc94 100644 --- a/src/audio/lib/heap.c +++ b/src/audio/lib/heap.c @@ -1441,7 +1441,7 @@ void AudioHeap_ApplySampleBankCacheInternal(s32 apply, s32 sampleBankId) { sampleBankTable = gAudioCtx.sampleBankTable; numFonts = gAudioCtx.soundFontTable->numEntries; - change.oldAddr = AudioHeap_SearchCaches(SAMPLE_TABLE, CACHE_EITHER, sampleBankId); + change.oldAddr = (uintptr_t)AudioHeap_SearchCaches(SAMPLE_TABLE, CACHE_EITHER, sampleBankId); if (change.oldAddr == 0) { return; } diff --git a/src/audio/lib/load.c b/src/audio/lib/load.c index 34e8dec9c..d4e23a86a 100644 --- a/src/audio/lib/load.c +++ b/src/audio/lib/load.c @@ -32,7 +32,7 @@ typedef struct { void AudioLoad_DiscardFont(s32 fontId); s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIndex, s32 seqId, s32 arg2); u8* AudioLoad_SyncLoadSeq(s32 seqId); -u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad); +uintptr_t AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad); SoundFontData* AudioLoad_SyncLoadFont(u32 fontId); void* AudioLoad_SyncLoad(s32 tableType, u32 id, s32* didAllocate); u32 AudioLoad_GetRealTableIndex(s32 tableType, u32 id); @@ -414,7 +414,7 @@ void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 arg1, s32 arg2, OSMesgQueue* arg3 AudioLoad_SyncLoadSeq(seqId); } if (arg2 != 0) { - osSendMesg(arg3, arg2 << 0x18, OS_MESG_NOBLOCK); + osSendMesg(arg3, (OSMesg)(arg2 << 0x18), OS_MESG_NOBLOCK); } } } @@ -431,10 +431,10 @@ s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) { } if (sample->medium == MEDIUM_UNK) { - AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleAddr, sample->size, + AudioLoad_SyncDmaUnkMedium((uintptr_t)sample->sampleAddr, sampleAddr, sample->size, gAudioCtx.sampleBankTable->unkMediumParam); } else { - AudioLoad_SyncDma(sample->sampleAddr, sampleAddr, sample->size, sample->medium); + AudioLoad_SyncDma((uintptr_t)sample->sampleAddr, sampleAddr, sample->size, sample->medium); } sample->medium = MEDIUM_RAM; sample->sampleAddr = sampleAddr; @@ -471,7 +471,7 @@ s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) { void AudioLoad_AsyncLoad(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) { if (AudioLoad_AsyncLoadInner(tableType, id, nChunks, retData, retQueue) == NULL) { - osSendMesg(retQueue, 0xFFFFFFFF, OS_MESG_NOBLOCK); + osSendMesg(retQueue, (OSMesg)0xFFFFFFFF, OS_MESG_NOBLOCK); } } @@ -632,11 +632,11 @@ u8* AudioLoad_SyncLoadSeq(s32 seqId) { return AudioLoad_SyncLoad(SEQUENCE_TABLE, seqId, &didAllocate); } -u32 AudioLoad_GetSampleBank(u32 sampleBankId, u32* outMedium) { +uintptr_t AudioLoad_GetSampleBank(u32 sampleBankId, u32* outMedium) { return AudioLoad_TrySyncLoadSampleBank(sampleBankId, outMedium, true); } -u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad) { +uintptr_t AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad) { void* addr; AudioTable* sampleBankTable; u32 realTableId = AudioLoad_GetRealTableIndex(SAMPLE_TABLE, sampleBankId); @@ -651,7 +651,7 @@ u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad } *outMedium = MEDIUM_RAM; - return addr; + return (uintptr_t)addr; } cachePolicy = sampleBankTable->entries[sampleBankId].cachePolicy; @@ -664,7 +664,7 @@ u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad addr = AudioLoad_SyncLoad(SAMPLE_TABLE, sampleBankId, &noLoad); if (addr != NULL) { *outMedium = MEDIUM_RAM; - return addr; + return (uintptr_t)addr; } *outMedium = sampleBankTable->entries[sampleBankId].medium; @@ -785,7 +785,7 @@ void* AudioLoad_SyncLoad(s32 tableType, u32 id, s32* didAllocate) { size -= 0x10; } - bcopy(romAddr, ramAddr, size); + bcopy((void*)romAddr, ramAddr, size); } else if (medium2 == mediumUnk) { AudioLoad_SyncDmaUnkMedium(romAddr, ramAddr, size, (s16)table->unkMediumParam); } else { @@ -867,7 +867,7 @@ AudioTable* AudioLoad_GetLoadTable(s32 tableType) { * @param sampleBankReloc information on the sampleBank containing raw audio samples */ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, SampleBankRelocInfo* sampleBankReloc) { - uintptr_t soundOffset; + void* soundOffset; uintptr_t soundListOffset; Instrument* inst; Drum* drum; @@ -876,7 +876,7 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample s32 numDrums = gAudioCtx.soundFontList[fontId].numDrums; s32 numInstruments = gAudioCtx.soundFontList[fontId].numInstruments; s32 numSfx = gAudioCtx.soundFontList[fontId].numSfx; - u32* fontData = (u32*)fontDataStartAddr; + uintptr_t* fontData = (uintptr_t*)fontDataStartAddr; // Relocate an offset (relative to the start of the font data) to a pointer (a ram address) #define RELOC_TO_RAM(x) (void*)((uintptr_t)(x) + (uintptr_t)(fontDataStartAddr)) @@ -889,7 +889,7 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample // If the soundFont has drums if ((soundListOffset != 0) && (numDrums != 0)) { - fontData[0] = RELOC_TO_RAM(soundListOffset); + fontData[0] = (uintptr_t)RELOC_TO_RAM(soundListOffset); // Loop through the drum offsets for (i = 0; i < numDrums; i++) { @@ -897,7 +897,7 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample soundOffset = ((Drum**)fontData[0])[i]; // Some drum data entries are empty, represented by an offset of 0 in the list of drum offsets - if (soundOffset == 0) { + if (soundOffset == NULL) { continue; } soundOffset = RELOC_TO_RAM(soundOffset); @@ -925,7 +925,7 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample // If the soundFont has sound effects if ((soundListOffset != 0) && (numSfx != 0)) { - fontData[1] = RELOC_TO_RAM(soundListOffset); + fontData[1] = (uintptr_t)RELOC_TO_RAM(soundListOffset); // Loop through the sound effects for (i = 0; i < numSfx; i++) { @@ -955,7 +955,7 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample for (i = 2; i <= 2 + numInstruments - 1; i++) { // Some instrument data entries are empty, represented by an offset of 0 in the list of instrument offsets if (fontData[i] != 0) { - fontData[i] = RELOC_TO_RAM(fontData[i]); + fontData[i] = (uintptr_t)RELOC_TO_RAM(fontData[i]); inst = (Instrument*)fontData[i]; // The instrument may be in the list multiple times and already relocated @@ -1097,7 +1097,7 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, ramAddr = AudioLoad_SearchCaches(tableType, realId); if (ramAddr != NULL) { loadStatus = LOAD_STATUS_COMPLETE; - osSendMesg(retQueue, MK_ASYNC_MSG(retData, 0, 0, LOAD_STATUS_NOT_LOADED), OS_MESG_NOBLOCK); + osSendMesg(retQueue, (OSMesg)MK_ASYNC_MSG(retData, 0, 0, LOAD_STATUS_NOT_LOADED), OS_MESG_NOBLOCK); } else { table = AudioLoad_GetLoadTable(tableType); size = table->entries[realId].size; @@ -1376,7 +1376,7 @@ s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* isDone) { slowLoad->status = LOAD_STATUS_START; slowLoad->bytesRemaining = ALIGN16(sample->size); slowLoad->ramAddr = slowLoad->curRamAddr; - slowLoad->curDevAddr = sample->sampleAddr; + slowLoad->curDevAddr = (uintptr_t)sample->sampleAddr; slowLoad->medium = sample->medium; slowLoad->seqOrFontId = fontId; slowLoad->instId = instId; @@ -1464,7 +1464,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) { if (slowLoad->medium == MEDIUM_UNK) { size_t size = slowLoad->bytesRemaining; - AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr, size, + AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, (uintptr_t)slowLoad->curRamAddr, size, slowLoad->unkMediumParam); } else { AudioLoad_DmaSlowCopy(slowLoad, slowLoad->bytesRemaining); @@ -1472,7 +1472,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) { slowLoad->bytesRemaining = 0; } else { if (slowLoad->medium == MEDIUM_UNK) { - AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr, 0x400, + AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, (uintptr_t)slowLoad->curRamAddr, 0x400, slowLoad->unkMediumParam); } else { AudioLoad_DmaSlowCopy(slowLoad, 0x400); @@ -1671,7 +1671,7 @@ void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) { break; } - doneMsg = asyncLoad->retMsg; + doneMsg = (OSMesg)asyncLoad->retMsg; if (1) {} asyncLoad->status = LOAD_STATUS_WAITING; osSendMesg(asyncLoad->retQueue, doneMsg, OS_MESG_NOBLOCK); @@ -1743,7 +1743,7 @@ void AudioLoad_AsyncDmaRamUnloaded(AudioAsyncLoad* asyncLoad, size_t size) { size = ALIGN16(size); Audio_InvalDCache(asyncLoad->curRamAddr, size); osCreateMesgQueue(&asyncLoad->msgQueue, &asyncLoad->msg, 1); - bcopy(asyncLoad->curDevAddr, asyncLoad->curRamAddr, size); + bcopy((void*)asyncLoad->curDevAddr, asyncLoad->curRamAddr, size); osSendMesg(&asyncLoad->msgQueue, NULL, OS_MESG_NOBLOCK); } diff --git a/src/audio/lib/synthesis.c b/src/audio/lib/synthesis.c index 71b6a2212..0e95b4a99 100644 --- a/src/audio/lib/synthesis.c +++ b/src/audio/lib/synthesis.c @@ -500,12 +500,12 @@ Acmd* AudioSynth_SaveResampledReverbSamples(Acmd* cmd, SynthesisReverb* reverb, aResample(cmd++, reverb->resampleFlags, entry->saveResamplePitch, reverb->leftSaveResampleBuf); cmd = AudioSynth_SaveResampledReverbSamplesImpl(cmd, DMEM_WET_SCRATCH, entry->size, - &reverb->leftReverbBuf[entry->startPos]); + (uintptr_t)&reverb->leftReverbBuf[entry->startPos]); if (entry->wrappedSize != 0) { // Ring buffer wrapped cmd = AudioSynth_SaveResampledReverbSamplesImpl(cmd, entry->size + DMEM_WET_SCRATCH, entry->wrappedSize, - reverb->leftReverbBuf); + (uintptr_t)reverb->leftReverbBuf); } // Right Resample @@ -514,12 +514,12 @@ Acmd* AudioSynth_SaveResampledReverbSamples(Acmd* cmd, SynthesisReverb* reverb, aResample(cmd++, reverb->resampleFlags, entry->saveResamplePitch, reverb->rightSaveResampleBuf); cmd = AudioSynth_SaveResampledReverbSamplesImpl(cmd, DMEM_WET_SCRATCH, entry->size, - &reverb->rightReverbBuf[entry->startPos]); + (uintptr_t)&reverb->rightReverbBuf[entry->startPos]); if (entry->wrappedSize != 0) { // Ring buffer wrapped cmd = AudioSynth_SaveResampledReverbSamplesImpl(cmd, entry->size + DMEM_WET_SCRATCH, entry->wrappedSize, - reverb->rightReverbBuf); + (uintptr_t)reverb->rightReverbBuf); } return cmd; @@ -716,16 +716,16 @@ Acmd* AudioSynth_SaveReverbSamples(Acmd* cmd, SynthesisReverb* reverb, s16 updat if (entry->size != 0) { cmd = AudioSynth_SaveResampledReverbSamplesImpl(cmd, DMEM_WET_LEFT_CH, entry->size, - &reverb->leftReverbBuf[entry->startPos]); + (uintptr_t)&reverb->leftReverbBuf[entry->startPos]); cmd = AudioSynth_SaveResampledReverbSamplesImpl(cmd, DMEM_WET_RIGHT_CH, entry->size, - &reverb->rightReverbBuf[entry->startPos]); + (uintptr_t)&reverb->rightReverbBuf[entry->startPos]); } if (entry->wrappedSize != 0) { cmd = AudioSynth_SaveResampledReverbSamplesImpl(cmd, entry->size + DMEM_WET_LEFT_CH, entry->wrappedSize, - reverb->leftReverbBuf); + (uintptr_t)reverb->leftReverbBuf); cmd = AudioSynth_SaveResampledReverbSamplesImpl(cmd, entry->size + DMEM_WET_RIGHT_CH, entry->wrappedSize, - reverb->rightReverbBuf); + (uintptr_t)reverb->rightReverbBuf); } } @@ -1170,7 +1170,7 @@ Acmd* AudioSynth_ProcessSample(s32 noteIndex, NoteSampleState* sampleState, Note } else { // This medium is not in ram, so dma the requested sample into ram samplesToLoadAddr = - AudioLoad_DmaSampleData(sampleAddr + (zeroOffset + sampleAddrOffset), + AudioLoad_DmaSampleData((uintptr_t)(sampleAddr + (zeroOffset + sampleAddrOffset)), ALIGN16((numFramesToDecode * frameSize) + SAMPLES_PER_FRAME), flags, &synthState->sampleDmaIndex, sample->medium); } diff --git a/src/audio/lib/thread.c b/src/audio/lib/thread.c index fe4804693..e1acb1583 100644 --- a/src/audio/lib/thread.c +++ b/src/audio/lib/thread.c @@ -47,7 +47,7 @@ AudioTask* AudioThread_UpdateImpl(void) { return NULL; } - osSendMesg(gAudioCtx.taskStartQueueP, gAudioCtx.totalTaskCount, OS_MESG_NOBLOCK); + osSendMesg(gAudioCtx.taskStartQueueP, (OSMesg)gAudioCtx.totalTaskCount, OS_MESG_NOBLOCK); gAudioCtx.rspTaskIndex ^= 1; gAudioCtx.curAiBufferIndex++; gAudioCtx.curAiBufferIndex %= 3; @@ -96,7 +96,7 @@ AudioTask* AudioThread_UpdateImpl(void) { if (gAudioCtx.resetStatus != 0) { if (AudioHeap_ResetStep() == 0) { if (gAudioCtx.resetStatus == 0) { - osSendMesg(gAudioCtx.audioResetQueueP, gAudioCtx.specId, OS_MESG_NOBLOCK); + osSendMesg(gAudioCtx.audioResetQueueP, (OSMesg)(uintptr_t)gAudioCtx.specId, OS_MESG_NOBLOCK); } sWaitingAudioTask = NULL; @@ -146,7 +146,7 @@ AudioTask* AudioThread_UpdateImpl(void) { } if (gAudioSPDataPtr == (u64*)gAudioCtx.curAbiCmdBuf) { - return -1; + return (void*)-1; } gAudioCtx.curAbiCmdBuf = @@ -297,16 +297,16 @@ void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) { break; case AUDIOCMD_OP_GLOBAL_SET_CUSTOM_UPDATE_FUNCTION: - gAudioCustomUpdateFunction = cmd->asUInt; + gAudioCustomUpdateFunction = cmd->asPtr; break; case AUDIOCMD_OP_GLOBAL_SET_CUSTOM_FUNCTION: if (cmd->arg2 == AUDIO_CUSTOM_FUNCTION_REVERB) { - gAudioCustomReverbFunction = cmd->asUInt; + gAudioCustomReverbFunction = cmd->asPtr; } else if (cmd->arg2 == AUDIO_CUSTOM_FUNCTION_SYNTH) { - gAudioCustomSynthFunction = cmd->asUInt; + gAudioCustomSynthFunction = cmd->asPtr; } else { - gAudioCtx.customSeqFunctions[cmd->arg2] = cmd->asUInt; + gAudioCtx.customSeqFunctions[cmd->arg2] = cmd->asPtr; } break; @@ -314,7 +314,7 @@ void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) { case AUDIOCMD_OP_GLOBAL_SET_SFX_FONT: case AUDIOCMD_OP_GLOBAL_SET_INSTRUMENT_FONT: if (AudioPlayback_SetFontInstrument(cmd->op - AUDIOCMD_OP_GLOBAL_SET_DRUM_FONT, cmd->arg1, cmd->arg2, - cmd->asInt)) {} + cmd->asPtr)) {} break; case AUDIOCMD_OP_GLOBAL_DISABLE_ALL_SEQPLAYERS: { @@ -791,13 +791,13 @@ void AudioThread_ProcessChannelCmd(SequenceChannel* channel, AudioCmd* cmd) { break; case AUDIOCMD_OP_CHANNEL_SET_SFX_STATE: - channel->sfxState = cmd->asUInt; + channel->sfxState = cmd->asPtr; break; case AUDIOCMD_OP_CHANNEL_SET_FILTER: filterCutoff = cmd->arg2; - if (cmd->asUInt != 0) { - channel->filter = cmd->asUInt; + if (cmd->asPtr != NULL) { + channel->filter = cmd->asPtr; } if (channel->filter != NULL) { AudioHeap_LoadFilter(channel->filter, filterCutoff >> 4, filterCutoff & 0xF); diff --git a/src/audio/voice_internal.c b/src/audio/voice_internal.c index a8a19d228..c5df0c652 100644 --- a/src/audio/voice_internal.c +++ b/src/audio/voice_internal.c @@ -1,5 +1,6 @@ #include "global.h" #include "z64voice.h" +#include "libc/string.h" // internal voice functions u8* func_801A5A1C(s8* words); diff --git a/src/boot/O2/loadfragment.c b/src/boot/O2/loadfragment.c index b22b1a692..69fa9959c 100644 --- a/src/boot/O2/loadfragment.c +++ b/src/boot/O2/loadfragment.c @@ -135,10 +135,10 @@ void Fragment_Relocate(void* allocatedRamAddr, OverlayRelocationSection* ovlRelo } } -size_t Fragment_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, void* allocatedRamAddr, +size_t Fragment_Load(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* allocatedRamAddr, size_t allocatedBytes) { size_t size = vromEnd - vromStart; - void* end; + uintptr_t end; s32 pad; OverlayRelocationSection* ovlRelocs; @@ -148,7 +148,7 @@ size_t Fragment_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart end = (uintptr_t)allocatedRamAddr + size; DmaMgr_SendRequest0(allocatedRamAddr, vromStart, size); - ovlRelocs = (OverlayRelocationSection*)((uintptr_t)end - ((s32*)end)[-1]); + ovlRelocs = (OverlayRelocationSection*)(end - ((s32*)end)[-1]); if (gLoadLogSeverity >= 3) {} @@ -161,11 +161,11 @@ size_t Fragment_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart if (gLoadLogSeverity >= 3) {} - Fragment_Relocate(allocatedRamAddr, ovlRelocs, vramStart); + Fragment_Relocate(allocatedRamAddr, ovlRelocs, (uintptr_t)vramStart); if (ovlRelocs->bssSize != 0) { if (gLoadLogSeverity >= 3) {} - bzero(end, ovlRelocs->bssSize); + bzero((void*)end, ovlRelocs->bssSize); } osWritebackDCache(allocatedRamAddr, allocatedBytes); @@ -176,9 +176,9 @@ size_t Fragment_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart return allocatedBytes; } -void* Fragment_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart) { +void* Fragment_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart) { size_t size = vromEnd - vromStart; - void* end; + uintptr_t end; void* allocatedRamAddr; uintptr_t ovlOffset; OverlayRelocationSection* ovlRelocs; @@ -195,8 +195,8 @@ void* Fragment_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t if (gLoadLogSeverity >= 3) {} - ovlOffset = (uintptr_t)end - 4; - ovlRelocs = (OverlayRelocationSection*)((uintptr_t)end - ((s32*)end)[-1]); + ovlOffset = end - sizeof(s32); + ovlRelocs = (OverlayRelocationSection*)(end - ((s32*)end)[-1]); if (1) {} @@ -212,15 +212,15 @@ void* Fragment_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t } end = (uintptr_t)allocatedRamAddr + size; - ovlRelocs = (OverlayRelocationSection*)((uintptr_t)end - *(uintptr_t*)ovlOffset); + ovlRelocs = (OverlayRelocationSection*)(end - *(uintptr_t*)ovlOffset); if (gLoadLogSeverity >= 3) {} - Fragment_Relocate(allocatedRamAddr, ovlRelocs, vramStart); + Fragment_Relocate(allocatedRamAddr, ovlRelocs, (uintptr_t)vramStart); if (ovlRelocs->bssSize != 0) { if (gLoadLogSeverity >= 3) {} - bzero(end, ovlRelocs->bssSize); + bzero((void*)end, ovlRelocs->bssSize); } osInvalICache(allocatedRamAddr, allocatedBytes); diff --git a/src/boot/O2/loadfragment2.c b/src/boot/O2/loadfragment2.c index 6925aaaac..02b3ab218 100644 --- a/src/boot/O2/loadfragment2.c +++ b/src/boot/O2/loadfragment2.c @@ -131,11 +131,11 @@ void Overlay_Relocate(void* allocatedRamAddr, OverlayRelocationSection* ovlReloc } } -size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, uintptr_t vramEnd, - void* allocatedRamAddr) { - s32 pad[2]; +size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* ramStart, void* ramEnd, void* allocatedRamAddr) { + uintptr_t vramStart = (uintptr_t)ramStart; + uintptr_t vramEnd = (uintptr_t)ramEnd; s32 size = vromEnd - vromStart; - void* end; + uintptr_t end; OverlayRelocationSection* ovlRelocs; if (gOverlayLogSeverity >= 3) {} @@ -144,7 +144,7 @@ size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, end = (uintptr_t)allocatedRamAddr + size; DmaMgr_SendRequest0(allocatedRamAddr, vromStart, size); - ovlRelocs = (OverlayRelocationSection*)((uintptr_t)end - ((s32*)end)[-1]); + ovlRelocs = (OverlayRelocationSection*)(end - ((s32*)end)[-1]); if (gOverlayLogSeverity >= 3) {} if (gOverlayLogSeverity >= 3) {} @@ -153,7 +153,7 @@ size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, if (ovlRelocs->bssSize != 0) { if (gOverlayLogSeverity >= 3) {} - bzero(end, ovlRelocs->bssSize); + bzero((void*)end, ovlRelocs->bssSize); } size = vramEnd - vramStart; @@ -166,8 +166,8 @@ size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, return size; } -void* Overlay_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, uintptr_t vramEnd) { - void* allocatedRamAddr = SystemArena_MallocR(vramEnd - vramStart); +void* Overlay_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd) { + void* allocatedRamAddr = SystemArena_MallocR((uintptr_t)vramEnd - (uintptr_t)vramStart); if (allocatedRamAddr != NULL) { Overlay_Load(vromStart, vromEnd, vramStart, vramEnd, allocatedRamAddr); diff --git a/src/libultra/libc/sprintf.c b/src/boot/O2/sprintf.c similarity index 100% rename from src/libultra/libc/sprintf.c rename to src/boot/O2/sprintf.c diff --git a/src/boot/O2/system_heap.c b/src/boot/O2/system_heap.c index 365d94596..c34129f12 100644 --- a/src/boot/O2/system_heap.c +++ b/src/boot/O2/system_heap.c @@ -8,9 +8,9 @@ #include "global.h" #include "system_malloc.h" -typedef void (*BlockFunc)(void*); -typedef void (*BlockFunc1)(void*, u32); -typedef void (*BlockFunc8)(void*, u32, u32, u32, u32, u32, u32, u32, u32); +typedef void (*BlockFunc)(uintptr_t); +typedef void (*BlockFunc1)(uintptr_t, u32); +typedef void (*BlockFunc8)(uintptr_t, u32, u32, u32, u32, u32, u32, u32, u32); typedef struct InitFunc { /* 0x0 */ uintptr_t nextOffset; @@ -41,7 +41,7 @@ void SystemHeap_Free(void* ptr) { } void SystemHeap_RunBlockFunc(void* blk, size_t nBlk, size_t blkSize, BlockFunc blockFunc) { - uintptr_t pos = blk; + uintptr_t pos = (uintptr_t)blk; for (; pos < (uintptr_t)blk + (nBlk * blkSize); pos += (blkSize & ~0)) { blockFunc(pos); @@ -49,7 +49,7 @@ void SystemHeap_RunBlockFunc(void* blk, size_t nBlk, size_t blkSize, BlockFunc b } void SystemHeap_RunBlockFunc1(void* blk, size_t nBlk, size_t blkSize, BlockFunc1 blockFunc) { - uintptr_t pos = blk; + uintptr_t pos = (uintptr_t)blk; for (; pos < (uintptr_t)blk + (nBlk * blkSize); pos += (blkSize & ~0)) { blockFunc(pos, 2); @@ -62,7 +62,7 @@ void* SystemHeap_RunBlockFunc8(void* blk, size_t nBlk, size_t blkSize, BlockFunc } if ((blk != NULL) && (blockFunc != NULL)) { - uintptr_t pos = blk; + uintptr_t pos = (uintptr_t)blk; for (; pos < (uintptr_t)blk + (nBlk * blkSize); pos += (blkSize & ~0)) { blockFunc(pos, 0, 0, 0, 0, 0, 0, 0, 0); @@ -82,7 +82,7 @@ void SystemHeap_RunBlockFunc1Reverse(void* blk, size_t nBlk, size_t blkSize, Blo } if (blockFunc != NULL) { - start = blk; + start = (uintptr_t)blk; maskedBlkSize = (blkSize & ~0); pos = (uintptr_t)start + (nBlk * blkSize); diff --git a/src/boot/boot_main.c b/src/boot/boot_main.c index cc2097f0f..0f95871ea 100644 --- a/src/boot/boot_main.c +++ b/src/boot/boot_main.c @@ -1,5 +1,5 @@ #include "prevent_bss_reordering.h" -#include "global.h" +#include "carthandle.h" #include "idle.h" #include "stack.h" #include "stackcheck.h" diff --git a/src/boot/carthandle.c b/src/boot/carthandle.c new file mode 100644 index 000000000..9a4cf542d --- /dev/null +++ b/src/boot/carthandle.c @@ -0,0 +1,3 @@ +#include "carthandle.h" + +OSPiHandle* gCartHandle = NULL; diff --git a/src/boot/idle.c b/src/boot/idle.c index 0bd07813f..08f6d6ec7 100644 --- a/src/boot/idle.c +++ b/src/boot/idle.c @@ -68,8 +68,8 @@ void Main_Init(void) { prevSize = gDmaMgrDmaBuffSize; gDmaMgrDmaBuffSize = 0; - DmaMgr_SendRequestImpl(&dmaReq, SEGMENT_START(code), SEGMENT_ROM_START(code), - SEGMENT_ROM_END(code) - SEGMENT_ROM_START(code), 0, &mq, NULL); + DmaMgr_SendRequestImpl(&dmaReq, SEGMENT_START(code), SEGMENT_ROM_START(code), SEGMENT_ROM_SIZE_ALT(code), 0, &mq, + NULL); Main_InitScreen(); Main_InitMemory(); osRecvMesg(&mq, NULL, OS_MESG_BLOCK); diff --git a/src/boot/viconfig.c b/src/boot/viconfig.c index ccba4e932..1b9f1135c 100644 --- a/src/boot/viconfig.c +++ b/src/boot/viconfig.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "libc/stdbool.h" #include "idle.h" void ViConfig_UpdateVi(u32 black) { diff --git a/src/boot/yaz0.c b/src/boot/yaz0.c index edb7fc5cc..54a3481f1 100644 --- a/src/boot/yaz0.c +++ b/src/boot/yaz0.c @@ -1,7 +1,7 @@ #include "global.h" #include "fault.h" -u8 sYaz0DataBuffer[0x400]; +u8 sYaz0DataBuffer[0x400] ALIGNED(16); u8* sYaz0CurDataEnd; uintptr_t sYaz0CurRomStart; u32 sYaz0CurSize; diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index 5a5134145..d5ba90513 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -1,7 +1,9 @@ #include "global.h" +#include "carthandle.h" #include "fault.h" #include "stack.h" #include "stackcheck.h" +#include "z64dma.h" #include "z64thread.h" size_t gDmaMgrDmaBuffSize = 0x2000; diff --git a/src/code/TwoHeadArena.c b/src/code/TwoHeadArena.c index a476c3d74..c6a802e04 100644 --- a/src/code/TwoHeadArena.c +++ b/src/code/TwoHeadArena.c @@ -32,7 +32,7 @@ void* THA_GetTail(TwoHeadArena* tha) { void* THA_AllocHead(TwoHeadArena* tha, size_t size) { void* start = tha->head; - tha->head = (u8*)tha->head + size; + tha->head = (void*)((uintptr_t)tha->head + size); return start; } @@ -102,8 +102,8 @@ void* THA_AllocTailAlign(TwoHeadArena* tha, size_t size, uintptr_t mask) { * * @return Remaining size. A negative number indicates an overflow. */ -s32 THA_GetRemaining(TwoHeadArena* tha) { - return (s32)((u8*)tha->tail - (u8*)tha->head); +ptrdiff_t THA_GetRemaining(TwoHeadArena* tha) { + return (uintptr_t)tha->tail - (uintptr_t)tha->head; } /** @@ -115,7 +115,7 @@ u32 THA_IsCrash(TwoHeadArena* tha) { void THA_Reset(TwoHeadArena* tha) { tha->head = tha->start; - tha->tail = (u8*)tha->start + tha->size; + tha->tail = (void*)((uintptr_t)tha->start + tha->size); } /** diff --git a/src/code/c_keyframe.c b/src/code/c_keyframe.c index e999c7304..23a63e0a4 100644 --- a/src/code/c_keyframe.c +++ b/src/code/c_keyframe.c @@ -1,5 +1,5 @@ #include "global.h" - +#include "fixed_point.h" #define FMOD(x, mod) ((x) - ((s32)((x) * (1.0f / (mod))) * (f32)(mod))) // cKF_FrameControl_zeroClera diff --git a/src/code/cutscene_camera.c b/src/code/cutscene_camera.c index 24f6fcc18..d5f3ef4a3 100644 --- a/src/code/cutscene_camera.c +++ b/src/code/cutscene_camera.c @@ -516,9 +516,9 @@ s16 CutsceneCamera_Interp_Geo(Vec3f* camPos, f32* camFov, s16* camRoll, CsCmdCam interpState->curFrame++; if (camPos != NULL) { - OLib_Vec3fDiffToVecGeo(&sp40, &interpState->curPos, camPos); + sp40 = OLib_Vec3fDiffToVecGeo(&interpState->curPos, camPos); sp40.r = interpState->unk_20 / Math_FTanF(DEG_TO_RAD(*camFov)); - OLib_AddVecGeoToVec3f(camPos, &interpState->curPos, &sp40); + *camPos = OLib_AddVecGeoToVec3f(&interpState->curPos, &sp40); } if (camFov != NULL) { diff --git a/src/code/graph.c b/src/code/graph.c index ad4ad0286..6568a258d 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -43,7 +43,7 @@ void Graph_SetNextGfxPool(GraphicsContext* gfxCtx) { GfxPool* pool = &gGfxPools[gfxCtx->gfxPoolIdx % 2]; gGfxMasterDL = &pool->master; - gSegments[0x0E] = gGfxMasterDL; + gSegments[0x0E] = (uintptr_t)gGfxMasterDL; pool->headMagic = GFXPOOL_HEAD_MAGIC; pool->tailMagic = GFXPOOL_TAIL_MAGIC; @@ -61,7 +61,7 @@ void Graph_SetNextGfxPool(GraphicsContext* gfxCtx) { gfxCtx->debugBuffer = pool->debugBuffer; gfxCtx->curFrameBuffer = SysCfb_GetFramebuffer(gfxCtx->framebufferIndex % 2); - gSegments[0x0F] = gfxCtx->curFrameBuffer; + gSegments[0x0F] = (uintptr_t)gfxCtx->curFrameBuffer; gfxCtx->zbuffer = SysCfb_GetZBuffer(); @@ -179,7 +179,7 @@ retry: task->dramStack = (u64*)gGfxSPTaskStack; task->dramStackSize = sizeof(gGfxSPTaskStack); task->outputBuff = gGfxSPTaskOutputBufferPtr; - task->outputBuffSize = gGfxSPTaskOutputBufferEnd; + task->outputBuffSize = (void*)gGfxSPTaskOutputBufferEnd; task->dataPtr = (u64*)gGfxMasterDL; task->dataSize = 0; task->yieldDataPtr = (u64*)gGfxSPTaskYieldBuffer; diff --git a/src/code/main.c b/src/code/main.c index d3840eca5..14ee841ce 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -53,10 +53,10 @@ void Main(void* arg) { Check_RegionIsSupported(); Check_ExpansionPak(); - sysHeap = gSystemHeap; + sysHeap = (intptr_t)gSystemHeap; fb = 0x80780000; gSystemHeapSize = fb - sysHeap; - SystemHeap_Init(sysHeap, gSystemHeapSize); + SystemHeap_Init((void*)sysHeap, gSystemHeapSize); Regs_Init(); diff --git a/src/code/sched.c b/src/code/sched.c index f16880b61..c7fb5a495 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -95,8 +95,9 @@ void Sched_HandleAudioCancel(SchedContext* sched) { // AUDIO SP seems to be stopped osSyncPrintf("AUDIO SP止まっているようです\n"); } + send_mesg: - osSendMesg(&sched->interruptQ, RSP_DONE_MSG, OS_MESG_NOBLOCK); + osSendMesg(&sched->interruptQ, (OSMesg)RSP_DONE_MSG, OS_MESG_NOBLOCK); return; } @@ -157,8 +158,9 @@ void Sched_HandleGfxCancel(SchedContext* sched) { // GRAPH SP seems to be stopped osSyncPrintf("GRAPH SP止まっているようです\n"); } + send_mesg: - osSendMesg(&sched->interruptQ, RSP_DONE_MSG, OS_MESG_NOBLOCK); + osSendMesg(&sched->interruptQ, (OSMesg)RSP_DONE_MSG, OS_MESG_NOBLOCK); goto halt_rdp; } @@ -186,8 +188,8 @@ halt_rdp: if (dpTask->type == M_GFXTASK) { // Try to stop DP osSyncPrintf("DP止めようとします\n"); - bzero(dpTask->outputBuff, (u32)dpTask->outputBuffSize - (u32)dpTask->outputBuff); - osSendMesg(&sched->interruptQ, RDP_DONE_MSG, OS_MESG_NOBLOCK); + bzero(dpTask->outputBuff, (uintptr_t)dpTask->outputBuffSize - (uintptr_t)dpTask->outputBuff); + osSendMesg(&sched->interruptQ, (OSMesg)RDP_DONE_MSG, OS_MESG_NOBLOCK); } } } @@ -503,7 +505,7 @@ void Sched_HandleRDPDone(SchedContext* sched) { * been sent down the command queue. */ void Sched_SendEntryMsg(SchedContext* sched) { - osSendMesg(&sched->interruptQ, ENTRY_MSG, OS_MESG_BLOCK); + osSendMesg(&sched->interruptQ, (OSMesg)ENTRY_MSG, OS_MESG_BLOCK); } /** @@ -511,7 +513,7 @@ void Sched_SendEntryMsg(SchedContext* sched) { * to stop the last dispatched audio task. */ void Sched_SendAudioCancelMsg(SchedContext* sched) { - osSendMesg(&sched->interruptQ, RDP_AUDIO_CANCEL_MSG, OS_MESG_BLOCK); + osSendMesg(&sched->interruptQ, (OSMesg)RDP_AUDIO_CANCEL_MSG, OS_MESG_BLOCK); } /** @@ -519,7 +521,7 @@ void Sched_SendAudioCancelMsg(SchedContext* sched) { * to stop the last dispatched gfx task. */ void Sched_SendGfxCancelMsg(SchedContext* sched) { - osSendMesg(&sched->interruptQ, RSP_GFX_CANCEL_MSG, OS_MESG_BLOCK); + osSendMesg(&sched->interruptQ, (OSMesg)RSP_GFX_CANCEL_MSG, OS_MESG_BLOCK); } /** @@ -554,14 +556,14 @@ void Sched_FaultClient(void* param1, void* param2) { * threads or the OS. */ void Sched_ThreadEntry(void* arg) { - OSMesg msg = NULL; + s32 msg = 0; SchedContext* sched = (SchedContext*)arg; while (true) { - osRecvMesg(&sched->interruptQ, &msg, OS_MESG_BLOCK); + osRecvMesg(&sched->interruptQ, (OSMesg*)&msg, OS_MESG_BLOCK); // Check if it's a message from another thread or the OS - switch ((s32)msg) { + switch (msg) { case RDP_AUDIO_CANCEL_MSG: Sched_HandleAudioCancel(sched); continue; @@ -582,6 +584,7 @@ void Sched_ThreadEntry(void* arg) { Sched_HandleRDPDone(sched); continue; } + // Check if it's a message from the IrqMgr switch (((OSScMsg*)msg)->type) { case OS_SC_RETRACE_MSG: @@ -611,8 +614,8 @@ void Sched_Init(SchedContext* sched, void* stack, OSPri pri, u8 viModeType, UNK_ osCreateMesgQueue(&sched->interruptQ, sched->intBuf, ARRAY_COUNT(sched->intBuf)); osCreateMesgQueue(&sched->cmdQ, sched->cmdMsgBuf, ARRAY_COUNT(sched->cmdMsgBuf)); - osSetEventMesg(OS_EVENT_SP, &sched->interruptQ, RSP_DONE_MSG); - osSetEventMesg(OS_EVENT_DP, &sched->interruptQ, RDP_DONE_MSG); + osSetEventMesg(OS_EVENT_SP, &sched->interruptQ, (OSMesg)RSP_DONE_MSG); + osSetEventMesg(OS_EVENT_DP, &sched->interruptQ, (OSMesg)RDP_DONE_MSG); IrqMgr_AddClient(irqMgr, &sched->irqClient, &sched->interruptQ); Fault_AddClient(&sSchedFaultClient, Sched_FaultClient, sched, NULL); osCreateThread(&sched->thread, Z_THREAD_ID_SCHED, Sched_ThreadEntry, sched, stack, pri); diff --git a/src/code/sys_cmpdma.c b/src/code/sys_cmpdma.c index 715892b49..9e1a66d2e 100644 --- a/src/code/sys_cmpdma.c +++ b/src/code/sys_cmpdma.c @@ -43,9 +43,9 @@ void func_80178AC0(u16* src, void* dst, size_t size) { } } -void CmpDma_GetFileInfo(u8* segmentRom, s32 id, uintptr_t* outFileRom, size_t* size, s32* flag) { - u32 dataStart; - u32 refOff; +void CmpDma_GetFileInfo(uintptr_t segmentRom, s32 id, uintptr_t* outFileRom, size_t* size, s32* flag) { + uintptr_t dataStart; + uintptr_t refOff; DmaMgr_DmaRomToRam(segmentRom, &sDmaBuffer.dataStart, sizeof(sDmaBuffer.dataStart)); @@ -53,12 +53,12 @@ void CmpDma_GetFileInfo(u8* segmentRom, s32 id, uintptr_t* outFileRom, size_t* s refOff = id * sizeof(u32); // if id is >= idMax - if (refOff > (dataStart - 4)) { + if (refOff > (dataStart - sizeof(u32))) { *outFileRom = segmentRom; *size = 0; } else if (refOff == 0) { // get offset start of next file, i.e. size of first file - DmaMgr_DmaRomToRam(segmentRom + 4, &sDmaBuffer.dataSize, sizeof(sDmaBuffer.dataSize)); + DmaMgr_DmaRomToRam(segmentRom + sizeof(u32), &sDmaBuffer.dataSize, sizeof(sDmaBuffer.dataSize)); *outFileRom = segmentRom + dataStart; *size = sDmaBuffer.dataSize; } else { diff --git a/src/code/sys_flashrom.c b/src/code/sys_flashrom.c index 6666a26db..5ebc5dcba 100644 --- a/src/code/sys_flashrom.c +++ b/src/code/sys_flashrom.c @@ -206,12 +206,12 @@ void SysFlashrom_ThreadEntry(void* arg) { switch (req->requestType) { case FLASHROM_REQUEST_WRITE: req->response = SysFlashrom_WriteData(req->addr, req->pageNum, req->pageCount); - osSendMesg(&req->messageQueue, req->response, OS_MESG_BLOCK); + osSendMesg(&req->messageQueue, (OSMesg)req->response, OS_MESG_BLOCK); break; case FLASHROM_REQUEST_READ: req->response = SysFlashrom_ReadData(req->addr, req->pageNum, req->pageCount); - osSendMesg(&req->messageQueue, req->response, OS_MESG_BLOCK); + osSendMesg(&req->messageQueue, (OSMesg)req->response, OS_MESG_BLOCK); break; } } diff --git a/src/code/z_DLF.c b/src/code/z_DLF.c index cb226b30c..e71339bbb 100644 --- a/src/code/z_DLF.c +++ b/src/code/z_DLF.c @@ -8,15 +8,17 @@ void Overlay_LoadGameState(GameStateOverlay* overlayEntry) { if (overlayEntry->loadedRamAddr != NULL) { return; } + vramStart = overlayEntry->vramStart; if (vramStart == NULL) { overlayEntry->unk_28 = 0; return; } - overlayEntry->loadedRamAddr = Overlay_AllocateAndLoad(overlayEntry->vromStart, overlayEntry->vromEnd, - (uintptr_t)vramStart, (uintptr_t)overlayEntry->vramEnd); - if (overlayEntry->loadedRamAddr != NULL) { + overlayEntry->loadedRamAddr = + Overlay_AllocateAndLoad(overlayEntry->vromStart, overlayEntry->vromEnd, vramStart, overlayEntry->vramEnd); + + if (overlayEntry->loadedRamAddr != NULL) { overlayEntry->unk_14 = (void*)(uintptr_t)((overlayEntry->unk_14 != NULL) ? (void*)((uintptr_t)overlayEntry->unk_14 - (intptr_t)((uintptr_t)overlayEntry->vramStart - @@ -69,11 +71,11 @@ void Overlay_FreeGameState(GameStateOverlay* overlayEntry) { (uintptr_t)overlayEntry->loadedRamAddr)) : NULL); - overlayEntry->destroy = (uintptr_t)((overlayEntry->destroy != NULL) - ? (void*)((uintptr_t)overlayEntry->destroy + - (intptr_t)((uintptr_t)overlayEntry->vramStart - - (uintptr_t)overlayEntry->loadedRamAddr)) - : NULL); + overlayEntry->destroy = (void*)(uintptr_t)((overlayEntry->destroy != NULL) + ? (void*)((uintptr_t)overlayEntry->destroy + + (intptr_t)((uintptr_t)overlayEntry->vramStart - + (uintptr_t)overlayEntry->loadedRamAddr)) + : NULL); overlayEntry->unk_20 = (void*)(uintptr_t)((overlayEntry->unk_20 != NULL) ? (void*)((uintptr_t)overlayEntry->unk_20 + diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 383bdc121..f7f87979a 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -1402,7 +1402,17 @@ void Actor_SpawnHorse(PlayState* play, Player* player) { Horse_Spawn(play, player); } -s32 func_800B724C(PlayState* play, Actor* actor, u8 csAction) { +/** + * Sets a Player Cutscene Action specified by `csAction`. + * + * `haltActorsDuringCsAction` being set to false in this function means that all actors will + * be able to update while Player is performing the cutscene action. + * + * Note: due to how player implements initializing the cutscene action state, `haltActorsDuringCsAction` + * will only be considered the first time player starts a `csAction`. + * Player must leave the cutscene action state and enter it again before halting actors can be toggled. + */ +s32 Player_SetCsAction(PlayState* play, Actor* csActor, u8 csAction) { Player* player = GET_PLAYER(play); if ((player->csAction == PLAYER_CSACTION_5) || @@ -1411,15 +1421,26 @@ s32 func_800B724C(PlayState* play, Actor* actor, u8 csAction) { } player->csAction = csAction; - player->csActor = actor; + player->csActor = csActor; player->cv.haltActorsDuringCsAction = false; return true; } -s32 func_800B7298(PlayState* play, Actor* actor, u8 csAction) { +/** + * Sets a Player Cutscene Action specified by `csAction`. + * + * `haltActorsDuringCsAction` being set to true in this function means that eventually `PLAYER_STATE1_20000000` will be + * set. This makes it so actors belonging to categories `ACTORCAT_ENEMY` and `ACTORCAT_MISC` will not update while + * Player is performing the cutscene action. + * + * Note: due to how player implements initializing the cutscene action state, `haltActorsDuringCsAction` + * will only be considered the first time player starts a `csAction`. + * Player must leave the cutscene action state and enter it again before halting actors can be toggled. + */ +s32 Player_SetCsActionWithHaltedActors(PlayState* play, Actor* csActor, u8 csAction) { Player* player = GET_PLAYER(play); - if (func_800B724C(play, actor, csAction)) { + if (Player_SetCsAction(play, csActor, csAction)) { player->cv.haltActorsDuringCsAction = true; return true; } @@ -1794,19 +1815,15 @@ void func_800B8118(Actor* actor, PlayState* play, s32 flag) { } } -PosRot* Actor_GetFocus(PosRot* dest, Actor* actor) { - *dest = actor->focus; - - return dest; +PosRot Actor_GetFocus(Actor* actor) { + return actor->focus; } -PosRot* Actor_GetWorld(PosRot* dest, Actor* actor) { - *dest = actor->world; - - return dest; +PosRot Actor_GetWorld(Actor* actor) { + return actor->world; } -PosRot* Actor_GetWorldPosShapeRot(PosRot* dest, Actor* actor) { +PosRot Actor_GetWorldPosShapeRot(Actor* actor) { PosRot sp1C; Math_Vec3f_Copy(&sp1C.pos, &actor->world.pos); @@ -1816,9 +1833,8 @@ PosRot* Actor_GetWorldPosShapeRot(PosRot* dest, Actor* actor) { sp1C.pos.y += player->unk_AC0 * actor->scale.y; } sp1C.rot = actor->shape.rot; - *dest = sp1C; - return dest; + return sp1C; } /** @@ -3510,7 +3526,7 @@ s32 Target_InTargetableScreenRegion(PlayState* play, Actor* actor) { * - Must not be blocked by a surface (?) * * This function also checks for the nearest enemy actor, which allows determining if enemy background music should be - * played. This actor is stored in `targetContext.bgmEnemy` and its distance is stored in `sBgmEnemyDistSq` + * played. This actor is stored in `targetCtx.bgmEnemy` and its distance is stored in `sBgmEnemyDistSq` * * This function is expected to be called with almost every actor category in each cycle. On a new cycle its global * variables must be reset by the caller, otherwise the information of the previous cycle will be retained on this one. diff --git a/src/code/z_camera.c b/src/code/z_camera.c index b3fc36325..ba3ce2a61 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -246,14 +246,13 @@ void Camera_SetUpdateRatesSlow(Camera* camera) { camera->fovUpdateRate = 0.01f; } -Vec3f* Camera_Vec3sToVec3f(Vec3f* dest, Vec3s* src) { - Vec3f copy; +Vec3f Camera_Vec3sToVec3f(Vec3s* src) { + Vec3f dest; - copy.x = src->x; - copy.y = src->y; - copy.z = src->z; + dest.x = src->x; + dest.y = src->y; + dest.z = src->z; - *dest = copy; return dest; } @@ -281,7 +280,7 @@ f32 Camera_GetFocalActorHeight(Camera* camera) { if (focalActor == &GET_PLAYER(camera->play)->actor) { focalActorHeight = Player_GetHeight((Player*)focalActor); } else { - Actor_GetFocus(&focalActorFocus, focalActor); + focalActorFocus = Actor_GetFocus(focalActor); focalActorHeight = focalActorFocus.pos.y - camera->focalActorPosRot.pos.y; if (focalActorHeight == 0.0f) { focalActorHeight = 10.0f; @@ -477,17 +476,15 @@ PlayerMeleeWeaponState func_800CBAAC(Camera* camera) { } } -s32 Camera_GetFocalActorPos(Vec3f* dst, Camera* camera) { +Vec3f Camera_GetFocalActorPos(Camera* camera) { PosRot focalPosRot; Actor* focalActor = camera->focalActor; if (camera->focalActor == &GET_PLAYER(camera->play)->actor) { - *dst = ((Player*)focalActor)->bodyPartsPos[PLAYER_BODYPART_WAIST]; - return dst; + return ((Player*)focalActor)->bodyPartsPos[PLAYER_BODYPART_WAIST]; } else { - Actor_GetWorldPosShapeRot(&focalPosRot, camera->focalActor); - *dst = focalPosRot.pos; - return dst; + focalPosRot = Actor_GetWorldPosShapeRot(camera->focalActor); + return focalPosRot.pos; } } @@ -551,7 +548,7 @@ s32 func_800CBC84(Camera* camera, Vec3f* from, CameraCollision* to, s32 arg3) { CollisionPoly** floorPoly; s32 floorBgId; - OLib_Vec3fDistNormalize(&fromToNorm, from, &to->pos); + fromToNorm = OLib_Vec3fDistNormalize(from, &to->pos); toPoint.x = to->pos.x + fromToNorm.x; toPoint.y = to->pos.y + fromToNorm.y; toPoint.z = to->pos.z + fromToNorm.z; @@ -630,7 +627,7 @@ s32 Camera_BgCheckInfo(Camera* camera, Vec3f* from, CameraCollision* to) { return to->bgId + 1; } - OLib_Vec3fDistNormalize(&fromToNorm, from, &to->pos); + fromToNorm = OLib_Vec3fDistNormalize(from, &to->pos); to->norm.x = -fromToNorm.x; to->norm.y = -fromToNorm.y; to->norm.z = -fromToNorm.z; @@ -686,13 +683,13 @@ s16 func_800CC260(Camera* camera, Vec3f* arg1, Vec3f* arg2, VecGeo* arg3, Actor* s32 i; sp64 = *arg2; - Actor_GetFocus(&playerFocus, &player->actor); // playerFocus unused + playerFocus = Actor_GetFocus(&player->actor); // playerFocus unused sp90 = *arg3; angleCount = ARRAY_COUNT(D_801B9E18); for (i = 0; i < angleCount; i++) { - OLib_AddVecGeoToVec3f(arg1, arg2, &sp90); + *arg1 = OLib_AddVecGeoToVec3f(arg2, &sp90); if (!Camera_CheckOOB(camera, arg1, &sp64) && !func_800CBC30(camera, arg2->y, arg1->y) && !CollisionCheck_LineOCCheck(camera->play, &camera->play->colChkCtx, arg2, arg1, exclusions, @@ -848,7 +845,7 @@ s32 Camera_GetWaterBoxBgCamSetting(Camera* camera, f32* waterY) { s32 camSetting; s32 bgId; - Actor_GetWorldPosShapeRot(&playerPosShape, camera->focalActor); + playerPosShape = Actor_GetWorldPosShapeRot(camera->focalActor); *waterY = playerPosShape.pos.y; if (!WaterBox_GetSurfaceImpl(camera->play, &camera->play->colCtx, playerPosShape.pos.x, playerPosShape.pos.z, @@ -1076,7 +1073,7 @@ f32 func_800CCCEC(Camera* camera, s16 reset) { /** * Calculates a new Up vector from the pitch, yaw, roll */ -Vec3f* Camera_CalcUpVec(Vec3f* viewUp, s16 pitch, s16 yaw, s16 roll) { +Vec3f Camera_CalcUpVec(s16 pitch, s16 yaw, s16 roll) { f32 sinP = Math_SinS(pitch); f32 cosP = Math_CosS(pitch); f32 sinY = Math_SinS(yaw); @@ -1119,9 +1116,7 @@ Vec3f* Camera_CalcUpVec(Vec3f* viewUp, s16 pitch, s16 yaw, s16 roll) { up.y = DOTXYZ(baseUp, rollMtxRow2); up.z = DOTXYZ(baseUp, rollMtxRow3); - *viewUp = up; - - return viewUp; + return up; } f32 Camera_ClampLerpScale(Camera* camera, f32 maxLerpScale) { @@ -1183,14 +1178,13 @@ void Camera_UpdateInterface(s32 interfaceFlags) { } } -Vec3f* Camera_BgCheckCorner(Vec3f* dst, Vec3f* linePointA, Vec3f* linePointB, CameraCollision* pointAColChk, - CameraCollision* pointBColChk) { +Vec3f Camera_BgCheckCorner(Vec3f* linePointA, Vec3f* linePointB, CameraCollision* pointAColChk, + CameraCollision* pointBColChk) { Vec3f closestPoint; func_800CAA14(pointAColChk->poly, pointBColChk->poly, linePointA, linePointB, &closestPoint); - *dst = closestPoint; - return dst; + return closestPoint; } /** @@ -1221,7 +1215,7 @@ s32 func_800CD44C(Camera* camera, VecGeo* diffGeo, CameraCollision* camEyeCollis // collision found between at->ey camAtCollision->pos = *at; - OLib_Vec3fToVecGeo(&camEyeCollision->geoNorm, &camEyeCollision->norm); + camEyeCollision->geoNorm = OLib_Vec3fToVecGeo(&camEyeCollision->norm); if (camEyeCollision->geoNorm.pitch > 0x2EE0) { // 65.9 degrees camEyeCollision->geoNorm.yaw = diffGeo->yaw; @@ -1247,7 +1241,7 @@ s32 func_800CD44C(Camera* camera, VecGeo* diffGeo, CameraCollision* camEyeCollis return 3; } - OLib_Vec3fToVecGeo(&camAtCollision->geoNorm, &camAtCollision->norm); + camAtCollision->geoNorm = OLib_Vec3fToVecGeo(&camAtCollision->norm); if (camAtCollision->geoNorm.pitch > 0x2EE0) { // 65.9 degrees camAtCollision->geoNorm.yaw = BINANG_ROT180(diffGeo->yaw); @@ -1277,7 +1271,7 @@ f32 Camera_CalcSlopeYAdj(Vec3f* floorNorm, s16 playerYRot, s16 eyeAtYaw, f32 adj f32 tmp; VecGeo floorNormGeo; - OLib_Vec3fToVecGeo(&floorNormGeo, floorNorm); + floorNormGeo = OLib_Vec3fToVecGeo(floorNorm); tmp = Math_CosS(floorNormGeo.pitch) * Math_CosS(playerYRot - floorNormGeo.yaw); @@ -1425,7 +1419,7 @@ s32 Camera_CalcAtForParallel(Camera* camera, VecGeo* arg1, f32 yOffset, f32 xzOf focalActorAtOffsetTargetGeo.r = func_800CCCEC(camera, flags & 0x10); focalActorAtOffsetTargetGeo.yaw = focalActorPosRot->rot.y + 0x4000; focalActorAtOffsetTargetGeo.pitch = 0; - OLib_VecGeoToVec3f(&focalActorAtOffsetTarget, &focalActorAtOffsetTargetGeo); + focalActorAtOffsetTarget = OLib_VecGeoToVec3f(&focalActorAtOffsetTargetGeo); } else { f32 xOffset = camera->focalActorAtOffset.x + camera->unk_0F0.x; f32 zOffset = camera->focalActorAtOffset.z + camera->unk_0F0.z; @@ -1512,9 +1506,9 @@ s32 Camera_CalcAtForFriendlyLockOn(Camera* camera, VecGeo* eyeAtDir, Vec3f* targ atTarget = focalActorPosRot->pos; atTarget.y += focalActorHeight; - OLib_Vec3fDiffToVecGeo(outPlayerToTargetDir, &atTarget, targetPos); - + *outPlayerToTargetDir = OLib_Vec3fDiffToVecGeo(&atTarget, targetPos); sp5C = *outPlayerToTargetDir; + sp5C.r = (distance < sp5C.r) ? (sp5C.r * 0.2f) : ((sp5C.r * 0.9f) - (sp5C.r * 0.7f * (sp5C.r / distance))); if (flags & FLG_OFFGROUND) { @@ -1522,7 +1516,7 @@ s32 Camera_CalcAtForFriendlyLockOn(Camera* camera, VecGeo* eyeAtDir, Vec3f* targ camera->yOffsetUpdateRate = camera->xzOffsetUpdateRate = 0.01f; } - OLib_VecGeoToVec3f(&sp68, &sp5C); + sp68 = OLib_VecGeoToVec3f(&sp5C); focalActorAtOffsetTarget.x += sp68.x; focalActorAtOffsetTarget.y += sp68.y; @@ -1604,7 +1598,7 @@ s32 Camera_CalcAtForEnemyLockOn(Camera* camera, VecGeo* arg1, Vec3f* arg2, f32 y camera->xzOffsetUpdateRate = 0.01f; } - OLib_VecGeoToVec3f(&sp60, &sp58); + sp60 = OLib_VecGeoToVec3f(&sp58); focalActorAtOffsetTarget.x += sp60.x; focalActorAtOffsetTarget.y += sp60.y; @@ -1672,7 +1666,7 @@ s32 Camera_CalcAtForHorse(Camera* camera, VecGeo* eyeAtDir, f32 yOffset, f32* yP Player* player = (Player*)camera->focalActor; PosRot horsePosRot; - Actor_GetWorld(&horsePosRot, player->rideActor); + horsePosRot = Actor_GetWorld(player->rideActor); if (EN_HORSE_CHECK_JUMPING((EnHorse*)player->rideActor)) { horsePosRot.pos.y -= 49.0f; @@ -1889,8 +1883,8 @@ void Camera_CalcDefaultSwing(Camera* camera, VecGeo* arg1, VecGeo* arg2, f32 arg switch (sp8C) { case 1: - Camera_BgCheckCorner(&swing->collisionClosePoint, &camera->at, &camera->eyeNext, &swing->atEyeColChk, - &swing->eyeAtColChk); + swing->collisionClosePoint = + Camera_BgCheckCorner(&camera->at, &camera->eyeNext, &swing->atEyeColChk, &swing->eyeAtColChk); // fallthrough case 2: peekAroundPoint.x = swing->collisionClosePoint.x + (swing->atEyeColChk.norm.x + swing->eyeAtColChk.norm.x); @@ -1898,11 +1892,11 @@ void Camera_CalcDefaultSwing(Camera* camera, VecGeo* arg1, VecGeo* arg2, f32 arg peekAroundPoint.z = swing->collisionClosePoint.z + (swing->atEyeColChk.norm.z + swing->eyeAtColChk.norm.z); sp30 = &camera->eyeNext; - OLib_Vec3fDiffToVecGeo(&sp50, at, &peekAroundPoint); + sp50 = OLib_Vec3fDiffToVecGeo(at, &peekAroundPoint); sp50.r = arg1->r; swing->unk_64 = 1; swing->swingUpdateRate = 1.5f; - OLib_AddVecGeoToVec3f(&sp58.pos, at, &sp50); + sp58.pos = OLib_AddVecGeoToVec3f(at, &sp50); if (func_800CBC84(camera, &swing->eyeAtColChk.pos, &sp58, 0) == 0) { sp50.yaw = @@ -1932,12 +1926,12 @@ void Camera_CalcDefaultSwing(Camera* camera, VecGeo* arg1, VecGeo* arg2, f32 arg sp50.pitch = Math_CosS(swing->atEyeColChk.geoNorm.pitch) * 0x3FFC; } sp50.r = 60.0f - sp88; - OLib_AddVecGeoToVec3f(&sp58.pos, sp30, &sp50); + sp58.pos = OLib_AddVecGeoToVec3f(sp30, &sp50); } else { sp50.yaw = Camera_AngleDiffAndScale(arg1->yaw, arg2->yaw, camera->speedRatio) + arg2->yaw; sp50.pitch = Camera_AngleDiffAndScale(arg1->pitch, arg2->pitch, camera->speedRatio) + arg2->pitch; sp50.r = arg1->r; - OLib_AddVecGeoToVec3f(&sp58.pos, at, &sp50); + sp58.pos = OLib_AddVecGeoToVec3f(at, &sp50); } func_800CBC84(camera, at, &sp58, 0); *eye = sp58.pos; @@ -2005,8 +1999,8 @@ s32 Camera_Normal1(Camera* camera) { sCameraInterfaceFlags = roData->interfaceFlags; - OLib_Vec3fDiffToVecGeo(&spA4, at, eye); - OLib_Vec3fDiffToVecGeo(&sp9C, at, eyeNext); + spA4 = OLib_Vec3fDiffToVecGeo(at, eye); + sp9C = OLib_Vec3fDiffToVecGeo(at, eyeNext); switch (camera->animState) { case 20: @@ -2166,7 +2160,7 @@ s32 Camera_Normal1(Camera* camera) { rwData->unk_10 = 120.0f; } - OLib_Vec3fDiffToVecGeo(&spB4, at, eyeNext); + spB4 = OLib_Vec3fDiffToVecGeo(at, eyeNext); if ((roData->interfaceFlags & NORMAL1_FLAG_7) && (rwData->unk_0A < 0)) { if (camera->focalActor == &GET_PLAYER(camera->play)->actor) { @@ -2223,7 +2217,7 @@ s32 Camera_Normal1(Camera* camera) { if (1) {} temp = &D_801ED920->world.pos; - OLib_Vec3fDiffToVecGeo(&sp74, &sp40->pos, temp); + sp74 = OLib_Vec3fDiffToVecGeo(&sp40->pos, temp); sp72 = sp40->rot.y - sp74.yaw; // Interface and shrink-window flags if ((roData->interfaceFlags & 0xFF00) == 0xFF00) { @@ -2250,7 +2244,7 @@ s32 Camera_Normal1(Camera* camera) { VecGeo sp64; if ((camera->speedRatio > 0.1f) || (rwData->unk_0A > 0x4B0)) { - OLib_Vec3fToVecGeo(&sp64, &camera->unk_0F0); + sp64 = OLib_Vec3fToVecGeo(&camera->unk_0F0); if (!(roData->interfaceFlags & NORMAL1_FLAG_3) || !func_800CB924(camera)) { spB4.yaw = Camera_CalcDefaultYaw(camera, sp9C.yaw, sp64.yaw, roData->unk_14, spC0); } @@ -2280,7 +2274,7 @@ s32 Camera_Normal1(Camera* camera) { spB4.pitch = -0x36B0; } - OLib_AddVecGeoToVec3f(eyeNext, at, &spB4); + *eyeNext = OLib_AddVecGeoToVec3f(at, &spB4); if ((camera->status == CAM_STATUS_ACTIVE) && !(roData->interfaceFlags & NORMAL1_FLAG_4) && (spC4 <= 0.9f)) { if (!func_800CBA7C(camera)) { @@ -2306,7 +2300,7 @@ s32 Camera_Normal1(Camera* camera) { } } - OLib_Vec3fDiffToVecGeo(&spAC, eye, at); + spAC = OLib_Vec3fDiffToVecGeo(eye, at); camera->inputDir.x = spAC.pitch; camera->inputDir.y = spAC.yaw; camera->inputDir.z = 0; @@ -2402,8 +2396,8 @@ s32 Camera_Normal3(Camera* camera) { roData->interfaceFlags = GET_NEXT_RO_DATA(values); } - OLib_Vec3fDiffToVecGeo(&sp70, at, eye); - OLib_Vec3fDiffToVecGeo(&sp68, at, eyeNext); + sp70 = OLib_Vec3fDiffToVecGeo(at, eye); + sp68 = OLib_Vec3fDiffToVecGeo(at, eyeNext); sUpdateCameraDirection = true; sCameraInterfaceFlags = roData->interfaceFlags; @@ -2468,7 +2462,7 @@ s32 Camera_Normal3(Camera* camera) { } sp88 = (roData->distMax + roData->distMin) * 0.5f; - OLib_Vec3fDiffToVecGeo(&sp80, at, eyeNext); + sp80 = OLib_Vec3fDiffToVecGeo(at, eyeNext); temp_f2 = Camera_ClampDist1(camera, sp80.r, roData->distMin, roData->distMax, rwData->distTimer); phi_f2 = sp88 - temp_f2; @@ -2493,7 +2487,7 @@ s32 Camera_Normal3(Camera* camera) { temp_f2 = 1.0f; } else { sp62 = BINANG_SUB(focalActorPosRot->rot.y, BINANG_ROT180(sp68.yaw)); - OLib_Vec3fToVecGeo(&sp78, &camera->unk_0F0); + sp78 = OLib_Vec3fToVecGeo(&camera->unk_0F0); phi_v1_2 = focalActorPosRot->rot.y - sp78.yaw; if (phi_v1_2 < 0) { phi_v1_2 *= -1; @@ -2519,7 +2513,7 @@ s32 Camera_Normal3(Camera* camera) { } } - OLib_AddVecGeoToVec3f(eyeNext, at, &sp80); + *eyeNext = OLib_AddVecGeoToVec3f(at, &sp80); if (camera->status == CAM_STATUS_ACTIVE) { *eye = *eyeNext; @@ -2608,7 +2602,7 @@ s32 Camera_Normal0(Camera* camera) { if (RELOAD_PARAMS(camera)) { bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamOrActorCsCamFuncData(camera, camera->bgCamIndex); - Camera_Vec3sToVec3f(&rwData->unk_00, &bgCamFuncData->pos); + rwData->unk_00 = Camera_Vec3sToVec3f(&bgCamFuncData->pos); rwData->unk_20 = bgCamFuncData->rot.x; rwData->unk_22 = bgCamFuncData->rot.y; rwData->unk_24 = focalActorPosRot->pos.y; @@ -2636,7 +2630,7 @@ s32 Camera_Normal0(Camera* camera) { sp88.pitch = rwData->unk_20; sp88.yaw = rwData->unk_22; sp88.r = 100.0f; - OLib_VecGeoToVec3f(&rwData->unk_0C, &sp88); + rwData->unk_0C = OLib_VecGeoToVec3f(&sp88); } camera->animState = 1; camera->yawUpdateRateInv = 50.0f; @@ -2648,8 +2642,8 @@ s32 Camera_Normal0(Camera* camera) { if (1) {} } - OLib_Vec3fDiffToVecGeo(&sp80, at, eye); - OLib_Vec3fDiffToVecGeo(&sp78, at, eyeNext); + sp80 = OLib_Vec3fDiffToVecGeo(at, eye); + sp78 = OLib_Vec3fDiffToVecGeo(at, eyeNext); camera->speedRatio *= 0.50f; spA4 = camera->speedRatio * 0.5f; @@ -2678,8 +2672,8 @@ s32 Camera_Normal0(Camera* camera) { } rwData->unk_00.y = focalActorPosRot->pos.y; - OLib_Vec3fDiffToVecGeo(&sp88, &rwData->unk_00, at); - OLib_Vec3fDiffToVecGeo(&sp90, at, eyeNext); + sp88 = OLib_Vec3fDiffToVecGeo(&rwData->unk_00, at); + sp90 = OLib_Vec3fDiffToVecGeo(at, eyeNext); if (rwData->unk_2C & 2) { phi_a1 = rwData->unk_22; @@ -2725,7 +2719,7 @@ s32 Camera_Normal0(Camera* camera) { sp98.pitch += ((s16)(-0x38E - sp98.pitch) >> 2); } } - OLib_AddVecGeoToVec3f(eyeNext, at, &sp98); + *eyeNext = OLib_AddVecGeoToVec3f(at, &sp98); *eye = *eyeNext; @@ -2734,7 +2728,7 @@ s32 Camera_Normal0(Camera* camera) { Camera_BgCheck(camera, at, eye); } else { func_800CBFA4(camera, at, eye, 3); - OLib_Vec3fDiffToVecGeo(&sp98, eye, at); + sp98 = OLib_Vec3fDiffToVecGeo(eye, at); camera->inputDir.x = sp98.pitch; camera->inputDir.y = sp98.yaw; camera->inputDir.z = 0; @@ -2798,9 +2792,9 @@ s32 Camera_Parallel1(Camera* camera) { rwData->unk_00 = roData->unk_04; } - OLib_Vec3fDiffToVecGeo(&sp80, at, eye); - OLib_Vec3fDiffToVecGeo(&sp78, at, eyeNext); - Camera_GetFocalActorPos(&spA4, camera); + sp80 = OLib_Vec3fDiffToVecGeo(at, eye); + sp78 = OLib_Vec3fDiffToVecGeo(at, eyeNext); + spA4 = Camera_GetFocalActorPos(camera); switch (camera->animState) { case 20: @@ -2829,7 +2823,7 @@ s32 Camera_Parallel1(Camera* camera) { camera->dist = 2.0f * roData->unk_04; sp78.r = camera->dist; sp80.r = sp78.r; - OLib_AddVecGeoToVec3f(eye, at, &sp80); + *eye = OLib_AddVecGeoToVec3f(at, &sp80); *eyeNext = *eye; } @@ -2893,7 +2887,7 @@ s32 Camera_Parallel1(Camera* camera) { case (PARALLEL1_FLAG_2 | PARALLEL1_FLAG_1): if (rwData->timer3 == 1) { - OLib_Vec3fDiffToVecGeo(&sp88, &rwData->unk_10, &spA4); + sp88 = OLib_Vec3fDiffToVecGeo(&rwData->unk_10, &spA4); rwData->unk_1E = ((ABS(BINANG_SUB(sp88.yaw, sp80.yaw)) < 0x3A98) || Camera_IsClimbingLedge(camera)) ? sp80.yaw : sp80.yaw + (s16)((BINANG_SUB(sp88.yaw, sp80.yaw) >> 2) * 3); @@ -3023,7 +3017,7 @@ s32 Camera_Parallel1(Camera* camera) { sp90.r = camera->dist; } } else { - OLib_Vec3fDiffToVecGeo(&sp90, at, eyeNext); + sp90 = OLib_Vec3fDiffToVecGeo(at, eyeNext); sp90.r = camera->dist; if (roData->interfaceFlags & PARALLEL1_FLAG_1) { @@ -3059,7 +3053,7 @@ s32 Camera_Parallel1(Camera* camera) { rwData->timer3--; } - OLib_AddVecGeoToVec3f(eyeNext, at, &sp90); + *eyeNext = OLib_AddVecGeoToVec3f(at, &sp90); if (camera->status == CAM_STATUS_ACTIVE) { if ((camera->play->envCtx.skyboxDisabled == 0) || (roData->interfaceFlags & PARALLEL1_FLAG_4)) { @@ -3165,8 +3159,8 @@ s32 Camera_Jump2(Camera* camera) { roData->interfaceFlags = GET_NEXT_RO_DATA(values); } - OLib_Vec3fDiffToVecGeo(&sp9C, at, eye); - OLib_Vec3fDiffToVecGeo(&spA4, at, eyeNext); + sp9C = OLib_Vec3fDiffToVecGeo(at, eye); + spA4 = OLib_Vec3fDiffToVecGeo(at, eyeNext); sCameraInterfaceFlags = roData->interfaceFlags; @@ -3213,7 +3207,7 @@ s32 Camera_Jump2(Camera* camera) { camera->rUpdateRateInv = 1800.0f; Camera_CalcAtDefault(camera, &spA4, roData->unk_00, 0); - OLib_Vec3fDiffToVecGeo(&spB4, at, eye); + spB4 = OLib_Vec3fDiffToVecGeo(at, eye); //! FAKE: Unused yNormal = roData->unk_04; @@ -3269,7 +3263,7 @@ s32 Camera_Jump2(Camera* camera) { spB4.pitch = CLAMP_MAX(spB4.pitch, DEG_TO_BINANG(60.43f)); spB4.pitch = CLAMP_MIN(spB4.pitch, -DEG_TO_BINANG(60.43f)); - OLib_AddVecGeoToVec3f(eyeNext, at, &spB4); + *eyeNext = OLib_AddVecGeoToVec3f(at, &spB4); sp60.pos = *eyeNext; if (func_800CBC84(camera, at, &sp60, 0) != 0) { @@ -3277,12 +3271,12 @@ s32 Camera_Jump2(Camera* camera) { spAC.pitch = 0; spAC.r = spB4.r; spAC.yaw = spB4.yaw; - OLib_AddVecGeoToVec3f(&sp60.pos, at, &spAC); + sp60.pos = OLib_AddVecGeoToVec3f(at, &spAC); if (func_800CBC84(camera, at, &sp60, 0) != 0) { *eye = spC8; } else { spB4.pitch = Camera_ScaledStepToCeilS(0, spB4.pitch, 0.2f, 5); - OLib_AddVecGeoToVec3f(eye, at, &spB4); + *eye = OLib_AddVecGeoToVec3f(at, &spB4); func_800CBFA4(camera, at, eye, 0); } } else { @@ -3328,7 +3322,7 @@ s32 Camera_Jump3(Camera* camera) { s32 sp58; focalActorHeight = Camera_GetFocalActorHeight(camera); - Actor_GetFocus(&focalActorFocus, camera->focalActor); + focalActorFocus = Actor_GetFocus(camera->focalActor); sp60 = camera->waterYPos - sp48->y; sp58 = false; @@ -3365,8 +3359,8 @@ s32 Camera_Jump3(Camera* camera) { rwData->timer2--; } - OLib_Vec3fDiffToVecGeo(&sp9C, sp44, sp48); - OLib_Vec3fDiffToVecGeo(&sp94, sp44, sp40); + sp9C = OLib_Vec3fDiffToVecGeo(sp44, sp48); + sp94 = OLib_Vec3fDiffToVecGeo(sp44, sp40); if (!RELOAD_PARAMS(camera) && !sp58) { } else { @@ -3454,7 +3448,7 @@ s32 Camera_Jump3(Camera* camera) { Camera_CalcAtDefault(camera, &sp94, roData->unk_00, roData->interfaceFlags); } - OLib_Vec3fDiffToVecGeo(&spAC, sp44, sp40); + spAC = OLib_Vec3fDiffToVecGeo(sp44, sp40); spAC.r = Camera_ClampDist1(camera, spAC.r, roData->unk_04, roData->unk_08, rwData->timer1); camera->dist = spAC.r; @@ -3499,7 +3493,7 @@ s32 Camera_Jump3(Camera* camera) { spAC.pitch = -DEG_TO_BINANG(29.995f); } - OLib_AddVecGeoToVec3f(sp40, sp44, &spAC); + *sp40 = OLib_AddVecGeoToVec3f(sp44, &spAC); if ((camera->status == CAM_STATUS_ACTIVE) && !(roData->interfaceFlags & JUMP3_FLAG_6)) { if (func_800CBA7C(camera) == 0) { @@ -3512,7 +3506,7 @@ s32 Camera_Jump3(Camera* camera) { camera->inputDir.y = sp9C.yaw + 0x8000; camera->inputDir.z = 0; } else { - OLib_Vec3fDiffToVecGeo(&spAC, sp48, sp44); + spAC = OLib_Vec3fDiffToVecGeo(sp48, sp44); camera->inputDir.x = spAC.pitch; camera->inputDir.y = spAC.yaw; camera->inputDir.z = 0; @@ -3649,8 +3643,8 @@ s32 Camera_Battle1(Camera* camera) { focalActorHeight += roData->yOffset; - OLib_Vec3fDiffToVecGeo(&atToEyeDir, at, eye); - OLib_Vec3fDiffToVecGeo(&atToEyeNextDir, at, eyeNext); + atToEyeDir = OLib_Vec3fDiffToVecGeo(at, eye); + atToEyeNextDir = OLib_Vec3fDiffToVecGeo(at, eyeNext); if ((camera->target == NULL) || (camera->target->update == NULL)) { camera->target = NULL; @@ -3674,7 +3668,7 @@ s32 Camera_Battle1(Camera* camera) { camera->dist = 2.0f * roData->unk_04; atToEyeNextDir.r = camera->dist; atToEyeDir.r = atToEyeNextDir.r; - OLib_AddVecGeoToVec3f(eye, at, &atToEyeDir); + *eye = OLib_AddVecGeoToVec3f(at, &atToEyeDir); *eyeNext = *eye; } } @@ -3697,7 +3691,7 @@ s32 Camera_Battle1(Camera* camera) { camera->atLerpStepScale = Camera_ClampLerpScale(camera, isOffGround ? roData->unk_28 : roData->unk_24); } - Actor_GetFocus(&camera->targetPosRot, camera->target); + camera->targetPosRot = Actor_GetFocus(camera->target); if (rwData->unk_08 != camera->target) { camera->animState = 0; @@ -3706,7 +3700,7 @@ s32 Camera_Battle1(Camera* camera) { sp120 = camera->focalActorPosRot.pos; sp120.y += focalActorHeight; - OLib_Vec3fDiffToVecGeo(&spA4, &sp120, &camera->targetPosRot.pos); + spA4 = OLib_Vec3fDiffToVecGeo(&sp120, &camera->targetPosRot.pos); sp104 = func_800CD6CC(camera->target); if (sp104 > (PREG(86) + 800.0f)) { @@ -3727,12 +3721,12 @@ s32 Camera_Battle1(Camera* camera) { roData->interfaceFlags); sp88 = spA4.yaw; - OLib_Vec3fDiffToVecGeo(&spBC, at, eyeNext); + spBC = OLib_Vec3fDiffToVecGeo(at, eyeNext); spF4 = F32_LERPIMP(roData->unk_04, roData->unk_08, distRatio); camera->rUpdateRateInv = Camera_ScaledStepToCeilF(spF8, camera->rUpdateRateInv, 0.5f, 0.1f); spBC.r = camera->dist = Camera_ScaledStepToCeilF(spF4, camera->dist, 1.0f / camera->rUpdateRateInv, 0.1f); - OLib_Vec3fDiffToVecGeo(&atToTargetDir, at, &camera->targetPosRot.pos); + atToTargetDir = OLib_Vec3fDiffToVecGeo(at, &camera->targetPosRot.pos); atToTargetDir.r = spBC.r - (((spBC.r >= atToTargetDir.r) ? atToTargetDir.r : spBC.r) * 0.5f); @@ -3748,7 +3742,7 @@ s32 Camera_Battle1(Camera* camera) { if (rwData->unk_16 != 0) { if (rwData->unk_16 > 0) { sp86 = rwData->unk_16 - 1; - OLib_Vec3fDiffToVecGeo(&spB4, at, eye); + spB4 = OLib_Vec3fDiffToVecGeo(at, eye); spB4.yaw = sp88 + 0x8000; spF8 = (rwData->unk_00 - spB4.r) * (1.0f / 6.0f); sp8A = (s16)(rwData->unk_12 - spB4.yaw) * (1.0f / 6.0f); @@ -3793,7 +3787,7 @@ s32 Camera_Battle1(Camera* camera) { } spBC.pitch = Camera_ScaledStepToCeilS(sp8A, atToEyeNextDir.pitch, 1.0f / camera->pitchUpdateRateInv, 5); - OLib_AddVecGeoToVec3f(eyeNext, at, &spBC); + *eyeNext = OLib_AddVecGeoToVec3f(at, &spBC); spC4.pos = *eyeNext; if (camera->status == CAM_STATUS_ACTIVE) { @@ -3807,7 +3801,7 @@ s32 Camera_Battle1(Camera* camera) { } else if (roData->interfaceFlags & BATTLE1_FLAG_1) { func_800CBC84(camera, at, &spC4, 3); } else { - OLib_Vec3fDistNormalize(&sp114, at, &spC4.pos); + sp114 = OLib_Vec3fDistNormalize(at, &spC4.pos); spC4.pos.x -= sp114.x; spC4.pos.y -= sp114.y; spC4.pos.z -= sp114.z; @@ -3837,7 +3831,7 @@ s32 Camera_Battle1(Camera* camera) { spB4.r = 40.0f; sp114 = sp8C->pos; sp114.y += 40.0f; - OLib_AddVecGeoToVec3f(&sp120, &sp114, &spB4); + sp120 = OLib_AddVecGeoToVec3f(&sp114, &spB4); Camera_ScaledStepToCeilVec3f(&sp120, eye, 0.15f, 0.15f, 0.2f); } else if (rwData->unk_1A & 0x10) { if (OLib_Vec3fDist(&spC4.pos, eye) < 20.0f) { @@ -3873,7 +3867,7 @@ s32 Camera_Battle1(Camera* camera) { } } else { rwData->unk_1A &= ~0x10; - OLib_Vec3fDistNormalize(&sp114, at, &spC4.pos); + sp114 = OLib_Vec3fDistNormalize(at, &spC4.pos); spC4.pos.x -= sp114.x; spC4.pos.y -= sp114.y; spC4.pos.z -= sp114.z; @@ -3991,8 +3985,8 @@ s32 Camera_KeepOn1(Camera* camera) { focalActorHeight += roData->yOffset; - OLib_Vec3fDiffToVecGeo(&atToEye, at, eye); - OLib_Vec3fDiffToVecGeo(&atToEyeNext, at, eyeNext); + atToEye = OLib_Vec3fDiffToVecGeo(at, eye); + atToEyeNext = OLib_Vec3fDiffToVecGeo(at, eyeNext); sCameraInterfaceFlags = roData->interfaceFlags; @@ -4011,7 +4005,7 @@ s32 Camera_KeepOn1(Camera* camera) { camera->dist = 2.0f * roData->unk_04; atToEyeNext.r = camera->dist; atToEye.r = atToEyeNext.r; - OLib_AddVecGeoToVec3f(eye, at, &atToEye); + *eye = OLib_AddVecGeoToVec3f(at, &atToEye); *eyeNext = *eye; } } @@ -4030,11 +4024,11 @@ s32 Camera_KeepOn1(Camera* camera) { sp114 = roData->unk_04; if (camera->target->id != ACTOR_EN_BOOM) { - Actor_GetWorldPosShapeRot(&camera->targetPosRot, camera->target); - Actor_GetFocus(&spA8, camera->target); + camera->targetPosRot = Actor_GetWorldPosShapeRot(camera->target); + spA8 = Actor_GetFocus(camera->target); camera->targetPosRot.pos.y = spA8.pos.y; } else { - Actor_GetFocus(&camera->targetPosRot, camera->target); + camera->targetPosRot = Actor_GetFocus(camera->target); } if (rwData->unk_0C != camera->target) { rwData->unk_0C = camera->target; @@ -4061,7 +4055,7 @@ s32 Camera_KeepOn1(Camera* camera) { sp124 = focalActorPosRot->pos; sp124.y += focalActorHeight; - OLib_Vec3fDiffToVecGeo(&spD0, &sp124, &camera->targetPosRot.pos); + spD0 = OLib_Vec3fDiffToVecGeo(&sp124, &camera->targetPosRot.pos); if (spD0.r > sp114) { sp74 = 1.0f; @@ -4069,7 +4063,7 @@ s32 Camera_KeepOn1(Camera* camera) { sp74 = spD0.r / sp114; } - OLib_Vec3fDiffToVecGeo(&spE8, at, eyeNext); + spE8 = OLib_Vec3fDiffToVecGeo(at, eyeNext); if (spE8.r < roData->unk_04) { sp114 = roData->unk_04; @@ -4086,7 +4080,7 @@ s32 Camera_KeepOn1(Camera* camera) { spE8.r = spF8 = camera->dist = Camera_ScaledStepToCeilF(sp114, camera->dist, 1.0f / camera->rUpdateRateInv, 0.1f); sp118 = camera->targetPosRot.pos; - OLib_Vec3fDiffToVecGeo(&spD8, at, &sp118); + spD8 = OLib_Vec3fDiffToVecGeo(at, &sp118); spD8.r = spF8 - (((spD8.r <= spF8) ? spD8.r : spF8) * 0.5f); spE8.r = camera->dist = Camera_ScaledStepToCeilF(spF8, camera->dist, 0.06f, 0.1f); @@ -4100,7 +4094,7 @@ s32 Camera_KeepOn1(Camera* camera) { if (rwData->unk_16 > 0) { sp72 = rwData->unk_16 - 1; spF2 = spD0.yaw; - OLib_Vec3fDiffToVecGeo(&spD0, at, eye); + spD0 = OLib_Vec3fDiffToVecGeo(at, eye); spD0.yaw = spF2 + 0x8000; @@ -4148,7 +4142,7 @@ s32 Camera_KeepOn1(Camera* camera) { } spE8.pitch = Camera_ScaledStepToCeilS(spF2, atToEyeNext.pitch, 1.0f / 9.0f, 5); - OLib_AddVecGeoToVec3f(eyeNext, at, &spE8); + *eyeNext = OLib_AddVecGeoToVec3f(at, &spE8); sp7C.pos = *eyeNext; if (camera->status == CAM_STATUS_ACTIVE) { @@ -4162,7 +4156,7 @@ s32 Camera_KeepOn1(Camera* camera) { } else if (roData->interfaceFlags & KEEPON1_FLAG_1) { func_800CBC84(camera, at, &sp7C, 3); } else { - OLib_Vec3fDistNormalize(&sp130, at, &sp7C.pos); + sp130 = OLib_Vec3fDistNormalize(at, &sp7C.pos); sp7C.pos.x -= sp130.x; sp7C.pos.y -= sp130.y; sp7C.pos.z -= sp130.z; @@ -4189,7 +4183,7 @@ s32 Camera_KeepOn1(Camera* camera) { spE0.r = 40.0f; sp130 = spA4->pos; sp130.y += 40.0f; - OLib_AddVecGeoToVec3f(&sp124, &sp130, &spE0); + sp124 = OLib_AddVecGeoToVec3f(&sp130, &spE0); Camera_ScaledStepToCeilVec3f(&sp124, eye, 0.15f, 0.15f, 0.2f); } else if (rwData->unk_18 & 0x10) { if (OLib_Vec3fDist(&sp7C.pos, eye) < 20.0f) { @@ -4225,7 +4219,7 @@ s32 Camera_KeepOn1(Camera* camera) { } } else { rwData->unk_18 &= ~0x10; - OLib_Vec3fDistNormalize(&sp130, at, &sp7C.pos); + sp130 = OLib_Vec3fDistNormalize(at, &sp7C.pos); sp7C.pos.x -= sp130.x; sp7C.pos.y -= sp130.y; sp7C.pos.z -= sp130.z; @@ -4328,12 +4322,12 @@ s32 Camera_KeepOn3(Camera* camera) { } } - OLib_Vec3fDiffToVecGeo(&sp88, at, eye); - OLib_Vec3fDiffToVecGeo(&sp80, at, eyeNext); - Actor_GetFocus(&camera->targetPosRot, camera->target); + sp88 = OLib_Vec3fDiffToVecGeo(at, eye); + sp80 = OLib_Vec3fDiffToVecGeo(at, eyeNext); + camera->targetPosRot = Actor_GetFocus(camera->target); spD8 = focalActorPosRot->pos; spD8.y += focalActorHeight; - OLib_Vec3fDiffToVecGeo(&spA0, &spD8, &camera->targetPosRot.pos); + spA0 = OLib_Vec3fDiffToVecGeo(&spD8, &camera->targetPosRot.pos); if (RELOAD_PARAMS(camera)) { camera->animState++; @@ -4371,11 +4365,11 @@ s32 Camera_KeepOn3(Camera* camera) { sp90.pitch = -spA0.pitch; spCC = sp70->pos; spCC.y += 30.0f; - OLib_AddVecGeoToVec3f(&spC0, &spCC, &sp90); + spC0 = OLib_AddVecGeoToVec3f(&spCC, &sp90); spCC.x = (camera->targetPosRot.pos.x + spD8.x) * 0.5f; spCC.y = (camera->targetPosRot.pos.y + spD8.y) * 0.5f; spCC.z = (camera->targetPosRot.pos.z + spD8.z) * 0.5f; - OLib_Vec3fDiffToVecGeo(&sp98, &spCC, &spC0); + sp98 = OLib_Vec3fDiffToVecGeo(&spCC, &spC0); if (sp98.pitch < -0x2328) { // 49.4 degrees sp98.pitch = -0x2328; } @@ -4408,7 +4402,7 @@ s32 Camera_KeepOn3(Camera* camera) { spD8 = focalActorPosRot->pos; spD8.y += focalActorHeight; - OLib_AddVecGeoToVec3f(&rwData->unk_10, &spD8, &spA0); + rwData->unk_10 = OLib_AddVecGeoToVec3f(&spD8, &spA0); rwData->unk_10.y += roData->unk_00; spA0.r = spB4; @@ -4416,13 +4410,13 @@ s32 Camera_KeepOn3(Camera* camera) { sp98.r = ((roData->unk_04 + (spA0.r * 0.5f)) - sp80.r) + sp80.r; i = 0; sp78 = 14; - OLib_AddVecGeoToVec3f(&spCC, &rwData->unk_10, &sp98); + spCC = OLib_AddVecGeoToVec3f(&rwData->unk_10, &sp98); if (!(roData->interfaceFlags & KEEPON3_FLAG_7)) { if (CollisionCheck_LineOCCheck(camera->play, &camera->play->colChkCtx, &rwData->unk_10, &spCC, spA8, 2) || Camera_BgCheck(camera, &rwData->unk_10, &spCC)) { sp98.yaw = sp6A; - OLib_AddVecGeoToVec3f(&spCC, &rwData->unk_10, &sp98); + spCC = OLib_AddVecGeoToVec3f(&rwData->unk_10, &sp98); } while (i < sp78) { if (!CollisionCheck_LineOCCheck(camera->play, &camera->play->colChkCtx, &rwData->unk_10, &spCC, @@ -4432,7 +4426,7 @@ s32 Camera_KeepOn3(Camera* camera) { } sp98.yaw = sp6C + D_801B9E18[i]; sp98.pitch = sp6E + D_801B9E34[i]; - OLib_AddVecGeoToVec3f(&spCC, &rwData->unk_10, &sp98); + spCC = OLib_AddVecGeoToVec3f(&rwData->unk_10, &sp98); i++; } } @@ -4460,7 +4454,7 @@ s32 Camera_KeepOn3(Camera* camera) { sp98.r = (rwData->unk_00 * timer) + sp80.r + 1.0f; sp98.yaw = sp80.yaw + (s16)(rwData->unk_04 * timer); sp98.pitch = sp80.pitch + (s16)(rwData->unk_08 * timer); - OLib_AddVecGeoToVec3f(eyeNext, at, &sp98); + *eyeNext = OLib_AddVecGeoToVec3f(at, &sp98); *eye = *eyeNext; camera->fov = Camera_ScaledStepToCeilF(roData->unk_20, camera->fov, 0.5f, 0.1f); camera->roll = Camera_ScaledStepToCeilS(0, camera->roll, 0.5f, 5); @@ -4603,9 +4597,9 @@ s32 Camera_KeepOn4(Camera* camera) { sUpdateCameraDirection = true; sCameraInterfaceFlags = roData->interfaceFlags; - OLib_Vec3fDiffToVecGeo(&spB0, at, eye); + spB0 = OLib_Vec3fDiffToVecGeo(at, eye); data = &D_801EDDD0; - OLib_Vec3fDiffToVecGeo(&spA8, at, eyeNext); + spA8 = OLib_Vec3fDiffToVecGeo(at, eyeNext); D_801EDDD0 = focalActorPosRot->pos; D_801EDDD0.y = data->y + focalActorHeight; temp_f0_2 = BgCheck_CameraRaycastFloor2(&camera->play->colCtx, &spC0, &bgId, &D_801EDDD0); @@ -4621,7 +4615,7 @@ s32 Camera_KeepOn4(Camera* camera) { spB8.r = roData->unk_10; spB8.pitch = 0; spB8.yaw = focalActorPosRot->rot.y; - OLib_AddVecGeoToVec3f(&D_801EDDD0, &D_801EDDD0, &spB8); + D_801EDDD0 = OLib_AddVecGeoToVec3f(&D_801EDDD0, &spB8); } sp9C = 0; @@ -4662,7 +4656,7 @@ s32 Camera_KeepOn4(Camera* camera) { case KEEPON4_FLAG_3: if (camera->target != NULL) { - Actor_GetWorldPosShapeRot(&sp60, camera->target); + sp60 = Actor_GetWorldPosShapeRot(camera->target); spA2 = CAM_DEG_TO_BINANG(roData->unk_08) - sp60.rot.x; spA0 = (BINANG_SUB(BINANG_ROT180(sp60.rot.y), spA8.yaw) > 0) ? BINANG_ROT180(sp60.rot.y) + CAM_DEG_TO_BINANG(roData->unk_0C) @@ -4675,7 +4669,7 @@ s32 Camera_KeepOn4(Camera* camera) { // fallthrough case (KEEPON4_FLAG_3 | KEEPON4_FLAG_1): if (camera->target != 0) { - Actor_GetWorld(&sp4C, camera->target); + sp4C = Actor_GetWorld(camera->target); spA2 = CAM_DEG_TO_BINANG(roData->unk_08); sp9E = Camera_CalcXZAngle(&sp4C.pos, &focalActorPosRot->pos); spA0 = (BINANG_SUB(sp9E, spA8.yaw) > 0) ? sp9E + CAM_DEG_TO_BINANG(roData->unk_0C) @@ -4747,7 +4741,7 @@ s32 Camera_KeepOn4(Camera* camera) { spB8.yaw = Camera_ScaledStepToCeilS(rwData->unk_10, spA8.yaw, roData->unk_14, 5); spB8.pitch = Camera_ScaledStepToCeilS(rwData->unk_12, spA8.pitch, roData->unk_14, 5); - OLib_AddVecGeoToVec3f(eyeNext, at, &spB8); + *eyeNext = OLib_AddVecGeoToVec3f(at, &spB8); *eye = *eyeNext; func_800CBFA4(camera, at, eye, 3); @@ -4784,13 +4778,13 @@ s32 Camera_Fixed1(Camera* camera) { Fixed1ReadOnlyData* roData = &camera->paramData.fixd1.roData; Fixed1ReadWriteData* rwData = &camera->paramData.fixd1.rwData; - OLib_Vec3fDiffToVecGeo(&sp7C, at, eye); + sp7C = OLib_Vec3fDiffToVecGeo(at, eye); if (!RELOAD_PARAMS(camera)) { } else { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamOrActorCsCamFuncData(camera, camera->bgCamIndex); - Camera_Vec3sToVec3f(&rwData->eyePosRotTarget.pos, &bgCamFuncData->pos); + rwData->eyePosRotTarget.pos = Camera_Vec3sToVec3f(&bgCamFuncData->pos); rwData->eyePosRotTarget.rot = bgCamFuncData->rot; rwData->fov = bgCamFuncData->fov; @@ -4809,9 +4803,9 @@ s32 Camera_Fixed1(Camera* camera) { targetHome = &camera->target->home; targetWorld = &camera->target->world; - OLib_Vec3fDiffToVecGeo(&sp44, &targetHome->pos, &rwData->eyePosRotTarget.pos); + sp44 = OLib_Vec3fDiffToVecGeo(&targetHome->pos, &rwData->eyePosRotTarget.pos); sp44.yaw = targetWorld->rot.y + (s16)(sp44.yaw - targetHome->rot.y); - OLib_AddVecGeoToVec3f(&rwData->eyePosRotTarget.pos, &targetWorld->pos, &sp44); + rwData->eyePosRotTarget.pos = OLib_AddVecGeoToVec3f(&targetWorld->pos, &sp44); yawDiff = (s16)(rwData->eyePosRotTarget.rot.y - targetHome->rot.y); rwData->eyePosRotTarget.rot.y = targetWorld->rot.y + yawDiff; } @@ -4843,7 +4837,7 @@ s32 Camera_Fixed1(Camera* camera) { } } - OLib_Vec3fDiffToVecGeo(&eyeAtOffset, eye, at); + eyeAtOffset = OLib_Vec3fDiffToVecGeo(eye, at); Camera_ScaledStepToCeilVec3f(&rwData->eyePosRotTarget.pos, eye, roData->unk_04, roData->unk_04, 0.2f); adjustedPos = focalActorPosRot->pos; adjustedPos.y += focalActorHeight; @@ -4852,7 +4846,7 @@ s32 Camera_Fixed1(Camera* camera) { eyeOffset.pitch = Camera_ScaledStepToCeilS(rwData->eyePosRotTarget.rot.x * -1, eyeAtOffset.pitch, roData->unk_04, 5); eyeOffset.yaw = Camera_ScaledStepToCeilS(rwData->eyePosRotTarget.rot.y, eyeAtOffset.yaw, roData->unk_04, 5); - OLib_AddVecGeoToVec3f(at, eye, &eyeOffset); + *at = OLib_AddVecGeoToVec3f(eye, &eyeOffset); camera->eyeNext = *eye; Camera_BgCheck(camera, eye, at); @@ -4911,11 +4905,11 @@ s32 Camera_Fixed2(Camera* camera) { bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamOrActorCsCamFuncData(camera, camera->bgCamIndex); if (bgCamFuncData != NULL) { if (!(roData->interfaceFlags & FIXED2_FLAG_1)) { - Camera_Vec3sToVec3f(&rwData->unk_00, &bgCamFuncData->pos); + rwData->unk_00 = Camera_Vec3sToVec3f(&bgCamFuncData->pos); } else { if (camera->focalActor != &GET_PLAYER(camera->play)->actor) { player = GET_PLAYER(camera->play); - OLib_Vec3fDiffToVecGeo(&sp70, &player->actor.focus.pos, eye); + sp70 = OLib_Vec3fDiffToVecGeo(&player->actor.focus.pos, eye); if (sp70.r < roData->unk_04) { sp70.r = roData->unk_04; if (sp70.pitch < 0xBB8) { // 16.5 degrees @@ -4924,7 +4918,7 @@ s32 Camera_Fixed2(Camera* camera) { new_var1 = &player->actor.focus.pos; - OLib_AddVecGeoToVec3f(&rwData->unk_00, new_var1, &sp70); + rwData->unk_00 = OLib_AddVecGeoToVec3f(new_var1, &sp70); } else { rwData->unk_00 = *eye; //! FAKE: @@ -4971,9 +4965,9 @@ s32 Camera_Fixed2(Camera* camera) { } sp7C = &camera->target->home; sp78 = &camera->target->world; - OLib_Vec3fDiffToVecGeo(&sp70, &sp7C->pos, &rwData->unk_00); + sp70 = OLib_Vec3fDiffToVecGeo(&sp7C->pos, &rwData->unk_00); sp70.yaw = sp78->rot.y + (s16)(sp70.yaw - sp7C->rot.y); - OLib_AddVecGeoToVec3f(&rwData->unk_00, &sp78->pos, &sp70); + rwData->unk_00 = OLib_AddVecGeoToVec3f(&sp78->pos, &sp70); } } else { rwData->unk_00 = camera->eye; @@ -5064,14 +5058,14 @@ s32 Camera_Fixed2(Camera* camera) { Camera_SetUpdateRatesSlow(camera); if (!(roData->interfaceFlags & FIXED2_FLAG_0)) { *at = spB0; - OLib_Vec3fDiffToVecGeo(&sp80, at, &rwData->unk_00); + sp80 = OLib_Vec3fDiffToVecGeo(at, &rwData->unk_00); if ((rwData->unk_0C < sp80.r) || (roData->interfaceFlags & FIXED2_FLAG_5)) { sp80.r = rwData->unk_0C; - OLib_AddVecGeoToVec3f(&spA4, at, &sp80); + spA4 = OLib_AddVecGeoToVec3f(at, &sp80); } else { if (sp80.r < roData->unk_04) { sp80.r = roData->unk_04; - OLib_AddVecGeoToVec3f(&spA4, at, &sp80); + spA4 = OLib_AddVecGeoToVec3f(at, &sp80); } else { spA4 = rwData->unk_00; } @@ -5084,13 +5078,13 @@ s32 Camera_Fixed2(Camera* camera) { } Camera_ScaledStepToCeilVec3f(&spB0, at, rwData->unk_14, rwData->unk_14, 1.0f); - OLib_Vec3fDiffToVecGeo(&sp80, at, &rwData->unk_00); + sp80 = OLib_Vec3fDiffToVecGeo(at, &rwData->unk_00); if ((rwData->unk_0C < sp80.r) || (roData->interfaceFlags & FIXED2_FLAG_5)) { sp80.r = rwData->unk_0C; - OLib_AddVecGeoToVec3f(&spA4, at, &sp80); + spA4 = OLib_AddVecGeoToVec3f(at, &sp80); } else if (sp80.r < roData->unk_04) { sp80.r = roData->unk_04; - OLib_AddVecGeoToVec3f(&spA4, at, &sp80); + spA4 = OLib_AddVecGeoToVec3f(at, &sp80); } else { spA4 = rwData->unk_00; } @@ -5147,7 +5141,7 @@ s32 Camera_Subject1(Camera* camera) { f32 temp_f0; f32 focalActorHeight; - Actor_GetFocus(&sp58, camera->focalActor); + sp58 = Actor_GetFocus(camera->focalActor); focalActorHeight = Camera_GetFocalActorHeight(camera); Camera_SetUpdateRatesFastPitch(camera); @@ -5168,8 +5162,8 @@ s32 Camera_Subject1(Camera* camera) { sp90 = sp58.pos; sp90.y += roData->unk_00; - OLib_AddVecGeoToVec3f(&sp84, &sp90, &sp7C); - OLib_Vec3fDiffToVecGeo(&sp74, &camera->at, eye); + sp84 = OLib_AddVecGeoToVec3f(&sp90, &sp7C); + sp74 = OLib_Vec3fDiffToVecGeo(&camera->at, eye); sCameraInterfaceFlags = roData->interfaceFlags; if (camera->play->view.unk164 == 0) { @@ -5211,7 +5205,7 @@ s32 Camera_Subject1(Camera* camera) { sp74.yaw = Camera_ScaledStepToCeilS(sp7C.yaw + (sp4E * rwData->timer), sp74.yaw, 0.5f, 5); sp74.pitch = Camera_ScaledStepToCeilS(sp7C.pitch + (sp4C * rwData->timer), sp74.pitch, 0.5f, 5); - OLib_AddVecGeoToVec3f(eyeNext, at, &sp74); + *eyeNext = OLib_AddVecGeoToVec3f(at, &sp74); *eye = *eyeNext; rwData->timer--; } else { @@ -5237,9 +5231,9 @@ s32 Camera_Subject1(Camera* camera) { sp74.yaw = BINANG_ROT180(sp58.rot.y); sp74.pitch = sp58.rot.x; - OLib_AddVecGeoToVec3f(&camera->eyeNext, at, &sp74); + camera->eyeNext = OLib_AddVecGeoToVec3f(at, &sp74); sp74.r = roData->unk_04; - OLib_AddVecGeoToVec3f(eye, at, &sp74); + *eye = OLib_AddVecGeoToVec3f(at, &sp74); } // TODO: is skyboxDisabled accurate here? @@ -5314,7 +5308,7 @@ s32 Camera_Unique2(Camera* camera) { Vec3f* eyeNext = &camera->eyeNext; CameraModeValue* values; - OLib_Vec3fDiffToVecGeo(&sp60, at, eye); + sp60 = OLib_Vec3fDiffToVecGeo(at, eye); if (RELOAD_PARAMS(camera)) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; @@ -5358,17 +5352,17 @@ s32 Camera_Unique2(Camera* camera) { rwData->unk_00 = rwData->unk_00 + ((2.0f - rwData->unk_00) * 0.05f); if (roData->interfaceFlags & UNIQUE2_FLAG_0) { - OLib_Vec3fDiffToVecGeo(&sp68, at, eyeNext); + sp68 = OLib_Vec3fDiffToVecGeo(at, eyeNext); sp68.r = roData->unk_04; - OLib_AddVecGeoToVec3f(&sp70, at, &sp68); + sp70 = OLib_AddVecGeoToVec3f(at, &sp68); Camera_ScaledStepToCeilVec3f(&sp70, eye, roData->unk_08, roData->unk_08, 0.2f); } else if (roData->interfaceFlags & UNIQUE2_FLAG_1) { if (OLib_Vec3fDistXZ(at, eyeNext) < roData->unk_04) { - OLib_Vec3fDiffToVecGeo(&sp68, at, eyeNext); + sp68 = OLib_Vec3fDiffToVecGeo(at, eyeNext); sp68.yaw = Camera_ScaledStepToCeilS(sp68.yaw, sp60.yaw, 0.1f, 5); sp68.r = roData->unk_04; sp68.pitch = 0; - OLib_AddVecGeoToVec3f(eye, at, &sp68); + *eye = OLib_AddVecGeoToVec3f(at, &sp68); eye->y = eyeNext->y; } else { Camera_ScaledStepToCeilVec3f(eyeNext, eye, roData->unk_08, roData->unk_08, 0.2f); @@ -5453,10 +5447,10 @@ s32 Camera_Unique0(Camera* camera) { roData->interfaceFlags = GET_NEXT_RO_DATA(values); } - OLib_Vec3fDiffToVecGeo(&sp7C, &camera->at, &camera->eye); + sp7C = OLib_Vec3fDiffToVecGeo(&camera->at, &camera->eye); if (player->rideActor != NULL) { - Actor_GetWorld(&sp9C, player->rideActor); + sp9C = Actor_GetWorld(player->rideActor); sp8C = sp9C.pos; sp8C.y += playerHeight + 20.0f; } else { @@ -5469,7 +5463,7 @@ s32 Camera_Unique0(Camera* camera) { switch (camera->animState) { case 0: bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamOrActorCsCamFuncData(camera, camera->bgCamIndex); - Camera_Vec3sToVec3f(&rwData->unk_1C.point, &bgCamFuncData->pos); + rwData->unk_1C.point = Camera_Vec3sToVec3f(&bgCamFuncData->pos); camera->eye = camera->eyeNext = rwData->unk_1C.point; rwData->unk_34 = bgCamFuncData->rot; @@ -5509,7 +5503,7 @@ s32 Camera_Unique0(Camera* camera) { sp84.r = OLib_Vec3fDist(&sp8C, &camera->eye); sp84.yaw = rwData->unk_34.y; sp84.pitch = -rwData->unk_34.x; - OLib_VecGeoToVec3f(&rwData->unk_1C.dir, &sp84); + rwData->unk_1C.dir = OLib_VecGeoToVec3f(&sp84); Math3D_LineClosestToPoint(&rwData->unk_1C, &focalActorPosRot->pos, &rwData->unk_0C); camera->at = rwData->unk_0C; @@ -5590,7 +5584,7 @@ s32 Camera_Unique0(Camera* camera) { sp84.yaw = sp7C.yaw; sp84.r = Camera_ScaledStepToCeilF(100.0f, sp84.r, sp74, 1.0f); - OLib_AddVecGeoToVec3f(&sp8C, &camera->at, &sp84); + sp8C = OLib_AddVecGeoToVec3f(&camera->at, &sp84); sp74 = (QREG(64) * 0.01f) + 0.2f; @@ -5709,10 +5703,10 @@ s32 Camera_Demo1(Camera* camera) { if (camera->animState == 0) { rwData->unk_1C = 0; - OLib_Vec3fDiffToVecGeo(&rwData->unk_0C, &camera->targetPosRot.pos, eye); - OLib_Vec3fDiffToVecGeo(&rwData->unk_14, &camera->at, eye); - Actor_GetFocus(&targetHead, camera->target); - Actor_GetWorld(&sp74, camera->target); + rwData->unk_0C = OLib_Vec3fDiffToVecGeo(&camera->targetPosRot.pos, eye); + rwData->unk_14 = OLib_Vec3fDiffToVecGeo(&camera->at, eye); + targetHead = Actor_GetFocus(camera->target); + sp74 = Actor_GetWorld(camera->target); camera->targetPosRot.pos.x = (sp74.pos.x + targetHead.pos.x) * 0.5f; camera->targetPosRot.pos.y = (sp74.pos.y + targetHead.pos.y) * 0.5f; camera->targetPosRot.pos.z = (sp74.pos.z + targetHead.pos.z) * 0.5f; @@ -5758,9 +5752,9 @@ s32 Camera_Demo1(Camera* camera) { case 1: Camera_ScaledStepToCeilVec3f(&camera->targetPosRot.pos, at, 0.1f, 0.1f, 0.1f); - OLib_Vec3fDiffToVecGeo(&sp88, at, eye); + sp88 = OLib_Vec3fDiffToVecGeo(at, eye); sp88.r = rwData->unk_0C.r; - OLib_AddVecGeoToVec3f(eyeNext, at, &sp88); + *eyeNext = OLib_AddVecGeoToVec3f(at, &sp88); *eye = *eyeNext; Camera_BgCheck(camera, at, eye); break; @@ -5920,7 +5914,7 @@ s32 Camera_Demo2(Camera* camera) { roData->interfaceFlags = GET_NEXT_RO_DATA(values); } - OLib_Vec3fDiffToVecGeo(&atToEye, at, eye); + atToEye = OLib_Vec3fDiffToVecGeo(at, eye); sCameraInterfaceFlags = roData->interfaceFlags; @@ -5953,9 +5947,9 @@ s32 Camera_Demo2(Camera* camera) { rwData->yawDir = -rwData->yawDir; } - OLib_Vec3fToVecGeo(&atOffset, &sp48[0]); + atOffset = OLib_Vec3fToVecGeo(&sp48[0]); atOffset.yaw += focalActorPosRot->rot.y; - OLib_AddVecGeoToVec3f(at, &rwData->initialAt, &atOffset); + *at = OLib_AddVecGeoToVec3f(&rwData->initialAt, &atOffset); eyeOffset.r = sp4C[0].r; eyeOffset.pitch = sp4C[0].pitch; @@ -5970,9 +5964,9 @@ s32 Camera_Demo2(Camera* camera) { VEC3F_LERPIMPDST(&sp64, &sp48[0], &sp48[1], sp60); - OLib_Vec3fToVecGeo(&atOffset, &sp64); + atOffset = OLib_Vec3fToVecGeo(&sp64); atOffset.yaw = (atOffset.yaw * rwData->yawDir) + focalActorPosRot->rot.y; - OLib_AddVecGeoToVec3f(at, &rwData->initialAt, &atOffset); + *at = OLib_AddVecGeoToVec3f(&rwData->initialAt, &atOffset); atOffset.r = LERPIMP(sp4C[0].r, sp4C[1].r, sp60); atOffset.pitch = BINANG_LERPIMP(sp4C[0].pitch, sp4C[1].pitch, sp60); @@ -5993,9 +5987,9 @@ s32 Camera_Demo2(Camera* camera) { sp64.y += playerHeight; sp64.z = LERPIMP(sp48[1].z, sp48[2].z, sp60); - OLib_Vec3fToVecGeo(&atOffset, &sp64); + atOffset = OLib_Vec3fToVecGeo(&sp64); atOffset.yaw = (atOffset.yaw * rwData->yawDir) + focalActorPosRot->rot.y; - OLib_AddVecGeoToVec3f(at, &rwData->initialAt, &atOffset); + *at = OLib_AddVecGeoToVec3f(&rwData->initialAt, &atOffset); atOffset.r = LERPIMP(sp4C[1].r, sp4C[2].r, sp60); atOffset.pitch = BINANG_LERPIMP(sp4C[1].pitch, sp4C[2].pitch, sp60); @@ -6016,9 +6010,9 @@ s32 Camera_Demo2(Camera* camera) { sp64.y += playerHeight; sp64.z = LERPIMP(sp48[2].z, sp48[3].z, sp60); - OLib_Vec3fToVecGeo(&atOffset, &sp64); + atOffset = OLib_Vec3fToVecGeo(&sp64); atOffset.yaw = (atOffset.yaw * rwData->yawDir) + focalActorPosRot->rot.y; - OLib_AddVecGeoToVec3f(at, &rwData->initialAt, &atOffset); + *at = OLib_AddVecGeoToVec3f(&rwData->initialAt, &atOffset); atOffset.r = LERPIMP(sp4C[2].r, sp4C[3].r, sp60); atOffset.pitch = BINANG_LERPIMP(sp4C[2].pitch, sp4C[3].pitch, sp60); @@ -6103,7 +6097,7 @@ s32 Camera_Demo2(Camera* camera) { eyeOffset.r = Camera_ScaledStepToCeilF(eyeOffset.r, atToEye.r, rwData->unk_0C, 1.0f); eyeOffset.pitch = Camera_ScaledStepToCeilS(eyeOffset.pitch, atToEye.pitch, rwData->unk_0C, 5); eyeOffset.yaw = Camera_ScaledStepToCeilS(eyeOffset.yaw, atToEye.yaw, rwData->unk_0C, 5); - OLib_AddVecGeoToVec3f(eyeNext, at, &eyeOffset); + *eyeNext = OLib_AddVecGeoToVec3f(at, &eyeOffset); *eye = *eyeNext; } @@ -6129,8 +6123,8 @@ s32 Camera_Demo3(Camera* camera) { Demo3ReadOnlyData* roData = &camera->paramData.demo3.roData; Demo3ReadWriteData* rwData = &camera->paramData.demo3.rwData; - OLib_Vec3fDiffToVecGeo(&atToEye, at, eye); - Actor_GetFocus(&focalActorFocus, camera->focalActor); + atToEye = OLib_Vec3fDiffToVecGeo(at, eye); + focalActorFocus = Actor_GetFocus(camera->focalActor); focalActorFocus.pos.x = camera->focalActorPosRot.pos.x; focalActorFocus.pos.z = camera->focalActorPosRot.pos.z; focalActorFocus.pos.y -= (focalActorFocus.pos.y - camera->focalActorPosRot.pos.y) * 0.4f; @@ -6192,7 +6186,7 @@ s32 Camera_Demo3(Camera* camera) { break; } - OLib_AddVecGeoToVec3f(eyeNext, at, &atToEye); + *eyeNext = OLib_AddVecGeoToVec3f(at, &atToEye); *eye = *eyeNext; return true; } @@ -6214,7 +6208,7 @@ s32 Camera_Demo4(Camera* camera) { Demo4ReadWriteData* rwData = &camera->paramData.demo4.rwData; s32 pad[2]; - OLib_Vec3fDiffToVecGeo(&atToEye, at, eye); + atToEye = OLib_Vec3fDiffToVecGeo(at, eye); if (RELOAD_PARAMS(camera)) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; @@ -6225,7 +6219,7 @@ s32 Camera_Demo4(Camera* camera) { rwData->unk_14 = camera->fov; } - Actor_GetFocus(&focalActorFocus, camera->focalActor); + focalActorFocus = Actor_GetFocus(camera->focalActor); sCameraInterfaceFlags = roData->interfaceFlags; switch (camera->animState) { @@ -6334,7 +6328,7 @@ s32 Camera_Demo4(Camera* camera) { break; case 999: - Actor_GetFocus(&focalActorFocus, camera->focalActor); + focalActorFocus = Actor_GetFocus(camera->focalActor); Distortion_RemoveRequest(DISTORTION_TYPE_MASK_TRANSFORM_1); Distortion_RemoveRequest(DISTORTION_TYPE_MASK_TRANSFORM_2); camera->animState = 4; @@ -6350,7 +6344,7 @@ s32 Camera_Demo4(Camera* camera) { break; } - OLib_AddVecGeoToVec3f(&camera->eyeNext, at, &atToEye); + camera->eyeNext = OLib_AddVecGeoToVec3f(at, &atToEye); *eye = camera->eyeNext; return true; @@ -6374,7 +6368,7 @@ s32 Camera_Demo5(Camera* camera) { Demo5ReadWriteData* rwData = &camera->paramData.demo5.rwData; CameraModeValue* values; - OLib_Vec3fDiffToVecGeo(&atToEye, at, eye); + atToEye = OLib_Vec3fDiffToVecGeo(at, eye); if (RELOAD_PARAMS(camera)) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; @@ -6385,7 +6379,7 @@ s32 Camera_Demo5(Camera* camera) { rwData->unk_18 = camera->fov; } - Actor_GetFocus(&focalActorFocus, camera->focalActor); + focalActorFocus = Actor_GetFocus(camera->focalActor); sCameraInterfaceFlags = roData->interfaceFlags; @@ -6440,7 +6434,7 @@ s32 Camera_Demo5(Camera* camera) { break; case 999: - Actor_GetFocus(&focalActorFocus, camera->focalActor); + focalActorFocus = Actor_GetFocus(camera->focalActor); camera->animState = 3; Distortion_RemoveRequest(DISTORTION_TYPE_MASK_TRANSFORM_1); break; @@ -6455,7 +6449,7 @@ s32 Camera_Demo5(Camera* camera) { break; } - OLib_AddVecGeoToVec3f(eyeNext, at, &atToEye); + *eyeNext = OLib_AddVecGeoToVec3f(at, &atToEye); *eye = *eyeNext; return true; @@ -6501,8 +6495,8 @@ s32 Camera_Demo0(Camera* camera) { // Initialize if (camera->animState == 0) { - OLib_Vec3fDiffToVecGeo(&rwData->subAtToEye, &subCam->at, subEye); - OLib_Vec3fDiffToVecGeo(&rwData->atToEye, &camera->at, eye); + rwData->subAtToEye = OLib_Vec3fDiffToVecGeo(&subCam->at, subEye); + rwData->atToEye = OLib_Vec3fDiffToVecGeo(&camera->at, eye); if (rwData->subAtToEye.r < 50.0f) { rwData->subAtToEye.r = 50.0f; if (rwData->subAtToEye.pitch < 0x7D0) { // 11 degrees @@ -6583,7 +6577,7 @@ s32 Camera_Demo0(Camera* camera) { camera->roll += rwData->unk_18; // Update Eye - OLib_AddVecGeoToVec3f(eye, at, &rwData->atToEye); + *eye = OLib_AddVecGeoToVec3f(at, &rwData->atToEye); camera->eyeNext = *eye; rwData->timer--; @@ -6651,9 +6645,9 @@ s32 Camera_Special5(Camera* camera) { roData->interfaceFlags = GET_NEXT_RO_DATA(values); } - OLib_Vec3fDiffToVecGeo(&atToEye, at, eye); - OLib_Vec3fDiffToVecGeo(&atToEyeNext, at, eyeNext); - Actor_GetWorld(&spA8, camera->target); + atToEye = OLib_Vec3fDiffToVecGeo(at, eye); + atToEyeNext = OLib_Vec3fDiffToVecGeo(at, eyeNext); + spA8 = Actor_GetWorld(camera->target); sCameraInterfaceFlags = roData->interfaceFlags; @@ -6675,9 +6669,9 @@ s32 Camera_Special5(Camera* camera) { sp6C.yaw = focalActorPosRot->rot.y; sp6C.pitch = -focalActorPosRot->rot.x; sp6C.r = 20.0f; - OLib_AddVecGeoToVec3f(&sp7C.pos, &spA8.pos, &sp6C); + sp7C.pos = OLib_AddVecGeoToVec3f(&spA8.pos, &sp6C); func_800CBC84(camera, at, &sp7C, 0); - OLib_Vec3fToVecGeo(&sp6C, &sp7C.norm); + sp6C = OLib_Vec3fToVecGeo(&sp7C.norm); spA4 = BINANG_SUB(focalActorPosRot->rot.y, sp6C.yaw); sp74.r = roData->eyeDist; rand = Rand_ZeroOne(); @@ -6685,7 +6679,7 @@ s32 Camera_Special5(Camera* camera) { BINANG_ROT180(focalActorPosRot->rot.y) + (s16)((spA4 < 0) ? -(s16)(0x1553 + (s16)(rand * 2730.0f)) : (s16)(0x1553 + (s16)(rand * 2730.0f))); sp74.pitch = roData->pitch; - OLib_AddVecGeoToVec3f(eyeNext, &spA8.pos, &sp74); + *eyeNext = OLib_AddVecGeoToVec3f(&spA8.pos, &sp74); *eye = *eyeNext; Camera_BgCheck(camera, &spA8.pos, eye); } @@ -6848,14 +6842,14 @@ s32 Camera_Special9(Camera* camera) { } if (doorParams->doorActor != NULL) { - Actor_GetWorldPosShapeRot(&sp84, doorParams->doorActor); + sp84 = Actor_GetWorldPosShapeRot(doorParams->doorActor); } else { sp84 = *focalActorPosRot; sp84.pos.y += focalActorHeight + roData->yOffset; sp84.rot.x = 0; } - OLib_Vec3fDiffToVecGeo(&spA8, at, eye); + spA8 = OLib_Vec3fDiffToVecGeo(at, eye); sCameraInterfaceFlags = roData->interfaceFlags; @@ -6882,7 +6876,7 @@ s32 Camera_Special9(Camera* camera) { // Setup for the camera moving behind the door if (roData->interfaceFlags & SPECIAL9_FLAG_0) { bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamOrActorCsCamFuncData(camera, camera->bgCamIndex); - Camera_Vec3sToVec3f(eyeNext, &bgCamFuncData->pos); + *eyeNext = Camera_Vec3sToVec3f(&bgCamFuncData->pos); spB8 = *eye = *eyeNext; } else { s16 camEyeSide; @@ -6897,14 +6891,14 @@ s32 Camera_Special9(Camera* camera) { spB0.yaw = rwData->unk_00 + camEyeSide; spB0.r = 200.0f * yNormal; - OLib_AddVecGeoToVec3f(eyeNext, at, &spB0); + *eyeNext = OLib_AddVecGeoToVec3f(at, &spB0); spB8 = *eye = *eyeNext; // If the side chosen moves the camera out-of-bounds, move to the other side if (Camera_CheckOOB(camera, &spB8, &focalActorPosRot->pos)) { camEyeSide = (s16)-camEyeSide; spB0.yaw = rwData->unk_00 + camEyeSide; - OLib_AddVecGeoToVec3f(eyeNext, at, &spB0); + *eyeNext = OLib_AddVecGeoToVec3f(at, &spB0); *eye = *eyeNext; } } @@ -6933,7 +6927,7 @@ s32 Camera_Special9(Camera* camera) { spB0.pitch = Camera_ScaledStepToCeilS(0xAAA, spA8.pitch, 0.3f, 5); spB0.yaw = Camera_ScaledStepToCeilS(rwData->unk_00, spA8.yaw, 0.3f, 5); spB0.r = Camera_ScaledStepToCeilF(60.0f, spA8.r, 0.3f, 1.0f); - OLib_AddVecGeoToVec3f(eyeNext, at, &spB0); + *eyeNext = OLib_AddVecGeoToVec3f(at, &spB0); *eye = *eyeNext; @@ -7108,7 +7102,7 @@ void Camera_InitFocalActorSettings(Camera* camera, Actor* focalActor) { f32 focalActorHeight; Vec3f* eye = &camera->eye; - Actor_GetWorldPosShapeRot(&focalActorPosRot, focalActor); + focalActorPosRot = Actor_GetWorldPosShapeRot(focalActor); camera->focalActor = focalActor; focalActorHeight = Camera_GetFocalActorHeight(camera); @@ -7128,7 +7122,7 @@ void Camera_InitFocalActorSettings(Camera* camera, Actor* focalActor) { camera->focalActorAtOffset.y = focalActorHeight; camera->focalActorAtOffset.z = 0; - OLib_AddVecGeoToVec3f(&camera->eyeNext, &camera->at, &eyeNextAtOffset); + camera->eyeNext = OLib_AddVecGeoToVec3f(&camera->at, &eyeNextAtOffset); *eye = camera->eyeNext; camera->roll = 0; @@ -7401,9 +7395,9 @@ Vec3s Camera_Update(Camera* camera) { // Updates camera info on the actor it's tracking if (camera->focalActor == &GET_PLAYER(camera->play)->actor) { - Actor_GetWorldPosShapeRot(&focalActorPosRot, camera->focalActor); + focalActorPosRot = Actor_GetWorldPosShapeRot(camera->focalActor); } else { - Actor_GetWorld(&focalActorPosRot, camera->focalActor); + focalActorPosRot = Actor_GetWorld(camera->focalActor); } camera->unk_0F0.x = focalActorPosRot.pos.x - camera->focalActorPosRot.pos.x; camera->unk_0F0.y = focalActorPosRot.pos.y - camera->focalActorPosRot.pos.y; @@ -7488,7 +7482,7 @@ Vec3s Camera_Update(Camera* camera) { bgCamIndex = Camera_GetBgCamIndex(camera, &bgId, sp90); if ((bgCamIndex != -1) && (camera->bgId == BGCHECK_SCENE)) { - if (Camera_IsUsingZoraFins(camera) == 0) { + if (!Camera_IsUsingZoraFins(camera)) { camera->nextCamSceneDataId = bgCamIndex | CAM_DATA_IS_BG; } } @@ -7582,21 +7576,21 @@ Vec3s Camera_Update(Camera* camera) { viewEye.x = camera->eye.x + camShake.eyeOffset.x; viewEye.y = camera->eye.y + camShake.eyeOffset.y; viewEye.z = camera->eye.z + camShake.eyeOffset.z; - OLib_Vec3fDiffToVecGeo(&sp3C, &viewEye, &viewAt); - Camera_CalcUpVec(&viewUp, sp3C.pitch, sp3C.yaw, camera->roll + camShake.upRollOffset); + sp3C = OLib_Vec3fDiffToVecGeo(&viewEye, &viewAt); + viewUp = Camera_CalcUpVec(sp3C.pitch, sp3C.yaw, camera->roll + camShake.upRollOffset); viewFov = camera->fov + CAM_BINANG_TO_DEG(camShake.fovOffset); } else if (sIsFalse) { //! condition is impossible to achieve viewAt = camera->at; viewEye = camera->eye; - OLib_Vec3fDiffToVecGeo(&sp3C, &viewEye, &viewAt); + sp3C = OLib_Vec3fDiffToVecGeo(&viewEye, &viewAt); viewUp = camera->up; viewFov = camera->fov; } else { viewAt = camera->at; viewEye = camera->eye; - OLib_Vec3fDiffToVecGeo(&sp3C, &viewEye, &viewAt); - Camera_CalcUpVec(&viewUp, sp3C.pitch, sp3C.yaw, camera->roll); + sp3C = OLib_Vec3fDiffToVecGeo(&viewEye, &viewAt); + viewUp = Camera_CalcUpVec(sp3C.pitch, sp3C.yaw, camera->roll); viewFov = camera->fov; } @@ -7916,41 +7910,35 @@ s32 Camera_ChangeActorCsCamIndex(Camera* camera, s32 bgCamIndex) { return bgCamIndex | 0x80000000; } -Vec3s* Camera_GetInputDir(Vec3s* dst, Camera* camera) { - *dst = camera->inputDir; - return dst; +Vec3s Camera_GetInputDir(Camera* camera) { + return camera->inputDir; } s16 Camera_GetInputDirPitch(Camera* camera) { - Vec3s dir; + Vec3s dir = Camera_GetInputDir(camera); - Camera_GetInputDir(&dir, camera); return dir.x; } s16 Camera_GetInputDirYaw(Camera* camera) { - Vec3s dir; + Vec3s dir = Camera_GetInputDir(camera); - Camera_GetInputDir(&dir, camera); return dir.y; } -Vec3s* Camera_GetCamDir(Vec3s* dst, Camera* camera) { - *dst = camera->camDir; - return dst; +Vec3s Camera_GetCamDir(Camera* camera) { + return camera->camDir; } s16 Camera_GetCamDirPitch(Camera* camera) { - Vec3s camDir; + Vec3s camDir = Camera_GetCamDir(camera); - Camera_GetCamDir(&camDir, camera); return camDir.x; } s16 Camera_GetCamDirYaw(Camera* camera) { - Vec3s camDir; + Vec3s camDir = Camera_GetCamDir(camera); - Camera_GetCamDir(&camDir, camera); return camDir.y; } @@ -8096,9 +8084,9 @@ s32 Camera_Copy(Camera* dstCam, Camera* srcCam) { if (dstCam->focalActor != NULL) { if (dstCam->focalActor == &GET_PLAYER(dstCam->play)->actor) { - Actor_GetWorldPosShapeRot(&dstCam->focalActorPosRot, dstCam->focalActor); + dstCam->focalActorPosRot = Actor_GetWorldPosShapeRot(dstCam->focalActor); } else { - Actor_GetWorld(&dstCam->focalActorPosRot, dstCam->focalActor); + dstCam->focalActorPosRot = Actor_GetWorld(dstCam->focalActor); } Camera_SetFocalActorAtOffset(dstCam, &dstCam->focalActorPosRot.pos); } @@ -8112,10 +8100,8 @@ s32 Camera_IsDbgCamEnabled(void) { return false; } -Vec3f* Camera_GetQuakeOffset(Vec3f* quakeOffset, Camera* camera) { - *quakeOffset = camera->quakeOffset; - - return quakeOffset; +Vec3f Camera_GetQuakeOffset(Camera* camera) { + return camera->quakeOffset; } void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3) { @@ -8153,9 +8139,9 @@ s16 func_800E0238(Camera* camera) { void Camera_SetFocalActor(Camera* camera, Actor* actor) { camera->focalActor = actor; if (actor == &GET_PLAYER(camera->play)->actor) { - Actor_GetWorldPosShapeRot(&camera->focalActorPosRot, actor); + camera->focalActorPosRot = Actor_GetWorldPosShapeRot(actor); } else { - Actor_GetWorld(&camera->focalActorPosRot, camera->focalActor); + camera->focalActorPosRot = Actor_GetWorld(camera->focalActor); } camera->animState = 0; diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index f0805c46b..e6d291831 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -1,6 +1,12 @@ -#include "global.h" +#include "z64save.h" -SaveContext gSaveContext; +#include "alignment.h" +#include "sequence.h" +#include "libc/stdbool.h" +#include "z64environment.h" +#include "z64transition.h" + +SaveContext gSaveContext ALIGNED(16); void SaveContext_Init(void) { bzero(&gSaveContext, sizeof(SaveContext)); diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 1d2cf506e..5ed6180d5 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -1123,7 +1123,7 @@ void Cutscene_SetActorCue(CutsceneContext* csCtx, u8** script, s16 cueChannel) { *script += sizeof(numCues); for (i = 0; i < numCues; i++) { - CsCmdActorCue* cue = *(CsCmdActorCue**)script; + CsCmdActorCue* cue = (CsCmdActorCue*)(*script); if ((csCtx->curFrame >= cue->startFrame) && (csCtx->curFrame < cue->endFrame)) { csCtx->actorCues[cueChannel] = cue; diff --git a/src/code/z_eventmgr.c b/src/code/z_eventmgr.c index 9f08806f9..d682ed4f4 100644 --- a/src/code/z_eventmgr.c +++ b/src/code/z_eventmgr.c @@ -213,7 +213,7 @@ void CutsceneManager_End(void) { sCutsceneMgr.targetActor->flags &= ~ACTOR_FLAG_100000; // fallthrough case CS_START_1: - func_800B7298(sCutsceneMgr.play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(sCutsceneMgr.play, NULL, PLAYER_CSACTION_END); sCutsceneMgr.startMethod = CS_START_0; break; @@ -344,7 +344,7 @@ s16 CutsceneManager_StartWithPlayerCs(s16 csId, Actor* actor) { s16 startCsId = CutsceneManager_Start(csId, actor); if (startCsId >= 0) { - func_800B7298(sCutsceneMgr.play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(sCutsceneMgr.play, NULL, PLAYER_CSACTION_WAIT); if (sCutsceneMgr.length == 0) { CutsceneManager_Stop(sCutsceneMgr.csId); } @@ -360,7 +360,7 @@ s16 CutsceneManager_StartWithPlayerCsAndSetFlag(s16 csId, Actor* actor) { s16 startCsId = CutsceneManager_Start(csId, actor); if (startCsId >= 0) { - func_800B7298(sCutsceneMgr.play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(sCutsceneMgr.play, NULL, PLAYER_CSACTION_WAIT); if (sCutsceneMgr.length == 0) { CutsceneManager_Stop(sCutsceneMgr.csId); } diff --git a/src/code/z_kanfont.c b/src/code/z_kanfont.c index 68c0fdd01..2a42998b4 100644 --- a/src/code/z_kanfont.c +++ b/src/code/z_kanfont.c @@ -9,13 +9,13 @@ void Font_LoadCharNES(PlayState* play, u8 codePointIndex, s32 offset) { Font* font = &msgCtx->font; DmaMgr_SendRequest0(&font->charBuf[font->unk_11D88][offset], - &((u8*)SEGMENT_ROM_START(nes_font_static))[(codePointIndex - ' ') * FONT_CHAR_TEX_SIZE], + SEGMENT_ROM_START_OFFSET(nes_font_static, (codePointIndex - ' ') * FONT_CHAR_TEX_SIZE), FONT_CHAR_TEX_SIZE); } void Font_LoadMessageBoxEndIcon(Font* font, u16 icon) { DmaMgr_SendRequest0(&font->iconBuf, - &((u8*)SEGMENT_ROM_START(message_static))[5 * 0x1000 + icon * FONT_CHAR_TEX_SIZE], + SEGMENT_ROM_START_OFFSET(message_static, 5 * 0x1000 + icon * FONT_CHAR_TEX_SIZE), FONT_CHAR_TEX_SIZE); } @@ -39,8 +39,7 @@ void Font_LoadOrderedFont(Font* font) { loadOffset = 0; } - DmaMgr_SendRequest0(writeLocation, (uintptr_t)SEGMENT_ROM_START(nes_font_static) + loadOffset, - FONT_CHAR_TEX_SIZE); + DmaMgr_SendRequest0(writeLocation, SEGMENT_ROM_START(nes_font_static) + loadOffset, FONT_CHAR_TEX_SIZE); if (sFontOrdering[codePointIndex] == 0x8C) { break; } diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index baeb22e24..6050cf522 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -718,7 +718,6 @@ void Environment_Init(PlayState* play2, EnvironmentContext* envCtx, s32 arg2) { } if (gSaveContext.retainWeatherMode || (gSaveContext.respawnFlag != 0)) { - switch ((u32)gWeatherMode) { case WEATHER_MODE_2: if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_CLEARED_STONE_TOWER_TEMPLE)) { @@ -3116,15 +3115,15 @@ void Environment_DrawSkyboxStarsImpl(PlayState* play, Gfx** gfxP) { { 0xD058, 0x4C2C, 0x3A98 }, { 0xD8F0, 0x36B0, 0x47E0 }, { 0xD954, 0x3264, 0x3E1C }, { 0xD8F0, 0x3070, 0x37DC }, { 0xD8F0, 0x1F40, 0x5208 }, { 0xD760, 0x1838, 0x27D8 }, { 0x0000, 0x4E20, 0x4A38 }, { 0x076C, 0x2328, 0xDCD8 }, }; - static const u32 D_801DD8E0[] = { - RGBA8(65, 164, 255, 255), RGBA8(131, 164, 230, 255), RGBA8(98, 205, 255, 255), RGBA8(82, 82, 255, 255), - RGBA8(123, 164, 164, 255), RGBA8(98, 205, 255, 255), RGBA8(98, 164, 230, 255), RGBA8(255, 90, 0, 255), + static const Color_RGBA8_u32 D_801DD8E0[] = { + { 65, 164, 255, 255 }, { 131, 164, 230, 255 }, { 98, 205, 255, 255 }, { 82, 82, 255, 255 }, + { 123, 164, 164, 255 }, { 98, 205, 255, 255 }, { 98, 164, 230, 255 }, { 255, 90, 0, 255 }, }; - UNALIGNED static const u32 D_801DD900[] = { - RGBA8(64, 80, 112, 255), RGBA8(96, 96, 128, 255), RGBA8(128, 112, 144, 255), RGBA8(160, 128, 160, 255), - RGBA8(192, 144, 168, 255), RGBA8(224, 160, 176, 255), RGBA8(224, 160, 176, 255), RGBA8(104, 104, 136, 255), - RGBA8(136, 120, 152, 255), RGBA8(168, 136, 168, 255), RGBA8(200, 152, 184, 255), RGBA8(232, 168, 184, 255), - RGBA8(224, 176, 184, 255), RGBA8(240, 192, 192, 255), RGBA8(232, 184, 192, 255), RGBA8(248, 200, 192, 255), + UNALIGNED static const Color_RGBA8_u32 D_801DD900[] = { + { 64, 80, 112, 255 }, { 96, 96, 128, 255 }, { 128, 112, 144, 255 }, { 160, 128, 160, 255 }, + { 192, 144, 168, 255 }, { 224, 160, 176, 255 }, { 224, 160, 176, 255 }, { 104, 104, 136, 255 }, + { 136, 120, 152, 255 }, { 168, 136, 168, 255 }, { 200, 152, 184, 255 }, { 232, 168, 184, 255 }, + { 224, 176, 184, 255 }, { 240, 192, 192, 255 }, { 232, 184, 192, 255 }, { 248, 200, 192, 255 }, }; Vec3f pos; f32 temp; @@ -3221,9 +3220,9 @@ void Environment_DrawSkyboxStarsImpl(PlayState* play, Gfx** gfxP) { } if ((i < 15) || ((i == 15) && ((((void)0, gSaveContext.save.day) % 7) == 0))) { - gDPSetColor(gfx++, G_SETPRIMCOLOR, D_801DD8E0[i % ARRAY_COUNTU(D_801DD8E0)]); + gDPSetColor(gfx++, G_SETPRIMCOLOR, D_801DD8E0[i % ARRAY_COUNTU(D_801DD8E0)].rgba); } else if (((i & 0x3F) == 0) || (i == 16)) { - gDPSetColor(gfx++, G_SETPRIMCOLOR, D_801DD900[phi_v1 % ARRAY_COUNTU(D_801DD900)]); + gDPSetColor(gfx++, G_SETPRIMCOLOR, D_801DD900[phi_v1 % ARRAY_COUNTU(D_801DD900)].rgba); phi_v1++; } diff --git a/src/code/z_lib.c b/src/code/z_lib.c index cf5666ed4..afbcba0ed 100644 --- a/src/code/z_lib.c +++ b/src/code/z_lib.c @@ -715,11 +715,11 @@ void* Lib_SegmentedToVirtualNull(void* ptr) { * the NULL virtual address being 0x00000000 and not 0x80000000. Used by transition overlays, which store their * addresses in 24-bit fields. */ -void* Lib_VirtualToPhysical(void* ptr) { +uintptr_t Lib_VirtualToPhysical(void* ptr) { if (ptr == NULL) { - return NULL; + return 0; } else { - return (void*)OS_K0_TO_PHYSICAL(ptr); + return OS_K0_TO_PHYSICAL(ptr); } } @@ -728,8 +728,8 @@ void* Lib_VirtualToPhysical(void* ptr) { * the NULL virtual address being 0x00000000 and not 0x80000000. Used by transition overlays, which store their * addresses in 24-bit fields. */ -void* Lib_PhysicalToVirtual(void* ptr) { - if (ptr == NULL) { +void* Lib_PhysicalToVirtual(uintptr_t ptr) { + if (ptr == 0) { return NULL; } else { return OS_PHYSICAL_TO_K0(ptr); diff --git a/src/code/z_message.c b/src/code/z_message.c index f4aa59a79..c10dabe2d 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #include "z64horse.h" #include "z64shrink_window.h" @@ -82,7 +81,7 @@ s16 gOcarinaSongItemMap[] = { }; // bss - +#include "prevent_bss_reordering.h" s32 sCharTexSize; s32 sCharTexScale; s32 D_801F6B08; @@ -1922,7 +1921,7 @@ void func_8014CCB4(PlayState* play, s16* decodedBufPos, s32* offset, f32* arg3) * every digit will be added 0x824F to get an actual S-JIS * printable character. */ -void Message_GetTimerDigits(OSTime time, s16* digits) { +void Message_GetTimerDigits(OSTime time, s16 digits[8]) { OSTime t = time; // 6 minutes @@ -2154,29 +2153,28 @@ u16 D_801D0284[] = { 0x90D4, 0x90C2, 0x89A9, 0x97CE }; void Message_Decode(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; - Font* font = &msgCtx->font; // spF0 - Player* player; // spEC - s16 decodedBufPos; // spEA + Font* font = &msgCtx->font; + Player* player = GET_PLAYER(play); + s16 decodedBufPos; s16 loadChar; u32 timeToMoonCrash; s16 var_v0; - s16 spE0; - u8* ptr2; - s16 digits[4]; // spD4/D6/D8/DA + s16 numLines; + s16 value; + s16 digits[5]; s16 spD2; f32 timeInSeconds; - s32 charTexIdx; // spC8 - f32 var_fs0; + s32 charTexIndex; + u8* fontBuf; f32 spC0; s16 index; - s16 value; s16 playerNameLen; - s16 i; // s1 - u16 index2 = 0; - s16 spAC[4]; + s16 spAC[8]; + f32 var_fs0; + s16 i; u16 curChar; + u8 index2 = 0; - player = GET_PLAYER(play); msgCtx->textDelayTimer = 0; msgCtx->textDelay = msgCtx->textDelayTimer; msgCtx->textFade = 0; @@ -2185,9 +2183,9 @@ void Message_Decode(PlayState* play) { if ((gSaveContext.options.language == LANGUAGE_JPN) && !msgCtx->textIsCredits) { spD2 = 0; - spE0 = 0; + numLines = 0; decodedBufPos = 0; - charTexIdx = 0; + charTexIndex = 0; Message_SetupLoadItemIcon(play); while (true) { @@ -2207,18 +2205,19 @@ void Message_Decode(PlayState* play) { spC0 = 0.0f; if (curChar == 0xB) { if ((msgCtx->textBoxType != TEXTBOX_TYPE_3) && (msgCtx->textBoxType != TEXTBOX_TYPE_4)) { - if (spE0 < 2) { + if (numLines < 2) { msgCtx->unk11FFA = msgCtx->textboxY + 0x16; - } else if (spE0 == 2) { + } else if (numLines == 2) { msgCtx->unk11FFA = msgCtx->textboxY + 0xE; } } } else { - u32 temp; + s8 requiredScopeTemp; + if ((msgCtx->textBoxType != TEXTBOX_TYPE_3) && (msgCtx->textBoxType != TEXTBOX_TYPE_4)) { - if (spE0 == 0) { + if (numLines == 0) { msgCtx->unk11FFA = msgCtx->textboxY + 0x16; - } else if (spE0 == 1) { + } else if (numLines == 1) { msgCtx->unk11FFA = msgCtx->textboxY + 0xE; } } @@ -2253,29 +2252,28 @@ void Message_Decode(PlayState* play) { for (i = 0; i < playerNameLen; i++) { curChar = gSaveContext.save.saveInfo.playerData.playerName[i]; - index2 = (curChar & 0xFFFF); - ptr2 = &font->fontBuf[index2 * FONT_CHAR_TEX_SIZE]; + index2 = curChar & 0xFFFF; + fontBuf = &font->fontBuf[index2 * FONT_CHAR_TEX_SIZE]; msgCtx->decodedBuffer.wchar[decodedBufPos + i] = 0x100; for (var_v0 = 0; var_v0 < FONT_CHAR_TEX_SIZE; var_v0 += 4) { - font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 0] = ptr2[var_v0 + 0]; - font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 1] = ptr2[var_v0 + 1]; - font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 2] = ptr2[var_v0 + 2]; - font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 3] = ptr2[var_v0 + 3]; + font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 0] = fontBuf[var_v0 + 0]; + font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 1] = fontBuf[var_v0 + 1]; + font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 2] = fontBuf[var_v0 + 2]; + font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 3] = fontBuf[var_v0 + 3]; } - charTexIdx += FONT_CHAR_TEX_SIZE; + charTexIndex += FONT_CHAR_TEX_SIZE; } //! FAKE: - ptr2 = &font->fontBuf[index2 * FONT_CHAR_TEX_SIZE]; + fontBuf = &font->fontBuf[index2 * FONT_CHAR_TEX_SIZE]; decodedBufPos += playerNameLen - 1; spC0 += playerNameLen * (16.0f * msgCtx->textCharScale); } else if (curChar == 0x201) { - DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1000, - (uintptr_t)SEGMENT_ROM_START(message_texture_static), 0x900); - DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1900, - (uintptr_t)SEGMENT_ROM_START(message_texture_static) + 0x900, 0x900); - spE0 = 2; + DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1000, SEGMENT_ROM_START(message_texture_static), 0x900); + DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1900, SEGMENT_ROM_START(message_texture_static) + 0x900, + 0x900); + numLines = 2; spD2 = 2; msgCtx->unk12012 = msgCtx->textboxY + 8; msgCtx->unk11F18 = 1; @@ -2291,12 +2289,12 @@ void Message_Decode(PlayState* play) { Message_GetTimerDigits(((void)0, gSaveContext.timerCurTimes[curChar - 0x204]), spAC); loadChar = false; - for (i = 0; i < 5; i++) { + for (i = 0; i < ARRAY_COUNT(spAC) - 3; i++) { if ((i == 1) || (spAC[i + 3] != 0)) { loadChar = true; } if (loadChar) { - Message_LoadChar(play, spAC[i + 3] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, spAC[i + 3] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } @@ -2306,12 +2304,12 @@ void Message_Decode(PlayState* play) { Message_GetTimerDigits(((void)0, gSaveContext.timerCurTimes[curChar - 0x204]), spAC); loadChar = false; - for (i = 0; i < 8; i++) { + for (i = 0; i < ARRAY_COUNT(spAC); i++) { if ((i == 4) || ((i != 2) && (i != 5) && (spAC[i] != '\0'))) { loadChar = true; } if (loadChar) { - Message_LoadChar(play, spAC[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, spAC[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } @@ -2333,18 +2331,18 @@ void Message_Decode(PlayState* play) { } for (i = 0; i < 4; i++) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; if (i == 1) { - Font_LoadChar(play, 0x8E9E, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, 0x8E9E, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x8E9E; decodedBufPos++; } else if (i == 3) { - Font_LoadChar(play, 0x95AA, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, 0x95AA, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x95AA; } } @@ -2372,28 +2370,28 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; } } - Message_LoadChar(play, 0x9543, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x9543, &charTexIndex, &spC0, decodedBufPos); } else if (curChar == 0x20C) { decodedBufPos++; msgCtx->unk120BE = spD2; msgCtx->unk120C0 = decodedBufPos; msgCtx->unk120C2 = 2; msgCtx->bankRupeesSelected = 0; - msgCtx->unk120C4 = charTexIdx; + msgCtx->unk120C4 = charTexIndex; digits[0] = digits[1] = digits[2] = 0; for (i = 0; i < 3; i++) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } - func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0); + func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0); } else if (curChar == 0x20D) { digits[0] = digits[1] = 0; digits[2] = msgCtx->bankRupeesSelected; @@ -2414,11 +2412,11 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } - func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0); + func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0); } else if (curChar == 0x20E) { digits[0] = digits[1] = digits[2] = 0; digits[3] = msgCtx->bankRupees; @@ -2442,13 +2440,13 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } - func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0); + func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0); } else if (curChar == 0x20F) { - Message_LoadTime(play, curChar, &charTexIdx, &spC0, &decodedBufPos); + Message_LoadTime(play, curChar, &charTexIndex, &spC0, &decodedBufPos); } else if (curChar == 0x21C) { digits[0] = digits[1] = 0; digits[2] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex]; @@ -2468,13 +2466,13 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } - Message_LoadChar(play, 0x906C, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x906C, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; - Message_LoadChar(play, 0x96DA, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x96DA, &charTexIndex, &spC0, decodedBufPos); } else if (curChar == 0x21D) { digits[0] = digits[1] = 0; digits[2] = Inventory_GetSkullTokenCount(play->sceneId); @@ -2494,11 +2492,11 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } - Message_LoadChar(play, 0x9543, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x9543, &charTexIndex, &spC0, decodedBufPos); } else if (curChar == 0x21E) { digits[0] = 0; digits[1] = gSaveContext.minigameScore; @@ -2510,7 +2508,7 @@ void Message_Decode(PlayState* play) { for (i = 0; i < 2; i++) { if ((i == 1) || (digits[i] != 0)) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } @@ -2538,7 +2536,7 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } @@ -2549,24 +2547,24 @@ void Message_Decode(PlayState* play) { msgCtx->unk120C0 = decodedBufPos; msgCtx->unk120C2 = 0; msgCtx->bankRupeesSelected = 0; - msgCtx->unk120C4 = charTexIdx; + msgCtx->unk120C4 = charTexIndex; digits[0] = digits[1] = digits[2] = 0; for (i = 0; i < 2; i++) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } - func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0); + func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0); } else if (curChar == 0x221) { decodedBufPos++; msgCtx->unk120BE = spD2; msgCtx->unk120C0 = decodedBufPos; msgCtx->unk120C2 = 0; msgCtx->bankRupeesSelected = 0; - msgCtx->unk120C4 = charTexIdx; + msgCtx->unk120C4 = charTexIndex; for (i = 0; i < 5; i++) { msgCtx->unk12054[i] = 1; - Message_LoadChar(play, 0x8250, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x8250, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } decodedBufPos--; @@ -2581,26 +2579,26 @@ void Message_Decode(PlayState* play) { for (i = 0; i < 3; i++, decodedBufPos++) { msgCtx->decodedBuffer.wchar[decodedBufPos] = D_801D0268[index][i]; - Font_LoadChar(play, D_801D0268[index][i], charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, D_801D0268[index][i], charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; } decodedBufPos--; spC0 += 3.0f * (16.0f * msgCtx->textCharScale); msgCtx->choiceIndex = index; } else if (curChar == 0x224) { - Message_LoadOwlWarpText(play, &charTexIdx, &spC0, &decodedBufPos); + Message_LoadOwlWarpText(play, &charTexIndex, &spC0, &decodedBufPos); } else if (curChar == 0x225) { decodedBufPos++; msgCtx->unk120BE = spD2; msgCtx->unk120C0 = decodedBufPos; msgCtx->unk120C2 = 0; msgCtx->bankRupeesSelected = 0; - msgCtx->unk120C4 = charTexIdx; + msgCtx->unk120C4 = charTexIndex; for (i = 0; i < 3; i++) { msgCtx->unk12054[i] = 1; - Font_LoadChar(play, 0x8250, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, 0x8250, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x8250; spC0 += 16.0f * msgCtx->textCharScale; decodedBufPos++; @@ -2611,13 +2609,14 @@ void Message_Decode(PlayState* play) { msgCtx->decodedBuffer.wchar[decodedBufPos] = D_801D027C[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[i])]; decodedBufPos++; - Message_LoadChar(play, i + 0x8250, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, i + 0x8250, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x2000; } else if ((curChar >= 0x227) && (curChar < 0x22B)) { digits[0] = digits[1] = 0; - digits[2] = 15 - gSaveContext.save.saveInfo.inventory.strayFairies[curChar - 0x227]; + digits[2] = + STRAY_FAIRY_SCATTERED_TOTAL - gSaveContext.save.saveInfo.inventory.strayFairies[curChar - 0x227]; while (digits[2] >= 100) { digits[0]++; @@ -2634,14 +2633,14 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; } } - Message_LoadChar(play, 0x906C, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x906C, &charTexIndex, &spC0, decodedBufPos); } else if (curChar == 0x22B) { digits[0] = digits[1] = digits[2] = 0; digits[3] = gSaveContext.minigameScore; @@ -2665,14 +2664,14 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; } } - Message_LoadChar(play, 0x94AD, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x94AD, &charTexIndex, &spC0, decodedBufPos); } else if ((curChar == 0x22C) || (curChar == 0x22D)) { if (curChar == 0x22C) { digits[0] = gSaveContext.save.saveInfo.lotteryCodes[CURRENT_DAY - 1][0]; @@ -2684,8 +2683,8 @@ void Message_Decode(PlayState* play) { digits[2] = HS_GET_LOTTERY_CODE_GUESS() & 0xF; } for (i = 0; i < 3; i++) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; @@ -2714,33 +2713,32 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; } } - func_8014CCB4(play, &decodedBufPos, &charTexIdx, &spC0); + func_8014CCB4(play, &decodedBufPos, &charTexIndex, &spC0); } else if (curChar == 0x22F) { - for (i = 0; i < 5; i++) { + for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.bomberCode); i++) { digits[i] = gSaveContext.save.saveInfo.bomberCode[i]; - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; } decodedBufPos--; } else if ((curChar >= 0x231) && (curChar < 0x237)) { - // index = curChar - 0x231; msgCtx->decodedBuffer.wchar[decodedBufPos] = D_801D027C[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0x231)])]; decodedBufPos++; Message_LoadChar( play, D_801D0284[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0x231)])], - &charTexIdx, &spC0, decodedBufPos); + &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x2000; } else if (curChar == 0x237) { @@ -2759,20 +2757,20 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadChar(play, digits[i] + 0x824F, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, digits[i] + 0x824F, &charTexIndex, &spC0, decodedBufPos); decodedBufPos++; } } - Font_LoadChar(play, 0x8E9E, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, 0x8E9E, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x8E9E; decodedBufPos++; - Font_LoadChar(play, 0x8AD4, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, 0x8AD4, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x8E9E; spC0 += 2.0f * (16.0f * msgCtx->textCharScale); } else if (curChar == 0x238) { - Message_LoadTime(play, curChar, &charTexIdx, &spC0, &decodedBufPos); + Message_LoadTime(play, curChar, &charTexIndex, &spC0, &decodedBufPos); } else if ((curChar == 0x300) || (curChar == 0x301) || (curChar == 0x302) || (curChar == 0x308)) { if (curChar == 0x308) { value = (s32)HS_GET_HIGH_SCORE_3_LOWER(); @@ -2808,8 +2806,8 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; @@ -2829,13 +2827,13 @@ void Message_Decode(PlayState* play) { } loadChar = false; - for (i = 0; i < 8; i++) { + for (i = 0; i < ARRAY_COUNT(spAC); i++) { if ((i == 4) || ((i != 2) && (i != 5) && (spAC[i] != '\0'))) { loadChar = true; } if (loadChar) { - Font_LoadChar(play, spAC[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, spAC[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = spAC[i] + 0x824F; decodedBufPos++; } else { @@ -2863,18 +2861,18 @@ void Message_Decode(PlayState* play) { } for (i = 0; i < 4; i++) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; if (i == 1) { - Font_LoadChar(play, 0x95AA, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, 0x95AA, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x95AA; decodedBufPos++; } else if (i == 3) { - Font_LoadChar(play, 0x9562, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, 0x9562, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = 0x9562; } } @@ -2902,14 +2900,14 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; } } - Message_LoadChar(play, 0x9543, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x9543, &charTexIndex, &spC0, decodedBufPos); } else if ((curChar == 0x30D) || (curChar == 0x30E) || (curChar == 0x30F)) { index = curChar - 0x30D; @@ -2923,16 +2921,16 @@ void Message_Decode(PlayState* play) { for (i = 0; i < playerNameLen; i++) { curChar = ((void)0, gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[index][i]); //! FAKE: 0xFFFF - ptr2 = &font->fontBuf[(curChar & 0xFFFF) * FONT_CHAR_TEX_SIZE]; + fontBuf = &font->fontBuf[(curChar & 0xFFFF) * FONT_CHAR_TEX_SIZE]; msgCtx->decodedBuffer.wchar[decodedBufPos + i] = 0x30D; for (var_v0 = 0; var_v0 < FONT_CHAR_TEX_SIZE; var_v0 += 4) { - font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 0] = ptr2[var_v0 + 0]; - font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 1] = ptr2[var_v0 + 1]; - font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 2] = ptr2[var_v0 + 2]; - font->charBuf[font->unk_11D88][charTexIdx + var_v0 + 3] = ptr2[var_v0 + 3]; + font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 0] = fontBuf[var_v0 + 0]; + font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 1] = fontBuf[var_v0 + 1]; + font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 2] = fontBuf[var_v0 + 2]; + font->charBuf[font->unk_11D88][charTexIndex + var_v0 + 3] = fontBuf[var_v0 + 3]; } - charTexIdx += FONT_CHAR_TEX_SIZE; + charTexIndex += FONT_CHAR_TEX_SIZE; } decodedBufPos += playerNameLen - 1; spC0 += playerNameLen * (16.0f * msgCtx->textCharScale); @@ -2959,14 +2957,14 @@ void Message_Decode(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadChar(play, digits[i] + 0x824F, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, digits[i] + 0x824F, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[decodedBufPos] = digits[i] + 0x824F; decodedBufPos++; spC0 += 16.0f * msgCtx->textCharScale; } } - Message_LoadChar(play, 0x94AD, &charTexIdx, &spC0, decodedBufPos); + Message_LoadChar(play, 0x94AD, &charTexIndex, &spC0, decodedBufPos); } else if (curChar == 0x1F) { decodedBufPos--; for (i = 0; i < font->msgBuf.wchar[msgCtx->msgBufPos + 1]; i++) { @@ -2982,7 +2980,7 @@ void Message_Decode(PlayState* play) { spD2++; spC0 = 0.0f; if (curChar == 0xA) { - spE0++; + numLines++; } } else if ((curChar == 0x101) || (curChar == 0x102) || (curChar == 0x104) || ((curChar >= 0x130) && (curChar < 0x137))) { @@ -3001,8 +2999,8 @@ void Message_Decode(PlayState* play) { } else if (curChar == 0x128) { msgCtx->decodedBuffer.wchar[++decodedBufPos] = font->msgBuf.wchar[++msgCtx->msgBufPos]; } else if ((curChar != 0x20) && ((curChar < 0x2000) || (curChar >= 0x2009))) { - Font_LoadChar(play, curChar, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadChar(play, curChar, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; if ((curChar == 0x8169) || (curChar == 0x8175)) { spC0 += 10.0f * msgCtx->textCharScale; } else if (curChar == 0x8145) { @@ -3041,7 +3039,7 @@ void func_80150A84(PlayState* play) { if (D_801CFC78[textBoxType] != 14) { DmaMgr_SendRequest0(msgCtx->textboxSegment, - &SEGMENT_ROM_START(message_static)[D_801CFC78[textBoxType] * 0x1000], 0x1000); + SEGMENT_ROM_START(message_static) + D_801CFC78[textBoxType] * 0x1000, 0x1000); if (!play->pauseCtx.bombersNotebookOpen) { if ((textBoxType == TEXTBOX_TYPE_0) || (textBoxType == TEXTBOX_TYPE_6) || (textBoxType == TEXTBOX_TYPE_A) || @@ -3168,17 +3166,17 @@ void Message_OpenText(PlayState* play, u16 textId) { if (msgCtx->textIsCredits) { Message_FindCreditsMessage(play, textId); msgCtx->msgLength = font->messageEnd; - DmaMgr_SendRequest0(&font->msgBuf, &SEGMENT_ROM_START(staff_message_data_static)[font->messageStart], + DmaMgr_SendRequest0(&font->msgBuf, SEGMENT_ROM_START(staff_message_data_static) + font->messageStart, font->messageEnd); } else if (gSaveContext.options.language == LANGUAGE_JPN) { Message_FindMessage(play, textId); msgCtx->msgLength = font->messageEnd; - DmaMgr_SendRequest0(&font->msgBuf, &SEGMENT_ROM_START(message_data_static)[font->messageStart], + DmaMgr_SendRequest0(&font->msgBuf, SEGMENT_ROM_START(message_data_static) + font->messageStart, font->messageEnd); } else { Message_FindMessageNES(play, textId); msgCtx->msgLength = font->messageEnd; - DmaMgr_SendRequest0(&font->msgBuf, &SEGMENT_ROM_START(message_data_static)[font->messageStart], + DmaMgr_SendRequest0(&font->msgBuf, SEGMENT_ROM_START(message_data_static) + font->messageStart, font->messageEnd); } @@ -3267,12 +3265,12 @@ void func_801514B0(PlayState* play, u16 arg1, u8 arg2) { if (gSaveContext.options.language == LANGUAGE_JPN) { Message_FindMessage(play, arg1); msgCtx->msgLength = font->messageEnd; - DmaMgr_SendRequest0(&font->msgBuf, &SEGMENT_ROM_START(message_data_static)[font->messageStart], + DmaMgr_SendRequest0(&font->msgBuf, SEGMENT_ROM_START(message_data_static) + font->messageStart, font->messageEnd); } else { Message_FindMessageNES(play, arg1); msgCtx->msgLength = font->messageEnd; - DmaMgr_SendRequest0(&font->msgBuf, &SEGMENT_ROM_START(message_data_static)[font->messageStart], + DmaMgr_SendRequest0(&font->msgBuf, SEGMENT_ROM_START(message_data_static) + font->messageStart, font->messageEnd); } msgCtx->choiceNum = 0; @@ -3287,7 +3285,7 @@ void func_801514B0(PlayState* play, u16 arg1, u8 arg2) { msgCtx->textBoxPos = arg2; msgCtx->unk11F0C = msgCtx->unk11F08 & 0xF; msgCtx->textUnskippable = true; - DmaMgr_SendRequest0(msgCtx->textboxSegment, &SEGMENT_ROM_START(message_static)[D_801CFC78[0] << 12], 0x1000); + DmaMgr_SendRequest0(msgCtx->textboxSegment, SEGMENT_ROM_START(message_static) + (D_801CFC78[0] << 12), 0x1000); msgCtx->textboxColorRed = 0; msgCtx->textboxColorGreen = 0; msgCtx->textboxColorBlue = 0; diff --git a/src/code/z_message_nes.c b/src/code/z_message_nes.c index b3ef5d2a9..ebbd40ab0 100644 --- a/src/code/z_message_nes.c +++ b/src/code/z_message_nes.c @@ -544,11 +544,9 @@ void Message_DrawTextNES(PlayState* play, Gfx** gfxP, u16 textDrawPos) { case 0x17: // MESSAGE_QUICKTEXT_ENABLE if ((i + 1) == msgCtx->textDrawPos) { - j = i; if ((msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) || ((msgCtx->msgMode >= MSGMODE_OCARINA_STARTING) && (msgCtx->msgMode <= MSGMODE_26))) { - //! FAKE: - dummy:; + j = i; while (true) { if ((msgCtx->decodedBuffer.schar[j] != 0x18) && (msgCtx->decodedBuffer.schar[j] != 0x1A) && (msgCtx->decodedBuffer.schar[j] != 0x19) && (msgCtx->decodedBuffer.schar[j] != 0xE0) && @@ -956,33 +954,28 @@ u8 sMaskCodeTextLengthENG[] = { void Message_DecodeNES(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; - Font* font = &msgCtx->font; // spE0 - Player* player; // spDC - s16 decodedBufPos; // spDA + Font* font = &msgCtx->font; + Player* player = GET_PLAYER(play); + s16 decodedBufPos = 0; s16 value; u32 timeToMoonCrash; - s16 i; // s1 - s16 spD0; // numLines - s16 digits[4]; // spC8/CA/CC/CE - s16 spC6; + s16 i; + s16 numLines; + s16 digits[4]; + s16 spC6 = 0; u16 sfxHi; f32 var_fs0; - s32 charTexIdx; // spBC + s32 charTexIndex = 0; s16 loadChar; - s16 temp_s2_2; + s16 index; s16 spA8[8]; f32 spA4; - u8* ptr; - u8 curChar; // sp78 - s8 charOffset; - s16 playerNameLen; // s0 + u8* fontBuf; + s16 playerNameLen; s16 var_v1_3; + u8 curChar; - player = GET_PLAYER(play); - decodedBufPos = 0; - spC6 = 0; - charTexIdx = 0; - spD0 = 0; + numLines = 0; msgCtx->textDelayTimer = 0; msgCtx->textDelay = msgCtx->textDelayTimer; msgCtx->textFade = false; @@ -1007,52 +1000,54 @@ void Message_DecodeNES(PlayState* play) { if (msgCtx->unk11F18 != 0) { msgCtx->unk11F1A[spC6] = (s16)((msgCtx->textCharScale * 16.0f * 16.0f) - spA4) / 2; } + spA4 = 0.0f; + if (curChar == 0x12) { if ((msgCtx->textBoxType != TEXTBOX_TYPE_3) && (msgCtx->textBoxType != TEXTBOX_TYPE_4)) { - if (spD0 < 2) { + if (numLines < 2) { msgCtx->unk11FFA = msgCtx->textboxY + XREG(10); - } else if (spD0 == 2) { + } else if (numLines == 2) { msgCtx->unk11FFA = msgCtx->textboxY + XREG(11); - } else if (spD0 == 3) { + } else if (numLines == 3) { msgCtx->unk11FFA = msgCtx->textboxY + XREG(12); } } } else { if ((msgCtx->textBoxType != TEXTBOX_TYPE_3) && (msgCtx->textBoxType != TEXTBOX_TYPE_4)) { - if (spD0 == 0) { + if (numLines == 0) { msgCtx->unk11FFA = msgCtx->textboxY + XREG(13) + XREG(10); - } else if (spD0 == 1) { + } else if (numLines == 1) { msgCtx->unk11FFA = msgCtx->textboxY + XREG(13) + XREG(11); - } else if (spD0 == 2) { + } else if (numLines == 2) { msgCtx->unk11FFA = msgCtx->textboxY + XREG(13) + XREG(12); } } } + { - //! FAKE: Use pad once stack has enough space - dummy:; + s8 requiredScopeTemp; if ((curChar == 0x1B) || (curChar == 0x1C) || (curChar == 0x1D)) { //! FAKE: & 0xFFFF to fix regalloc - msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[(msgCtx->msgBufPos & 0xFFFF) + 1]; - msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[(msgCtx->msgBufPos) + 2]; + msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[msgCtx->msgBufPos + 2]; msgCtx->msgBufPos += 3; } - msgCtx->decodedTextLen = decodedBufPos; - msgCtx->unk120D8 = spD0; - if (msgCtx->textboxSkipped || (msgCtx->textBoxType == TEXTBOX_TYPE_1) || - (msgCtx->textBoxType == TEXTBOX_TYPE_3) || (msgCtx->textBoxType == TEXTBOX_TYPE_6) || - (msgCtx->textBoxType == TEXTBOX_TYPE_8) || (msgCtx->textBoxType == TEXTBOX_TYPE_9) || - (msgCtx->textBoxType == TEXTBOX_TYPE_B) || (msgCtx->unk11F0C == 3)) { - msgCtx->textDrawPos = msgCtx->decodedTextLen; - } - msgCtx->unk120C8 = msgCtx->unk120CE; - msgCtx->unk120CA = msgCtx->unk120D0; - msgCtx->unk120CC = msgCtx->unk120D2; - break; } + + msgCtx->decodedTextLen = decodedBufPos; + msgCtx->unk120D8 = numLines; + if (msgCtx->textboxSkipped || (msgCtx->textBoxType == TEXTBOX_TYPE_1) || + (msgCtx->textBoxType == TEXTBOX_TYPE_3) || (msgCtx->textBoxType == TEXTBOX_TYPE_6) || + (msgCtx->textBoxType == TEXTBOX_TYPE_8) || (msgCtx->textBoxType == TEXTBOX_TYPE_9) || + (msgCtx->textBoxType == TEXTBOX_TYPE_B) || (msgCtx->unk11F0C == 3)) { + msgCtx->textDrawPos = msgCtx->decodedTextLen; + } + msgCtx->unk120C8 = msgCtx->unk120CE; + msgCtx->unk120CA = msgCtx->unk120D0; + msgCtx->unk120CC = msgCtx->unk120D2; + break; } else if (curChar == 0x16) { // Substitute the player name control character for the file's player name. for (playerNameLen = ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); playerNameLen > 0; @@ -1071,29 +1066,28 @@ void Message_DecodeNES(PlayState* play) { } else if (curChar == 0x3F) { curChar = '-'; } else if (curChar < 0xA) { - charOffset = curChar; - curChar = '0' + charOffset; + curChar += 0; + curChar = '0' + curChar; } else if (curChar < 0x24) { - charOffset = curChar; - curChar = 'A' - 10 + charOffset; + curChar += 0; + curChar = 'A' - 10 + curChar; } else if (curChar < 0x3E) { - charOffset = curChar; - curChar = 'a' - 36 + charOffset; + curChar += 0; + curChar = 'a' - 36 + curChar; } if (curChar != ' ') { - Font_LoadCharNES(play, curChar, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, curChar, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; } msgCtx->decodedBuffer.schar[decodedBufPos] = curChar; decodedBufPos++; } decodedBufPos--; } else if (curChar == 0xC1) { - //! TODO: + 0x900 on the first one? DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1000, SEGMENT_ROM_START(message_texture_static), 0x900); - DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1900, - (uintptr_t)SEGMENT_ROM_START(message_texture_static) + 0x900, 0x900); - spD0 = 2; + DmaMgr_SendRequest0(msgCtx->textboxSegment + 0x1900, SEGMENT_ROM_START(message_texture_static) + 0x900, + 0x900); + numLines = 2; spC6 = 2; msgCtx->unk12012 = msgCtx->textboxY + 8; msgCtx->unk11F18 = 1; @@ -1114,7 +1108,7 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadCharNES(play, spA8[i + 3], &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, spA8[i + 3], &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } @@ -1129,7 +1123,7 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadCharNES(play, spA8[i], &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, spA8[i], &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } @@ -1150,18 +1144,18 @@ void Message_DecodeNES(PlayState* play) { } for (i = 0; i < 4; i++) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; if (i == 1) { - Font_LoadCharNES(play, '"', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, '"', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = 0x22; decodedBufPos++; } else if (i == 3) { - Font_LoadCharNES(play, 0x27, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, 0x27, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = 0x27; } } @@ -1189,8 +1183,8 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; @@ -1203,14 +1197,14 @@ void Message_DecodeNES(PlayState* play) { msgCtx->unk120C0 = decodedBufPos; msgCtx->unk120C2 = 2; msgCtx->bankRupeesSelected = 0; - msgCtx->unk120C4 = charTexIdx; + msgCtx->unk120C4 = charTexIndex; digits[0] = digits[1] = digits[2] = 0; for (i = 0; i < 3; i++) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } - Message_LoadLocalizedRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4); + Message_LoadLocalizedRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4); } else if (curChar == 0xCD) { digits[0] = digits[1] = 0; digits[2] = msgCtx->bankRupeesSelected; @@ -1231,11 +1225,11 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } - Message_LoadRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4, msgCtx->bankRupeesSelected); + Message_LoadRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4, msgCtx->bankRupeesSelected); } else if (curChar == 0xCE) { digits[0] = digits[1] = digits[2] = 0; digits[3] = msgCtx->bankRupees; @@ -1259,13 +1253,13 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } - Message_LoadRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4, msgCtx->bankRupees); + Message_LoadRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4, msgCtx->bankRupees); } else if (curChar == 0xCF) { - Message_LoadTimeNES(play, curChar, &charTexIdx, &spA4, &decodedBufPos); + Message_LoadTimeNES(play, curChar, &charTexIndex, &spA4, &decodedBufPos); } else if (curChar == 0xC) { digits[0] = digits[1] = 0; digits[2] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex]; @@ -1285,30 +1279,30 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 1) || (gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 21)) { - Message_LoadCharNES(play, 's', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 's', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 't', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos); } else if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 2) || (gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 22)) { - Message_LoadCharNES(play, 'n', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'n', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'd', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos); } else if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 3) || (gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 23)) { - Message_LoadCharNES(play, 'r', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'r', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'd', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos); } else { - Message_LoadCharNES(play, 't', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'h', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'h', &charTexIndex, &spA4, decodedBufPos); } } else if (curChar == 0xD) { digits[0] = digits[1] = 0; @@ -1329,30 +1323,30 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } if ((Inventory_GetSkullTokenCount(play->sceneId) == 1) || (Inventory_GetSkullTokenCount(play->sceneId) == 21)) { - Message_LoadCharNES(play, 's', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 's', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 't', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos); } else if ((Inventory_GetSkullTokenCount(play->sceneId) == 2) || (Inventory_GetSkullTokenCount(play->sceneId) == 22)) { - Message_LoadCharNES(play, 'n', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'n', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'd', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos); } else if ((Inventory_GetSkullTokenCount(play->sceneId) == 3) || (Inventory_GetSkullTokenCount(play->sceneId) == 23)) { - Message_LoadCharNES(play, 'r', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'r', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'd', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos); } else { - Message_LoadCharNES(play, 't', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'h', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'h', &charTexIndex, &spA4, decodedBufPos); } } else if (curChar == 0xE) { digits[0] = 0; @@ -1365,7 +1359,7 @@ void Message_DecodeNES(PlayState* play) { for (i = 0; i < 2; i++) { if ((i == 1) || (digits[i] != 0)) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } @@ -1394,7 +1388,7 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } @@ -1405,58 +1399,58 @@ void Message_DecodeNES(PlayState* play) { msgCtx->unk120C0 = decodedBufPos; msgCtx->unk120C2 = 0; msgCtx->bankRupeesSelected = 0; - msgCtx->unk120C4 = charTexIdx; + msgCtx->unk120C4 = charTexIndex; digits[0] = digits[1] = digits[2] = 0; for (i = 0; i < 2; i++) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } - Message_LoadPluralRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4); + Message_LoadPluralRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4); } else if (curChar == 0xD1) { decodedBufPos++; msgCtx->unk120BE = spC6; msgCtx->unk120C0 = decodedBufPos; msgCtx->unk120C2 = 0; msgCtx->bankRupeesSelected = 0; - msgCtx->unk120C4 = charTexIdx; + msgCtx->unk120C4 = charTexIndex; for (i = 0; i < 5; i++) { msgCtx->unk12054[i] = 1; - Message_LoadCharNES(play, '1', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, '1', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } decodedBufPos--; } else if (curChar == 0xD3) { if (((void)0, gSaveContext.save.timeSpeedOffset) == 18) { - temp_s2_2 = 0; + index = 0; } else if (((void)0, gSaveContext.save.timeSpeedOffset) == 0) { - temp_s2_2 = 1; + index = 1; } else { - temp_s2_2 = 2; + index = 2; } for (i = 0; i < 4; i++, decodedBufPos++) { - msgCtx->decodedBuffer.schar[decodedBufPos] = D_801D08D8[temp_s2_2][i]; - Font_LoadCharNES(play, D_801D08D8[temp_s2_2][i], charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + msgCtx->decodedBuffer.schar[decodedBufPos] = D_801D08D8[index][i]; + Font_LoadCharNES(play, D_801D08D8[index][i], charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; } decodedBufPos--; spA4 += 3.0f * (16.0f * msgCtx->textCharScale); - msgCtx->choiceIndex = temp_s2_2; + msgCtx->choiceIndex = index; } else if (curChar == 0xD4) { - Message_LoadOwlWarpTextNES(play, &charTexIdx, &spA4, &decodedBufPos); + Message_LoadOwlWarpTextNES(play, &charTexIndex, &spA4, &decodedBufPos); } else if (curChar == 0xD5) { decodedBufPos++; msgCtx->unk120BE = spC6; msgCtx->unk120C0 = decodedBufPos; msgCtx->unk120C2 = 0; msgCtx->bankRupeesSelected = 0; - msgCtx->unk120C4 = charTexIdx; + msgCtx->unk120C4 = charTexIndex; for (i = 0; i < 3; i++) { msgCtx->unk12054[i] = 1; - Font_LoadCharNES(play, '1', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, '1', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = '1'; spA4 += 16.0f * msgCtx->textCharScale; decodedBufPos++; @@ -1467,13 +1461,13 @@ void Message_DecodeNES(PlayState* play) { msgCtx->decodedBuffer.schar[decodedBufPos] = D_801D08E4[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[i])]; decodedBufPos++; - Message_LoadCharNES(play, i + '1', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, i + '1', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } msgCtx->decodedBuffer.schar[decodedBufPos] = 0; } else if ((curChar >= 0xD7) && (curChar < 0xDB)) { digits[0] = digits[1] = 0; - digits[2] = 15 - gSaveContext.save.saveInfo.inventory.strayFairies[curChar - 0xD7]; + digits[2] = STRAY_FAIRY_SCATTERED_TOTAL - gSaveContext.save.saveInfo.inventory.strayFairies[curChar - 0xD7]; while (digits[2] >= 100) { digits[0]++; @@ -1490,8 +1484,8 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; @@ -1520,8 +1514,8 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; @@ -1540,8 +1534,8 @@ void Message_DecodeNES(PlayState* play) { } for (i = 0; i < 3; i++) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; @@ -1570,19 +1564,19 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; } } - Message_LoadPluralRupeesNES(play, &decodedBufPos, &charTexIdx, &spA4); + Message_LoadPluralRupeesNES(play, &decodedBufPos, &charTexIndex, &spA4); } else if (curChar == 0xDF) { for (i = 0; i < 5; i++) { digits[i] = gSaveContext.save.saveInfo.bomberCode[i]; - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; @@ -1591,14 +1585,14 @@ void Message_DecodeNES(PlayState* play) { } else if ((curChar >= 0xE1) && (curChar < 0xE7)) { msgCtx->decodedBuffer.schar[decodedBufPos++] = D_801D08E4[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0xE1)])]; - temp_s2_2 = sMaskCodeTextLengthENG[( - (void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0xE1)])]; - for (playerNameLen = 0; playerNameLen < temp_s2_2; playerNameLen++, decodedBufPos++) { + index = sMaskCodeTextLengthENG[((void)0, + gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0xE1)])]; + for (playerNameLen = 0; playerNameLen < index; playerNameLen++, decodedBufPos++) { Message_LoadCharNES( play, sMaskCodeTextENG[((void)0, gSaveContext.save.saveInfo.spiderHouseMaskOrder[(s16)(curChar - 0xE1)])] [playerNameLen], - &charTexIdx, &spA4, decodedBufPos); + &charTexIndex, &spA4, decodedBufPos); } msgCtx->decodedBuffer.schar[decodedBufPos] = 0; @@ -1618,25 +1612,25 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Message_LoadCharNES(play, digits[i] + '0', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, digits[i] + '0', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; } } msgCtx->decodedBuffer.schar[decodedBufPos] = ' '; decodedBufPos++; - Message_LoadCharNES(play, 'h', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'h', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'o', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'o', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'u', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'u', &charTexIndex, &spA4, decodedBufPos); decodedBufPos++; - Message_LoadCharNES(play, 'r', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 'r', &charTexIndex, &spA4, decodedBufPos); if ((digits[0] != 0) || (digits[1] != 1)) { decodedBufPos++; - Message_LoadCharNES(play, 's', &charTexIdx, &spA4, decodedBufPos); + Message_LoadCharNES(play, 's', &charTexIndex, &spA4, decodedBufPos); } } else if (curChar == 0xE8) { - Message_LoadTimeNES(play, curChar, &charTexIdx, &spA4, &decodedBufPos); + Message_LoadTimeNES(play, curChar, &charTexIndex, &spA4, &decodedBufPos); } else if ((curChar == 0xF0) || (curChar == 0xF1) || (curChar == 0xF2) || (curChar == 0xF8)) { if (curChar == 0xF8) { @@ -1673,8 +1667,8 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; @@ -1699,8 +1693,8 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadCharNES(play, spA8[i], charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, spA8[i], charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = spA8[i]; decodedBufPos++; } else { @@ -1728,18 +1722,18 @@ void Message_DecodeNES(PlayState* play) { } for (i = 0; i < 4; i++) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; if (i == 1) { - Font_LoadCharNES(play, '"', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, '"', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = '"'; decodedBufPos++; } else if (i == 3) { - Font_LoadCharNES(play, 0x27, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, 0x27, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = 0x27; } } @@ -1767,8 +1761,8 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; @@ -1776,28 +1770,26 @@ void Message_DecodeNES(PlayState* play) { } decodedBufPos--; } else if ((curChar == 0xFD) || (curChar == 0xFE) || (curChar == 0xFF)) { - temp_s2_2 = curChar - 0xFD; + index = curChar - 0xFD; for (playerNameLen = 8; playerNameLen > 0; playerNameLen--) { if (((void)0, - gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[temp_s2_2][playerNameLen - 1]) != - 0x3E) { + gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[index][playerNameLen - 1]) != 0x3E) { break; } } for (i = 0; i < playerNameLen; i++) { - curChar = (gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[temp_s2_2][i]); + curChar = ((void)0, gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[index][i]); msgCtx->decodedBuffer.schar[decodedBufPos + i] = 0xFD; + fontBuf = &font->fontBuf[(curChar & 0xFFFF) * FONT_CHAR_TEX_SIZE]; - // playerName - ptr = &font->fontBuf[(curChar & 0xFFFF) * FONT_CHAR_TEX_SIZE]; for (var_v1_3 = 0; var_v1_3 < FONT_CHAR_TEX_SIZE; var_v1_3 += 4) { - font->charBuf[font->unk_11D88][charTexIdx + var_v1_3 + 0] = ptr[var_v1_3 + 0]; - font->charBuf[font->unk_11D88][charTexIdx + var_v1_3 + 1] = ptr[var_v1_3 + 1]; - font->charBuf[font->unk_11D88][charTexIdx + var_v1_3 + 2] = ptr[var_v1_3 + 2]; - font->charBuf[font->unk_11D88][charTexIdx + var_v1_3 + 3] = ptr[var_v1_3 + 3]; + font->charBuf[font->unk_11D88][charTexIndex + var_v1_3 + 0] = fontBuf[var_v1_3 + 0]; + font->charBuf[font->unk_11D88][charTexIndex + var_v1_3 + 1] = fontBuf[var_v1_3 + 1]; + font->charBuf[font->unk_11D88][charTexIndex + var_v1_3 + 2] = fontBuf[var_v1_3 + 2]; + font->charBuf[font->unk_11D88][charTexIndex + var_v1_3 + 3] = fontBuf[var_v1_3 + 3]; } - charTexIdx += FONT_CHAR_TEX_SIZE; + charTexIndex += FONT_CHAR_TEX_SIZE; } decodedBufPos += playerNameLen - 1; spA4 += playerNameLen * (16.0f * msgCtx->textCharScale); @@ -1824,8 +1816,8 @@ void Message_DecodeNES(PlayState* play) { loadChar = true; } if (loadChar) { - Font_LoadCharNES(play, digits[i] + '0', charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, digits[i] + '0', charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.schar[decodedBufPos] = digits[i] + '0'; decodedBufPos++; spA4 += 16.0f * msgCtx->textCharScale; @@ -1847,7 +1839,7 @@ void Message_DecodeNES(PlayState* play) { spC6++; spA4 = 0.0f; if (curChar == 0x11) { - spD0++; + numLines++; } } else if ((curChar == 0x17) || (curChar == 0x18) || (curChar == 0x1A)) { // pass @@ -1872,8 +1864,8 @@ void Message_DecodeNES(PlayState* play) { msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos]; msgCtx->decodedBuffer.schar[++decodedBufPos] = font->msgBuf.schar[++msgCtx->msgBufPos]; } else if ((curChar != 0x20) && (curChar >= 9)) { - Font_LoadCharNES(play, curChar, charTexIdx); - charTexIdx += FONT_CHAR_TEX_SIZE; + Font_LoadCharNES(play, curChar, charTexIndex); + charTexIndex += FONT_CHAR_TEX_SIZE; spA4 += sNESFontWidths[curChar - ' '] * msgCtx->textCharScale; } else if (curChar == 0x20) { spA4 += 6.0f; diff --git a/src/code/z_message_tables.inc.c b/src/code/z_message_tables.inc.c index fb60e7a14..a7b41c8a9 100644 --- a/src/code/z_message_tables.inc.c +++ b/src/code/z_message_tables.inc.c @@ -2,1171 +2,1560 @@ #include "PR/mbi.h" MessageTableEntry D_801C6B98[4590] = { - { 0, 0, 0x08000000 }, { 2, 0, 0x0800000C }, { 4, 0, 0x08000064 }, { 5, 0, 0x080000B8 }, - { 6, 0, 0x08000110 }, { 7, 0, 0x08000168 }, { 8, 0, 0x080001C4 }, { 9, 0, 0x08000248 }, - { 0xA, 0, 0x080002A8 }, { 0xB, 0, 0x08000310 }, { 0xC, 0, 0x0800031C }, { 0xD, 0, 0x080003E8 }, - { 0xE, 0, 0x08000474 }, { 0xF, 0, 0x080004BC }, { 0x10, 0, 0x08000504 }, { 0x11, 0, 0x08000510 }, - { 0x12, 0, 0x08000554 }, { 0x13, 0, 0x08000560 }, { 0x14, 0, 0x0800056C }, { 0x15, 0, 0x08000604 }, - { 0x16, 0, 0x080006A0 }, { 0x17, 0, 0x0800073C }, { 0x18, 0, 0x080007D8 }, { 0x19, 0, 0x08000874 }, - { 0x1A, 0, 0x08000940 }, { 0x1B, 0, 0x080009E8 }, { 0x1C, 0, 0x08000A84 }, { 0x1D, 0, 0x08000AD4 }, - { 0x1E, 0, 0x08000B28 }, { 0x1F, 0, 0x08000B58 }, { 0x20, 0, 0x08000B88 }, { 0x21, 0, 0x08000BB8 }, - { 0x22, 0, 0x08000BE8 }, { 0x23, 0, 0x08000C78 }, { 0x24, 0, 0x08000CD0 }, { 0x25, 0, 0x08000D30 }, - { 0x26, 0, 0x08000DA4 }, { 0x27, 0, 0x08000E38 }, { 0x28, 0, 0x08000EB4 }, { 0x29, 0, 0x08000F88 }, - { 0x2A, 0, 0x08001060 }, { 0x2B, 0, 0x0800113C }, { 0x2C, 0, 0x08001148 }, { 0x2D, 0, 0x08001154 }, - { 0x2E, 0, 0x08001160 }, { 0x2F, 0, 0x08001210 }, { 0x30, 0, 0x0800121C }, { 0x31, 0, 0x08001228 }, - { 0x32, 0, 0x08001234 }, { 0x33, 0, 0x080012D4 }, { 0x34, 0, 0x0800139C }, { 0x35, 0, 0x08001428 }, - { 0x36, 0, 0x080014B0 }, { 0x37, 0, 0x08001554 }, { 0x38, 0, 0x08001560 }, { 0x39, 0, 0x08001624 }, - { 0x3A, 0, 0x080016B8 }, { 0x3B, 0, 0x08001768 }, { 0x3C, 0, 0x08001814 }, { 0x3D, 0, 0x08001884 }, - { 0x3E, 0, 0x080018E0 }, { 0x3F, 0, 0x080019DC }, { 0x40, 0, 0x08001A48 }, { 0x41, 0, 0x08001A54 }, - { 0x42, 0, 0x08001B0C }, { 0x43, 0, 0x08001BF4 }, { 0x4C, 0, 0x08001CBC }, { 0x4D, 0, 0x08001DBC }, - { 0x4E, 0, 0x08001DC8 }, { 0x50, 0, 0x08001DD4 }, { 0x51, 0, 0x08001EA4 }, { 0x52, 0, 0x08001EB0 }, - { 0x53, 0, 0x08001EFC }, { 0x54, 0, 0x08001F08 }, { 0x55, 0, 0x08001F14 }, { 0x56, 0, 0x08001FB8 }, - { 0x57, 0, 0x08002058 }, { 0x58, 0, 0x080020F8 }, { 0x59, 0, 0x080021A0 }, { 0x5A, 0, 0x08002290 }, - { 0x5B, 0, 0x080022E4 }, { 0x5C, 0, 0x08002388 }, { 0x5D, 0, 0x08002434 }, { 0x5E, 0, 0x080024E8 }, - { 0x5F, 0, 0x08002590 }, { 0x60, 0, 0x0800261C }, { 0x61, 0, 0x080026F0 }, { 0x62, 0, 0x080026FC }, - { 0x63, 0, 0x08002760 }, { 0x64, 0, 0x080027CC }, { 0x65, 0, 0x080027D8 }, { 0x66, 0, 0x0800282C }, - { 0x67, 0, 0x08002884 }, { 0x68, 0, 0x080028EC }, { 0x69, 0, 0x08002950 }, { 0x6A, 0, 0x080029CC }, - { 0x6B, 0, 0x08002A24 }, { 0x6E, 0, 0x08002A7C }, { 0x6F, 0, 0x08002A88 }, { 0x70, 0, 0x08002B54 }, - { 0x71, 0, 0x08002B60 }, { 0x72, 0, 0x08002B6C }, { 0x73, 0, 0x08002B78 }, { 0x74, 0, 0x08002B84 }, - { 0x75, 0, 0x08002B90 }, { 0x76, 0, 0x08002B9C }, { 0x77, 0, 0x08002BA8 }, { 0x78, 0, 0x08002BB4 }, - { 0x79, 0, 0x08002C98 }, { 0x7A, 0, 0x08002D54 }, { 0x7B, 0, 0x08002E14 }, { 0x7C, 0, 0x08002E90 }, - { 0x7D, 0, 0x08002F20 }, { 0x7E, 0, 0x08002F9C }, { 0x7F, 0, 0x0800302C }, { 0x80, 0, 0x0800309C }, - { 0x81, 0, 0x08003144 }, { 0x82, 0, 0x080031B0 }, { 0x83, 0, 0x08003224 }, { 0x84, 0, 0x08003298 }, - { 0x85, 0, 0x08003324 }, { 0x86, 0, 0x08003370 }, { 0x87, 0, 0x08003444 }, { 0x88, 0, 0x080034F8 }, - { 0x89, 0, 0x08003560 }, { 0x8A, 0, 0x080035F4 }, { 0x8B, 0, 0x080036B8 }, { 0x8C, 0, 0x08003710 }, - { 0x8D, 0, 0x080037A0 }, { 0x8E, 0, 0x08003828 }, { 0x8F, 0, 0x080038E0 }, { 0x91, 0, 0x0800396C }, - { 0x92, 0, 0x08003A44 }, { 0x93, 0, 0x08003B08 }, { 0x94, 0, 0x08003B60 }, { 0x95, 0, 0x08003B6C }, - { 0x96, 0, 0x08003BC0 }, { 0x97, 0, 0x08003C1C }, { 0x98, 0, 0x08003C60 }, { 0x99, 0, 0x08003CA8 }, - { 0x9A, 0, 0x08003CF4 }, { 0x9B, 0, 0x08003D40 }, { 0x9C, 0, 0x08003DE0 }, { 0x9D, 0, 0x08003E78 }, - { 0x9E, 0, 0x08003F10 }, { 0x9F, 0, 0x08003FA8 }, { 0xA0, 0, 0x08003FB4 }, { 0xA1, 0, 0x0800401C }, - { 0xA2, 0, 0x08004088 }, { 0xA3, 0, 0x08004094 }, { 0xA4, 0, 0x080040A0 }, { 0xA9, 0, 0x080040AC }, - { 0xAA, 0, 0x08004130 }, { 0xAB, 0, 0x08004198 }, { 0xAC, 0, 0x08004240 }, { 0xAD, 0, 0x0800424C }, - { 0xAE, 0, 0x08004258 }, { 0xAF, 0, 0x08004264 }, { 0xB0, 0, 0x08004270 }, { 0xB1, 0, 0x0800427C }, - { 0xB2, 0, 0x08004288 }, { 0xB4, 0, 0x08004294 }, { 0xB5, 0, 0x08004354 }, { 0xB6, 0, 0x08004418 }, - { 0xB7, 0, 0x080044E0 }, { 0xB8, 0, 0x080045A8 }, { 0xB9, 0, 0x08004670 }, { 0xBA, 0, 0x08004738 }, - { 0xBB, 0, 0x08004744 }, { 0xBC, 0, 0x08004750 }, { 0xBD, 0, 0x0800475C }, { 0xBE, 0, 0x08004768 }, - { 0xBF, 0, 0x08004774 }, { 0xC0, 0, 0x08004780 }, { 0xC4, 0, 0x0800478C }, { 0xC5, 0, 0x080047D0 }, - { 0xC6, 0, 0x08004850 }, { 0xC7, 0, 0x080048D0 }, { 0xC8, 0, 0x08004954 }, { 0xC9, 0, 0x08004A5C }, - { 0xCA, 0, 0x08004AFC }, { 0xCB, 0, 0x08004C14 }, { 0xCC, 0, 0x08004C78 }, { 0xCD, 0, 0x08004CDC }, - { 0xF2, 0, 0x08004D8C }, { 0xF3, 0, 0x08004DC8 }, { 0xF4, 0, 0x08004E3C }, { 0xF5, 0, 0x08004E8C }, - { 0xF6, 0, 0x08004EDC }, { 0xF7, 0, 0x08004F30 }, { 0xF8, 0, 0x08004F70 }, { 0xF9, 0, 0x08004F9C }, - { 0xFA, 0, 0x08005034 }, { 0xFB, 0, 0x08005088 }, { 0xFC, 0, 0x080050FC }, { 0xFD, 0, 0x0800515C }, - { 0xFE, 0, 0x08005184 }, { 0xFF, 0, 0x080051B8 }, { 0x100, 0, 0x08005214 }, { 0x101, 0, 0x08005230 }, - { 0x102, 0, 0x0800524C }, { 0x103, 0, 0x08005268 }, { 0x104, 0, 0x08005284 }, { 0x105, 0, 0x080052A0 }, - { 0x106, 0, 0x080052B8 }, { 0x107, 0, 0x080052D4 }, { 0x108, 0, 0x080052F8 }, { 0x109, 0, 0x0800531C }, - { 0x10A, 0, 0x0800533C }, { 0x10B, 0, 0x08005358 }, { 0x10C, 0, 0x0800537C }, { 0x10D, 0, 0x08005390 }, - { 0x10E, 0, 0x080053A8 }, { 0x10F, 0, 0x080053C4 }, { 0x110, 0, 0x080053DC }, { 0x111, 0, 0x080053FC }, - { 0x112, 0, 0x08005414 }, { 0x113, 0, 0x0800542C }, { 0x114, 0, 0x08005450 }, { 0x115, 0, 0x08005470 }, - { 0x116, 0, 0x0800548C }, { 0x117, 0, 0x080054A8 }, { 0x118, 0, 0x080054BC }, { 0x119, 0, 0x080054D4 }, - { 0x11A, 0, 0x080054F4 }, { 0x11B, 0, 0x08005518 }, { 0x11C, 0, 0x0800553C }, { 0x11D, 0, 0x0800555C }, - { 0x11E, 0, 0x08005578 }, { 0x11F, 0, 0x08005598 }, { 0x120, 0, 0x080055B4 }, { 0x121, 0, 0x080055CC }, - { 0x122, 0, 0x080055E8 }, { 0x123, 0, 0x08005604 }, { 0x124, 0, 0x08005620 }, { 0x125, 0, 0x08005638 }, - { 0x126, 0, 0x0800564C }, { 0x127, 0, 0x08005668 }, { 0x129, 0, 0x08005684 }, { 0x12A, 0, 0x0800569C }, - { 0x12B, 0, 0x080056B8 }, { 0x12C, 0, 0x080056D4 }, { 0x12D, 0, 0x080056F0 }, { 0x12E, 0, 0x0800570C }, - { 0x12F, 0, 0x08005724 }, { 0x130, 0, 0x0800573C }, { 0x131, 0, 0x08005758 }, { 0x132, 0, 0x08005770 }, - { 0x134, 0, 0x08005788 }, { 0x135, 0, 0x080057A4 }, { 0x136, 0, 0x080057C0 }, { 0x137, 0, 0x080057D8 }, - { 0x138, 0, 0x080057F4 }, { 0x139, 0, 0x08005814 }, { 0x13A, 0, 0x0800582C }, { 0x13B, 0, 0x0800584C }, - { 0x13D, 0, 0x08005868 }, { 0x13E, 0, 0x08005884 }, { 0x13F, 0, 0x080058A0 }, { 0x140, 0, 0x080058C4 }, - { 0x141, 0, 0x080058DC }, { 0x142, 0, 0x080058F4 }, { 0x143, 0, 0x08005918 }, { 0x144, 0, 0x08005934 }, - { 0x145, 0, 0x08005954 }, { 0x146, 0, 0x08005970 }, { 0x147, 0, 0x08005988 }, { 0x148, 0, 0x080059A4 }, - { 0x149, 0, 0x080059C0 }, { 0x200, 0, 0x080059D8 }, { 0x201, 0, 0x08005A54 }, { 0x202, 0, 0x08005B48 }, - { 0x203, 0, 0x08005B74 }, { 0x204, 0, 0x08005BE4 }, { 0x205, 0, 0x08005C38 }, { 0x206, 0, 0x08005C94 }, - { 0x207, 0, 0x08005D04 }, { 0x208, 0, 0x08005D2C }, { 0x209, 0, 0x08005D64 }, { 0x20A, 0, 0x08005DB4 }, - { 0x20B, 0, 0x08005E08 }, { 0x20C, 0, 0x08005E14 }, { 0x20D, 0, 0x08005E60 }, { 0x20E, 0, 0x08005ECC }, - { 0x20F, 0, 0x08005ED8 }, { 0x210, 0, 0x08005F74 }, { 0x211, 0, 0x08005FAC }, { 0x212, 0, 0x08005FD4 }, - { 0x213, 0, 0x0800602C }, { 0x214, 0, 0x08006050 }, { 0x215, 0, 0x08006124 }, { 0x216, 0, 0x08006358 }, - { 0x217, 0, 0x080065B8 }, { 0x218, 0, 0x08006620 }, { 0x219, 0, 0x0800668C }, { 0x21A, 0, 0x08006720 }, - { 0x21B, 0, 0x0800674C }, { 0x21D, 0, 0x08006774 }, { 0x21E, 0, 0x080067CC }, { 0x21F, 0, 0x08006874 }, - { 0x220, 0, 0x080068E0 }, { 0x221, 0, 0x08006978 }, { 0x222, 0, 0x08006A04 }, { 0x223, 0, 0x08006A48 }, - { 0x224, 0, 0x08006AE8 }, { 0x225, 0, 0x08006B54 }, { 0x226, 0, 0x08006BB0 }, { 0x227, 0, 0x08006BE8 }, - { 0x228, 0, 0x08006D58 }, { 0x229, 0, 0x08006E18 }, { 0x22A, 0, 0x08006EA0 }, { 0x22B, 0, 0x08006F00 }, - { 0x22C, 0, 0x08006F44 }, { 0x22D, 0, 0x08006F60 }, { 0x22E, 0, 0x08006FB0 }, { 0x22F, 0, 0x08006FC8 }, - { 0x230, 0, 0x08007010 }, { 0x231, 0, 0x080070C0 }, { 0x232, 0, 0x08007110 }, { 0x233, 0, 0x08007158 }, - { 0x234, 0, 0x080071A4 }, { 0x235, 0, 0x08007208 }, { 0x236, 0, 0x0800725C }, { 0x237, 0, 0x080072AC }, - { 0x238, 0, 0x0800730C }, { 0x239, 0, 0x0800734C }, { 0x23A, 0, 0x08007400 }, { 0x23B, 0, 0x08007468 }, - { 0x23C, 0, 0x08007500 }, { 0x23D, 0, 0x08007538 }, { 0x23E, 0, 0x080075E4 }, { 0x23F, 0, 0x080075F0 }, - { 0x240, 0, 0x0800765C }, { 0x241, 0, 0x080076D0 }, { 0x242, 0, 0x08007744 }, { 0x243, 0, 0x080077B0 }, - { 0x244, 0, 0x08007830 }, { 0x245, 0, 0x08007888 }, { 0x246, 0, 0x080078B4 }, { 0x247, 0, 0x08007904 }, - { 0x248, 0, 0x08007950 }, { 0x249, 0, 0x080079A0 }, { 0x24A, 0, 0x080079F0 }, { 0x24B, 0, 0x08007A30 }, - { 0x24C, 0, 0x08007A78 }, { 0x24D, 0, 0x08007AD8 }, { 0x24E, 0, 0x08007B54 }, { 0x24F, 0, 0x08007BE8 }, - { 0x250, 0, 0x08007C88 }, { 0x251, 0, 0x08007CEC }, { 0x252, 0, 0x08007D18 }, { 0x253, 0, 0x08007D68 }, - { 0x254, 0, 0x08007DAC }, { 0x255, 0, 0x08007E04 }, { 0x256, 0, 0x08007E4C }, { 0x257, 0, 0x08007EA4 }, - { 0x258, 0, 0x08007F00 }, { 0x25A, 0, 0x08007F58 }, { 0x25B, 0, 0x08007FA0 }, { 0x25C, 0, 0x08007FDC }, - { 0x25D, 0, 0x08007FF8 }, { 0x25E, 0, 0x08008024 }, { 0x25F, 0, 0x080080E4 }, { 0x260, 0, 0x0800818C }, - { 0x261, 0, 0x080081F8 }, { 0x262, 0, 0x08008288 }, { 0x263, 0, 0x08008304 }, { 0x264, 0, 0x08008344 }, - { 0x265, 0, 0x08008420 }, { 0x302, 0, 0x08008498 }, { 0x303, 0, 0x080085DC }, { 0x304, 0, 0x08008660 }, - { 0x305, 0, 0x080086B4 }, { 0x306, 0, 0x08008720 }, { 0x307, 0, 0x0800872C }, { 0x308, 0, 0x0800875C }, - { 0x309, 0, 0x08008788 }, { 0x30A, 0, 0x080087BC }, { 0x30B, 0, 0x080087E8 }, { 0x30C, 0, 0x08008824 }, - { 0x30D, 0, 0x08008894 }, { 0x30E, 0, 0x080088E4 }, { 0x30F, 0, 0x08008914 }, { 0x310, 0, 0x08008970 }, - { 0x311, 0, 0x080089BC }, { 0x312, 0, 0x080089F0 }, { 0x313, 0, 0x08008A64 }, { 0x314, 0, 0x08008AA4 }, - { 0x315, 0, 0x08008B0C }, { 0x316, 0, 0x08008B64 }, { 0x317, 0, 0x08008BA4 }, { 0x318, 0, 0x08008BF0 }, - { 0x319, 0, 0x08008C48 }, { 0x31A, 0, 0x08008C84 }, { 0x31B, 0, 0x08008CD0 }, { 0x31C, 0, 0x08008D10 }, - { 0x31D, 0, 0x08008D5C }, { 0x31E, 0, 0x08008DCC }, { 0x31F, 0, 0x08008E2C }, { 0x320, 0, 0x08008EBC }, - { 0x321, 0, 0x08008F30 }, { 0x322, 0, 0x08008F60 }, { 0x323, 0, 0x08008F9C }, { 0x324, 0, 0x08008FFC }, - { 0x325, 0, 0x08009044 }, { 0x326, 0, 0x080090A8 }, { 0x327, 0, 0x080090F8 }, { 0x328, 0, 0x08009140 }, - { 0x329, 0, 0x08009188 }, { 0x32A, 0, 0x080091F0 }, { 0x32B, 0, 0x08009240 }, { 0x32C, 0, 0x0800928C }, - { 0x32D, 0, 0x080092F0 }, { 0x32E, 0, 0x08009318 }, { 0x32F, 0, 0x08009358 }, { 0x330, 0, 0x0800939C }, - { 0x331, 0, 0x080093E4 }, { 0x332, 0, 0x08009440 }, { 0x333, 0, 0x0800949C }, { 0x334, 0, 0x08009518 }, - { 0x335, 0, 0x0800955C }, { 0x336, 0, 0x08009598 }, { 0x337, 0, 0x08009658 }, { 0x338, 0, 0x08009680 }, - { 0x339, 0, 0x080096A8 }, { 0x33A, 0, 0x080096C8 }, { 0x33B, 0, 0x080096EC }, { 0x33C, 0, 0x0800973C }, - { 0x33D, 0, 0x08009778 }, { 0x33E, 0, 0x080097BC }, { 0x33F, 0, 0x08009930 }, { 0x340, 0, 0x08009C50 }, - { 0x341, 0, 0x08009CC4 }, { 0x342, 0, 0x08009D30 }, { 0x343, 0, 0x08009D58 }, { 0x3E8, 0, 0x08009D7C }, - { 0x3E9, 0, 0x08009DCC }, { 0x3EA, 0, 0x08009DE8 }, { 0x3EB, 0, 0x08009E2C }, { 0x3EC, 0, 0x08009E54 }, - { 0x3ED, 0, 0x08009EB8 }, { 0x3EE, 0, 0x08009EFC }, { 0x3EF, 0, 0x08009F6C }, { 0x3F0, 0, 0x08009FA0 }, - { 0x3F1, 0, 0x08009FF0 }, { 0x3F2, 0, 0x0800A030 }, { 0x3F3, 0, 0x0800A090 }, { 0x3F4, 0, 0x0800A0D0 }, - { 0x3F5, 0, 0x0800A0F8 }, { 0x3F6, 0, 0x0800A158 }, { 0x3F7, 0, 0x0800A190 }, { 0x3F8, 0, 0x0800A1BC }, - { 0x3F9, 0, 0x0800A214 }, { 0x3FA, 0, 0x0800A25C }, { 0x3FB, 0, 0x0800A29C }, { 0x3FC, 0, 0x0800A2D8 }, - { 0x3FD, 0, 0x0800A31C }, { 0x3FE, 0, 0x0800A40C }, { 0x3FF, 0, 0x0800A478 }, { 0x400, 0, 0x0800A4EC }, - { 0x401, 0, 0x0800A528 }, { 0x402, 0, 0x0800A560 }, { 0x403, 0, 0x0800A5D4 }, { 0x404, 0, 0x0800A608 }, - { 0x405, 0, 0x0800A63C }, { 0x406, 0, 0x0800A680 }, { 0x407, 0, 0x0800A6B8 }, { 0x408, 0, 0x0800A70C }, - { 0x44C, 0, 0x0800A75C }, { 0x44D, 0, 0x0800A850 }, { 0x44E, 0, 0x0800A8B8 }, { 0x44F, 0, 0x0800A904 }, - { 0x450, 0, 0x0800A924 }, { 0x451, 0, 0x0800A974 }, { 0x452, 0, 0x0800A9E8 }, { 0x453, 0, 0x0800AA24 }, - { 0x454, 0, 0x0800AA7C }, { 0x455, 0, 0x0800AAB4 }, { 0x456, 0, 0x0800AB10 }, { 0x457, 0, 0x0800AB44 }, - { 0x458, 0, 0x0800AB78 }, { 0x459, 0, 0x0800AC0C }, { 0x45A, 0, 0x0800AC84 }, { 0x45B, 0, 0x0800ACD0 }, - { 0x45C, 0, 0x0800AD4C }, { 0x45D, 0, 0x0800ADC8 }, { 0x45E, 0, 0x0800AE68 }, { 0x45F, 0, 0x0800AEBC }, - { 0x460, 0, 0x0800AF54 }, { 0x461, 0, 0x0800AF98 }, { 0x462, 0, 0x0800AFC8 }, { 0x463, 0, 0x0800AFE8 }, - { 0x464, 0, 0x0800B044 }, { 0x465, 0, 0x0800B094 }, { 0x466, 0, 0x0800B0CC }, { 0x467, 0, 0x0800B0FC }, - { 0x468, 0, 0x0800B178 }, { 0x469, 0, 0x0800B1B8 }, { 0x46A, 0, 0x0800B1F0 }, { 0x46B, 0, 0x0800B244 }, - { 0x46C, 0, 0x0800B258 }, { 0x46D, 0, 0x0800B2B4 }, { 0x46E, 0, 0x0800B324 }, { 0x46F, 0, 0x0800B374 }, - { 0x470, 0, 0x0800B3A8 }, { 0x471, 0, 0x0800B3F4 }, { 0x472, 0, 0x0800B428 }, { 0x473, 0, 0x0800B484 }, - { 0x474, 0, 0x0800B4A4 }, { 0x475, 0, 0x0800B514 }, { 0x476, 0, 0x0800B570 }, { 0x477, 0, 0x0800B5FC }, - { 0x478, 0, 0x0800B65C }, { 0x479, 0, 0x0800B6CC }, { 0x47A, 0, 0x0800B6FC }, { 0x47B, 0, 0x0800B760 }, - { 0x47C, 0, 0x0800B78C }, { 0x47D, 0, 0x0800B7DC }, { 0x47E, 0, 0x0800B82C }, { 0x4B0, 0, 0x0800B854 }, - { 0x4B1, 0, 0x0800B8B0 }, { 0x4B2, 0, 0x0800B8F8 }, { 0x4B3, 0, 0x0800B93C }, { 0x4B4, 0, 0x0800B994 }, - { 0x4B5, 0, 0x0800B9D0 }, { 0x4B6, 0, 0x0800BA04 }, { 0x4B7, 0, 0x0800BA94 }, { 0x4B8, 0, 0x0800BAC4 }, - { 0x4B9, 0, 0x0800BB4C }, { 0x4BA, 0, 0x0800BB7C }, { 0x4BB, 0, 0x0800BBFC }, { 0x4BC, 0, 0x0800BC28 }, - { 0x4BD, 0, 0x0800BCA4 }, { 0x4BE, 0, 0x0800BCD0 }, { 0x4BF, 0, 0x0800BD58 }, { 0x4C0, 0, 0x0800BD84 }, - { 0x4C1, 0, 0x0800BE18 }, { 0x4C2, 0, 0x0800BE54 }, { 0x4C3, 0, 0x0800BED0 }, { 0x4C4, 0, 0x0800BEEC }, - { 0x4C5, 0, 0x0800BF5C }, { 0x4C6, 0, 0x0800BF78 }, { 0x4C7, 0, 0x0800BFF4 }, { 0x4C8, 0, 0x0800C018 }, - { 0x4C9, 0, 0x0800C0A4 }, { 0x4CA, 0, 0x0800C0D8 }, { 0x4CB, 0, 0x0800C140 }, { 0x4CC, 0, 0x0800C158 }, - { 0x4CD, 0, 0x0800C1E0 }, { 0x4CE, 0, 0x0800C220 }, { 0x4CF, 0, 0x0800C29C }, { 0x4D0, 0, 0x0800C2D0 }, - { 0x4D1, 0, 0x0800C34C }, { 0x4D2, 0, 0x0800C378 }, { 0x4D3, 0, 0x0800C400 }, { 0x4D4, 0, 0x0800C448 }, - { 0x4D5, 0, 0x0800C4BC }, { 0x4D6, 0, 0x0800C4E0 }, { 0x4D7, 0, 0x0800C560 }, { 0x4D8, 0, 0x0800C598 }, - { 0x4D9, 0, 0x0800C604 }, { 0x4DA, 0, 0x0800C63C }, { 0x4DB, 0, 0x0800C6B4 }, { 0x4DC, 0, 0x0800C714 }, - { 0x4DD, 0, 0x0800C784 }, { 0x4DE, 0, 0x0800C7B4 }, { 0x4DF, 0, 0x0800C81C }, { 0x4E0, 0, 0x0800C840 }, - { 0x4E1, 0, 0x0800C8AC }, { 0x4E2, 0, 0x0800C8CC }, { 0x4E3, 0, 0x0800C95C }, { 0x4E4, 0, 0x0800C990 }, - { 0x4E5, 0, 0x0800CA04 }, { 0x4E6, 0, 0x0800CA20 }, { 0x4E7, 0, 0x0800CA9C }, { 0x4E8, 0, 0x0800CAC0 }, - { 0x4E9, 0, 0x0800CB48 }, { 0x4EA, 0, 0x0800CB64 }, { 0x4EB, 0, 0x0800CBE8 }, { 0x4EC, 0, 0x0800CC04 }, - { 0x4ED, 0, 0x0800CC64 }, { 0x4EE, 0, 0x0800CC88 }, { 0x4EF, 0, 0x0800CCE8 }, { 0x4F0, 0, 0x0800CD0C }, - { 0x4F1, 0, 0x0800CD7C }, { 0x514, 0, 0x0800CDA4 }, { 0x515, 0, 0x0800CED0 }, { 0x516, 0, 0x0800CFE8 }, - { 0x517, 0, 0x0800D094 }, { 0x518, 0, 0x0800D128 }, { 0x519, 0, 0x0800D1C8 }, { 0x51A, 0, 0x0800D254 }, - { 0x51B, 0, 0x0800D2A8 }, { 0x51C, 0, 0x0800D318 }, { 0x51D, 0, 0x0800D360 }, { 0x51E, 0, 0x0800D3D0 }, - { 0x51F, 0, 0x0800D418 }, { 0x520, 0, 0x0800D488 }, { 0x521, 0, 0x0800D534 }, { 0x522, 0, 0x0800D5BC }, - { 0x523, 0, 0x0800D65C }, { 0x524, 0, 0x0800D6E4 }, { 0x525, 0, 0x0800D728 }, { 0x526, 0, 0x0800D794 }, - { 0x527, 0, 0x0800D7D0 }, { 0x528, 0, 0x0800D834 }, { 0x529, 0, 0x0800D878 }, { 0x52A, 0, 0x0800D8E4 }, - { 0x52B, 0, 0x0800D98C }, { 0x52C, 0, 0x0800DA2C }, { 0x52D, 0, 0x0800DAC8 }, { 0x52E, 0, 0x0800DB6C }, - { 0x52F, 0, 0x0800DBD4 }, { 0x530, 0, 0x0800DC5C }, { 0x531, 0, 0x0800DCC4 }, { 0x532, 0, 0x0800DD54 }, - { 0x533, 0, 0x0800DDA4 }, { 0x534, 0, 0x0800DE1C }, { 0x535, 0, 0x0800DEC8 }, { 0x536, 0, 0x0800DF50 }, - { 0x537, 0, 0x0800DFF0 }, { 0x538, 0, 0x0800E078 }, { 0x539, 0, 0x0800E0BC }, { 0x53A, 0, 0x0800E128 }, - { 0x53B, 0, 0x0800E16C }, { 0x53C, 0, 0x0800E1D8 }, { 0x53D, 0, 0x0800E21C }, { 0x53E, 0, 0x0800E288 }, - { 0x53F, 0, 0x0800E334 }, { 0x540, 0, 0x0800E414 }, { 0x541, 0, 0x0800E474 }, { 0x542, 0, 0x0800E50C }, - { 0x543, 0, 0x0800E57C }, { 0x544, 0, 0x0800E614 }, { 0x545, 0, 0x0800E678 }, { 0x546, 0, 0x0800E728 }, - { 0x547, 0, 0x0800E794 }, { 0x548, 0, 0x0800E7F4 }, { 0x549, 0, 0x0800E86C }, { 0x54A, 0, 0x0800E8D8 }, - { 0x54B, 0, 0x0800E934 }, { 0x54C, 0, 0x0800E9B4 }, { 0x54D, 0, 0x0800EA28 }, { 0x54E, 0, 0x0800EB08 }, - { 0x54F, 0, 0x0800EB60 }, { 0x550, 0, 0x0800EBC8 }, { 0x551, 0, 0x0800EC2C }, { 0x552, 0, 0x0800ECAC }, - { 0x553, 0, 0x0800ED1C }, { 0x554, 0, 0x0800ED9C }, { 0x555, 0, 0x0800EE00 }, { 0x556, 0, 0x0800EEEC }, - { 0x557, 0, 0x0800EF4C }, { 0x558, 0, 0x0800EFBC }, { 0x559, 0, 0x0800F03C }, { 0x55A, 0, 0x0800F0B4 }, - { 0x55B, 0, 0x0800F110 }, { 0x55C, 0, 0x0800F188 }, { 0x55D, 0, 0x0800F258 }, { 0x55E, 0, 0x0800F300 }, - { 0x55F, 0, 0x0800F398 }, { 0x560, 0, 0x0800F44C }, { 0x561, 0, 0x0800F570 }, { 0x562, 0, 0x0800F688 }, - { 0x563, 0, 0x0800F7A8 }, { 0x564, 0, 0x0800F8B8 }, { 0x565, 0, 0x0800F9D8 }, { 0x566, 0, 0x0800FAEC }, - { 0x567, 0, 0x0800FB84 }, { 0x568, 0, 0x0800FC34 }, { 0x569, 0, 0x0800FCC8 }, { 0x56A, 0, 0x0800FD78 }, - { 0x56B, 0, 0x0800FE0C }, { 0x56C, 0, 0x0800FEBC }, { 0x56D, 0, 0x08010008 }, { 0x56E, 0, 0x08010168 }, - { 0x56F, 0, 0x080102C4 }, { 0x570, 0, 0x0801042C }, { 0x571, 0, 0x08010584 }, { 0x572, 0, 0x080106EC }, - { 0x573, 0, 0x08010844 }, { 0x578, 0, 0x080109A4 }, { 0x579, 0, 0x08010A70 }, { 0x57A, 0, 0x08010B28 }, - { 0x57B, 0, 0x08010C7C }, { 0x57C, 0, 0x08010D98 }, { 0x57D, 0, 0x08010EC4 }, { 0x57E, 0, 0x08010FF4 }, - { 0x57F, 0, 0x080110E4 }, { 0x580, 0, 0x080111D0 }, { 0x582, 0, 0x08011260 }, { 0x583, 0, 0x08011304 }, - { 0x584, 0, 0x08011374 }, { 0x585, 0, 0x08011408 }, { 0x586, 0, 0x080114BC }, { 0x587, 0, 0x08011528 }, - { 0x588, 0, 0x080115C0 }, { 0x589, 0, 0x08011674 }, { 0x58A, 0, 0x080116E4 }, { 0x58B, 0, 0x08011760 }, - { 0x58C, 0, 0x08011820 }, { 0x58D, 0, 0x08011884 }, { 0x58E, 0, 0x0801192C }, { 0x58F, 0, 0x08011A20 }, - { 0x590, 0, 0x08011B08 }, { 0x591, 0, 0x08011B68 }, { 0x592, 0, 0x08011BA4 }, { 0x593, 0, 0x08011BE4 }, - { 0x594, 0, 0x08011C20 }, { 0x595, 0, 0x08011D00 }, { 0x59C, 0, 0x08011DC8 }, { 0x59D, 0, 0x08011E78 }, - { 0x59E, 0, 0x08011EB4 }, { 0x59F, 0, 0x08011EFC }, { 0x5A0, 0, 0x08011FB4 }, { 0x5A1, 0, 0x08012068 }, - { 0x5A2, 0, 0x080120A4 }, { 0x5A3, 0, 0x080120E4 }, { 0x5A4, 0, 0x08012198 }, { 0x5A5, 0, 0x08012248 }, - { 0x5A6, 0, 0x08012284 }, { 0x5A7, 0, 0x080122C4 }, { 0x5A8, 0, 0x08012380 }, { 0x5A9, 0, 0x0801243C }, - { 0x5AA, 0, 0x08012478 }, { 0x5DC, 0, 0x080124B8 }, { 0x5DD, 0, 0x08012548 }, { 0x5DE, 0, 0x080125BC }, - { 0x5DF, 0, 0x08012678 }, { 0x5E0, 0, 0x08012730 }, { 0x5E1, 0, 0x0801276C }, { 0x5E2, 0, 0x08012784 }, - { 0x5E3, 0, 0x080127C4 }, { 0x5E4, 0, 0x080128A8 }, { 0x5E5, 0, 0x080128E0 }, { 0x5E6, 0, 0x0801294C }, - { 0x5E7, 0, 0x08012970 }, { 0x5E8, 0, 0x080129A4 }, { 0x5E9, 0, 0x08012A5C }, { 0x5EA, 0, 0x08012ACC }, - { 0x5EB, 0, 0x08012B4C }, { 0x5EC, 0, 0x08012BF0 }, { 0x5ED, 0, 0x08012CE0 }, { 0x5EE, 0, 0x08012D84 }, - { 0x5EF, 0, 0x08012DE4 }, { 0x5F0, 0, 0x08012E1C }, { 0x5F1, 0, 0x08012E7C }, { 0x5F2, 0, 0x08012EF0 }, - { 0x5F3, 0, 0x08012FAC }, { 0x5F4, 0, 0x08013060 }, { 0x5F5, 0, 0x080130F4 }, { 0x5F6, 0, 0x0801315C }, - { 0x5F7, 0, 0x08013210 }, { 0x5F8, 0, 0x08013258 }, { 0x60E, 0, 0x080132B0 }, { 0x60F, 0, 0x08013368 }, - { 0x610, 0, 0x08013470 }, { 0x611, 0, 0x08013530 }, { 0x612, 0, 0x080135F8 }, { 0x613, 0, 0x08013680 }, - { 0x614, 0, 0x080137D0 }, { 0x615, 0, 0x0801386C }, { 0x616, 0, 0x08013944 }, { 0x617, 0, 0x080139B8 }, - { 0x618, 0, 0x08013A44 }, { 0x619, 0, 0x08013AA8 }, { 0x61A, 0, 0x08013BFC }, { 0x61B, 0, 0x08013C5C }, - { 0x61C, 0, 0x08013CB0 }, { 0x61D, 0, 0x08013D00 }, { 0x61E, 0, 0x08013D60 }, { 0x61F, 0, 0x08013DAC }, - { 0x620, 0, 0x08013DEC }, { 0x621, 0, 0x08013E4C }, { 0x622, 0, 0x08013E80 }, { 0x623, 0, 0x08013ED8 }, - { 0x624, 0, 0x08013F24 }, { 0x625, 0, 0x08013FEC }, { 0x626, 0, 0x08014010 }, { 0x627, 0, 0x08014064 }, - { 0x628, 0, 0x080140C4 }, { 0x629, 0, 0x08014170 }, { 0x62A, 0, 0x08014208 }, { 0x62B, 0, 0x080142D0 }, - { 0x62C, 0, 0x08014398 }, { 0x640, 0, 0x0801454C }, { 0x641, 0, 0x0801458C }, { 0x642, 0, 0x080145B4 }, - { 0x644, 0, 0x080145F0 }, { 0x645, 0, 0x08014608 }, { 0x646, 0, 0x08014648 }, { 0x647, 0, 0x080146B0 }, - { 0x648, 0, 0x080146D4 }, { 0x649, 0, 0x08014760 }, { 0x64A, 0, 0x08014798 }, { 0x64B, 0, 0x08014850 }, - { 0x64C, 0, 0x08014898 }, { 0x64D, 0, 0x080148B4 }, { 0x64E, 0, 0x08014924 }, { 0x64F, 0, 0x08014988 }, - { 0x650, 0, 0x080149F0 }, { 0x651, 0, 0x08014A50 }, { 0x652, 0, 0x08014A8C }, { 0x653, 0, 0x08014AF4 }, - { 0x654, 0, 0x08014B34 }, { 0x655, 0, 0x08014B9C }, { 0x656, 0, 0x08014BD8 }, { 0x657, 0, 0x08014C38 }, - { 0x658, 0, 0x08014C78 }, { 0x659, 0, 0x08014CBC }, { 0x65A, 0, 0x08014D10 }, { 0x65B, 0, 0x08014D94 }, - { 0x65C, 0, 0x08014E68 }, { 0x65D, 0, 0x08014F18 }, { 0x65E, 0, 0x08014F5C }, { 0x65F, 0, 0x08014F88 }, - { 0x660, 0, 0x08014FD0 }, { 0x661, 0, 0x08015024 }, { 0x662, 0, 0x080150F0 }, { 0x663, 0, 0x08015188 }, - { 0x664, 0, 0x080151AC }, { 0x665, 0, 0x080151E4 }, { 0x666, 0, 0x08015248 }, { 0x667, 0, 0x0801529C }, - { 0x668, 0, 0x080152CC }, { 0x669, 0, 0x0801532C }, { 0x66A, 0, 0x08015390 }, { 0x66B, 0, 0x080153E4 }, - { 0x66C, 0, 0x08015450 }, { 0x66D, 0, 0x080154BC }, { 0x66E, 0, 0x08015550 }, { 0x66F, 0, 0x080155C0 }, - { 0x670, 0, 0x08015600 }, { 0x671, 0, 0x08015634 }, { 0x672, 0, 0x0801568C }, { 0x673, 0, 0x080156C8 }, - { 0x674, 0, 0x0801574C }, { 0x675, 0, 0x08015784 }, { 0x676, 0, 0x080157F8 }, { 0x677, 0, 0x0801588C }, - { 0x678, 0, 0x080158E4 }, { 0x679, 0, 0x08015940 }, { 0x67A, 0, 0x08015994 }, { 0x67B, 0, 0x080159E8 }, - { 0x67C, 0, 0x08015A48 }, { 0x67D, 0, 0x08015B58 }, { 0x67E, 0, 0x08015C04 }, { 0x67F, 0, 0x08015C50 }, - { 0x680, 0, 0x08015D64 }, { 0x681, 0, 0x08015E40 }, { 0x682, 0, 0x08015ED0 }, { 0x683, 0, 0x08015F00 }, - { 0x684, 0, 0x08015F90 }, { 0x685, 0, 0x08015FCC }, { 0x686, 0, 0x08016020 }, { 0x687, 0, 0x08016078 }, - { 0x688, 0, 0x080160AC }, { 0x689, 0, 0x08016104 }, { 0x68A, 0, 0x08016130 }, { 0x6A4, 0, 0x08016184 }, - { 0x6A5, 0, 0x080161B8 }, { 0x6A6, 0, 0x0801620C }, { 0x6A7, 0, 0x08016248 }, { 0x6A8, 0, 0x080162A0 }, - { 0x6A9, 0, 0x080162C8 }, { 0x6AA, 0, 0x0801634C }, { 0x6AB, 0, 0x08016398 }, { 0x6AC, 0, 0x080163FC }, - { 0x6AD, 0, 0x08016478 }, { 0x6AE, 0, 0x080164B4 }, { 0x6AF, 0, 0x08016508 }, { 0x6B0, 0, 0x08016548 }, - { 0x6B1, 0, 0x080165C0 }, { 0x6B2, 0, 0x08016600 }, { 0x6B3, 0, 0x08016674 }, { 0x6B4, 0, 0x080166B4 }, - { 0x6B5, 0, 0x0801671C }, { 0x6B6, 0, 0x08016758 }, { 0x6B7, 0, 0x080167C0 }, { 0x6B8, 0, 0x080167F8 }, - { 0x6B9, 0, 0x08016858 }, { 0x6BA, 0, 0x08016894 }, { 0x6BB, 0, 0x08016900 }, { 0x6BC, 0, 0x0801693C }, - { 0x6BD, 0, 0x0801698C }, { 0x6BE, 0, 0x080169CC }, { 0x6BF, 0, 0x08016A04 }, { 0x6C0, 0, 0x08016A28 }, - { 0x6C1, 0, 0x08016A7C }, { 0x6C2, 0, 0x08016A98 }, { 0x6C3, 0, 0x08016AC8 }, { 0x6C4, 0, 0x08016AE4 }, - { 0x6C5, 0, 0x08016B2C }, { 0x6C6, 0, 0x08016B84 }, { 0x6C7, 0, 0x08016BC8 }, { 0x6C8, 0, 0x08016BE0 }, - { 0x6C9, 0, 0x08016C34 }, { 0x6CA, 0, 0x08016C94 }, { 0x6CB, 0, 0x08016CD0 }, { 0x6CC, 0, 0x08016D24 }, - { 0x6CD, 0, 0x08016D64 }, { 0x6CE, 0, 0x08016DC8 }, { 0x6CF, 0, 0x08016E08 }, { 0x6D0, 0, 0x08016E6C }, - { 0x6D1, 0, 0x08016EAC }, { 0x6D2, 0, 0x08016F14 }, { 0x6D3, 0, 0x08016F50 }, { 0x6D4, 0, 0x08016FD0 }, - { 0x6D5, 0, 0x08017008 }, { 0x6D6, 0, 0x08017084 }, { 0x6D7, 0, 0x080170C0 }, { 0x6D8, 0, 0x08017110 }, - { 0x6D9, 0, 0x0801714C }, { 0x6DA, 0, 0x080171A4 }, { 0x6DB, 0, 0x080171E0 }, { 0x6DC, 0, 0x08017218 }, - { 0x6DD, 0, 0x08017264 }, { 0x6DE, 0, 0x080172E0 }, { 0x708, 0, 0x08017330 }, { 0x709, 0, 0x080173C4 }, - { 0x70A, 0, 0x0801741C }, { 0x70B, 0, 0x080174B4 }, { 0x70C, 0, 0x0801753C }, { 0x70D, 0, 0x08017564 }, - { 0x70E, 0, 0x0801758C }, { 0x70F, 0, 0x080175FC }, { 0x710, 0, 0x08017650 }, { 0x711, 0, 0x08017748 }, - { 0x712, 0, 0x0801775C }, { 0x713, 0, 0x080177B0 }, { 0x714, 0, 0x080177D8 }, { 0x715, 0, 0x0801781C }, - { 0x716, 0, 0x0801787C }, { 0x717, 0, 0x08017A6C }, { 0x718, 0, 0x08017AB8 }, { 0x719, 0, 0x08017AE8 }, - { 0x71A, 0, 0x08017B48 }, { 0x71B, 0, 0x08017BA0 }, { 0x721, 0, 0x08017C00 }, { 0x722, 0, 0x08017C44 }, - { 0x723, 0, 0x08017C84 }, { 0x724, 0, 0x08017CC4 }, { 0x725, 0, 0x08017D04 }, { 0x726, 0, 0x08017D90 }, - { 0x727, 0, 0x08017DE4 }, { 0x728, 0, 0x08017DF0 }, { 0x729, 0, 0x08017E50 }, { 0x72A, 0, 0x08017E9C }, - { 0x72B, 0, 0x08017F08 }, { 0x72C, 0, 0x08017F5C }, { 0x72D, 0, 0x08017F8C }, { 0x72E, 0, 0x08017FC8 }, - { 0x72F, 0, 0x0801800C }, { 0x730, 0, 0x08018064 }, { 0x731, 0, 0x080180A0 }, { 0x732, 0, 0x080180E8 }, - { 0x733, 0, 0x08018104 }, { 0x734, 0, 0x08018188 }, { 0x735, 0, 0x08018240 }, { 0x736, 0, 0x080182A8 }, - { 0x737, 0, 0x080182E4 }, { 0x738, 0, 0x080184D0 }, { 0x73A, 0, 0x08018510 }, { 0x73B, 0, 0x08018594 }, - { 0x73C, 0, 0x08018618 }, { 0x73D, 0, 0x080186B0 }, { 0x73E, 0, 0x0801876C }, { 0x73F, 0, 0x08018818 }, - { 0x740, 0, 0x080188CC }, { 0x741, 0, 0x08018908 }, { 0x742, 0, 0x08018938 }, { 0x743, 0, 0x080189A0 }, - { 0x744, 0, 0x08018A00 }, { 0x745, 0, 0x08018A90 }, { 0x746, 0, 0x08018B4C }, { 0x747, 0, 0x08018C18 }, - { 0x748, 0, 0x08018C8C }, { 0x749, 0, 0x08018CE0 }, { 0x74A, 0, 0x08018D78 }, { 0x74B, 0, 0x08018DD0 }, - { 0x74C, 0, 0x08018E38 }, { 0x74D, 0, 0x08018E78 }, { 0x74E, 0, 0x08018EC0 }, { 0x74F, 0, 0x08018F38 }, - { 0x750, 0, 0x08018FF4 }, { 0x751, 0, 0x08019014 }, { 0x752, 0, 0x0801910C }, { 0x753, 0, 0x08019160 }, - { 0x754, 0, 0x080191A4 }, { 0x755, 0, 0x080191FC }, { 0x756, 0, 0x08019254 }, { 0x757, 0, 0x0801927C }, - { 0x758, 0, 0x080192E8 }, { 0x759, 0, 0x08019354 }, { 0x75A, 0, 0x0801939C }, { 0x76C, 0, 0x0801941C }, - { 0x76D, 0, 0x08019468 }, { 0x76E, 0, 0x080194BC }, { 0x76F, 0, 0x080194F8 }, { 0x770, 0, 0x08019530 }, - { 0x771, 0, 0x0801956C }, { 0x772, 0, 0x080195A4 }, { 0x773, 0, 0x080195DC }, { 0x774, 0, 0x08019620 }, - { 0x775, 0, 0x08019654 }, { 0x776, 0, 0x08019688 }, { 0x777, 0, 0x080196A4 }, { 0x778, 0, 0x080196F0 }, - { 0x779, 0, 0x080197A4 }, { 0x77A, 0, 0x080197C0 }, { 0x77B, 0, 0x080197E4 }, { 0x77C, 0, 0x0801982C }, - { 0x77D, 0, 0x08019854 }, { 0x7D0, 0, 0x08019878 }, { 0x7D1, 0, 0x080198BC }, { 0x7D2, 0, 0x080199A8 }, - { 0x7D3, 0, 0x080199BC }, { 0x7D4, 0, 0x080199E4 }, { 0x7D5, 0, 0x08019AD8 }, { 0x7D6, 0, 0x08019B10 }, - { 0x7D7, 0, 0x08019B28 }, { 0x7D8, 0, 0x08019BA4 }, { 0x7D9, 0, 0x08019BC8 }, { 0x7DC, 0, 0x08019C20 }, - { 0x7DD, 0, 0x08019C40 }, { 0x7DE, 0, 0x08019C60 }, { 0x800, 0, 0x08019C80 }, { 0x801, 0, 0x08019D44 }, - { 0x802, 0, 0x08019DD0 }, { 0x803, 0, 0x08019E24 }, { 0x804, 0, 0x08019E44 }, { 0x806, 0, 0x08019F84 }, - { 0x807, 0, 0x0801A0F0 }, { 0x80B, 0, 0x0801A0FC }, { 0x80C, 0, 0x0801A144 }, { 0x80D, 0, 0x0801A1AC }, - { 0x80E, 0, 0x0801A218 }, { 0x80F, 0, 0x0801A288 }, { 0x810, 0, 0x0801A320 }, { 0x811, 0, 0x0801A348 }, - { 0x820, 0, 0x0801A378 }, { 0x821, 0, 0x0801A3B4 }, { 0x822, 0, 0x0801A408 }, { 0x823, 0, 0x0801A484 }, - { 0x824, 0, 0x0801A4D4 }, { 0x825, 0, 0x0801A538 }, { 0x826, 0, 0x0801A5A8 }, { 0x827, 0, 0x0801A614 }, - { 0x828, 0, 0x0801A654 }, { 0x829, 0, 0x0801A680 }, { 0x82A, 0, 0x0801A6EC }, { 0x82B, 0, 0x0801A740 }, - { 0x82C, 0, 0x0801A79C }, { 0x82D, 0, 0x0801A808 }, { 0x82E, 0, 0x0801A868 }, { 0x82F, 0, 0x0801A894 }, - { 0x830, 0, 0x0801A918 }, { 0x831, 0, 0x0801A968 }, { 0x832, 0, 0x0801A9DC }, { 0x833, 0, 0x0801AA5C }, - { 0x834, 0, 0x0801AA80 }, { 0x835, 0, 0x0801AAD0 }, { 0x836, 0, 0x0801AB60 }, { 0x838, 0, 0x0801AC28 }, - { 0x839, 0, 0x0801AC7C }, { 0x83A, 0, 0x0801AD18 }, { 0x83B, 0, 0x0801AD48 }, { 0x83C, 0, 0x0801ADC4 }, - { 0x83D, 0, 0x0801AE2C }, { 0x83E, 0, 0x0801AE84 }, { 0x83F, 0, 0x0801AEC4 }, { 0x840, 0, 0x0801AF0C }, - { 0x841, 0, 0x0801AF48 }, { 0x842, 0, 0x0801AFA4 }, { 0x843, 0, 0x0801AFE4 }, { 0x844, 0, 0x0801B054 }, - { 0x845, 0, 0x0801B090 }, { 0x846, 0, 0x0801B0CC }, { 0x847, 0, 0x0801B114 }, { 0x848, 0, 0x0801B168 }, - { 0x849, 0, 0x0801B190 }, { 0x84A, 0, 0x0801B210 }, { 0x84B, 0, 0x0801B278 }, { 0x84C, 0, 0x0801B2BC }, - { 0x84D, 0, 0x0801B310 }, { 0x84E, 0, 0x0801B380 }, { 0x84F, 0, 0x0801B3A4 }, { 0x850, 0, 0x0801B3CC }, - { 0x851, 0, 0x0801B47C }, { 0x852, 0, 0x0801B488 }, { 0x853, 0, 0x0801B4B4 }, { 0x854, 0, 0x0801B5C4 }, - { 0x855, 0, 0x0801B608 }, { 0x856, 0, 0x0801B678 }, { 0x857, 0, 0x0801B6D8 }, { 0x858, 0, 0x0801B718 }, - { 0x859, 0, 0x0801B78C }, { 0x85A, 0, 0x0801B810 }, { 0x85B, 0, 0x0801B85C }, { 0x85C, 0, 0x0801B8C4 }, - { 0x85D, 0, 0x0801B8F4 }, { 0x85E, 0, 0x0801B900 }, { 0x85F, 0, 0x0801B92C }, { 0x860, 0, 0x0801B968 }, - { 0x861, 0, 0x0801B994 }, { 0x862, 0, 0x0801B9E0 }, { 0x863, 0, 0x0801BA6C }, { 0x864, 0, 0x0801BACC }, - { 0x865, 0, 0x0801BB18 }, { 0x866, 0, 0x0801BB8C }, { 0x867, 0, 0x0801BBA4 }, { 0x868, 0, 0x0801BC0C }, - { 0x869, 0, 0x0801BC88 }, { 0x86A, 0, 0x0801BCC0 }, { 0x86B, 0, 0x0801BD30 }, { 0x86C, 0, 0x0801BD90 }, - { 0x86D, 0, 0x0801BDD4 }, { 0x86E, 0, 0x0801BE60 }, { 0x86F, 0, 0x0801BF1C }, { 0x870, 0, 0x0801BF40 }, - { 0x871, 0, 0x0801BF90 }, { 0x872, 0, 0x0801BFB0 }, { 0x873, 0, 0x0801C004 }, { 0x874, 0, 0x0801C038 }, - { 0x875, 0, 0x0801C0A0 }, { 0x876, 0, 0x0801C0F8 }, { 0x877, 0, 0x0801C170 }, { 0x878, 0, 0x0801C1E0 }, - { 0x879, 0, 0x0801C23C }, { 0x87A, 0, 0x0801C2A0 }, { 0x87B, 0, 0x0801C2D4 }, { 0x87C, 0, 0x0801C314 }, - { 0x87D, 0, 0x0801C384 }, { 0x87E, 0, 0x0801C3DC }, { 0x87F, 0, 0x0801C43C }, { 0x880, 0, 0x0801C494 }, - { 0x881, 0, 0x0801C504 }, { 0x882, 0, 0x0801C580 }, { 0x883, 0, 0x0801C5E8 }, { 0x884, 0, 0x0801C694 }, - { 0x885, 0, 0x0801C6DC }, { 0x886, 0, 0x0801C73C }, { 0x887, 0, 0x0801C798 }, { 0x888, 0, 0x0801C7EC }, - { 0x889, 0, 0x0801C824 }, { 0x88A, 0, 0x0801C86C }, { 0x88B, 0, 0x0801C890 }, { 0x88C, 0, 0x0801C8C4 }, - { 0x88D, 0, 0x0801C914 }, { 0x88E, 0, 0x0801C98C }, { 0x88F, 0, 0x0801CA00 }, { 0x890, 0, 0x0801CA40 }, - { 0x898, 0, 0x0801CADC }, { 0x899, 0, 0x0801CB1C }, { 0x89A, 0, 0x0801CB60 }, { 0x89B, 0, 0x0801CC18 }, - { 0x89C, 0, 0x0801CC74 }, { 0x89D, 0, 0x0801CCCC }, { 0x89E, 0, 0x0801CD40 }, { 0x89F, 0, 0x0801CDA0 }, - { 0x8A0, 0, 0x0801CDE8 }, { 0x8A1, 0, 0x0801CE44 }, { 0x8A2, 0, 0x0801CEB0 }, { 0x8A3, 0, 0x0801CF0C }, - { 0x8A4, 0, 0x0801CF38 }, { 0x8A5, 0, 0x0801CFD0 }, { 0x8CA, 0, 0x0801D010 }, { 0x8CB, 0, 0x0801D0E0 }, - { 0x8CC, 0, 0x0801D108 }, { 0x8CD, 0, 0x0801D138 }, { 0x8CE, 0, 0x0801D170 }, { 0x8CF, 0, 0x0801D1C0 }, - { 0x8D0, 0, 0x0801D200 }, { 0x8D1, 0, 0x0801D238 }, { 0x8D2, 0, 0x0801D268 }, { 0x8D3, 0, 0x0801D340 }, - { 0x8D4, 0, 0x0801D3D4 }, { 0x8D5, 0, 0x0801D444 }, { 0x8D6, 0, 0x0801D488 }, { 0x8D7, 0, 0x0801D4D8 }, - { 0x8D8, 0, 0x0801D508 }, { 0x8D9, 0, 0x0801D574 }, { 0x8DA, 0, 0x0801D5A0 }, { 0x8DB, 0, 0x0801D5D0 }, - { 0x8DC, 0, 0x0801D600 }, { 0x8DD, 0, 0x0801D644 }, { 0x8DE, 0, 0x0801D7C8 }, { 0x8DF, 0, 0x0801D7FC }, - { 0x8E0, 0, 0x0801D844 }, { 0x8E1, 0, 0x0801D898 }, { 0x8E2, 0, 0x0801D938 }, { 0x8E3, 0, 0x0801D9E0 }, - { 0x8E4, 0, 0x0801DA40 }, { 0x8E5, 0, 0x0801DA9C }, { 0x8E6, 0, 0x0801DB20 }, { 0x8E7, 0, 0x0801DB88 }, - { 0x8E8, 0, 0x0801DBB0 }, { 0x8E9, 0, 0x0801DBE4 }, { 0x8EA, 0, 0x0801DC6C }, { 0x8EB, 0, 0x0801DC84 }, - { 0x8EC, 0, 0x0801DD18 }, { 0x910, 0, 0x0801DD64 }, { 0x911, 0, 0x0801DDC0 }, { 0x912, 0, 0x0801DE3C }, - { 0x913, 0, 0x0801DEAC }, { 0x914, 0, 0x0801DF18 }, { 0x915, 0, 0x0801DF88 }, { 0x916, 0, 0x0801DFF0 }, - { 0x917, 0, 0x0801E038 }, { 0x918, 0, 0x0801E164 }, { 0x919, 0, 0x0801E1BC }, { 0x91A, 0, 0x0801E204 }, - { 0x91B, 0, 0x0801E330 }, { 0x91C, 0, 0x0801E370 }, { 0x91E, 0, 0x0801E3CC }, { 0x92E, 0, 0x0801E464 }, - { 0x92F, 0, 0x0801E4C0 }, { 0x930, 0, 0x0801E534 }, { 0x931, 0, 0x0801E5AC }, { 0x932, 0, 0x0801E5B8 }, - { 0x933, 0, 0x0801E608 }, { 0x934, 0, 0x0801E650 }, { 0x935, 0, 0x0801E698 }, { 0x936, 0, 0x0801E6D0 }, - { 0x937, 0, 0x0801E738 }, { 0x938, 0, 0x0801E768 }, { 0x960, 0, 0x0801E774 }, { 0x961, 0, 0x0801E798 }, - { 0x962, 0, 0x0801E810 }, { 0x963, 0, 0x0801E8AC }, { 0x964, 0, 0x0801E97C }, { 0x965, 0, 0x0801E9C8 }, - { 0x966, 0, 0x0801EA1C }, { 0x967, 0, 0x0801EABC }, { 0x968, 0, 0x0801EB08 }, { 0x969, 0, 0x0801EBC8 }, - { 0x96A, 0, 0x0801EC58 }, { 0x96B, 0, 0x0801EC8C }, { 0x96C, 0, 0x0801ECD4 }, { 0x96D, 0, 0x0801ED40 }, - { 0x96E, 0, 0x0801ED88 }, { 0x96F, 0, 0x0801EE4C }, { 0x970, 0, 0x0801EF08 }, { 0x971, 0, 0x0801EF98 }, - { 0x972, 0, 0x0801EFF4 }, { 0x9C4, 0, 0x0801F000 }, { 0x9C5, 0, 0x0801F08C }, { 0x9C6, 0, 0x0801F0B0 }, - { 0x9C7, 0, 0x0801F104 }, { 0x9C8, 0, 0x0801F110 }, { 0x9C9, 0, 0x0801F160 }, { 0x9CA, 0, 0x0801F1D4 }, - { 0x9CB, 0, 0x0801F25C }, { 0x9CC, 0, 0x0801F2A0 }, { 0x9CD, 0, 0x0801F2E8 }, { 0x9CE, 0, 0x0801F338 }, - { 0x9CF, 0, 0x0801F37C }, { 0x9D0, 0, 0x0801F3CC }, { 0x9D1, 0, 0x0801F424 }, { 0x9D2, 0, 0x0801F450 }, - { 0x9D3, 0, 0x0801F510 }, { 0x9D4, 0, 0x0801F558 }, { 0x9D5, 0, 0x0801F580 }, { 0x9D6, 0, 0x0801F5D0 }, - { 0x9D7, 0, 0x0801F61C }, { 0x9D8, 0, 0x0801F65C }, { 0x9D9, 0, 0x0801F69C }, { 0x9DA, 0, 0x0801F6EC }, - { 0x9DB, 0, 0x0801F764 }, { 0x9DC, 0, 0x0801F7B0 }, { 0x9DD, 0, 0x0801F808 }, { 0x9DE, 0, 0x0801F8AC }, - { 0x9DF, 0, 0x0801F91C }, { 0x9E0, 0, 0x0801F990 }, { 0x9E1, 0, 0x0801F9CC }, { 0x9E2, 0, 0x0801FA2C }, - { 0x9E3, 0, 0x0801FA74 }, { 0x9E4, 0, 0x0801FB24 }, { 0x9E5, 0, 0x0801FB90 }, { 0x9E6, 0, 0x0801FBBC }, - { 0x9E7, 0, 0x0801FBE4 }, { 0x9E8, 0, 0x0801FC4C }, { 0x9E9, 0, 0x0801FCA0 }, { 0x9EA, 0, 0x0801FD80 }, - { 0x9EB, 0, 0x0801FDE8 }, { 0x9EC, 0, 0x0801FE70 }, { 0x9ED, 0, 0x0801FEAC }, { 0x9EE, 0, 0x0801FF40 }, - { 0x9EF, 0, 0x0801FF8C }, { 0xA28, 0, 0x0801FFC4 }, { 0xA29, 0, 0x0801FFF4 }, { 0xA2A, 0, 0x08020014 }, - { 0xA2B, 0, 0x08020048 }, { 0xA2C, 0, 0x0802012C }, { 0xA2D, 0, 0x08020190 }, { 0xA2E, 0, 0x080201EC }, - { 0xA2F, 0, 0x08020278 }, { 0xA30, 0, 0x080202E4 }, { 0xA31, 0, 0x0802031C }, { 0xA32, 0, 0x08020360 }, - { 0xA33, 0, 0x080203A4 }, { 0xA34, 0, 0x080203C8 }, { 0xA35, 0, 0x08020424 }, { 0xA36, 0, 0x0802047C }, - { 0xA37, 0, 0x080204F0 }, { 0xA38, 0, 0x08020534 }, { 0xA39, 0, 0x08020570 }, { 0xA3A, 0, 0x080205E4 }, - { 0xBB8, 0, 0x08020668 }, { 0xBB9, 0, 0x080206A4 }, { 0xBBA, 0, 0x080206EC }, { 0xBBB, 0, 0x08020710 }, - { 0xBBC, 0, 0x08020764 }, { 0xBBD, 0, 0x080207A4 }, { 0xBBE, 0, 0x080207E8 }, { 0xBBF, 0, 0x08020814 }, - { 0xBC0, 0, 0x08020858 }, { 0xBC1, 0, 0x080208B0 }, { 0xBC2, 0, 0x08020910 }, { 0xBC3, 0, 0x08020960 }, - { 0xBC4, 0, 0x080209C4 }, { 0xBC5, 0, 0x080209F0 }, { 0xBC6, 0, 0x08020A50 }, { 0xBC7, 0, 0x08020A8C }, - { 0xBC8, 0, 0x08020B00 }, { 0xBC9, 0, 0x08020B3C }, { 0xBCA, 0, 0x08020BB8 }, { 0xBCB, 0, 0x08020BF4 }, - { 0xBCC, 0, 0x08020C4C }, { 0xBCD, 0, 0x08020C88 }, { 0xBCE, 0, 0x08020CF0 }, { 0xBCF, 0, 0x08020D2C }, - { 0xBD0, 0, 0x08020D80 }, { 0xBD1, 0, 0x08020DC0 }, { 0xBD2, 0, 0x08020DFC }, { 0xBD3, 0, 0x08020E58 }, - { 0xBD4, 0, 0x08020E88 }, { 0xBD5, 0, 0x08020EE0 }, { 0xBD6, 0, 0x08020F18 }, { 0xBD7, 0, 0x08020F44 }, - { 0xBEA, 0, 0x08020F60 }, { 0xBEB, 0, 0x08021158 }, { 0xBEC, 0, 0x080211C0 }, { 0xBED, 0, 0x080211EC }, - { 0xBEE, 0, 0x08021350 }, { 0xBEF, 0, 0x08021380 }, { 0xBF0, 0, 0x080213F8 }, { 0xBF1, 0, 0x08021480 }, - { 0xBF2, 0, 0x08021558 }, { 0xBF3, 0, 0x08021588 }, { 0xBF4, 0, 0x080215E0 }, { 0xBF5, 0, 0x080216A0 }, - { 0xBF6, 0, 0x080217CC }, { 0xBF7, 0, 0x08021858 }, { 0xBF8, 0, 0x080218CC }, { 0xBF9, 0, 0x08021974 }, - { 0xBFA, 0, 0x080219F8 }, { 0xBFB, 0, 0x08021A68 }, { 0xBFC, 0, 0x08021AF8 }, { 0xBFD, 0, 0x08021B9C }, - { 0xBFE, 0, 0x08021BE0 }, { 0xBFF, 0, 0x08021C54 }, { 0xC00, 0, 0x08021C80 }, { 0xC01, 0, 0x08021CC8 }, - { 0xC02, 0, 0x08021F20 }, { 0xC03, 0, 0x08021F50 }, { 0xC04, 0, 0x08022024 }, { 0xC1D, 0, 0x08022090 }, - { 0xC1E, 0, 0x080220B8 }, { 0xC1F, 0, 0x080220D0 }, { 0xC20, 0, 0x08022104 }, { 0xC21, 0, 0x08022198 }, - { 0xC22, 0, 0x080221B8 }, { 0xC23, 0, 0x080221DC }, { 0xC24, 0, 0x08022248 }, { 0xC25, 0, 0x08022288 }, - { 0xC26, 0, 0x08022308 }, { 0xC27, 0, 0x0802233C }, { 0xC28, 0, 0x0802239C }, { 0xC29, 0, 0x080223E4 }, - { 0xC2A, 0, 0x08022408 }, { 0xC2B, 0, 0x08022470 }, { 0xC2C, 0, 0x080224C4 }, { 0xC2D, 0, 0x0802255C }, - { 0xC2E, 0, 0x08022584 }, { 0xC2F, 0, 0x080225AC }, { 0xC30, 0, 0x08022640 }, { 0xC31, 0, 0x08022670 }, - { 0xC32, 0, 0x0802268C }, { 0xC33, 0, 0x080226A0 }, { 0xC34, 0, 0x080226E0 }, { 0xC35, 0, 0x08022738 }, - { 0xC36, 0, 0x08022760 }, { 0xC37, 0, 0x08022780 }, { 0xC38, 0, 0x080227B8 }, { 0xC39, 0, 0x080227F0 }, - { 0xC3A, 0, 0x080228DC }, { 0xC3B, 0, 0x08022954 }, { 0xC3C, 0, 0x08022AD4 }, { 0xC3D, 0, 0x08022B48 }, - { 0xC3E, 0, 0x08022C14 }, { 0xC3F, 0, 0x08022C48 }, { 0xC40, 0, 0x08022C78 }, { 0xC41, 0, 0x08022CB0 }, - { 0xC42, 0, 0x08022CFC }, { 0xC43, 0, 0x08022D64 }, { 0xC44, 0, 0x08022D84 }, { 0xC45, 0, 0x08022DEC }, - { 0xC46, 0, 0x08022EBC }, { 0xC47, 0, 0x08022F9C }, { 0xC48, 0, 0x08023004 }, { 0xC49, 0, 0x08023024 }, - { 0xC4A, 0, 0x080230B0 }, { 0xC4B, 0, 0x080230E0 }, { 0xC4C, 0, 0x080231E4 }, { 0xC4D, 0, 0x0802329C }, - { 0xC4E, 0, 0x080232FC }, { 0xC4F, 0, 0x08023360 }, { 0xC50, 0, 0x080233BC }, { 0xC51, 0, 0x080233F4 }, - { 0xC52, 0, 0x0802352C }, { 0xC53, 0, 0x08023550 }, { 0xC54, 0, 0x08023640 }, { 0xC55, 0, 0x08023668 }, - { 0xC56, 0, 0x080236A4 }, { 0xC57, 0, 0x080236F4 }, { 0xC58, 0, 0x08023788 }, { 0xC80, 0, 0x080237C4 }, - { 0xC81, 0, 0x08023824 }, { 0xC82, 0, 0x080238F0 }, { 0xC83, 0, 0x08023920 }, { 0xC84, 0, 0x080239E4 }, - { 0xC85, 0, 0x08023B24 }, { 0xC86, 0, 0x08023B58 }, { 0xC87, 0, 0x08023C3C }, { 0xC88, 0, 0x08023CF0 }, - { 0xC89, 0, 0x08023D44 }, { 0xC8A, 0, 0x08023D80 }, { 0xC8B, 0, 0x08023DB0 }, { 0xC8C, 0, 0x08023E0C }, - { 0xC8D, 0, 0x08023E60 }, { 0xC8E, 0, 0x08023E90 }, { 0xC8F, 0, 0x08023F40 }, { 0xC90, 0, 0x08023FA0 }, - { 0xC91, 0, 0x0802400C }, { 0xC92, 0, 0x08024058 }, { 0xC93, 0, 0x080240D0 }, { 0xC94, 0, 0x0802410C }, - { 0xCE4, 0, 0x08024164 }, { 0xCE5, 0, 0x080241D4 }, { 0xCE6, 0, 0x08024254 }, { 0xCE7, 0, 0x08024304 }, - { 0xCE8, 0, 0x08024330 }, { 0xCE9, 0, 0x08024360 }, { 0xCEA, 0, 0x0802444C }, { 0xCEB, 0, 0x08024470 }, - { 0xCEC, 0, 0x080244E8 }, { 0xCED, 0, 0x08024548 }, { 0xCEE, 0, 0x08024634 }, { 0xCEF, 0, 0x08024718 }, - { 0xCF0, 0, 0x0802476C }, { 0xCF1, 0, 0x080247F8 }, { 0xCF2, 0, 0x0802483C }, { 0xCF3, 0, 0x08024880 }, - { 0xCF4, 0, 0x08024918 }, { 0xCF5, 0, 0x08024994 }, { 0xCF6, 0, 0x08024B58 }, { 0xCF7, 0, 0x08024BD8 }, - { 0xCF8, 0, 0x08024C84 }, { 0xCF9, 0, 0x08024D10 }, { 0xCFA, 0, 0x08024D44 }, { 0xCFB, 0, 0x08024D8C }, - { 0xCFC, 0, 0x08024DB8 }, { 0xCFD, 0, 0x08024DFC }, { 0xCFE, 0, 0x08024E6C }, { 0xCFF, 0, 0x08024EA4 }, - { 0xD00, 0, 0x08024ED4 }, { 0xD01, 0, 0x08024F4C }, { 0xD02, 0, 0x08024F8C }, { 0xD03, 0, 0x08024FDC }, - { 0xD04, 0, 0x08025040 }, { 0xD05, 0, 0x080250D8 }, { 0xD06, 0, 0x08025100 }, { 0xD07, 0, 0x08025134 }, - { 0xD08, 0, 0x0802516C }, { 0xD09, 0, 0x080251B4 }, { 0xD0A, 0, 0x080251E0 }, { 0xD0B, 0, 0x08025260 }, - { 0xD0C, 0, 0x080252AC }, { 0xD0D, 0, 0x080252E4 }, { 0xD0E, 0, 0x08025330 }, { 0xD0F, 0, 0x08025358 }, - { 0xD10, 0, 0x08025394 }, { 0xD11, 0, 0x080253C8 }, { 0xD12, 0, 0x08025434 }, { 0xD13, 0, 0x0802547C }, - { 0xD14, 0, 0x080254C0 }, { 0xD15, 0, 0x0802550C }, { 0xD16, 0, 0x08025550 }, { 0xD17, 0, 0x080255A4 }, - { 0xD18, 0, 0x080255DC }, { 0xD19, 0, 0x080255FC }, { 0xD1A, 0, 0x0802563C }, { 0xD1B, 0, 0x080256C8 }, - { 0xD1C, 0, 0x08025708 }, { 0xD1D, 0, 0x0802575C }, { 0xD1E, 0, 0x080257B8 }, { 0xD1F, 0, 0x08025814 }, - { 0xD20, 0, 0x08025874 }, { 0xD21, 0, 0x080258EC }, { 0xD48, 0, 0x08025960 }, { 0xD49, 0, 0x0802597C }, - { 0xD4A, 0, 0x080259B8 }, { 0xD4B, 0, 0x080259F8 }, { 0xD4C, 0, 0x08025A9C }, { 0xD4D, 0, 0x08025AF4 }, - { 0xD4E, 0, 0x08025B4C }, { 0xD4F, 0, 0x08025B80 }, { 0xD5E, 0, 0x08025BBC }, { 0xD5F, 0, 0x08025BD8 }, - { 0xD60, 0, 0x08025BFC }, { 0xD61, 0, 0x08025C3C }, { 0xD62, 0, 0x08025C7C }, { 0xD63, 0, 0x08025CE0 }, - { 0xD64, 0, 0x08025D64 }, { 0xD65, 0, 0x08025D90 }, { 0xD66, 0, 0x08025DC0 }, { 0xD67, 0, 0x08025E34 }, - { 0xD68, 0, 0x08025E74 }, { 0xD69, 0, 0x08025EB0 }, { 0xD6A, 0, 0x08025EE4 }, { 0xD6B, 0, 0x08025F14 }, - { 0xD6C, 0, 0x08025F4C }, { 0xD6D, 0, 0x08025F9C }, { 0xD6E, 0, 0x08025FEC }, { 0xD6F, 0, 0x08026024 }, - { 0xD70, 0, 0x08026064 }, { 0xD71, 0, 0x080260D4 }, { 0xD72, 0, 0x0802613C }, { 0xD73, 0, 0x08026190 }, - { 0xD74, 0, 0x080261E4 }, { 0xD75, 0, 0x0802621C }, { 0xD76, 0, 0x0802626C }, { 0xD77, 0, 0x08026354 }, - { 0xD78, 0, 0x0802637C }, { 0xD79, 0, 0x080263C8 }, { 0xD7A, 0, 0x08026444 }, { 0xD7B, 0, 0x08026490 }, - { 0xD7C, 0, 0x080264EC }, { 0xD7D, 0, 0x08026548 }, { 0xD7E, 0, 0x08026598 }, { 0xD7F, 0, 0x080265C4 }, - { 0xD80, 0, 0x080265F8 }, { 0xD81, 0, 0x08026628 }, { 0xD82, 0, 0x08026658 }, { 0xD83, 0, 0x08026688 }, - { 0xD84, 0, 0x080266D0 }, { 0xD85, 0, 0x08026728 }, { 0xD86, 0, 0x08026770 }, { 0xD87, 0, 0x080267B4 }, - { 0xD88, 0, 0x08026850 }, { 0xD89, 0, 0x080268B0 }, { 0xD8A, 0, 0x08026998 }, { 0xD8B, 0, 0x08026A5C }, - { 0xDAC, 0, 0x08026AA0 }, { 0xDAD, 0, 0x08026AC8 }, { 0xDAE, 0, 0x08026B04 }, { 0xDAF, 0, 0x08026B9C }, - { 0xDB0, 0, 0x08026BDC }, { 0xDB1, 0, 0x08026C6C }, { 0xDB2, 0, 0x08026CD8 }, { 0xDB3, 0, 0x08026D4C }, - { 0xDB4, 0, 0x08026DB4 }, { 0xDB5, 0, 0x08026E34 }, { 0xDB6, 0, 0x08026EA4 }, { 0xDB7, 0, 0x08026EBC }, - { 0xDB8, 0, 0x08026EE8 }, { 0xDB9, 0, 0x08026F28 }, { 0xDBA, 0, 0x08026F70 }, { 0xDBB, 0, 0x08026FA0 }, - { 0xDBC, 0, 0x0802701C }, { 0xDBD, 0, 0x08027070 }, { 0xDBE, 0, 0x08027088 }, { 0xDBF, 0, 0x080270BC }, - { 0xDC0, 0, 0x080270E0 }, { 0xDC1, 0, 0x0802713C }, { 0xDC2, 0, 0x08027194 }, { 0xDC3, 0, 0x08027220 }, - { 0xDC4, 0, 0x0802727C }, { 0xDC5, 0, 0x08027300 }, { 0xDC6, 0, 0x08027334 }, { 0xDC7, 0, 0x08027370 }, - { 0xDC8, 0, 0x08027394 }, { 0xDC9, 0, 0x080273A8 }, { 0xDCA, 0, 0x080273D0 }, { 0xDCB, 0, 0x08027414 }, - { 0xDCC, 0, 0x0802744C }, { 0xDCD, 0, 0x080274BC }, { 0xDCE, 0, 0x08027500 }, { 0xDCF, 0, 0x080275D4 }, - { 0xDD0, 0, 0x0802762C }, { 0xDD1, 0, 0x08027668 }, { 0xDD2, 0, 0x08027684 }, { 0xDD3, 0, 0x080276D8 }, - { 0xDD4, 0, 0x08027710 }, { 0xDD5, 0, 0x0802773C }, { 0xDD6, 0, 0x08027760 }, { 0xDD7, 0, 0x08027798 }, - { 0xDD8, 0, 0x080277C0 }, { 0xDD9, 0, 0x08027824 }, { 0xDDA, 0, 0x080278AC }, { 0xDDB, 0, 0x08027934 }, - { 0xDDC, 0, 0x08027984 }, { 0xDDD, 0, 0x080279E8 }, { 0xDDE, 0, 0x08027A70 }, { 0xDDF, 0, 0x08027AE8 }, - { 0xDE0, 0, 0x08027B28 }, { 0xDE1, 0, 0x08027B84 }, { 0xDE2, 0, 0x08027BF4 }, { 0xDE3, 0, 0x08027C40 }, - { 0xDE4, 0, 0x08027C84 }, { 0xDE5, 0, 0x08027CC8 }, { 0xDE6, 0, 0x08027D3C }, { 0xDE7, 0, 0x08027D8C }, - { 0xDE8, 0, 0x08027DBC }, { 0xDE9, 0, 0x08027DEC }, { 0xDEA, 0, 0x08027E78 }, { 0xDEB, 0, 0x08027EBC }, - { 0xDEC, 0, 0x08027EE4 }, { 0xDED, 0, 0x08027F4C }, { 0xDEE, 0, 0x08027F9C }, { 0xDEF, 0, 0x0802800C }, - { 0xDF0, 0, 0x08028058 }, { 0xDF1, 0, 0x080280A4 }, { 0xDF2, 0, 0x080280DC }, { 0xDF3, 0, 0x08028134 }, - { 0xDF4, 0, 0x080281B0 }, { 0xDF5, 0, 0x080281E8 }, { 0xDF6, 0, 0x08028234 }, { 0xDF7, 0, 0x08028264 }, - { 0xDF8, 0, 0x080282C0 }, { 0xDF9, 0, 0x080282F8 }, { 0xDFA, 0, 0x08028378 }, { 0xDFB, 0, 0x080283C4 }, - { 0xDFC, 0, 0x080283FC }, { 0xDFD, 0, 0x08028444 }, { 0xDFE, 0, 0x08028478 }, { 0xDFF, 0, 0x080284BC }, - { 0xE02, 0, 0x080284F4 }, { 0xE03, 0, 0x08028540 }, { 0xE04, 0, 0x08028588 }, { 0xE05, 0, 0x080285C8 }, - { 0xE06, 0, 0x08028604 }, { 0xE07, 0, 0x08028620 }, { 0xE10, 0, 0x08028670 }, { 0xE11, 0, 0x080286AC }, - { 0xE12, 0, 0x08028744 }, { 0xE13, 0, 0x080287C4 }, { 0xE14, 0, 0x0802885C }, { 0xE15, 0, 0x08028940 }, - { 0xE16, 0, 0x080289D4 }, { 0xE17, 0, 0x08028A20 }, { 0xE18, 0, 0x08028A58 }, { 0xE19, 0, 0x08028AA8 }, - { 0xE1A, 0, 0x08028B5C }, { 0xE1B, 0, 0x08028B8C }, { 0xE1C, 0, 0x08028BF0 }, { 0xE1D, 0, 0x08028C38 }, - { 0xE1E, 0, 0x08028C98 }, { 0xE1F, 0, 0x08028CBC }, { 0xE20, 0, 0x08028D10 }, { 0xE21, 0, 0x08028D28 }, - { 0xE22, 0, 0x08028D68 }, { 0xE23, 0, 0x08028DC8 }, { 0xE24, 0, 0x08028E24 }, { 0xE25, 0, 0x08028E44 }, - { 0xE26, 0, 0x08028E88 }, { 0xE27, 0, 0x08028ED0 }, { 0xE28, 0, 0x08028EEC }, { 0xE29, 0, 0x08028F40 }, - { 0xE2A, 0, 0x08028F9C }, { 0xE2B, 0, 0x08029010 }, { 0xE2C, 0, 0x08029078 }, { 0xE2D, 0, 0x08029104 }, - { 0xE2E, 0, 0x08029174 }, { 0xE2F, 0, 0x080291D4 }, { 0xE30, 0, 0x08029238 }, { 0xE31, 0, 0x080292B8 }, - { 0xE32, 0, 0x0802933C }, { 0xE42, 0, 0x0802939C }, { 0xE43, 0, 0x080293FC }, { 0xE44, 0, 0x08029428 }, - { 0xE45, 0, 0x080294A8 }, { 0xE46, 0, 0x08029500 }, { 0xE47, 0, 0x080295A0 }, { 0xE48, 0, 0x080295C4 }, - { 0xE49, 0, 0x08029634 }, { 0xE4A, 0, 0x0802969C }, { 0xE4B, 0, 0x08029704 }, { 0xE4C, 0, 0x08029774 }, - { 0xE4D, 0, 0x080297D4 }, { 0xE4E, 0, 0x08029860 }, { 0xE4F, 0, 0x080298C8 }, { 0xE50, 0, 0x08029948 }, - { 0xE51, 0, 0x080299D0 }, { 0xE52, 0, 0x08029A30 }, { 0xE74, 0, 0x08029AC0 }, { 0xE75, 0, 0x08029B20 }, - { 0xE76, 0, 0x08029B74 }, { 0xE77, 0, 0x08029BD4 }, { 0xE78, 0, 0x08029C48 }, { 0xE79, 0, 0x08029C9C }, - { 0xE7A, 0, 0x08029CB0 }, { 0xE7B, 0, 0x08029CCC }, { 0xE7C, 0, 0x08029D58 }, { 0xE7D, 0, 0x08029DAC }, - { 0xE7E, 0, 0x08029DC0 }, { 0xE7F, 0, 0x08029E10 }, { 0xE80, 0, 0x08029E74 }, { 0xE81, 0, 0x08029ED4 }, - { 0xE82, 0, 0x08029F2C }, { 0xE83, 0, 0x08029F54 }, { 0xE84, 0, 0x08029FCC }, { 0xE85, 0, 0x0802A03C }, - { 0xE86, 0, 0x0802A090 }, { 0xE87, 0, 0x0802A0D8 }, { 0xE88, 0, 0x0802A128 }, { 0xE89, 0, 0x0802A1BC }, - { 0xE8A, 0, 0x0802A1F4 }, { 0xE8B, 0, 0x0802A260 }, { 0xE8C, 0, 0x0802A2A4 }, { 0xE8D, 0, 0x0802A2F4 }, - { 0xE8E, 0, 0x0802A334 }, { 0xE8F, 0, 0x0802A37C }, { 0xE90, 0, 0x0802A3DC }, { 0xE91, 0, 0x0802A448 }, - { 0xE92, 0, 0x0802A47C }, { 0xE93, 0, 0x0802A4A8 }, { 0xE94, 0, 0x0802A550 }, { 0xE95, 0, 0x0802A5B0 }, - { 0xE97, 0, 0x0802A608 }, { 0xE98, 0, 0x0802A69C }, { 0xE99, 0, 0x0802A6F0 }, { 0xFA0, 0, 0x0802A760 }, - { 0xFA1, 0, 0x0802A79C }, { 0xFA2, 0, 0x0802A7F4 }, { 0xFA3, 0, 0x0802A84C }, { 0xFA4, 0, 0x0802A8F4 }, - { 0xFA5, 0, 0x0802AA24 }, { 0xFA6, 0, 0x0802AAA0 }, { 0xFA7, 0, 0x0802AB04 }, { 0xFA8, 0, 0x0802ABA0 }, - { 0xFA9, 0, 0x0802AC08 }, { 0xFAA, 0, 0x0802ACA4 }, { 0xFAB, 0, 0x0802AD1C }, { 0xFAC, 0, 0x0802AD8C }, - { 0xFAD, 0, 0x0802ADF4 }, { 0xFAE, 0, 0x0802AE90 }, { 0xFAF, 0, 0x0802AF00 }, { 0xFB0, 0, 0x0802AF70 }, - { 0xFB1, 0, 0x0802B018 }, { 0xFB2, 0, 0x0802B0B8 }, { 0xFB3, 0, 0x0802B110 }, { 0xFB4, 0, 0x0802B190 }, - { 0xFB5, 0, 0x0802B24C }, { 0xFB6, 0, 0x0802B288 }, { 0xFB7, 0, 0x0802B2E4 }, { 0xFB8, 0, 0x0802B314 }, - { 0xFB9, 0, 0x0802B39C }, { 0xFBA, 0, 0x0802B40C }, { 0xFBB, 0, 0x0802B488 }, { 0xFBC, 0, 0x0802B4EC }, - { 0xFBD, 0, 0x0802B598 }, { 0xFBE, 0, 0x0802B650 }, { 0xFBF, 0, 0x0802B6F8 }, { 0x1004, 0, 0x0802B750 }, - { 0x1005, 0, 0x0802B778 }, { 0x1006, 0, 0x0802B7A0 }, { 0x1007, 0, 0x0802B7C8 }, { 0x1008, 0, 0x0802B7EC }, - { 0x1009, 0, 0x0802B84C }, { 0x100A, 0, 0x0802B890 }, { 0x100B, 0, 0x0802B8D8 }, { 0x100C, 0, 0x0802B908 }, - { 0x100D, 0, 0x0802B97C }, { 0x100E, 0, 0x0802BA00 }, { 0x100F, 0, 0x0802BA54 }, { 0x1010, 0, 0x0802BAC0 }, - { 0x1011, 0, 0x0802BB28 }, { 0x1012, 0, 0x0802BB94 }, { 0x1013, 0, 0x0802BC18 }, { 0x1014, 0, 0x0802BC44 }, - { 0x1015, 0, 0x0802BC88 }, { 0x1016, 0, 0x0802BCE0 }, { 0x1017, 0, 0x0802BD24 }, { 0x1018, 0, 0x0802BD8C }, - { 0x1019, 0, 0x0802BE18 }, { 0x101A, 0, 0x0802BE80 }, { 0x101B, 0, 0x0802BF84 }, { 0x101C, 0, 0x0802C048 }, - { 0x101D, 0, 0x0802C064 }, { 0x101E, 0, 0x0802C15C }, { 0x101F, 0, 0x0802C284 }, { 0x1020, 0, 0x0802C3BC }, - { 0x1021, 0, 0x0802C3D4 }, { 0x1022, 0, 0x0802C438 }, { 0x1023, 0, 0x0802C470 }, { 0x1024, 0, 0x0802C494 }, - { 0x1025, 0, 0x0802C4C4 }, { 0x1026, 0, 0x0802C4F8 }, { 0x1027, 0, 0x0802C564 }, { 0x1028, 0, 0x0802C5F8 }, - { 0x1029, 0, 0x0802C67C }, { 0x102A, 0, 0x0802C6DC }, { 0x102B, 0, 0x0802C73C }, { 0x102C, 0, 0x0802C798 }, - { 0x102D, 0, 0x0802C824 }, { 0x102E, 0, 0x0802C87C }, { 0x102F, 0, 0x0802C8B8 }, { 0x1030, 0, 0x0802C928 }, - { 0x1031, 0, 0x0802CA60 }, { 0x1032, 0, 0x0802CAB4 }, { 0x1033, 0, 0x0802CB00 }, { 0x1034, 0, 0x0802CB3C }, - { 0x1035, 0, 0x0802CB94 }, { 0x1036, 0, 0x0802CBF0 }, { 0x1037, 0, 0x0802CC28 }, { 0x1038, 0, 0x0802CC80 }, - { 0x1039, 0, 0x0802CCE0 }, { 0x103A, 0, 0x0802CD30 }, { 0x103B, 0, 0x0802CD64 }, { 0x103C, 0, 0x0802CDDC }, - { 0x1068, 0, 0x0802CE10 }, { 0x1069, 0, 0x0802CE64 }, { 0x106A, 0, 0x0802CF30 }, { 0x106B, 0, 0x0802CF90 }, - { 0x106C, 0, 0x0802CFD4 }, { 0x106D, 0, 0x0802D07C }, { 0x106E, 0, 0x0802D0C0 }, { 0x106F, 0, 0x0802D110 }, - { 0x1070, 0, 0x0802D178 }, { 0x1071, 0, 0x0802D1C4 }, { 0x1072, 0, 0x0802D234 }, { 0x1073, 0, 0x0802D27C }, - { 0x1074, 0, 0x0802D2BC }, { 0x1075, 0, 0x0802D314 }, { 0x1076, 0, 0x0802D354 }, { 0x1077, 0, 0x0802D3AC }, - { 0x1078, 0, 0x0802D3F0 }, { 0x1079, 0, 0x0802D434 }, { 0x107A, 0, 0x0802D4AC }, { 0x107B, 0, 0x0802D4EC }, - { 0x107C, 0, 0x0802D554 }, { 0x107D, 0, 0x0802D5A8 }, { 0x107E, 0, 0x0802D5FC }, { 0x107F, 0, 0x0802D69C }, - { 0x1080, 0, 0x0802D6E8 }, { 0x1081, 0, 0x0802D744 }, { 0x1082, 0, 0x0802D7A4 }, { 0x1083, 0, 0x0802D7EC }, - { 0x1084, 0, 0x0802D82C }, { 0x1085, 0, 0x0802D8B0 }, { 0x1086, 0, 0x0802D8F0 }, { 0x1087, 0, 0x0802D954 }, - { 0x1088, 0, 0x0802D9DC }, { 0x1089, 0, 0x0802DA24 }, { 0x108A, 0, 0x0802DA8C }, { 0x108B, 0, 0x0802DACC }, - { 0x108C, 0, 0x0802DB30 }, { 0x108D, 0, 0x0802DBA0 }, { 0x108E, 0, 0x0802DBF4 }, { 0x108F, 0, 0x0802DC28 }, - { 0x1090, 0, 0x0802DC94 }, { 0x1091, 0, 0x0802DCFC }, { 0x1092, 0, 0x0802DDC0 }, { 0x1093, 0, 0x0802DE18 }, - { 0x1094, 0, 0x0802DEA0 }, { 0x1095, 0, 0x0802DF10 }, { 0x1096, 0, 0x0802DF78 }, { 0x1097, 0, 0x0802DFE0 }, - { 0x1098, 0, 0x0802E024 }, { 0x1099, 0, 0x0802E088 }, { 0x109A, 0, 0x0802E170 }, { 0x109B, 0, 0x0802E1F8 }, - { 0x109C, 0, 0x0802E240 }, { 0x109D, 0, 0x0802E290 }, { 0x109E, 0, 0x0802E2D8 }, { 0x109F, 0, 0x0802E308 }, - { 0x10A0, 0, 0x0802E364 }, { 0x10A1, 0, 0x0802E3B8 }, { 0x10A2, 0, 0x0802E3DC }, { 0x10A3, 0, 0x0802E480 }, - { 0x10A4, 0, 0x0802E4D4 }, { 0x10A5, 0, 0x0802E53C }, { 0x10A6, 0, 0x0802E624 }, { 0x10A7, 0, 0x0802E68C }, - { 0x10A8, 0, 0x0802E738 }, { 0x10A9, 0, 0x0802E78C }, { 0x10CE, 0, 0x0802E830 }, { 0x10CF, 0, 0x0802E878 }, - { 0x10D0, 0, 0x0802E8CC }, { 0x10D1, 0, 0x0802E90C }, { 0x10D2, 0, 0x0802E970 }, { 0x10D3, 0, 0x0802E9A4 }, - { 0x10D4, 0, 0x0802E9D0 }, { 0x10D6, 0, 0x0802EA7C }, { 0x10D7, 0, 0x0802EB50 }, { 0x10D8, 0, 0x0802EB6C }, - { 0x10D9, 0, 0x0802EBA0 }, { 0x10DA, 0, 0x0802EBC8 }, { 0x10DB, 0, 0x0802EC10 }, { 0x10DC, 0, 0x0802EC40 }, - { 0x10DD, 0, 0x0802EC6C }, { 0x10DE, 0, 0x0802ECA8 }, { 0x10DF, 0, 0x0802ECD8 }, { 0x10E0, 0, 0x0802ED14 }, - { 0x10E1, 0, 0x0802ED40 }, { 0x10E2, 0, 0x0802ED68 }, { 0x10E3, 0, 0x0802EDA0 }, { 0x10E4, 0, 0x0802EE18 }, - { 0x10E5, 0, 0x0802EE44 }, { 0x10E6, 0, 0x0802EEB0 }, { 0x10E7, 0, 0x0802EEE8 }, { 0x10E8, 0, 0x0802EF24 }, - { 0x10E9, 0, 0x0802EF84 }, { 0x10EA, 0, 0x0802EFCC }, { 0x10EB, 0, 0x0802EFF8 }, { 0x10EC, 0, 0x0802F030 }, - { 0x10ED, 0, 0x0802F078 }, { 0x10EE, 0, 0x0802F0B4 }, { 0x10EF, 0, 0x0802F0E0 }, { 0x10F0, 0, 0x0802F110 }, - { 0x10F1, 0, 0x0802F14C }, { 0x10F2, 0, 0x0802F184 }, { 0x10F3, 0, 0x0802F1A8 }, { 0x10F4, 0, 0x0802F1D4 }, - { 0x10F5, 0, 0x0802F204 }, { 0x10F6, 0, 0x0802F258 }, { 0x10F7, 0, 0x0802F28C }, { 0x10F8, 0, 0x0802F2D4 }, - { 0x10F9, 0, 0x0802F30C }, { 0x10FA, 0, 0x0802F334 }, { 0x10FB, 0, 0x0802F3A8 }, { 0x10FC, 0, 0x0802F3D8 }, - { 0x10FD, 0, 0x0802F408 }, { 0x10FE, 0, 0x0802F44C }, { 0x10FF, 0, 0x0802F484 }, { 0x1100, 0, 0x0802F4CC }, - { 0x1101, 0, 0x0802F500 }, { 0x1102, 0, 0x0802F590 }, { 0x1103, 0, 0x0802F5CC }, { 0x1104, 0, 0x0802F604 }, - { 0x1105, 0, 0x0802F660 }, { 0x1106, 0, 0x0802F694 }, { 0x1107, 0, 0x0802F6B8 }, { 0x1108, 0, 0x0802F730 }, - { 0x1109, 0, 0x0802F7B4 }, { 0x1130, 0, 0x0802F7D8 }, { 0x1131, 0, 0x0802F7F4 }, { 0x1132, 0, 0x0802F82C }, - { 0x1133, 0, 0x0802F8C0 }, { 0x1134, 0, 0x0802F8E8 }, { 0x1135, 0, 0x0802F8F4 }, { 0x1136, 0, 0x0802F900 }, - { 0x1137, 0, 0x0802F960 }, { 0x1138, 0, 0x0802F9D0 }, { 0x1139, 0, 0x0802FA70 }, { 0x113A, 0, 0x0802FB2C }, - { 0x113B, 0, 0x0802FB64 }, { 0x113C, 0, 0x0802FBF4 }, { 0x113D, 0, 0x0802FC4C }, { 0x113E, 0, 0x0802FCA0 }, - { 0x113F, 0, 0x0802FD10 }, { 0x1140, 0, 0x0802FDA8 }, { 0x1141, 0, 0x0802FE38 }, { 0x1142, 0, 0x0802FE7C }, - { 0x1143, 0, 0x0802FEBC }, { 0x1144, 0, 0x0802FEF8 }, { 0x1145, 0, 0x0802FF58 }, { 0x1146, 0, 0x0802FFB4 }, - { 0x1147, 0, 0x08030004 }, { 0x1148, 0, 0x08030018 }, { 0x1149, 0, 0x080300B8 }, { 0x114A, 0, 0x08030114 }, - { 0x114B, 0, 0x08030170 }, { 0x114C, 0, 0x080301CC }, { 0x114D, 0, 0x08030228 }, { 0x114E, 0, 0x08030284 }, - { 0x114F, 0, 0x080302E0 }, { 0x1150, 0, 0x08030318 }, { 0x1151, 0, 0x080303C8 }, { 0x1152, 0, 0x080303DC }, - { 0x1194, 0, 0x08030438 }, { 0x1195, 0, 0x08030458 }, { 0x1196, 0, 0x080304AC }, { 0x1197, 0, 0x080304E0 }, - { 0x1198, 0, 0x08030578 }, { 0x1199, 0, 0x080305E4 }, { 0x119A, 0, 0x080305FC }, { 0x119B, 0, 0x08030638 }, - { 0x119C, 0, 0x080306D0 }, { 0x119D, 0, 0x08030748 }, { 0x119E, 0, 0x08030770 }, { 0x119F, 0, 0x08030784 }, - { 0x11A0, 0, 0x080307EC }, { 0x11A1, 0, 0x08030828 }, { 0x11A2, 0, 0x080308E0 }, { 0x11A3, 0, 0x08030918 }, - { 0x11A4, 0, 0x08030934 }, { 0x11A5, 0, 0x08030948 }, { 0x11A6, 0, 0x080309BC }, { 0x11A7, 0, 0x080309E8 }, - { 0x11A8, 0, 0x08030A38 }, { 0x11A9, 0, 0x08030A60 }, { 0x11AA, 0, 0x08030AA0 }, { 0x11AB, 0, 0x08030ADC }, - { 0x11AC, 0, 0x08030B10 }, { 0x11AD, 0, 0x08030B40 }, { 0x11AE, 0, 0x08030B80 }, { 0x11AF, 0, 0x08030BB4 }, - { 0x11F8, 0, 0x08030BFC }, { 0x11F9, 0, 0x08030C64 }, { 0x11FA, 0, 0x08030CA0 }, { 0x11FB, 0, 0x08030D28 }, - { 0x11FC, 0, 0x08030D58 }, { 0x11FD, 0, 0x08030E14 }, { 0x11FE, 0, 0x08030E94 }, { 0x11FF, 0, 0x08030F2C }, - { 0x1200, 0, 0x08030F6C }, { 0x1201, 0, 0x08031004 }, { 0x1202, 0, 0x08031038 }, { 0x1203, 0, 0x080310A4 }, - { 0x1204, 0, 0x08031110 }, { 0x1205, 0, 0x08031154 }, { 0x1206, 0, 0x080311EC }, { 0x1207, 0, 0x08031230 }, - { 0x1208, 0, 0x08031290 }, { 0x1209, 0, 0x080312C4 }, { 0x120A, 0, 0x08031304 }, { 0x120B, 0, 0x08031320 }, - { 0x120C, 0, 0x08031348 }, { 0x120D, 0, 0x08031390 }, { 0x120E, 0, 0x080313DC }, { 0x120F, 0, 0x08031470 }, - { 0x1210, 0, 0x08031498 }, { 0x1211, 0, 0x08031520 }, { 0x1212, 0, 0x08031580 }, { 0x1213, 0, 0x080315A8 }, - { 0x1214, 0, 0x08031644 }, { 0x1215, 0, 0x080316AC }, { 0x1216, 0, 0x08031708 }, { 0x1217, 0, 0x0803176C }, - { 0x1218, 0, 0x080317BC }, { 0x1219, 0, 0x080317E8 }, { 0x121A, 0, 0x08031834 }, { 0x121B, 0, 0x080318B8 }, - { 0x121C, 0, 0x08031900 }, { 0x121D, 0, 0x08031930 }, { 0x121E, 0, 0x08031984 }, { 0x121F, 0, 0x080319C8 }, - { 0x1220, 0, 0x08031A08 }, { 0x1221, 0, 0x08031A7C }, { 0x1222, 0, 0x08031AFC }, { 0x1223, 0, 0x08031B68 }, - { 0x1224, 0, 0x08031BC0 }, { 0x1225, 0, 0x08031C10 }, { 0x1226, 0, 0x08031CD4 }, { 0x1227, 0, 0x08031D38 }, - { 0x1228, 0, 0x08031DC0 }, { 0x1229, 0, 0x08031E00 }, { 0x122A, 0, 0x08031E54 }, { 0x122B, 0, 0x08031E80 }, - { 0x122C, 0, 0x08031EF8 }, { 0x122D, 0, 0x08031F1C }, { 0x122E, 0, 0x08031FA4 }, { 0x122F, 0, 0x0803202C }, - { 0x1230, 0, 0x08032050 }, { 0x1231, 0, 0x0803210C }, { 0x1232, 0, 0x08032148 }, { 0x1233, 0, 0x080321B4 }, - { 0x1234, 0, 0x08032200 }, { 0x1235, 0, 0x08032250 }, { 0x1236, 0, 0x080322C4 }, { 0x1237, 0, 0x08032330 }, - { 0x1238, 0, 0x08032364 }, { 0x1239, 0, 0x08032414 }, { 0x123A, 0, 0x08032464 }, { 0x123B, 0, 0x08032504 }, - { 0x123C, 0, 0x08032550 }, { 0x123D, 0, 0x080325A4 }, { 0x123E, 0, 0x08032638 }, { 0x123F, 0, 0x08032698 }, - { 0x1240, 0, 0x080326FC }, { 0x1241, 0, 0x080327D4 }, { 0x1242, 0, 0x0803284C }, { 0x1243, 0, 0x08032904 }, - { 0x1244, 0, 0x08032964 }, { 0x1245, 0, 0x080329B8 }, { 0x1246, 0, 0x080329E4 }, { 0x1247, 0, 0x08032A54 }, - { 0x1248, 0, 0x08032AC0 }, { 0x1249, 0, 0x08032B08 }, { 0x124A, 0, 0x08032B68 }, { 0x124B, 0, 0x08032BC4 }, - { 0x124C, 0, 0x08032BE0 }, { 0x124D, 0, 0x08032C24 }, { 0x124E, 0, 0x08032C68 }, { 0x124F, 0, 0x08032CD8 }, - { 0x1250, 0, 0x08032D1C }, { 0x1251, 0, 0x08032D6C }, { 0x1252, 0, 0x08032DE4 }, { 0x1253, 0, 0x08032E0C }, - { 0x1254, 0, 0x08032E60 }, { 0x1255, 0, 0x08032EC4 }, { 0x1256, 0, 0x08032F38 }, { 0x1257, 0, 0x08032F7C }, - { 0x1258, 0, 0x08032FF4 }, { 0x1259, 0, 0x08033030 }, { 0x125A, 0, 0x080330BC }, { 0x125B, 0, 0x080330F8 }, - { 0x125C, 0, 0x0803319C }, { 0x125D, 0, 0x08033224 }, { 0x125E, 0, 0x080332D0 }, { 0x125F, 0, 0x08033358 }, - { 0x1260, 0, 0x080333CC }, { 0x1261, 0, 0x08033410 }, { 0x1262, 0, 0x08033450 }, { 0x1263, 0, 0x080334BC }, - { 0x1264, 0, 0x080334F4 }, { 0x1265, 0, 0x0803353C }, { 0x1266, 0, 0x08033588 }, { 0x1267, 0, 0x080335F4 }, - { 0x1268, 0, 0x08033678 }, { 0x1269, 0, 0x0803370C }, { 0x126A, 0, 0x08033778 }, { 0x126B, 0, 0x080337CC }, - { 0x126C, 0, 0x08033830 }, { 0x126D, 0, 0x080338B0 }, { 0x126E, 0, 0x08033934 }, { 0x126F, 0, 0x0803397C }, - { 0x1270, 0, 0x080339F0 }, { 0x1271, 0, 0x08033A14 }, { 0x1272, 0, 0x08033A44 }, { 0x1273, 0, 0x08033A88 }, - { 0x1274, 0, 0x08033AE0 }, { 0x1275, 0, 0x08033B74 }, { 0x1276, 0, 0x08033BC0 }, { 0x1277, 0, 0x08033C24 }, - { 0x1278, 0, 0x08033CA0 }, { 0x1279, 0, 0x08033D10 }, { 0x127A, 0, 0x08033D80 }, { 0x127B, 0, 0x08033DB4 }, - { 0x127C, 0, 0x08033E18 }, { 0x127D, 0, 0x08033E68 }, { 0x127E, 0, 0x08033EB4 }, { 0x127F, 0, 0x08033F04 }, - { 0x1280, 0, 0x08033F58 }, { 0x1281, 0, 0x08033FB8 }, { 0x1282, 0, 0x08034014 }, { 0x1283, 0, 0x08034044 }, - { 0x1284, 0, 0x0803409C }, { 0x1285, 0, 0x080340EC }, { 0x1286, 0, 0x08034140 }, { 0x1287, 0, 0x080341A0 }, - { 0x1288, 0, 0x08034204 }, { 0x1289, 0, 0x08034248 }, { 0x128A, 0, 0x080342A8 }, { 0x128B, 0, 0x080342E0 }, - { 0x128C, 0, 0x08034314 }, { 0x128D, 0, 0x08034340 }, { 0x128E, 0, 0x08034368 }, { 0x128F, 0, 0x080343C8 }, - { 0x1290, 0, 0x0803445C }, { 0x1291, 0, 0x080344E8 }, { 0x1292, 0, 0x08034528 }, { 0x1293, 0, 0x08034538 }, - { 0x1294, 0, 0x08034578 }, { 0x1295, 0, 0x080345C4 }, { 0x1296, 0, 0x08034618 }, { 0x1297, 0, 0x08034680 }, - { 0x1298, 0, 0x080346AC }, { 0x1299, 0, 0x08034728 }, { 0x129A, 0, 0x0803479C }, { 0x129B, 0, 0x08034808 }, - { 0x129C, 0, 0x08034854 }, { 0x129D, 0, 0x08034888 }, { 0x129E, 0, 0x080348B4 }, { 0x129F, 0, 0x080348FC }, - { 0x12A0, 0, 0x08034938 }, { 0x12A1, 0, 0x08034984 }, { 0x12A2, 0, 0x080349C4 }, { 0x12A3, 0, 0x08034A24 }, - { 0x12A4, 0, 0x08034A80 }, { 0x12A5, 0, 0x08034AF0 }, { 0x12A6, 0, 0x08034B40 }, { 0x12A7, 0, 0x08034B74 }, - { 0x12A8, 0, 0x08034BCC }, { 0x12A9, 0, 0x08034C2C }, { 0x12AA, 0, 0x08034CA0 }, { 0x12AB, 0, 0x08034CDC }, - { 0x12AC, 0, 0x08034D50 }, { 0x12AD, 0, 0x08034D9C }, { 0x12AE, 0, 0x08034E10 }, { 0x12AF, 0, 0x08034E40 }, - { 0x12B0, 0, 0x08034E70 }, { 0x12B1, 0, 0x08034EDC }, { 0x12B2, 0, 0x08034F28 }, { 0x12B3, 0, 0x08034F74 }, - { 0x12B4, 0, 0x08034FA0 }, { 0x12B5, 0, 0x08034FF4 }, { 0x12B6, 0, 0x08035018 }, { 0x12B7, 0, 0x0803504C }, - { 0x12B8, 0, 0x08035078 }, { 0x12B9, 0, 0x080350C0 }, { 0x12BA, 0, 0x080350F0 }, { 0x12BB, 0, 0x08035134 }, - { 0x12BC, 0, 0x0803516C }, { 0x12BD, 0, 0x080351D0 }, { 0x12BE, 0, 0x0803521C }, { 0x12BF, 0, 0x08035288 }, - { 0x12C0, 0, 0x08035308 }, { 0x12C1, 0, 0x0803534C }, { 0x12C2, 0, 0x0803539C }, { 0x12C3, 0, 0x080353CC }, - { 0x12C4, 0, 0x08035410 }, { 0x12C5, 0, 0x08035470 }, { 0x12C6, 0, 0x080354B8 }, { 0x12C7, 0, 0x08035520 }, - { 0x12C8, 0, 0x08035560 }, { 0x12C9, 0, 0x08035604 }, { 0x12CA, 0, 0x0803566C }, { 0x12CB, 0, 0x080356A4 }, - { 0x12CC, 0, 0x080356E4 }, { 0x12CD, 0, 0x0803577C }, { 0x12CE, 0, 0x080357EC }, { 0x12CF, 0, 0x0803581C }, - { 0x12D0, 0, 0x08035848 }, { 0x12D1, 0, 0x08035888 }, { 0x12D2, 0, 0x080358D0 }, { 0x12D3, 0, 0x080358E8 }, - { 0x12D4, 0, 0x0803590C }, { 0x12D5, 0, 0x0803592C }, { 0x12D6, 0, 0x0803596C }, { 0x12D7, 0, 0x080359C4 }, - { 0x12D8, 0, 0x08035A10 }, { 0x12D9, 0, 0x08035A80 }, { 0x12DA, 0, 0x08035ADC }, { 0x12DB, 0, 0x08035B48 }, - { 0x12DC, 0, 0x08035BB8 }, { 0x12DD, 0, 0x08035BF8 }, { 0x12DE, 0, 0x08035C74 }, { 0x12DF, 0, 0x08035CB0 }, - { 0x12E0, 0, 0x08035D10 }, { 0x12E3, 0, 0x08035D4C }, { 0x12E4, 0, 0x08035D70 }, { 0x12E5, 0, 0x08035DAC }, - { 0x12E6, 0, 0x08035DD8 }, { 0x12E7, 0, 0x08035DF4 }, { 0x12E8, 0, 0x08035E0C }, { 0x12E9, 0, 0x08035E58 }, - { 0x12EA, 0, 0x08035ED4 }, { 0x12EB, 0, 0x08035F44 }, { 0x12EC, 0, 0x08036074 }, { 0x12ED, 0, 0x080360BC }, - { 0x12EE, 0, 0x08036104 }, { 0x12EF, 0, 0x0803613C }, { 0x12F0, 0, 0x080361A0 }, { 0x12F1, 0, 0x080361F0 }, - { 0x12F2, 0, 0x08036248 }, { 0x12F3, 0, 0x08036260 }, { 0x12F4, 0, 0x080362A0 }, { 0x12F5, 0, 0x08036300 }, - { 0x12F6, 0, 0x08036324 }, { 0x12F7, 0, 0x080363A0 }, { 0x12F8, 0, 0x0803640C }, { 0x12F9, 0, 0x08036474 }, - { 0x12FA, 0, 0x080364CC }, { 0x12FB, 0, 0x08036508 }, { 0x12FC, 0, 0x0803655C }, { 0x12FD, 0, 0x08036578 }, - { 0x12FE, 0, 0x080365D4 }, { 0x12FF, 0, 0x080365F8 }, { 0x1300, 0, 0x08036654 }, { 0x1301, 0, 0x080366A4 }, - { 0x1302, 0, 0x080366F0 }, { 0x1303, 0, 0x08036738 }, { 0x1304, 0, 0x08036770 }, { 0x1305, 0, 0x080367AC }, - { 0x1306, 0, 0x080367F0 }, { 0x1307, 0, 0x08036830 }, { 0x1308, 0, 0x08036850 }, { 0x1309, 0, 0x0803688C }, - { 0x130A, 0, 0x080368F0 }, { 0x130B, 0, 0x08036924 }, { 0x130C, 0, 0x0803695C }, { 0x130D, 0, 0x080369A8 }, - { 0x130E, 0, 0x080369FC }, { 0x130F, 0, 0x08036A40 }, { 0x1310, 0, 0x08036A74 }, { 0x1311, 0, 0x08036AB8 }, - { 0x1312, 0, 0x08036B14 }, { 0x1313, 0, 0x08036B4C }, { 0x1314, 0, 0x08036BAC }, { 0x1315, 0, 0x08036C0C }, - { 0x1316, 0, 0x08036C64 }, { 0x1317, 0, 0x08036CBC }, { 0x1318, 0, 0x08036D1C }, { 0x1319, 0, 0x08036D80 }, - { 0x131A, 0, 0x08036DC4 }, { 0x131B, 0, 0x08036E0C }, { 0x131C, 0, 0x08036E8C }, { 0x131D, 0, 0x08036F14 }, - { 0x1388, 0, 0x08036F8C }, { 0x1389, 0, 0x08036FB4 }, { 0x138A, 0, 0x08036FF8 }, { 0x138B, 0, 0x08037034 }, - { 0x138C, 0, 0x08037060 }, { 0x138D, 0, 0x0803709C }, { 0x138E, 0, 0x0803711C }, { 0x138F, 0, 0x08037140 }, - { 0x1390, 0, 0x08037178 }, { 0x1391, 0, 0x080371AC }, { 0x1392, 0, 0x08037204 }, { 0x1393, 0, 0x08037234 }, - { 0x1394, 0, 0x08037288 }, { 0x1395, 0, 0x080372BC }, { 0x1396, 0, 0x080372F0 }, { 0x1397, 0, 0x08037310 }, - { 0x1398, 0, 0x08037338 }, { 0x1399, 0, 0x080373C4 }, { 0x139A, 0, 0x08037438 }, { 0x139B, 0, 0x080374A0 }, - { 0x139C, 0, 0x0803751C }, { 0x139D, 0, 0x0803758C }, { 0x139E, 0, 0x08037620 }, { 0x139F, 0, 0x08037704 }, - { 0x13A0, 0, 0x08037764 }, { 0x13A1, 0, 0x080377F4 }, { 0x13A2, 0, 0x08037838 }, { 0x13A3, 0, 0x08037894 }, - { 0x13A4, 0, 0x08037918 }, { 0x13A5, 0, 0x08037974 }, { 0x13A6, 0, 0x080379CC }, { 0x13A7, 0, 0x08037A68 }, - { 0x13A8, 0, 0x08037ACC }, { 0x13AE, 0, 0x08037B5C }, { 0x13AF, 0, 0x08037BF8 }, { 0x13B0, 0, 0x08037CE0 }, - { 0x13B1, 0, 0x08037D2C }, { 0x13B2, 0, 0x08037D54 }, { 0x13B3, 0, 0x08037D74 }, { 0x13EC, 0, 0x08037DB8 }, - { 0x13ED, 0, 0x08037DCC }, { 0x13EE, 0, 0x08037E30 }, { 0x13EF, 0, 0x08037EB4 }, { 0x13F0, 0, 0x08037EF4 }, - { 0x13F1, 0, 0x08037F34 }, { 0x13F2, 0, 0x08037F74 }, { 0x13F3, 0, 0x08037F8C }, { 0x13F4, 0, 0x08037FA4 }, - { 0x13F5, 0, 0x08037FC8 }, { 0x13F6, 0, 0x08037FF8 }, { 0x13F7, 0, 0x0803800C }, { 0x13F8, 0, 0x0803803C }, - { 0x13F9, 0, 0x08038084 }, { 0x13FA, 0, 0x080380C8 }, { 0x13FB, 0, 0x08038108 }, { 0x13FC, 0, 0x080381A4 }, - { 0x13FD, 0, 0x080381FC }, { 0x13FE, 0, 0x08038254 }, { 0x13FF, 0, 0x080382D8 }, { 0x1400, 0, 0x080383A8 }, - { 0x1401, 0, 0x08038504 }, { 0x1402, 0, 0x080385A8 }, { 0x1403, 0, 0x08038630 }, { 0x1404, 0, 0x0803868C }, - { 0x1405, 0, 0x080386C4 }, { 0x1406, 0, 0x08038728 }, { 0x1407, 0, 0x08038824 }, { 0x1408, 0, 0x08038844 }, - { 0x1409, 0, 0x080388F4 }, { 0x140A, 0, 0x08038984 }, { 0x140B, 0, 0x080389D0 }, { 0x140C, 0, 0x08038A3C }, - { 0x140D, 0, 0x08038A88 }, { 0x140E, 0, 0x08038AE8 }, { 0x140F, 0, 0x08038B20 }, { 0x1410, 0, 0x08038B60 }, - { 0x1411, 0, 0x08038BBC }, { 0x1412, 0, 0x08038BF4 }, { 0x1413, 0, 0x08038C34 }, { 0x1414, 0, 0x08038CC0 }, - { 0x1450, 0, 0x08038D04 }, { 0x1451, 0, 0x08038EC4 }, { 0x1452, 0, 0x08038EF8 }, { 0x1453, 0, 0x08038F10 }, - { 0x1454, 0, 0x08038F50 }, { 0x1455, 0, 0x08038F9C }, { 0x1456, 0, 0x08038FE4 }, { 0x1457, 0, 0x08039064 }, - { 0x1458, 0, 0x080390A8 }, { 0x1459, 0, 0x080390D4 }, { 0x145A, 0, 0x08039128 }, { 0x145B, 0, 0x08039198 }, - { 0x145C, 0, 0x080391C4 }, { 0x145D, 0, 0x080391D8 }, { 0x145E, 0, 0x08039204 }, { 0x145F, 0, 0x080392B0 }, - { 0x1460, 0, 0x08039360 }, { 0x1461, 0, 0x080393A8 }, { 0x1462, 0, 0x080393BC }, { 0x1463, 0, 0x080393EC }, - { 0x1464, 0, 0x0803940C }, { 0x1465, 0, 0x0803942C }, { 0x1466, 0, 0x08039454 }, { 0x1467, 0, 0x0803948C }, - { 0x1468, 0, 0x080394E8 }, { 0x1469, 0, 0x08039548 }, { 0x146A, 0, 0x080395A8 }, { 0x146B, 0, 0x08039638 }, - { 0x146C, 0, 0x08039700 }, { 0x146D, 0, 0x08039738 }, { 0x146E, 0, 0x08039758 }, { 0x146F, 0, 0x080397D8 }, - { 0x1470, 0, 0x08039858 }, { 0x1471, 0, 0x08039880 }, { 0x1472, 0, 0x080398B8 }, { 0x1473, 0, 0x08039924 }, - { 0x1474, 0, 0x08039950 }, { 0x1475, 0, 0x08039A64 }, { 0x1476, 0, 0x08039AE8 }, { 0x1477, 0, 0x08039B4C }, - { 0x1478, 0, 0x08039B70 }, { 0x1479, 0, 0x08039B98 }, { 0x147A, 0, 0x08039BCC }, { 0x147B, 0, 0x08039C00 }, - { 0x147C, 0, 0x08039D6C }, { 0x147D, 0, 0x08039E18 }, { 0x14B4, 0, 0x08039E78 }, { 0x14B5, 0, 0x08039EA8 }, - { 0x14B6, 0, 0x08039EF8 }, { 0x14B7, 0, 0x08039F64 }, { 0x14B8, 0, 0x08039F90 }, { 0x14B9, 0, 0x08039FE4 }, - { 0x14BA, 0, 0x0803A044 }, { 0x14BB, 0, 0x0803A090 }, { 0x14BC, 0, 0x0803A110 }, { 0x14BD, 0, 0x0803A138 }, - { 0x14BE, 0, 0x0803A1B8 }, { 0x14BF, 0, 0x0803A208 }, { 0x14C0, 0, 0x0803A25C }, { 0x14C1, 0, 0x0803A29C }, - { 0x14C2, 0, 0x0803A2E8 }, { 0x14C3, 0, 0x0803A384 }, { 0x14C4, 0, 0x0803A3FC }, { 0x14C5, 0, 0x0803A458 }, - { 0x14C6, 0, 0x0803A514 }, { 0x14C7, 0, 0x0803A540 }, { 0x14C8, 0, 0x0803A570 }, { 0x14C9, 0, 0x0803A5E4 }, - { 0x14CA, 0, 0x0803A614 }, { 0x14CB, 0, 0x0803A684 }, { 0x14CC, 0, 0x0803A700 }, { 0x14CD, 0, 0x0803A79C }, - { 0x14CE, 0, 0x0803A7B8 }, { 0x14CF, 0, 0x0803A880 }, { 0x14D0, 0, 0x0803A8AC }, { 0x14D1, 0, 0x0803A96C }, - { 0x14D2, 0, 0x0803AA08 }, { 0x14D3, 0, 0x0803AA80 }, { 0x14D4, 0, 0x0803AB40 }, { 0x14D5, 0, 0x0803AB80 }, - { 0x14D6, 0, 0x0803ABC0 }, { 0x14D7, 0, 0x0803AC30 }, { 0x14D8, 0, 0x0803AC78 }, { 0x14D9, 0, 0x0803ACEC }, - { 0x14DA, 0, 0x0803AD64 }, { 0x14DB, 0, 0x0803AD8C }, { 0x14DC, 0, 0x0803ADB8 }, { 0x14DD, 0, 0x0803ADEC }, - { 0x14DE, 0, 0x0803AE40 }, { 0x14DF, 0, 0x0803AEAC }, { 0x14E0, 0, 0x0803AEFC }, { 0x14E1, 0, 0x0803AF58 }, - { 0x14E2, 0, 0x0803AFDC }, { 0x14E3, 0, 0x0803B018 }, { 0x14E4, 0, 0x0803B044 }, { 0x14E5, 0, 0x0803B07C }, - { 0x14E6, 0, 0x0803B100 }, { 0x14E7, 0, 0x0803B13C }, { 0x14E8, 0, 0x0803B19C }, { 0x14E9, 0, 0x0803B220 }, - { 0x14EA, 0, 0x0803B2A0 }, { 0x14EB, 0, 0x0803B358 }, { 0x14EC, 0, 0x0803B398 }, { 0x14ED, 0, 0x0803B40C }, - { 0x14EE, 0, 0x0803B518 }, { 0x14EF, 0, 0x0803B5F8 }, { 0x14F0, 0, 0x0803B63C }, { 0x14F1, 0, 0x0803B6A8 }, - { 0x14F2, 0, 0x0803B734 }, { 0x14F3, 0, 0x0803B7B8 }, { 0x14F4, 0, 0x0803B834 }, { 0x14F5, 0, 0x0803B910 }, - { 0x14F6, 0, 0x0803B984 }, { 0x14F7, 0, 0x0803B9F0 }, { 0x14F8, 0, 0x0803BA80 }, { 0x14F9, 0, 0x0803BAB8 }, - { 0x14FA, 0, 0x0803BAF8 }, { 0x14FB, 0, 0x0803BB60 }, { 0x14FC, 0, 0x0803BB8C }, { 0x1518, 0, 0x0803BBFC }, - { 0x1519, 0, 0x0803BC5C }, { 0x151A, 0, 0x0803BCB0 }, { 0x151B, 0, 0x0803BCC8 }, { 0x151C, 0, 0x0803BCF8 }, - { 0x151D, 0, 0x0803BD44 }, { 0x151E, 0, 0x0803BDB8 }, { 0x151F, 0, 0x0803BDFC }, { 0x1520, 0, 0x0803BE9C }, - { 0x1521, 0, 0x0803BF18 }, { 0x1522, 0, 0x0803BF64 }, { 0x1523, 0, 0x0803BF8C }, { 0x1524, 0, 0x0803BFA4 }, - { 0x1525, 0, 0x0803BFD8 }, { 0x1526, 0, 0x0803BFF8 }, { 0x1527, 0, 0x0803C014 }, { 0x1528, 0, 0x0803C068 }, - { 0x1529, 0, 0x0803C0EC }, { 0x152A, 0, 0x0803C174 }, { 0x152B, 0, 0x0803C1CC }, { 0x152C, 0, 0x0803C22C }, - { 0x152D, 0, 0x0803C290 }, { 0x152E, 0, 0x0803C314 }, { 0x152F, 0, 0x0803C398 }, { 0x1530, 0, 0x0803C3F0 }, - { 0x1531, 0, 0x0803C454 }, { 0x1532, 0, 0x0803C4DC }, { 0x1533, 0, 0x0803C518 }, { 0x1534, 0, 0x0803C564 }, - { 0x1535, 0, 0x0803C5A4 }, { 0x1536, 0, 0x0803C5E4 }, { 0x1537, 0, 0x0803C644 }, { 0x1538, 0, 0x0803C6C8 }, - { 0x1539, 0, 0x0803C744 }, { 0x153A, 0, 0x0803C7E0 }, { 0x153B, 0, 0x0803C80C }, { 0x153C, 0, 0x0803C84C }, - { 0x153D, 0, 0x0803C884 }, { 0x153E, 0, 0x0803C89C }, { 0x153F, 0, 0x0803C8DC }, { 0x1540, 0, 0x0803C908 }, - { 0x1541, 0, 0x0803C944 }, { 0x1542, 0, 0x0803C9A0 }, { 0x157C, 0, 0x0803C9BC }, { 0x157D, 0, 0x0803C9D4 }, - { 0x157E, 0, 0x0803CA30 }, { 0x157F, 0, 0x0803CA70 }, { 0x1580, 0, 0x0803CAA0 }, { 0x1581, 0, 0x0803CAEC }, - { 0x1582, 0, 0x0803CB04 }, { 0x1583, 0, 0x0803CB18 }, { 0x1584, 0, 0x0803CB30 }, { 0x1585, 0, 0x0803CB64 }, - { 0x1586, 0, 0x0803CBD8 }, { 0x1587, 0, 0x0803CBF4 }, { 0x1588, 0, 0x0803CC34 }, { 0x1589, 0, 0x0803CC78 }, - { 0x158A, 0, 0x0803CD14 }, { 0x158B, 0, 0x0803CDA0 }, { 0x158C, 0, 0x0803CDE0 }, { 0x158D, 0, 0x0803CE3C }, - { 0x158E, 0, 0x0803CEA8 }, { 0x158F, 0, 0x0803CEE8 }, { 0x1590, 0, 0x0803CF30 }, { 0x1591, 0, 0x0803CFA4 }, - { 0x1592, 0, 0x0803D050 }, { 0x1593, 0, 0x0803D0C8 }, { 0x1594, 0, 0x0803D118 }, { 0x1595, 0, 0x0803D168 }, - { 0x1596, 0, 0x0803D1A8 }, { 0x1597, 0, 0x0803D1F0 }, { 0x1598, 0, 0x0803D228 }, { 0x1599, 0, 0x0803D290 }, - { 0x159A, 0, 0x0803D2FC }, { 0x159B, 0, 0x0803D368 }, { 0x159C, 0, 0x0803D448 }, { 0x159D, 0, 0x0803D4C0 }, - { 0x159E, 0, 0x0803D500 }, { 0x159F, 0, 0x0803D558 }, { 0x15A0, 0, 0x0803D5B4 }, { 0x15A1, 0, 0x0803D628 }, - { 0x15A2, 0, 0x0803D730 }, { 0x15A3, 0, 0x0803D798 }, { 0x15A4, 0, 0x0803D818 }, { 0x15A5, 0, 0x0803D868 }, - { 0x15A6, 0, 0x0803D8C4 }, { 0x15A7, 0, 0x0803D9AC }, { 0x15A8, 0, 0x0803D9FC }, { 0x15E0, 0, 0x0803DA3C }, - { 0x15E1, 0, 0x0803DA80 }, { 0x15E2, 0, 0x0803DB14 }, { 0x15E3, 0, 0x0803DB9C }, { 0x15E4, 0, 0x0803DC1C }, - { 0x15E5, 0, 0x0803DC70 }, { 0x15E6, 0, 0x0803DCA8 }, { 0x15E7, 0, 0x0803DCF8 }, { 0x15E8, 0, 0x0803DD5C }, - { 0x15E9, 0, 0x0803DE00 }, { 0x15EA, 0, 0x0803DE5C }, { 0x15EB, 0, 0x0803DE84 }, { 0x15EC, 0, 0x0803DED0 }, - { 0x15ED, 0, 0x0803DF34 }, { 0x15EE, 0, 0x0803DF64 }, { 0x15EF, 0, 0x0803DF9C }, { 0x15F0, 0, 0x0803DFBC }, - { 0x15F1, 0, 0x0803E018 }, { 0x15F2, 0, 0x0803E0B8 }, { 0x15F3, 0, 0x0803E124 }, { 0x15F4, 0, 0x0803E178 }, - { 0x15F5, 0, 0x0803E1E0 }, { 0x15F6, 0, 0x0803E298 }, { 0x15F7, 0, 0x0803E310 }, { 0x15F8, 0, 0x0803E36C }, - { 0x15F9, 0, 0x0803E3D0 }, { 0x15FA, 0, 0x0803E420 }, { 0x15FB, 0, 0x0803E454 }, { 0x15FC, 0, 0x0803E488 }, - { 0x15FD, 0, 0x0803E4E8 }, { 0x15FE, 0, 0x0803E59C }, { 0x15FF, 0, 0x0803E620 }, { 0x1600, 0, 0x0803E66C }, - { 0x1601, 0, 0x0803E70C }, { 0x1602, 0, 0x0803E74C }, { 0x1603, 0, 0x0803E7A4 }, { 0x1604, 0, 0x0803E7DC }, - { 0x1605, 0, 0x0803E804 }, { 0x1606, 0, 0x0803E864 }, { 0x1607, 0, 0x0803E8E8 }, { 0x1608, 0, 0x0803E930 }, - { 0x1609, 0, 0x0803E9E4 }, { 0x160A, 0, 0x0803EA4C }, { 0x160B, 0, 0x0803EAB0 }, { 0x160C, 0, 0x0803EB18 }, - { 0x160D, 0, 0x0803EB58 }, { 0x160E, 0, 0x0803EBA8 }, { 0x160F, 0, 0x0803EBFC }, { 0x1610, 0, 0x0803EC9C }, - { 0x1611, 0, 0x0803ED14 }, { 0x1612, 0, 0x0803EE08 }, { 0x1613, 0, 0x0803EE48 }, { 0x1614, 0, 0x0803EEB0 }, - { 0x1615, 0, 0x0803EEF0 }, { 0x1616, 0, 0x0803EFAC }, { 0x1617, 0, 0x0803F004 }, { 0x1618, 0, 0x0803F04C }, - { 0x1619, 0, 0x0803F078 }, { 0x161A, 0, 0x0803F0E0 }, { 0x161B, 0, 0x0803F110 }, { 0x161C, 0, 0x0803F15C }, - { 0x161D, 0, 0x0803F1EC }, { 0x161E, 0, 0x0803F264 }, { 0x161F, 0, 0x0803F2CC }, { 0x1620, 0, 0x0803F344 }, - { 0x1621, 0, 0x0803F3A8 }, { 0x1622, 0, 0x0803F3F4 }, { 0x1623, 0, 0x0803F46C }, { 0x1624, 0, 0x0803F4AC }, - { 0x1625, 0, 0x0803F500 }, { 0x1626, 0, 0x0803F608 }, { 0x1627, 0, 0x0803F66C }, { 0x1628, 0, 0x0803F6E8 }, - { 0x1629, 0, 0x0803F718 }, { 0x162A, 0, 0x0803F760 }, { 0x162B, 0, 0x0803F7C0 }, { 0x162C, 0, 0x0803F87C }, - { 0x162D, 0, 0x0803F8A8 }, { 0x162E, 0, 0x0803F8EC }, { 0x162F, 0, 0x0803F94C }, { 0x1630, 0, 0x0803F978 }, - { 0x1631, 0, 0x0803F9DC }, { 0x1632, 0, 0x0803FA3C }, { 0x1633, 0, 0x0803FA78 }, { 0x1634, 0, 0x0803FAC4 }, - { 0x1635, 0, 0x0803FB0C }, { 0x1636, 0, 0x0803FB5C }, { 0x1637, 0, 0x0803FBCC }, { 0x1638, 0, 0x0803FC50 }, - { 0x1644, 0, 0x0803FC6C }, { 0x1645, 0, 0x0803FD0C }, { 0x1646, 0, 0x0803FD5C }, { 0x1647, 0, 0x0803FDC0 }, - { 0x1648, 0, 0x0803FE08 }, { 0x1649, 0, 0x0803FE54 }, { 0x164A, 0, 0x0803FEB4 }, { 0x164B, 0, 0x0803FF88 }, - { 0x164C, 0, 0x0803FFF4 }, { 0x164D, 0, 0x08040064 }, { 0x164E, 0, 0x080400BC }, { 0x164F, 0, 0x0804010C }, - { 0x1650, 0, 0x08040174 }, { 0x1651, 0, 0x0804019C }, { 0x1652, 0, 0x08040208 }, { 0x1653, 0, 0x08040250 }, - { 0x1654, 0, 0x080402B0 }, { 0x1655, 0, 0x080402CC }, { 0x1656, 0, 0x0804032C }, { 0x1657, 0, 0x0804035C }, - { 0x1658, 0, 0x080403C0 }, { 0x1659, 0, 0x08040494 }, { 0x165A, 0, 0x08040530 }, { 0x165B, 0, 0x0804054C }, - { 0x165C, 0, 0x080405AC }, { 0x165D, 0, 0x080405E0 }, { 0x165E, 0, 0x08040624 }, { 0x165F, 0, 0x0804070C }, - { 0x1660, 0, 0x08040798 }, { 0x1661, 0, 0x080407C0 }, { 0x1700, 0, 0x08040848 }, { 0x1701, 0, 0x080408E4 }, - { 0x1702, 0, 0x0804092C }, { 0x1703, 0, 0x08040988 }, { 0x1704, 0, 0x080409D4 }, { 0x1705, 0, 0x08040A28 }, - { 0x1706, 0, 0x08040ABC }, { 0x1707, 0, 0x08040B0C }, { 0x1708, 0, 0x08040B50 }, { 0x1709, 0, 0x08040BA4 }, - { 0x170A, 0, 0x08040C18 }, { 0x170B, 0, 0x08040C60 }, { 0x170C, 0, 0x08040C6C }, { 0x170D, 0, 0x08040CC8 }, - { 0x170E, 0, 0x08040D38 }, { 0x170F, 0, 0x08040DBC }, { 0x1710, 0, 0x08040E0C }, { 0x1711, 0, 0x08040E84 }, - { 0x1712, 0, 0x08040E90 }, { 0x1713, 0, 0x08040EE8 }, { 0x1714, 0, 0x08040F30 }, { 0x1715, 0, 0x08040F78 }, - { 0x1716, 0, 0x08040FD0 }, { 0x1717, 0, 0x08041050 }, { 0x1718, 0, 0x08041084 }, { 0x1719, 0, 0x080410E8 }, - { 0x171A, 0, 0x08041128 }, { 0x171B, 0, 0x08041170 }, { 0x171C, 0, 0x080411BC }, { 0x171D, 0, 0x080411C8 }, - { 0x171E, 0, 0x0804122C }, { 0x171F, 0, 0x0804125C }, { 0x1720, 0, 0x080412A8 }, { 0x1721, 0, 0x080412E8 }, - { 0x1722, 0, 0x0804132C }, { 0x1723, 0, 0x08041378 }, { 0x1724, 0, 0x080413C0 }, { 0x1725, 0, 0x08041414 }, - { 0x1726, 0, 0x08041470 }, { 0x1727, 0, 0x0804147C }, { 0x1728, 0, 0x08041488 }, { 0x1729, 0, 0x080414D0 }, - { 0x172A, 0, 0x08041530 }, { 0x172B, 0, 0x08041588 }, { 0x172C, 0, 0x080415E4 }, { 0x172D, 0, 0x08041640 }, - { 0x172E, 0, 0x08041698 }, { 0x172F, 0, 0x080416FC }, { 0x1730, 0, 0x08041740 }, { 0x1731, 0, 0x08041794 }, - { 0x1732, 0, 0x080417A0 }, { 0x1733, 0, 0x080417F4 }, { 0x1734, 0, 0x08041848 }, { 0x1735, 0, 0x0804189C }, - { 0x1736, 0, 0x08041900 }, { 0x1737, 0, 0x08041958 }, { 0x1738, 0, 0x080419A8 }, { 0x1739, 0, 0x080419F4 }, - { 0x173A, 0, 0x08041A54 }, { 0x173B, 0, 0x08041AA0 }, { 0x173C, 0, 0x08041AF8 }, { 0x173D, 0, 0x08041B54 }, - { 0x173E, 0, 0x08041BA4 }, { 0x173F, 0, 0x08041BF4 }, { 0x1740, 0, 0x08041C48 }, { 0x1741, 0, 0x08041CAC }, - { 0x1742, 0, 0x08041D08 }, { 0x1743, 0, 0x08041D68 }, { 0x1744, 0, 0x08041DB4 }, { 0x1745, 0, 0x08041DF8 }, - { 0x1746, 0, 0x08041E54 }, { 0x1747, 0, 0x08041EB0 }, { 0x1748, 0, 0x08041F2C }, { 0x1749, 0, 0x08041F78 }, - { 0x1784, 0, 0x08041FD0 }, { 0x1785, 0, 0x0804202C }, { 0x1786, 0, 0x08042088 }, { 0x1787, 0, 0x080420E4 }, - { 0x1788, 0, 0x080420F0 }, { 0x1789, 0, 0x0804214C }, { 0x178A, 0, 0x080421B0 }, { 0x178B, 0, 0x080421F4 }, - { 0x178C, 0, 0x0804223C }, { 0x178D, 0, 0x08042288 }, { 0x178E, 0, 0x080422CC }, { 0x178F, 0, 0x08042314 }, - { 0x1798, 0, 0x08042360 }, { 0x1799, 0, 0x080423AC }, { 0x179A, 0, 0x080423F4 }, { 0x179B, 0, 0x08042440 }, - { 0x17AA, 0, 0x08042490 }, { 0x17AC, 0, 0x08042514 }, { 0x17AD, 0, 0x08042568 }, { 0x17AE, 0, 0x080425C0 }, - { 0x17AF, 0, 0x0804262C }, { 0x1800, 0, 0x080426AC }, { 0x1801, 0, 0x080426CC }, { 0x1802, 0, 0x0804272C }, - { 0x1803, 0, 0x08042754 }, { 0x1804, 0, 0x08042784 }, { 0x1805, 0, 0x080427E0 }, { 0x1806, 0, 0x08042834 }, - { 0x1807, 0, 0x08042870 }, { 0x1808, 0, 0x080428D0 }, { 0x1809, 0, 0x08042910 }, { 0x180A, 0, 0x0804293C }, - { 0x180B, 0, 0x08042968 }, { 0x180C, 0, 0x08042990 }, { 0x180D, 0, 0x080429AC }, { 0x180E, 0, 0x08042A04 }, - { 0x180F, 0, 0x08042A50 }, { 0x1810, 0, 0x08042A80 }, { 0x1811, 0, 0x08042AB4 }, { 0x1812, 0, 0x08042AF8 }, - { 0x1813, 0, 0x08042B38 }, { 0x1814, 0, 0x08042B6C }, { 0x1815, 0, 0x08042BAC }, { 0x1816, 0, 0x08042C04 }, - { 0x1817, 0, 0x08042C4C }, { 0x1818, 0, 0x08042C8C }, { 0x1819, 0, 0x08042CB8 }, { 0x181A, 0, 0x08042CEC }, - { 0x181B, 0, 0x08042D28 }, { 0x181C, 0, 0x08042D34 }, { 0x181D, 0, 0x08042D94 }, { 0x181E, 0, 0x08042DD8 }, - { 0x181F, 0, 0x08042DF0 }, { 0x1820, 0, 0x08042E40 }, { 0x1821, 0, 0x08042E7C }, { 0x1822, 0, 0x08042EB0 }, - { 0x1823, 0, 0x08042EE8 }, { 0x1824, 0, 0x08042F20 }, { 0x1883, 0, 0x08042F2C }, { 0x1884, 0, 0x08042F60 }, - { 0x1885, 0, 0x08042F9C }, { 0x1886, 0, 0x08043008 }, { 0x1887, 0, 0x08043054 }, { 0x1888, 0, 0x08043094 }, - { 0x1889, 0, 0x080430E4 }, { 0x188A, 0, 0x08043134 }, { 0x188B, 0, 0x08043150 }, { 0x188C, 0, 0x0804318C }, - { 0x188D, 0, 0x080431E8 }, { 0x188E, 0, 0x08043224 }, { 0x188F, 0, 0x0804326C }, { 0x1890, 0, 0x08043298 }, - { 0x1891, 0, 0x080432D8 }, { 0x1892, 0, 0x0804332C }, { 0x1893, 0, 0x08043378 }, { 0x1901, 0, 0x080433B4 }, - { 0x1902, 0, 0x0804341C }, { 0x1903, 0, 0x08043484 }, { 0x1904, 0, 0x08043508 }, { 0x1905, 0, 0x08043580 }, - { 0x1906, 0, 0x08043610 }, { 0x1907, 0, 0x0804367C }, { 0x1908, 0, 0x08043710 }, { 0x1909, 0, 0x08043784 }, - { 0x190A, 0, 0x0804380C }, { 0x190B, 0, 0x08043880 }, { 0x190C, 0, 0x080438E8 }, { 0x190D, 0, 0x08043948 }, - { 0x190E, 0, 0x080439C4 }, { 0x190F, 0, 0x08043A20 }, { 0x1910, 0, 0x08043AA0 }, { 0x1911, 0, 0x08043B24 }, - { 0x1912, 0, 0x08043BA8 }, { 0x1913, 0, 0x08043C30 }, { 0x1914, 0, 0x08043C9C }, { 0x1915, 0, 0x08043CEC }, - { 0x1916, 0, 0x08043D50 }, { 0x1917, 0, 0x08043DD8 }, { 0x1918, 0, 0x08043E40 }, { 0x1919, 0, 0x08043EB0 }, - { 0x191A, 0, 0x08043F24 }, { 0x191B, 0, 0x08043FB0 }, { 0x191C, 0, 0x0804401C }, { 0x191D, 0, 0x08044098 }, - { 0x191E, 0, 0x0804411C }, { 0x191F, 0, 0x08044184 }, { 0x1921, 0, 0x080441E8 }, { 0x1922, 0, 0x08044258 }, - { 0x1923, 0, 0x080442D4 }, { 0x1924, 0, 0x08044348 }, { 0x1925, 0, 0x080443D0 }, { 0x1926, 0, 0x08044458 }, - { 0x1927, 0, 0x080444DC }, { 0x1928, 0, 0x08044574 }, { 0x1929, 0, 0x080445CC }, { 0x192A, 0, 0x08044630 }, - { 0x192C, 0, 0x080446AC }, { 0x192D, 0, 0x0804471C }, { 0x192E, 0, 0x08044780 }, { 0x1930, 0, 0x08044808 }, - { 0x1931, 0, 0x08044898 }, { 0x1932, 0, 0x08044910 }, { 0x1933, 0, 0x0804498C }, { 0x1934, 0, 0x08044A04 }, - { 0x1935, 0, 0x08044A94 }, { 0x1937, 0, 0x08044B10 }, { 0x1939, 0, 0x08044B9C }, { 0x193A, 0, 0x08044C0C }, - { 0x193B, 0, 0x08044C18 }, { 0x193C, 0, 0x08044C8C }, { 0x1942, 0, 0x08044D04 }, { 0x1944, 0, 0x08044D6C }, - { 0x1945, 0, 0x08044DCC }, { 0x1946, 0, 0x08044E48 }, { 0x1947, 0, 0x08044EAC }, { 0x1948, 0, 0x08044F20 }, - { 0x1949, 0, 0x08044F88 }, { 0x194A, 0, 0x08045004 }, { 0x194B, 0, 0x08045084 }, { 0x194C, 0, 0x080450F4 }, - { 0x194D, 0, 0x08045174 }, { 0x1950, 0, 0x080451C8 }, { 0x1951, 0, 0x08045238 }, { 0x1952, 0, 0x080452A0 }, - { 0x1953, 0, 0x08045310 }, { 0x1954, 0, 0x08045378 }, { 0x1955, 0, 0x080453E8 }, { 0x1956, 0, 0x08045458 }, - { 0x1957, 0, 0x080454CC }, { 0x1958, 0, 0x08045540 }, { 0x1959, 0, 0x080455C4 }, { 0x195A, 0, 0x0804564C }, - { 0x195B, 0, 0x080456AC }, { 0x195C, 0, 0x08045704 }, { 0x195D, 0, 0x0804576C }, { 0x195E, 0, 0x080457E8 }, - { 0x195F, 0, 0x08045838 }, { 0x1960, 0, 0x0804589C }, { 0x1961, 0, 0x08045918 }, { 0x1962, 0, 0x08045988 }, - { 0x1963, 0, 0x080459E4 }, { 0x1964, 0, 0x08045A24 }, { 0x1B58, 0, 0x08045ACC }, { 0x1B59, 0, 0x08045ADC }, - { 0x1B5A, 0, 0x08045B00 }, { 0x1B5B, 0, 0x08045B20 }, { 0x1B5C, 0, 0x08045B2C }, { 0x1B5D, 0, 0x08045B58 }, - { 0x1B5E, 0, 0x08045B7C }, { 0x1B5F, 0, 0x08045BAC }, { 0x1B60, 0, 0x08045BD8 }, { 0x1B61, 0, 0x08045BFC }, - { 0x1B62, 0, 0x08045C18 }, { 0x1B63, 0, 0x08045C3C }, { 0x1B64, 0, 0x08045C60 }, { 0x1B65, 0, 0x08045C90 }, - { 0x1B66, 0, 0x08045CC0 }, { 0x1B67, 0, 0x08045CEC }, { 0x1B6A, 0, 0x08045CF8 }, { 0x1B6B, 0, 0x08045D28 }, - { 0x1B72, 0, 0x08045D58 }, { 0x1B73, 0, 0x08045D8C }, { 0x1B74, 0, 0x08045DB8 }, { 0x1B75, 0, 0x08045DEC }, - { 0x1B76, 0, 0x08045E1C }, { 0x1B77, 0, 0x08045E48 }, { 0x1B78, 0, 0x08045E54 }, { 0x1B79, 0, 0x08045E80 }, - { 0x1B7A, 0, 0x08045EB0 }, { 0x1B7B, 0, 0x08045ED8 }, { 0x1B7C, 0, 0x08045F08 }, { 0x1B7D, 0, 0x08045F34 }, - { 0x1B7E, 0, 0x08045F40 }, { 0x1B7F, 0, 0x08045F74 }, { 0x1B80, 0, 0x08045FA8 }, { 0x1B81, 0, 0x08045FD4 }, - { 0x1B89, 0, 0x08045FE0 }, { 0x1B8A, 0, 0x08045FF0 }, { 0x1B8B, 0, 0x08046038 }, { 0x1B8C, 0, 0x08046060 }, - { 0x1B8D, 0, 0x08046098 }, { 0x1B8E, 0, 0x080460D4 }, { 0x1B8F, 0, 0x08046110 }, { 0x1B90, 0, 0x08046150 }, - { 0x1B91, 0, 0x0804618C }, { 0x1B92, 0, 0x080461CC }, { 0x1B93, 0, 0x08046208 }, { 0x1B94, 0, 0x0804622C }, - { 0x1B95, 0, 0x0804626C }, { 0x1B96, 0, 0x080462A8 }, { 0x1B98, 0, 0x080462B4 }, { 0x1B9E, 0, 0x08046300 }, - { 0x1B9F, 0, 0x08046374 }, { 0x1BA0, 0, 0x080463FC }, { 0x1BA1, 0, 0x08046480 }, { 0x1BA2, 0, 0x08046594 }, - { 0x1BA4, 0, 0x080465C4 }, { 0x1BA5, 0, 0x08046654 }, { 0x1BA6, 0, 0x08046684 }, { 0x1BA7, 0, 0x080466D4 }, - { 0x1BA8, 0, 0x08046760 }, { 0x1BAC, 0, 0x080467E8 }, { 0x1BB2, 0, 0x08046848 }, { 0x1BB3, 0, 0x08046888 }, - { 0x1BB4, 0, 0x080468C4 }, { 0x1BB5, 0, 0x08046904 }, { 0x1BB6, 0, 0x08046944 }, { 0x1C00, 0, 0x08046984 }, - { 0x1C01, 0, 0x08046A4C }, { 0x1C02, 0, 0x08046AB8 }, { 0x1C03, 0, 0x08046BA8 }, { 0x1C04, 0, 0x08046C10 }, - { 0x1C05, 0, 0x08046D68 }, { 0x1C06, 0, 0x08046E44 }, { 0x1C07, 0, 0x08046EAC }, { 0x1C08, 0, 0x08046F0C }, - { 0x1C09, 0, 0x08046F5C }, { 0x1C0A, 0, 0x08046F94 }, { 0x1C0B, 0, 0x08047014 }, { 0x1C0C, 0, 0x080470D4 }, - { 0x1C0D, 0, 0x08047118 }, { 0x1C0E, 0, 0x08047130 }, { 0x1C0F, 0, 0x08047148 }, { 0x1C10, 0, 0x08047164 }, - { 0x1C11, 0, 0x0804717C }, { 0x1C12, 0, 0x0804719C }, { 0x1C13, 0, 0x080471BC }, { 0x1C14, 0, 0x080471D4 }, - { 0x1C15, 0, 0x080471F0 }, { 0x1C16, 0, 0x08047214 }, { 0x1C17, 0, 0x0804730C }, { 0x1C18, 0, 0x0804734C }, - { 0x1D00, 0, 0x080473A4 }, { 0x1D01, 0, 0x08047414 }, { 0x1D02, 0, 0x08047524 }, { 0x1D03, 0, 0x0804758C }, - { 0x1D04, 0, 0x08047644 }, { 0x1D05, 0, 0x08047678 }, { 0x1D06, 0, 0x080476D0 }, { 0x1D07, 0, 0x080476F8 }, - { 0x1D08, 0, 0x08047728 }, { 0x1D09, 0, 0x08047788 }, { 0x1D0A, 0, 0x080477C0 }, { 0x1D0B, 0, 0x080477F4 }, - { 0x1D0C, 0, 0x08047808 }, { 0x1D0D, 0, 0x08047820 }, { 0x1D11, 0, 0x08047844 }, { 0x1D12, 0, 0x08047890 }, - { 0x1D13, 0, 0x080478D8 }, { 0x1D14, 0, 0x08047920 }, { 0x1D15, 0, 0x0804796C }, { 0x1D16, 0, 0x080479B4 }, - { 0x1D17, 0, 0x080479FC }, { 0x1F40, 0, 0x08047A20 }, { 0x1F41, 0, 0x08047ABC }, { 0x1F42, 0, 0x08047B20 }, - { 0x1F43, 0, 0x08047B94 }, { 0x1F44, 0, 0x08047BD8 }, { 0x1F45, 0, 0x08047C40 }, { 0x1F46, 0, 0x08047CB4 }, - { 0x1F47, 0, 0x08047D1C }, { 0x1F48, 0, 0x08047D88 }, { 0x1F49, 0, 0x08047DA8 }, { 0x1F4A, 0, 0x08047E48 }, - { 0x1F4B, 0, 0x08047F30 }, { 0x1F4C, 0, 0x08047F88 }, { 0x1F4D, 0, 0x08048014 }, { 0x1F4E, 0, 0x080480E0 }, - { 0x1F4F, 0, 0x0804819C }, { 0x1F50, 0, 0x08048280 }, { 0x1F51, 0, 0x080482E4 }, { 0x1F52, 0, 0x0804833C }, - { 0x1F53, 0, 0x080483B8 }, { 0x1F54, 0, 0x08048430 }, { 0x1F55, 0, 0x080484AC }, { 0x1F56, 0, 0x080484F8 }, - { 0x1F5F, 0, 0x0804857C }, { 0x1F60, 0, 0x0804859C }, { 0x1F61, 0, 0x080485D4 }, { 0x1F62, 0, 0x08048604 }, - { 0x1F63, 0, 0x0804862C }, { 0x1F64, 0, 0x0804866C }, { 0x1F65, 0, 0x080486A4 }, { 0x1F66, 0, 0x080486E0 }, - { 0x1F67, 0, 0x08048708 }, { 0x1F68, 0, 0x08048774 }, { 0x1F69, 0, 0x080487A4 }, { 0x1F6A, 0, 0x080487E0 }, - { 0x1F6B, 0, 0x08048810 }, { 0x1F6C, 0, 0x08048864 }, { 0x1F6D, 0, 0x08048898 }, { 0x1F6E, 0, 0x08048960 }, - { 0x1F6F, 0, 0x08048990 }, { 0x1F70, 0, 0x080489E8 }, { 0x1F71, 0, 0x08048A44 }, { 0x1F72, 0, 0x08048AB8 }, - { 0x1F73, 0, 0x08048AE8 }, { 0x1F74, 0, 0x08048B94 }, { 0x1F75, 0, 0x08048BB0 }, { 0x1FA4, 0, 0x08048BD8 }, - { 0x1FA5, 0, 0x08048C14 }, { 0x1FA6, 0, 0x08048CF8 }, { 0x1FA7, 0, 0x08048D40 }, { 0x1FA8, 0, 0x08048D88 }, - { 0x1FA9, 0, 0x08048DF4 }, { 0x1FAA, 0, 0x08048E68 }, { 0x1FAB, 0, 0x08048EE0 }, { 0x1FAC, 0, 0x08048FB4 }, - { 0x1FAD, 0, 0x08049034 }, { 0x1FAE, 0, 0x08049068 }, { 0x1FAF, 0, 0x080491B0 }, { 0x1FB0, 0, 0x0804927C }, - { 0x1FB1, 0, 0x080492C8 }, { 0x1FB2, 0, 0x08049318 }, { 0x1FB3, 0, 0x08049384 }, { 0x1FB4, 0, 0x08049424 }, - { 0x1FB5, 0, 0x0804951C }, { 0x1FB6, 0, 0x08049558 }, { 0x1FB7, 0, 0x08049598 }, { 0x1FB8, 0, 0x080495B8 }, - { 0x1FB9, 0, 0x080495D0 }, { 0x1FBA, 0, 0x080495E8 }, { 0x1FBB, 0, 0x08049614 }, { 0x1FBC, 0, 0x0804963C }, - { 0x1FBD, 0, 0x08049688 }, { 0x1FBE, 0, 0x080496DC }, { 0x1FBF, 0, 0x08049758 }, { 0x1FC0, 0, 0x080497BC }, - { 0x1FC1, 0, 0x080497E4 }, { 0x1FC2, 0, 0x0804982C }, { 0x1FC3, 0, 0x080498A0 }, { 0x1FC4, 0, 0x08049920 }, - { 0x1FC5, 0, 0x08049940 }, { 0x1FC6, 0, 0x08049A0C }, { 0x1FC7, 0, 0x08049A38 }, { 0x1FC8, 0, 0x08049AA0 }, - { 0x1FC9, 0, 0x08049AB8 }, { 0x1FCA, 0, 0x08049AF0 }, { 0x1FCB, 0, 0x08049B74 }, { 0x1FCC, 0, 0x08049BD0 }, - { 0x1FCD, 0, 0x08049C34 }, { 0x1FCE, 0, 0x08049D14 }, { 0x1FCF, 0, 0x08049D70 }, { 0x1FD0, 0, 0x08049DAC }, - { 0x1FD1, 0, 0x08049E08 }, { 0x1FD2, 0, 0x08049E24 }, { 0x1FD3, 0, 0x08049E44 }, { 0x1FD4, 0, 0x08049E88 }, - { 0x1FD5, 0, 0x08049EB8 }, { 0x1FD6, 0, 0x08049F00 }, { 0x1FD7, 0, 0x08049F3C }, { 0x1FD8, 0, 0x08049F90 }, - { 0x1FD9, 0, 0x08049FC4 }, { 0x1FDA, 0, 0x0804A018 }, { 0x1FDB, 0, 0x0804A050 }, { 0x1FDC, 0, 0x0804A0BC }, - { 0x1FDD, 0, 0x0804A0F0 }, { 0x1FDE, 0, 0x0804A11C }, { 0x1FDF, 0, 0x0804A14C }, { 0x1FE0, 0, 0x0804A1A0 }, - { 0x1FE1, 0, 0x0804A1D4 }, { 0x1FE2, 0, 0x0804A210 }, { 0x1FE3, 0, 0x0804A244 }, { 0x1FE4, 0, 0x0804A290 }, - { 0x1FE5, 0, 0x0804A2C8 }, { 0x1FE6, 0, 0x0804A334 }, { 0x1FE7, 0, 0x0804A36C }, { 0x1FE8, 0, 0x0804A3EC }, - { 0x1FE9, 0, 0x0804A420 }, { 0x1FEA, 0, 0x0804A484 }, { 0x1FEB, 0, 0x0804A4B8 }, { 0x1FEC, 0, 0x0804A51C }, - { 0x1FED, 0, 0x0804A554 }, { 0x1FEE, 0, 0x0804A59C }, { 0x1FEF, 0, 0x0804A5D0 }, { 0x1FF0, 0, 0x0804A620 }, - { 0x1FF1, 0, 0x0804A658 }, { 0x1FF2, 0, 0x0804A6C0 }, { 0x1FF3, 0, 0x0804A6F4 }, { 0x1FF4, 0, 0x0804A74C }, - { 0x1FF5, 0, 0x0804A788 }, { 0x1FF6, 0, 0x0804A800 }, { 0x1FF7, 0, 0x0804A834 }, { 0x1FF8, 0, 0x0804A888 }, - { 0x1FF9, 0, 0x0804A8B8 }, { 0x1FFA, 0, 0x0804A908 }, { 0x1FFB, 0, 0x0804A940 }, { 0x1FFC, 0, 0x0804A970 }, - { 0x1FFD, 0, 0x0804A9A4 }, { 0x1FFE, 0, 0x0804AA00 }, { 0x1FFF, 0, 0x0804AA60 }, { 0x2000, 0, 0x0804AAA0 }, - { 0x2001, 0, 0x0804AACC }, { 0x2002, 0, 0x0804AB00 }, { 0x2003, 0, 0x0804AB60 }, { 0x2004, 0, 0x0804ABA0 }, - { 0x2005, 0, 0x0804ACE0 }, { 0x2006, 0, 0x0804ADB4 }, { 0x2007, 0, 0x0804AE8C }, { 0x2008, 0, 0x0804AEE0 }, - { 0x2009, 0, 0x0804AEF8 }, { 0x200A, 0, 0x0804AF10 }, { 0x200B, 0, 0x0804AFAC }, { 0x200C, 0, 0x0804B024 }, - { 0x200D, 0, 0x0804B058 }, { 0x200E, 0, 0x0804B0D0 }, { 0x200F, 0, 0x0804B144 }, { 0x2010, 0, 0x0804B168 }, - { 0x2011, 0, 0x0804B1B4 }, { 0x2012, 0, 0x0804B1F8 }, { 0x2013, 0, 0x0804B260 }, { 0x2014, 0, 0x0804B298 }, - { 0x2015, 0, 0x0804B300 }, { 0x2016, 0, 0x0804B338 }, { 0x2017, 0, 0x0804B350 }, { 0x201D, 0, 0x0804B3B0 }, - { 0x201E, 0, 0x0804B3F8 }, { 0x201F, 0, 0x0804B508 }, { 0x2020, 0, 0x0804B58C }, { 0x2021, 0, 0x0804B5F8 }, - { 0x2022, 0, 0x0804B68C }, { 0x2023, 0, 0x0804B6E4 }, { 0x2024, 0, 0x0804B6F0 }, { 0x2026, 0, 0x0804B6FC }, - { 0x2027, 0, 0x0804B71C }, { 0x2028, 0, 0x0804B744 }, { 0x2029, 0, 0x0804B758 }, { 0x202A, 0, 0x0804B770 }, - { 0x202B, 0, 0x0804B7C4 }, { 0x202C, 0, 0x0804B81C }, { 0x202D, 0, 0x0804B860 }, { 0x202E, 0, 0x0804B8A8 }, - { 0x202F, 0, 0x0804B908 }, { 0x2030, 0, 0x0804B93C }, { 0x2031, 0, 0x0804B9B8 }, { 0x2032, 0, 0x0804BA20 }, - { 0x2033, 0, 0x0804BA9C }, { 0x2034, 0, 0x0804BAEC }, { 0x2035, 0, 0x0804BB34 }, { 0x2036, 0, 0x0804BB7C }, - { 0x2037, 0, 0x0804BBAC }, { 0x2038, 0, 0x0804BBDC }, { 0x2039, 0, 0x0804BC20 }, { 0x203A, 0, 0x0804BC98 }, - { 0x203B, 0, 0x0804BCF0 }, { 0x203C, 0, 0x0804BD40 }, { 0x203D, 0, 0x0804BD5C }, { 0x203E, 0, 0x0804BDAC }, - { 0x203F, 0, 0x0804BE24 }, { 0x2040, 0, 0x0804BE4C }, { 0x2041, 0, 0x0804BEB8 }, { 0x2042, 0, 0x0804BEEC }, - { 0x2043, 0, 0x0804BF08 }, { 0x2044, 0, 0x0804BF38 }, { 0x2045, 0, 0x0804BF74 }, { 0x2046, 0, 0x0804BFB4 }, - { 0x2047, 0, 0x0804C028 }, { 0x2048, 0, 0x0804C08C }, { 0x2049, 0, 0x0804C0BC }, { 0x204A, 0, 0x0804C0D8 }, - { 0x204B, 0, 0x0804C114 }, { 0x204C, 0, 0x0804C144 }, { 0x204D, 0, 0x0804C180 }, { 0x204E, 0, 0x0804C204 }, - { 0x206C, 0, 0x0804C264 }, { 0x206D, 0, 0x0804C2A8 }, { 0x206E, 0, 0x0804C2F8 }, { 0x206F, 0, 0x0804C338 }, - { 0x2070, 0, 0x0804C384 }, { 0x2076, 0, 0x0804C390 }, { 0x2077, 0, 0x0804C3C0 }, { 0x2078, 0, 0x0804C404 }, - { 0x2079, 0, 0x0804C480 }, { 0x2080, 0, 0x0804C4C4 }, { 0x2081, 0, 0x0804C5B4 }, { 0x2082, 0, 0x0804C5FC }, - { 0x2083, 0, 0x0804C630 }, { 0x208A, 0, 0x0804C674 }, { 0x208B, 0, 0x0804C6BC }, { 0x208C, 0, 0x0804C708 }, - { 0x208D, 0, 0x0804C7B4 }, { 0x208E, 0, 0x0804C7FC }, { 0x2093, 0, 0x0804C8A4 }, { 0x2094, 0, 0x0804C8C0 }, - { 0x2095, 0, 0x0804C8E8 }, { 0x20B0, 0, 0x0804C920 }, { 0x20B1, 0, 0x0804C984 }, { 0x20B2, 0, 0x0804CA38 }, - { 0x20B3, 0, 0x0804CB34 }, { 0x20B4, 0, 0x0804CC18 }, { 0x20B5, 0, 0x0804CD10 }, { 0x20B6, 0, 0x0804CDD4 }, - { 0x20B7, 0, 0x0804CE8C }, { 0x20B8, 0, 0x0804CF48 }, { 0x20B9, 0, 0x0804CFA4 }, { 0x20BA, 0, 0x0804D018 }, - { 0x20BB, 0, 0x0804D084 }, { 0x20BC, 0, 0x0804D0EC }, { 0x20BD, 0, 0x0804D158 }, { 0x20BE, 0, 0x0804D1C0 }, - { 0x20BF, 0, 0x0804D230 }, { 0x20C0, 0, 0x0804D294 }, { 0x20C1, 0, 0x0804D300 }, { 0x20C2, 0, 0x0804D380 }, - { 0x20C3, 0, 0x0804D3F8 }, { 0x20C4, 0, 0x0804D460 }, { 0x20C5, 0, 0x0804D4AC }, { 0x20C6, 0, 0x0804D52C }, - { 0x20C7, 0, 0x0804D590 }, { 0x20D0, 0, 0x0804D5FC }, { 0x20D1, 0, 0x0804D654 }, { 0x20D2, 0, 0x0804D6C8 }, - { 0x20D4, 0, 0x0804D6EC }, { 0x20D5, 0, 0x0804D75C }, { 0x20D6, 0, 0x0804D7B4 }, { 0x20D7, 0, 0x0804D834 }, - { 0x20D8, 0, 0x0804D8B0 }, { 0x20D9, 0, 0x0804D93C }, { 0x20DA, 0, 0x0804D99C }, { 0x20DB, 0, 0x0804D9FC }, - { 0x20DC, 0, 0x0804DA74 }, { 0x20DD, 0, 0x0804DB20 }, { 0x20DE, 0, 0x0804DBB0 }, { 0x20DF, 0, 0x0804DC18 }, - { 0x20E0, 0, 0x0804DC90 }, { 0x20E1, 0, 0x0804DCFC }, { 0x20E2, 0, 0x0804DD84 }, { 0x20E3, 0, 0x0804DE0C }, - { 0x20E4, 0, 0x0804DEA0 }, { 0x20E5, 0, 0x0804DF10 }, { 0x20E6, 0, 0x0804DF78 }, { 0x20E7, 0, 0x0804DFEC }, - { 0x20F3, 0, 0x0804E05C }, { 0x20F7, 0, 0x0804E0C0 }, { 0x20F8, 0, 0x0804E134 }, { 0x20F9, 0, 0x0804E1AC }, - { 0x2103, 0, 0x0804E220 }, { 0x2104, 0, 0x0804E288 }, { 0x2105, 0, 0x0804E2CC }, { 0x2106, 0, 0x0804E320 }, - { 0x2107, 0, 0x0804E364 }, { 0x2108, 0, 0x0804E3BC }, { 0x2109, 0, 0x0804E408 }, { 0x210A, 0, 0x0804E458 }, - { 0x210B, 0, 0x0804E4B0 }, { 0x210C, 0, 0x0804E4EC }, { 0x210D, 0, 0x0804E52C }, { 0x210E, 0, 0x0804E578 }, - { 0x210F, 0, 0x0804E5D0 }, { 0x2110, 0, 0x0804E618 }, { 0x2111, 0, 0x0804E660 }, { 0x2112, 0, 0x0804E6BC }, - { 0x2113, 0, 0x0804E70C }, { 0x2114, 0, 0x0804E75C }, { 0x2115, 0, 0x0804E7A8 }, { 0x2116, 0, 0x0804E7F0 }, - { 0x2134, 0, 0x0804E83C }, { 0x2135, 0, 0x0804E880 }, { 0x2136, 0, 0x0804E8CC }, { 0x2137, 0, 0x0804E91C }, - { 0x2138, 0, 0x0804E96C }, { 0x2139, 0, 0x0804E9B4 }, { 0x213A, 0, 0x0804E9FC }, { 0x213B, 0, 0x0804EA38 }, - { 0x213C, 0, 0x0804EA88 }, { 0x213D, 0, 0x0804EAD0 }, { 0x213E, 0, 0x0804EB28 }, { 0x213F, 0, 0x0804EB80 }, - { 0x2140, 0, 0x0804EBD0 }, { 0x2141, 0, 0x0804EC1C }, { 0x2142, 0, 0x0804EC60 }, { 0x2143, 0, 0x0804ECAC }, - { 0x2144, 0, 0x0804ECF0 }, { 0x2145, 0, 0x0804ED40 }, { 0x2146, 0, 0x0804ED88 }, { 0x2147, 0, 0x0804EDDC }, - { 0x2152, 0, 0x0804EE34 }, { 0x2153, 0, 0x0804EE78 }, { 0x2154, 0, 0x0804EECC }, { 0x2156, 0, 0x0804EF1C }, - { 0x2157, 0, 0x0804EF64 }, { 0x2158, 0, 0x0804EFC4 }, { 0x2159, 0, 0x0804F014 }, { 0x215A, 0, 0x0804F05C }, - { 0x215B, 0, 0x0804F0C0 }, { 0x215D, 0, 0x0804F124 }, { 0x215E, 0, 0x0804F178 }, { 0x215F, 0, 0x0804F184 }, - { 0x2160, 0, 0x0804F1D8 }, { 0x2161, 0, 0x0804F234 }, { 0x2162, 0, 0x0804F298 }, { 0x2163, 0, 0x0804F2A4 }, - { 0x2164, 0, 0x0804F2F8 }, { 0x2165, 0, 0x0804F358 }, { 0x2166, 0, 0x0804F3B0 }, { 0x2167, 0, 0x0804F400 }, - { 0x2168, 0, 0x0804F458 }, { 0x2169, 0, 0x0804F4B0 }, { 0x216A, 0, 0x0804F504 }, { 0x216B, 0, 0x0804F554 }, - { 0x216C, 0, 0x0804F5A0 }, { 0x216D, 0, 0x0804F5F8 }, { 0x216E, 0, 0x0804F658 }, { 0x216F, 0, 0x0804F6B8 }, - { 0x2170, 0, 0x0804F710 }, { 0x2171, 0, 0x0804F764 }, { 0x2172, 0, 0x0804F7BC }, { 0x2173, 0, 0x0804F814 }, - { 0x2174, 0, 0x0804F870 }, { 0x2198, 0, 0x0804F8CC }, { 0x2199, 0, 0x0804F920 }, { 0x219A, 0, 0x0804F978 }, - { 0x219B, 0, 0x0804F9D0 }, { 0x219C, 0, 0x0804FA2C }, { 0x219D, 0, 0x0804FA80 }, { 0x219E, 0, 0x0804FAD0 }, - { 0x219F, 0, 0x0804FB28 }, { 0x21A0, 0, 0x0804FB80 }, { 0x21A1, 0, 0x0804FBD8 }, { 0x21A2, 0, 0x0804FC30 }, - { 0x21A3, 0, 0x0804FC88 }, { 0x21A4, 0, 0x0804FCD8 }, { 0x21A5, 0, 0x0804FD30 }, { 0x21A6, 0, 0x0804FD84 }, - { 0x21A7, 0, 0x0804FDDC }, { 0x21A8, 0, 0x0804FE34 }, { 0x21A9, 0, 0x0804FE88 }, { 0x21AA, 0, 0x0804FED8 }, - { 0x21AB, 0, 0x0804FF30 }, { 0x21AC, 0, 0x0804FF84 }, { 0x21AD, 0, 0x0804FFDC }, { 0x21AE, 0, 0x08050038 }, - { 0x21AF, 0, 0x08050094 }, { 0x21B0, 0, 0x080500EC }, { 0x21B1, 0, 0x08050140 }, { 0x21B2, 0, 0x08050198 }, - { 0x21B3, 0, 0x080501F4 }, { 0x21B4, 0, 0x0805024C }, { 0x21B5, 0, 0x080502A4 }, { 0x21B6, 0, 0x080502F8 }, - { 0x21B7, 0, 0x08050350 }, { 0x21B8, 0, 0x080503A8 }, { 0x21B9, 0, 0x08050400 }, { 0x21BA, 0, 0x0805045C }, - { 0x21CA, 0, 0x080504AC }, { 0x21CB, 0, 0x080504EC }, { 0x21CC, 0, 0x08050528 }, { 0x21CD, 0, 0x08050580 }, - { 0x21CE, 0, 0x080505C8 }, { 0x21CF, 0, 0x08050604 }, { 0x21D0, 0, 0x08050648 }, { 0x21D1, 0, 0x08050680 }, - { 0x21D2, 0, 0x080506CC }, { 0x21D3, 0, 0x08050700 }, { 0x21D4, 0, 0x0805075C }, { 0x21D5, 0, 0x080507A8 }, - { 0x21D6, 0, 0x080507F0 }, { 0x21D7, 0, 0x08050840 }, { 0x21D8, 0, 0x08050884 }, { 0x21D9, 0, 0x080508CC }, - { 0x21DA, 0, 0x08050910 }, { 0x21DB, 0, 0x0805094C }, { 0x21DC, 0, 0x08050998 }, { 0x21DD, 0, 0x080509D0 }, - { 0x21FC, 0, 0x08050A20 }, { 0x21FD, 0, 0x08050A50 }, { 0x21FE, 0, 0x08050A74 }, { 0x21FF, 0, 0x08050ABC }, - { 0x2200, 0, 0x08050ADC }, { 0x2201, 0, 0x08050AF0 }, { 0x2202, 0, 0x08050B0C }, { 0x2203, 0, 0x08050B44 }, - { 0x2204, 0, 0x08050B74 }, { 0x2205, 0, 0x08050B98 }, { 0x2206, 0, 0x08050BCC }, { 0x2207, 0, 0x08050BF8 }, - { 0x2208, 0, 0x08050C48 }, { 0x2209, 0, 0x08050CB0 }, { 0x220A, 0, 0x08050CC4 }, { 0x220B, 0, 0x08050CE0 }, - { 0x220C, 0, 0x08050D10 }, { 0x220D, 0, 0x08050D44 }, { 0x220E, 0, 0x08050D98 }, { 0x220F, 0, 0x08050DE0 }, - { 0x2210, 0, 0x08050E24 }, { 0x2211, 0, 0x08050E44 }, { 0x2212, 0, 0x08050E78 }, { 0x2213, 0, 0x08050E8C }, - { 0x2214, 0, 0x08050ECC }, { 0x2215, 0, 0x08050F14 }, { 0x2216, 0, 0x08050F44 }, { 0x2217, 0, 0x08050F6C }, - { 0x2218, 0, 0x08050FB4 }, { 0x2219, 0, 0x08050FDC }, { 0x221A, 0, 0x0805100C }, { 0x221B, 0, 0x08051034 }, - { 0x221C, 0, 0x08051054 }, { 0x221D, 0, 0x08051080 }, { 0x221E, 0, 0x080510A0 }, { 0x221F, 0, 0x080510DC }, - { 0x2220, 0, 0x08051104 }, { 0x2221, 0, 0x08051138 }, { 0x2222, 0, 0x0805114C }, { 0x2223, 0, 0x0805117C }, - { 0x2224, 0, 0x080511A8 }, { 0x2225, 0, 0x080511E4 }, { 0x2226, 0, 0x0805122C }, { 0x2227, 0, 0x08051258 }, - { 0x2228, 0, 0x080512AC }, { 0x2229, 0, 0x080512D8 }, { 0x222A, 0, 0x08051338 }, { 0x222B, 0, 0x08051374 }, - { 0x2328, 0, 0x080513C4 }, { 0x2329, 0, 0x08051410 }, { 0x232A, 0, 0x08051454 }, { 0x232B, 0, 0x080514B4 }, - { 0x232C, 0, 0x08051514 }, { 0x232D, 0, 0x08051564 }, { 0x232E, 0, 0x080515A8 }, { 0x232F, 0, 0x080515E4 }, - { 0x2330, 0, 0x08051630 }, { 0x2331, 0, 0x08051680 }, { 0x2332, 0, 0x08051700 }, { 0x2333, 0, 0x08051750 }, - { 0x2334, 0, 0x080517AC }, { 0x2335, 0, 0x08051814 }, { 0x2336, 0, 0x08051868 }, { 0x2337, 0, 0x080518C8 }, - { 0x2338, 0, 0x08051914 }, { 0x2339, 0, 0x08051948 }, { 0x233A, 0, 0x080519A4 }, { 0x233B, 0, 0x080519D8 }, - { 0x233C, 0, 0x08051A10 }, { 0x233D, 0, 0x08051A70 }, { 0x233E, 0, 0x08051AA4 }, { 0x233F, 0, 0x08051ADC }, - { 0x2340, 0, 0x08051B10 }, { 0x2341, 0, 0x08051B54 }, { 0x2342, 0, 0x08051BC8 }, { 0x2343, 0, 0x08051C38 }, - { 0x2344, 0, 0x08051C70 }, { 0x2345, 0, 0x08051CC0 }, { 0x2346, 0, 0x08051CFC }, { 0x2347, 0, 0x08051D24 }, - { 0x2348, 0, 0x08051DA4 }, { 0x2349, 0, 0x08051DE4 }, { 0x234A, 0, 0x08051E44 }, { 0x234B, 0, 0x08051E84 }, - { 0x234C, 0, 0x08051EA4 }, { 0x234D, 0, 0x08051EC4 }, { 0x234E, 0, 0x08051F04 }, { 0x234F, 0, 0x08051F30 }, - { 0x2350, 0, 0x08051F48 }, { 0x2351, 0, 0x08051F7C }, { 0x2352, 0, 0x08051FA8 }, { 0x2353, 0, 0x08051FC0 }, - { 0x2354, 0, 0x08051FE4 }, { 0x2355, 0, 0x08052004 }, { 0x2356, 0, 0x08052020 }, { 0x2357, 0, 0x08052048 }, - { 0x2358, 0, 0x080520AC }, { 0x2359, 0, 0x080520DC }, { 0x235A, 0, 0x08052104 }, { 0x235B, 0, 0x08052138 }, - { 0x235C, 0, 0x0805215C }, { 0x235D, 0, 0x08052188 }, { 0x235E, 0, 0x080522B4 }, { 0x235F, 0, 0x080522DC }, - { 0x2360, 0, 0x08052334 }, { 0x2361, 0, 0x080523A8 }, { 0x2362, 0, 0x08052400 }, { 0x2363, 0, 0x08052450 }, - { 0x2364, 0, 0x0805250C }, { 0x2365, 0, 0x08052644 }, { 0x2366, 0, 0x080526C0 }, { 0x2367, 0, 0x08052718 }, - { 0x2368, 0, 0x080527E4 }, { 0x2369, 0, 0x080528E0 }, { 0x236A, 0, 0x08052930 }, { 0x236B, 0, 0x08052A04 }, - { 0x236C, 0, 0x08052A40 }, { 0x236D, 0, 0x08052A8C }, { 0x236E, 0, 0x08052ABC }, { 0x236F, 0, 0x08052AD8 }, - { 0x2370, 0, 0x08052B34 }, { 0x2371, 0, 0x08052B64 }, { 0x2372, 0, 0x08052BE0 }, { 0x2373, 0, 0x08052BF8 }, - { 0x2374, 0, 0x08052C3C }, { 0x2375, 0, 0x08052C80 }, { 0x2376, 0, 0x08052CE4 }, { 0x2377, 0, 0x08052D08 }, - { 0x2378, 0, 0x08052D54 }, { 0x2710, 0, 0x08052D8C }, { 0x2711, 0, 0x08052E54 }, { 0x2712, 0, 0x08052EA4 }, - { 0x2713, 0, 0x08053008 }, { 0x2714, 0, 0x0805305C }, { 0x2715, 0, 0x080531A0 }, { 0x2716, 0, 0x08053220 }, - { 0x2717, 0, 0x08053284 }, { 0x2718, 0, 0x080532BC }, { 0x2719, 0, 0x08053300 }, { 0x271A, 0, 0x0805332C }, - { 0x271B, 0, 0x08053424 }, { 0x271C, 0, 0x080534AC }, { 0x271D, 0, 0x08053524 }, { 0x271E, 0, 0x0805358C }, - { 0x271F, 0, 0x08053608 }, { 0x2720, 0, 0x0805367C }, { 0x2721, 0, 0x08053718 }, { 0x2722, 0, 0x0805374C }, - { 0x2723, 0, 0x080537A8 }, { 0x2724, 0, 0x080537F4 }, { 0x2725, 0, 0x08053850 }, { 0x2726, 0, 0x080538A8 }, - { 0x2727, 0, 0x08053914 }, { 0x2728, 0, 0x08053974 }, { 0x2729, 0, 0x08053A34 }, { 0x272A, 0, 0x08053A4C }, - { 0x272B, 0, 0x08053A90 }, { 0x272C, 0, 0x08053AB0 }, { 0x272D, 0, 0x08053AF4 }, { 0x272E, 0, 0x08053B3C }, - { 0x272F, 0, 0x08053B9C }, { 0x2730, 0, 0x08053BCC }, { 0x2731, 0, 0x08053C04 }, { 0x2732, 0, 0x08053C70 }, - { 0x2733, 0, 0x08053CD8 }, { 0x2734, 0, 0x08053D4C }, { 0x2735, 0, 0x08053DD4 }, { 0x2736, 0, 0x08053E48 }, - { 0x2737, 0, 0x08053EA8 }, { 0x2738, 0, 0x08053F9C }, { 0x2739, 0, 0x08054038 }, { 0x273A, 0, 0x080540A0 }, - { 0x273B, 0, 0x0805411C }, { 0x273C, 0, 0x08054188 }, { 0x273D, 0, 0x080541D0 }, { 0x273E, 0, 0x08054278 }, - { 0x273F, 0, 0x080542A0 }, { 0x2740, 0, 0x0805432C }, { 0x2741, 0, 0x080543CC }, { 0x2742, 0, 0x08054478 }, - { 0x2743, 0, 0x080544F8 }, { 0x2744, 0, 0x08054580 }, { 0x2745, 0, 0x08054630 }, { 0x2746, 0, 0x08054674 }, - { 0x2747, 0, 0x080546C4 }, { 0x2748, 0, 0x08054784 }, { 0x2749, 0, 0x080547EC }, { 0x274A, 0, 0x0805483C }, - { 0x274B, 0, 0x0805489C }, { 0x274C, 0, 0x08054924 }, { 0x274D, 0, 0x0805494C }, { 0x274E, 0, 0x080549E0 }, - { 0x274F, 0, 0x08054A90 }, { 0x2774, 0, 0x08054B24 }, { 0x2775, 0, 0x08054B7C }, { 0x2776, 0, 0x08054C30 }, - { 0x2777, 0, 0x08054C3C }, { 0x2778, 0, 0x08054CD0 }, { 0x2779, 0, 0x08054CDC }, { 0x277A, 0, 0x08054D00 }, - { 0x277B, 0, 0x08054DA4 }, { 0x277C, 0, 0x08054EC8 }, { 0x277D, 0, 0x08054F54 }, { 0x277E, 0, 0x08054FA0 }, - { 0x277F, 0, 0x08055004 }, { 0x2780, 0, 0x0805503C }, { 0x2781, 0, 0x080550B0 }, { 0x2782, 0, 0x08055110 }, - { 0x2783, 0, 0x08055138 }, { 0x2784, 0, 0x08055160 }, { 0x2785, 0, 0x08055194 }, { 0x2786, 0, 0x080551E0 }, - { 0x2787, 0, 0x08055224 }, { 0x2788, 0, 0x08055264 }, { 0x2789, 0, 0x080552A8 }, { 0x278A, 0, 0x080552E8 }, - { 0x278B, 0, 0x08055310 }, { 0x278C, 0, 0x0805535C }, { 0x278D, 0, 0x080553E0 }, { 0x278E, 0, 0x08055424 }, - { 0x278F, 0, 0x08055448 }, { 0x2790, 0, 0x08055470 }, { 0x2791, 0, 0x080554F0 }, { 0x2792, 0, 0x08055510 }, - { 0x2793, 0, 0x08055534 }, { 0x2794, 0, 0x080555BC }, { 0x2795, 0, 0x080555FC }, { 0x2796, 0, 0x0805565C }, - { 0x2797, 0, 0x08055688 }, { 0x2798, 0, 0x080556CC }, { 0x2799, 0, 0x08055700 }, { 0x279A, 0, 0x0805573C }, - { 0x279B, 0, 0x0805576C }, { 0x279C, 0, 0x080557B0 }, { 0x279D, 0, 0x08055804 }, { 0x279E, 0, 0x08055858 }, - { 0x279F, 0, 0x080558DC }, { 0x27A0, 0, 0x0805591C }, { 0x27A1, 0, 0x08055984 }, { 0x27A2, 0, 0x080559C0 }, - { 0x27A3, 0, 0x08055A10 }, { 0x27A4, 0, 0x08055A38 }, { 0x27A5, 0, 0x08055AB0 }, { 0x27A6, 0, 0x08055AE8 }, - { 0x27A7, 0, 0x08055B1C }, { 0x27A8, 0, 0x08055B60 }, { 0x27A9, 0, 0x08055BA8 }, { 0x27AA, 0, 0x08055BC0 }, - { 0x27AB, 0, 0x08055C10 }, { 0x27AC, 0, 0x08055C34 }, { 0x27AD, 0, 0x08055CAC }, { 0x27AE, 0, 0x08055CC4 }, - { 0x27D8, 0, 0x08055D0C }, { 0x27D9, 0, 0x08055D50 }, { 0x27DA, 0, 0x08055D94 }, { 0x27DB, 0, 0x08055DCC }, - { 0x27DC, 0, 0x08055E10 }, { 0x27DD, 0, 0x08055E50 }, { 0x27DE, 0, 0x08055ED0 }, { 0x27DF, 0, 0x08055F14 }, - { 0x27E0, 0, 0x08055F70 }, { 0x27E1, 0, 0x08056000 }, { 0x27E2, 0, 0x0805609C }, { 0x27E3, 0, 0x080560DC }, - { 0x27E4, 0, 0x080560F8 }, { 0x27E5, 0, 0x08056128 }, { 0x27E6, 0, 0x08056170 }, { 0x27E7, 0, 0x08056220 }, - { 0x27E8, 0, 0x0805627C }, { 0x27E9, 0, 0x080562D8 }, { 0x27EA, 0, 0x08056334 }, { 0x27EB, 0, 0x0805635C }, - { 0x27EC, 0, 0x080563B0 }, { 0x27ED, 0, 0x080563D8 }, { 0x27EE, 0, 0x0805643C }, { 0x27EF, 0, 0x08056468 }, - { 0x27F0, 0, 0x08056488 }, { 0x27F1, 0, 0x080564AC }, { 0x27F2, 0, 0x080564F4 }, { 0x27F3, 0, 0x0805653C }, - { 0x27F4, 0, 0x08056570 }, { 0x27F5, 0, 0x0805662C }, { 0x27F6, 0, 0x0805668C }, { 0x27F7, 0, 0x080566B0 }, - { 0x27F8, 0, 0x080566E4 }, { 0x27F9, 0, 0x08056708 }, { 0x27FA, 0, 0x08056734 }, { 0x283C, 0, 0x0805678C }, - { 0x283D, 0, 0x080567C4 }, { 0x2841, 0, 0x080567FC }, { 0x2842, 0, 0x08056840 }, { 0x2843, 0, 0x08056878 }, - { 0x2844, 0, 0x080568E0 }, { 0x2845, 0, 0x0805696C }, { 0x2846, 0, 0x080569BC }, { 0x2847, 0, 0x08056A18 }, - { 0x2848, 0, 0x08056A54 }, { 0x2849, 0, 0x08056AB0 }, { 0x284A, 0, 0x08056AF4 }, { 0x284B, 0, 0x08056B38 }, - { 0x284C, 0, 0x08056B88 }, { 0x284D, 0, 0x08056BCC }, { 0x284E, 0, 0x08056C2C }, { 0x284F, 0, 0x08056C7C }, - { 0x2850, 0, 0x08056CA8 }, { 0x2851, 0, 0x08056CF8 }, { 0x2852, 0, 0x08056D24 }, { 0x2853, 0, 0x08056D68 }, - { 0x2854, 0, 0x08056DC0 }, { 0x2855, 0, 0x08056E04 }, { 0x2856, 0, 0x08056E50 }, { 0x2857, 0, 0x08056E98 }, - { 0x2858, 0, 0x08056EFC }, { 0x2859, 0, 0x08056F44 }, { 0x285A, 0, 0x08056FA8 }, { 0x285B, 0, 0x08056FE8 }, - { 0x285C, 0, 0x08057014 }, { 0x285D, 0, 0x0805705C }, { 0x285E, 0, 0x08057088 }, { 0x285F, 0, 0x080570C8 }, - { 0x2860, 0, 0x080570FC }, { 0x2861, 0, 0x08057114 }, { 0x2862, 0, 0x08057174 }, { 0x2863, 0, 0x080571C0 }, - { 0x2864, 0, 0x0805722C }, { 0x2865, 0, 0x08057278 }, { 0x2866, 0, 0x080572E4 }, { 0x2867, 0, 0x08057328 }, - { 0x2868, 0, 0x08057358 }, { 0x2869, 0, 0x080573A4 }, { 0x286A, 0, 0x08057410 }, { 0x286B, 0, 0x08057454 }, - { 0x286C, 0, 0x08057484 }, { 0x286D, 0, 0x080574D0 }, { 0x286E, 0, 0x080574F8 }, { 0x286F, 0, 0x0805753C }, - { 0x2870, 0, 0x080575A8 }, { 0x2871, 0, 0x080575E4 }, { 0x2872, 0, 0x08057628 }, { 0x2873, 0, 0x0805765C }, - { 0x2874, 0, 0x080576B4 }, { 0x2875, 0, 0x080576D0 }, { 0x2876, 0, 0x08057728 }, { 0x2877, 0, 0x0805777C }, - { 0x2878, 0, 0x080577D4 }, { 0x2879, 0, 0x08057828 }, { 0x287A, 0, 0x08057890 }, { 0x287B, 0, 0x08057900 }, - { 0x287C, 0, 0x08057968 }, { 0x287D, 0, 0x080579B8 }, { 0x287E, 0, 0x080579E8 }, { 0x287F, 0, 0x08057A5C }, - { 0x2880, 0, 0x08057AA8 }, { 0x2881, 0, 0x08057B24 }, { 0x2882, 0, 0x08057B5C }, { 0x2883, 0, 0x08057B94 }, - { 0x2884, 0, 0x08057BC8 }, { 0x2885, 0, 0x08057BE0 }, { 0x2886, 0, 0x08057BF8 }, { 0x2887, 0, 0x08057C24 }, - { 0x2888, 0, 0x08057C5C }, { 0x2889, 0, 0x08057C88 }, { 0x288A, 0, 0x08057CB4 }, { 0x288B, 0, 0x08057CD4 }, - { 0x28A0, 0, 0x08057CF0 }, { 0x28A1, 0, 0x08057D20 }, { 0x28A2, 0, 0x08057D5C }, { 0x28A3, 0, 0x08057D94 }, - { 0x28A4, 0, 0x08057E80 }, { 0x28A5, 0, 0x08057F64 }, { 0x28A6, 0, 0x08057FA8 }, { 0x28A7, 0, 0x08058080 }, - { 0x28A8, 0, 0x080580B4 }, { 0x28A9, 0, 0x080580F4 }, { 0x28AA, 0, 0x08058130 }, { 0x28AB, 0, 0x08058160 }, - { 0x28AC, 0, 0x080581EC }, { 0x28AD, 0, 0x080582C0 }, { 0x28AF, 0, 0x080582DC }, { 0x28B0, 0, 0x080582F8 }, - { 0x28B1, 0, 0x08058340 }, { 0x28B2, 0, 0x080583A8 }, { 0x28B3, 0, 0x08058400 }, { 0x28B4, 0, 0x08058488 }, - { 0x28B5, 0, 0x080584E8 }, { 0x28B6, 0, 0x08058524 }, { 0x28B7, 0, 0x08058594 }, { 0x28B8, 0, 0x080585F4 }, - { 0x28B9, 0, 0x08058618 }, { 0x28BA, 0, 0x0805864C }, { 0x28BB, 0, 0x08058688 }, { 0x28BC, 0, 0x080586B8 }, - { 0x28BD, 0, 0x080586F8 }, { 0x28BE, 0, 0x0805871C }, { 0x28BF, 0, 0x08058760 }, { 0x28C0, 0, 0x0805878C }, - { 0x28C1, 0, 0x080587B4 }, { 0x28C2, 0, 0x0805881C }, { 0x28C3, 0, 0x08058880 }, { 0x28C4, 0, 0x080589EC }, - { 0x28C5, 0, 0x08058A60 }, { 0x28C6, 0, 0x08058A78 }, { 0x28C7, 0, 0x08058AC0 }, { 0x28C8, 0, 0x08058AF4 }, - { 0x28C9, 0, 0x08058B54 }, { 0x28CA, 0, 0x08058B9C }, { 0x28CB, 0, 0x08058BD4 }, { 0x28CC, 0, 0x08058C24 }, - { 0x28CD, 0, 0x08058C58 }, { 0x28CE, 0, 0x08058C6C }, { 0x28CF, 0, 0x08058C88 }, { 0x28D0, 0, 0x08058CCC }, - { 0x28D1, 0, 0x08058D1C }, { 0x28D2, 0, 0x08058D4C }, { 0x28D3, 0, 0x08058DA0 }, { 0x28D4, 0, 0x08058DF0 }, - { 0x28D5, 0, 0x08058E4C }, { 0x28D6, 0, 0x08058EE8 }, { 0x28D7, 0, 0x08058F10 }, { 0x28D8, 0, 0x08058F60 }, - { 0x28D9, 0, 0x0805901C }, { 0x28DA, 0, 0x08059030 }, { 0x28DB, 0, 0x08059154 }, { 0x28DC, 0, 0x08059184 }, - { 0x28DE, 0, 0x080591A8 }, { 0x28DF, 0, 0x080591E4 }, { 0x28E0, 0, 0x08059220 }, { 0x28E1, 0, 0x08059260 }, - { 0x28E2, 0, 0x080592C8 }, { 0x28E3, 0, 0x0805931C }, { 0x28E4, 0, 0x08059378 }, { 0x28E5, 0, 0x080593A4 }, - { 0x28E6, 0, 0x080593B8 }, { 0x28E7, 0, 0x080593FC }, { 0x28E8, 0, 0x08059420 }, { 0x28E9, 0, 0x0805945C }, - { 0x28EA, 0, 0x08059480 }, { 0x28EB, 0, 0x080594D4 }, { 0x28EC, 0, 0x08059564 }, { 0x28ED, 0, 0x080595B8 }, - { 0x28EE, 0, 0x080595F8 }, { 0x28EF, 0, 0x08059640 }, { 0x28F0, 0, 0x080596F8 }, { 0x28F1, 0, 0x08059754 }, - { 0x28F2, 0, 0x080597D4 }, { 0x28F3, 0, 0x08059814 }, { 0x28F4, 0, 0x080599B0 }, { 0x28F5, 0, 0x080599F8 }, - { 0x28F6, 0, 0x08059AC0 }, { 0x28F7, 0, 0x08059AEC }, { 0x28F8, 0, 0x08059B70 }, { 0x28F9, 0, 0x08059BDC }, - { 0x28FA, 0, 0x08059C00 }, { 0x28FB, 0, 0x08059C60 }, { 0x28FC, 0, 0x08059CBC }, { 0x28FD, 0, 0x08059DA0 }, - { 0x28FE, 0, 0x08059DB0 }, { 0x28FF, 0, 0x08059E2C }, { 0x2900, 0, 0x08059EC8 }, { 0x2901, 0, 0x08059EF4 }, - { 0x2902, 0, 0x08059F70 }, { 0x2903, 0, 0x08059FD0 }, { 0x2904, 0, 0x0805A04C }, { 0x2905, 0, 0x0805A24C }, - { 0x2906, 0, 0x0805A4F8 }, { 0x2907, 0, 0x0805A584 }, { 0x2908, 0, 0x0805A5C0 }, { 0x2909, 0, 0x0805A60C }, - { 0x290A, 0, 0x0805A640 }, { 0x290B, 0, 0x0805A6C8 }, { 0x290C, 0, 0x0805A9C0 }, { 0x290D, 0, 0x0805AD84 }, - { 0x290E, 0, 0x0805ADF8 }, { 0x290F, 0, 0x0805AE40 }, { 0x2910, 0, 0x0805AE74 }, { 0x2911, 0, 0x0805AF50 }, - { 0x2912, 0, 0x0805AFCC }, { 0x2913, 0, 0x0805B044 }, { 0x2914, 0, 0x0805B104 }, { 0x2915, 0, 0x0805B1F8 }, - { 0x2916, 0, 0x0805B224 }, { 0x2917, 0, 0x0805B244 }, { 0x2918, 0, 0x0805B2A0 }, { 0x2919, 0, 0x0805B2D0 }, - { 0x291A, 0, 0x0805B314 }, { 0x291B, 0, 0x0805B354 }, { 0x291C, 0, 0x0805B3B0 }, { 0x291D, 0, 0x0805B400 }, - { 0x291E, 0, 0x0805B454 }, { 0x291F, 0, 0x0805B494 }, { 0x2920, 0, 0x0805B4EC }, { 0x2921, 0, 0x0805B538 }, - { 0x2922, 0, 0x0805B58C }, { 0x2923, 0, 0x0805B600 }, { 0x2924, 0, 0x0805B65C }, { 0x2925, 0, 0x0805B738 }, - { 0x2926, 0, 0x0805B770 }, { 0x2927, 0, 0x0805B794 }, { 0x2928, 0, 0x0805B7C8 }, { 0x2929, 0, 0x0805B7EC }, - { 0x292A, 0, 0x0805B814 }, { 0x292B, 0, 0x0805B8C0 }, { 0x292C, 0, 0x0805B994 }, { 0x292D, 0, 0x0805BA44 }, - { 0x292E, 0, 0x0805BB14 }, { 0x292F, 0, 0x0805BB74 }, { 0x2930, 0, 0x0805BBEC }, { 0x2931, 0, 0x0805BC40 }, - { 0x2932, 0, 0x0805BCBC }, { 0x2933, 0, 0x0805BD3C }, { 0x2934, 0, 0x0805BDA4 }, { 0x2935, 0, 0x0805BDE0 }, - { 0x2936, 0, 0x0805BE20 }, { 0x2937, 0, 0x0805BE90 }, { 0x2938, 0, 0x0805BEE8 }, { 0x2939, 0, 0x0805BF5C }, - { 0x293A, 0, 0x0805BF80 }, { 0x293B, 0, 0x0805BFE4 }, { 0x293C, 0, 0x0805C00C }, { 0x293D, 0, 0x0805C094 }, - { 0x293E, 0, 0x0805C0EC }, { 0x293F, 0, 0x0805C168 }, { 0x2940, 0, 0x0805C1EC }, { 0x2941, 0, 0x0805C258 }, - { 0x2942, 0, 0x0805C2DC }, { 0x2943, 0, 0x0805C350 }, { 0x2944, 0, 0x0805C3B8 }, { 0x2945, 0, 0x0805C3F8 }, - { 0x2946, 0, 0x0805C44C }, { 0x2947, 0, 0x0805C470 }, { 0x2948, 0, 0x0805C4F0 }, { 0x2949, 0, 0x0805C518 }, - { 0x294A, 0, 0x0805C534 }, { 0x294B, 0, 0x0805C54C }, { 0x294C, 0, 0x0805C570 }, { 0x294D, 0, 0x0805C5A8 }, - { 0x294E, 0, 0x0805C680 }, { 0x294F, 0, 0x0805C740 }, { 0x2950, 0, 0x0805C794 }, { 0x2951, 0, 0x0805C7F4 }, - { 0x2952, 0, 0x0805C854 }, { 0x2953, 0, 0x0805C914 }, { 0x2954, 0, 0x0805C940 }, { 0x2955, 0, 0x0805C980 }, - { 0x2956, 0, 0x0805C9DC }, { 0x2957, 0, 0x0805CA08 }, { 0x2958, 0, 0x0805CA2C }, { 0x2959, 0, 0x0805CA48 }, - { 0x295A, 0, 0x0805CA6C }, { 0x295B, 0, 0x0805CAB4 }, { 0x295C, 0, 0x0805CB08 }, { 0x295D, 0, 0x0805CB24 }, - { 0x295E, 0, 0x0805CB44 }, { 0x295F, 0, 0x0805CB60 }, { 0x2960, 0, 0x0805CC3C }, { 0x2961, 0, 0x0805CD14 }, - { 0x2962, 0, 0x0805CD3C }, { 0x2968, 0, 0x0805CE60 }, { 0x2969, 0, 0x0805CE78 }, { 0x296A, 0, 0x0805CEF4 }, - { 0x296B, 0, 0x0805CF24 }, { 0x296C, 0, 0x0805CF64 }, { 0x296D, 0, 0x0805CF9C }, { 0x296E, 0, 0x0805CFB4 }, - { 0x296F, 0, 0x0805D018 }, { 0x2970, 0, 0x0805D08C }, { 0x2971, 0, 0x0805D17C }, { 0x2972, 0, 0x0805D1C4 }, - { 0x2973, 0, 0x0805D234 }, { 0x2974, 0, 0x0805D258 }, { 0x2975, 0, 0x0805D2E4 }, { 0x2976, 0, 0x0805D314 }, - { 0x2977, 0, 0x0805D358 }, { 0x2978, 0, 0x0805D3DC }, { 0x2979, 0, 0x0805D414 }, { 0x297A, 0, 0x0805D458 }, - { 0x29CC, 0, 0x0805D4A8 }, { 0x29CD, 0, 0x0805D4C0 }, { 0x29CE, 0, 0x0805D514 }, { 0x29CF, 0, 0x0805D550 }, - { 0x29D0, 0, 0x0805D580 }, { 0x29D1, 0, 0x0805D5AC }, { 0x29D2, 0, 0x0805D5D4 }, { 0x29D3, 0, 0x0805D620 }, - { 0x29D4, 0, 0x0805D724 }, { 0x29D5, 0, 0x0805D824 }, { 0x29D6, 0, 0x0805D864 }, { 0x29D7, 0, 0x0805D8A8 }, - { 0x29D8, 0, 0x0805D9A8 }, { 0x29D9, 0, 0x0805DAA4 }, { 0x29DA, 0, 0x0805DAFC }, { 0x29DB, 0, 0x0805DB3C }, - { 0x29DC, 0, 0x0805DBA0 }, { 0x29DD, 0, 0x0805DBDC }, { 0x29DE, 0, 0x0805DC00 }, { 0x29DF, 0, 0x0805DC68 }, - { 0x29E0, 0, 0x0805DC94 }, { 0x29E1, 0, 0x0805DCC0 }, { 0x29E2, 0, 0x0805DCE8 }, { 0x29E3, 0, 0x0805DE80 }, - { 0x29E4, 0, 0x0805DEC0 }, { 0x29E5, 0, 0x0805DFAC }, { 0x29E6, 0, 0x0805DFC8 }, { 0x29E7, 0, 0x0805E00C }, - { 0x29E8, 0, 0x0805E098 }, { 0x29E9, 0, 0x0805E0DC }, { 0x29EA, 0, 0x0805E1D0 }, { 0x29EB, 0, 0x0805E204 }, - { 0x29EC, 0, 0x0805E234 }, { 0x29ED, 0, 0x0805E258 }, { 0x29EE, 0, 0x0805E2A4 }, { 0x29EF, 0, 0x0805E2D4 }, - { 0x29F0, 0, 0x0805E314 }, { 0x29F1, 0, 0x0805E344 }, { 0x29F2, 0, 0x0805E390 }, { 0x29F3, 0, 0x0805E3EC }, - { 0x29F4, 0, 0x0805E428 }, { 0x29F5, 0, 0x0805E49C }, { 0x29F8, 0, 0x0805E4D8 }, { 0x29F9, 0, 0x0805E530 }, - { 0x29FA, 0, 0x0805E56C }, { 0x29FB, 0, 0x0805E5B8 }, { 0x29FC, 0, 0x0805E608 }, { 0x29FD, 0, 0x0805E654 }, - { 0x29FE, 0, 0x0805E6C8 }, { 0x29FF, 0, 0x0805E700 }, { 0x2A00, 0, 0x0805E7B4 }, { 0x2A01, 0, 0x0805E7D0 }, - { 0x2A02, 0, 0x0805E81C }, { 0x2A30, 0, 0x0805E878 }, { 0x2A31, 0, 0x0805E898 }, { 0x2A32, 0, 0x0805E8DC }, - { 0x2A33, 0, 0x0805E94C }, { 0x2A34, 0, 0x0805EA04 }, { 0x2A35, 0, 0x0805EA90 }, { 0x2A36, 0, 0x0805EB14 }, - { 0x2A37, 0, 0x0805EB4C }, { 0x2A38, 0, 0x0805EBD0 }, { 0x2A39, 0, 0x0805EC28 }, { 0x2A3A, 0, 0x0805EC40 }, - { 0x2A94, 0, 0x0805EC78 }, { 0x2A95, 0, 0x0805ECA4 }, { 0x2A96, 0, 0x0805ECD0 }, { 0x2A97, 0, 0x0805EDEC }, - { 0x2A98, 0, 0x0805EF18 }, { 0x2A99, 0, 0x0805EF50 }, { 0x2A9A, 0, 0x0805EFE0 }, { 0x2A9B, 0, 0x0805F120 }, - { 0x2A9C, 0, 0x0805F254 }, { 0x2A9D, 0, 0x0805F30C }, { 0x2A9E, 0, 0x0805F3CC }, { 0x2A9F, 0, 0x0805F4B4 }, - { 0x2AA0, 0, 0x0805F5D0 }, { 0x2AA1, 0, 0x0805F604 }, { 0x2AA2, 0, 0x0805F63C }, { 0x2AA3, 0, 0x0805F68C }, - { 0x2AA4, 0, 0x0805F6BC }, { 0x2AA5, 0, 0x0805F71C }, { 0x2AA6, 0, 0x0805F760 }, { 0x2AA7, 0, 0x0805F7E4 }, - { 0x2AA8, 0, 0x0805F81C }, { 0x2AA9, 0, 0x0805F834 }, { 0x2AAA, 0, 0x0805F870 }, { 0x2AAB, 0, 0x0805F888 }, - { 0x2AAC, 0, 0x0805F8B0 }, { 0x2AAD, 0, 0x0805F8D4 }, { 0x2AAE, 0, 0x0805F944 }, { 0x2AAF, 0, 0x0805F988 }, - { 0x2AB0, 0, 0x0805F9B0 }, { 0x2AB1, 0, 0x0805FA58 }, { 0x2AB2, 0, 0x0805FA6C }, { 0x2AB3, 0, 0x0805FA80 }, - { 0x2AB4, 0, 0x0805FB0C }, { 0x2AB5, 0, 0x0805FB20 }, { 0x2AB6, 0, 0x0805FB64 }, { 0x2AB7, 0, 0x0805FB80 }, - { 0x2AB8, 0, 0x0805FB9C }, { 0x2AB9, 0, 0x0805FBF4 }, { 0x2ABA, 0, 0x0805FC24 }, { 0x2ABB, 0, 0x0805FC88 }, - { 0x2ABC, 0, 0x0805FCB0 }, { 0x2ABD, 0, 0x0805FCD8 }, { 0x2ABE, 0, 0x0805FDD8 }, { 0x2ABF, 0, 0x0805FDFC }, - { 0x2AC0, 0, 0x0805FF50 }, { 0x2AC1, 0, 0x0805FF7C }, { 0x2AC2, 0, 0x080600D0 }, { 0x2AC3, 0, 0x080600EC }, - { 0x2AC4, 0, 0x080601F8 }, { 0x2AC5, 0, 0x0806022C }, { 0x2AC6, 0, 0x08060250 }, { 0x2AC7, 0, 0x08060260 }, - { 0x2AC8, 0, 0x08060270 }, { 0x2AC9, 0, 0x08060280 }, { 0x2ACA, 0, 0x080602E0 }, { 0x2ACB, 0, 0x0806030C }, - { 0x2ACC, 0, 0x08060340 }, { 0x2ACD, 0, 0x080603A4 }, { 0x2ACE, 0, 0x080603C0 }, { 0x2ACF, 0, 0x0806047C }, - { 0x2AD0, 0, 0x08060494 }, { 0x2AD1, 0, 0x0806053C }, { 0x2AD2, 0, 0x080605B0 }, { 0x2AD3, 0, 0x080605FC }, - { 0x2AD4, 0, 0x0806067C }, { 0x2AD5, 0, 0x080606A0 }, { 0x2AD6, 0, 0x080606BC }, { 0x2AD7, 0, 0x080606EC }, - { 0x2AD8, 0, 0x08060724 }, { 0x2AD9, 0, 0x08060748 }, { 0x2ADA, 0, 0x08060794 }, { 0x2ADB, 0, 0x08060814 }, - { 0x2ADC, 0, 0x08060874 }, { 0x2ADD, 0, 0x080608B4 }, { 0x2ADE, 0, 0x080608D0 }, { 0x2ADF, 0, 0x08060960 }, - { 0x2AE0, 0, 0x08060A00 }, { 0x2AE1, 0, 0x08060AA8 }, { 0x2AE2, 0, 0x08060AD4 }, { 0x2AE3, 0, 0x08060B10 }, - { 0x2AE4, 0, 0x08060B74 }, { 0x2AE5, 0, 0x08060BD0 }, { 0x2AE6, 0, 0x08060C6C }, { 0x2AEA, 0, 0x08060CDC }, - { 0x2AEB, 0, 0x08060D1C }, { 0x2AEC, 0, 0x08060D70 }, { 0x2AED, 0, 0x08060D98 }, { 0x2AEE, 0, 0x08060DB8 }, - { 0x2AF8, 0, 0x08060DC8 }, { 0x2AF9, 0, 0x08060DE4 }, { 0x2AFA, 0, 0x08060EC8 }, { 0x2AFB, 0, 0x08060FC0 }, - { 0x2AFC, 0, 0x080610CC }, { 0x2AFD, 0, 0x080611BC }, { 0x2AFE, 0, 0x080611F4 }, { 0x2AFF, 0, 0x080612EC }, - { 0x2B00, 0, 0x080613FC }, { 0x2B01, 0, 0x08061448 }, { 0x2B02, 0, 0x08061470 }, { 0x2B03, 0, 0x080614D0 }, - { 0x2B04, 0, 0x08061504 }, { 0x2B05, 0, 0x08061578 }, { 0x2B06, 0, 0x080615DC }, { 0x2B07, 0, 0x08061658 }, - { 0x2B08, 0, 0x0806167C }, { 0x2B09, 0, 0x080616C0 }, { 0x2B0A, 0, 0x08061714 }, { 0x2B0B, 0, 0x08061750 }, - { 0x2B0C, 0, 0x080617A8 }, { 0x2B0D, 0, 0x080617D8 }, { 0x2B0E, 0, 0x08061810 }, { 0x2B0F, 0, 0x08061890 }, - { 0x2B10, 0, 0x080619A0 }, { 0x2B11, 0, 0x08061AD8 }, { 0x2B12, 0, 0x08061B44 }, { 0x2B13, 0, 0x08061BA0 }, - { 0x2B14, 0, 0x08061C0C }, { 0x2B15, 0, 0x08061C44 }, { 0x2B16, 0, 0x08061CE0 }, { 0x2B17, 0, 0x08061D4C }, - { 0x2B18, 0, 0x08061D70 }, { 0x2B19, 0, 0x08061DD4 }, { 0x2B1A, 0, 0x08061EB4 }, { 0x2B1B, 0, 0x08061F10 }, - { 0x2B1C, 0, 0x08061F88 }, { 0x2B1D, 0, 0x08061FC4 }, { 0x2B1E, 0, 0x08061FEC }, { 0x2B1F, 0, 0x08062024 }, - { 0x2B20, 0, 0x0806209C }, { 0x2B21, 0, 0x0806212C }, { 0x2B22, 0, 0x08062164 }, { 0x2B23, 0, 0x080621A8 }, - { 0x2B24, 0, 0x0806229C }, { 0x2B25, 0, 0x080622D8 }, { 0x2B26, 0, 0x080622F8 }, { 0x2B27, 0, 0x08062350 }, - { 0x2B28, 0, 0x080623A0 }, { 0x2B29, 0, 0x080623D0 }, { 0x2B2A, 0, 0x08062428 }, { 0x2B2B, 0, 0x08062478 }, - { 0x2B2C, 0, 0x080624AC }, { 0x2B2D, 0, 0x08062500 }, { 0x2B2E, 0, 0x08062550 }, { 0x2B2F, 0, 0x08062580 }, - { 0x2B30, 0, 0x080625D4 }, { 0x2B31, 0, 0x08062624 }, { 0x2B32, 0, 0x08062650 }, { 0x2B33, 0, 0x08062670 }, - { 0x2B34, 0, 0x080626B0 }, { 0x2B35, 0, 0x080626DC }, { 0x2B36, 0, 0x080626FC }, { 0x2B37, 0, 0x0806273C }, - { 0x2B38, 0, 0x080627D8 }, { 0x2B39, 0, 0x08062890 }, { 0x2B3A, 0, 0x08062910 }, { 0x2B3B, 0, 0x08062968 }, - { 0x2B3C, 0, 0x080629A4 }, { 0x2B3D, 0, 0x080629E0 }, { 0x2B3E, 0, 0x08062A90 }, { 0x2B3F, 0, 0x08062AD8 }, - { 0x2B40, 0, 0x08062B34 }, { 0x2B5C, 0, 0x08062B84 }, { 0x2B5D, 0, 0x08062C3C }, { 0x2B5E, 0, 0x08062C68 }, - { 0x2B5F, 0, 0x08062C94 }, { 0x2B60, 0, 0x08062CE8 }, { 0x2B61, 0, 0x08062D8C }, { 0x2B62, 0, 0x08062E34 }, - { 0x2B63, 0, 0x08062E84 }, { 0x2B64, 0, 0x08062F18 }, { 0x2B65, 0, 0x08062F50 }, { 0x2B66, 0, 0x08062F98 }, - { 0x2B67, 0, 0x08062FE0 }, { 0x32C8, 0, 0x08063054 }, { 0x32C9, 0, 0x080630D8 }, { 0x32CA, 0, 0x08063120 }, - { 0x32CB, 0, 0x08063184 }, { 0x32CC, 0, 0x080631E0 }, { 0x32CD, 0, 0x08063210 }, { 0x32CE, 0, 0x0806326C }, - { 0x32CF, 0, 0x08063294 }, { 0x32D0, 0, 0x080632B4 }, { 0x32D1, 0, 0x08063300 }, { 0x32D2, 0, 0x08063338 }, - { 0x32D3, 0, 0x08063384 }, { 0x32D4, 0, 0x080633B4 }, { 0x332C, 0, 0x080633E8 }, { 0x332D, 0, 0x08063408 }, - { 0x332E, 0, 0x080634FC }, { 0x332F, 0, 0x0806356C }, { 0x3330, 0, 0x08063594 }, { 0x3331, 0, 0x080635AC }, - { 0x3332, 0, 0x080635D0 }, { 0x3333, 0, 0x08063618 }, { 0x3334, 0, 0x0806369C }, { 0x3335, 0, 0x08063714 }, - { 0x3336, 0, 0x08063734 }, { 0x3337, 0, 0x08063788 }, { 0x3338, 0, 0x080637AC }, { 0x3339, 0, 0x080637CC }, - { 0x333A, 0, 0x08063838 }, { 0x333B, 0, 0x08063868 }, { 0x333C, 0, 0x08063898 }, { 0x333D, 0, 0x08063948 }, - { 0x333E, 0, 0x08063988 }, { 0x333F, 0, 0x080639AC }, { 0x3340, 0, 0x08063A58 }, { 0x3341, 0, 0x08063AB0 }, - { 0x3342, 0, 0x08063B24 }, { 0x3343, 0, 0x08063BBC }, { 0x3344, 0, 0x08063C28 }, { 0x3345, 0, 0x08063CF0 }, - { 0x3346, 0, 0x08063D24 }, { 0x3347, 0, 0x08063D5C }, { 0x3348, 0, 0x08063D8C }, { 0x3349, 0, 0x08063DEC }, - { 0x334A, 0, 0x08063E70 }, { 0x334B, 0, 0x08063EA8 }, { 0x334C, 0, 0x08063EC4 }, { 0x334D, 0, 0x08063FB4 }, - { 0x334E, 0, 0x08063FDC }, { 0x334F, 0, 0x08064038 }, { 0x3350, 0, 0x08064058 }, { 0x3351, 0, 0x0806408C }, - { 0x3352, 0, 0x080640B0 }, { 0x3353, 0, 0x080640E0 }, { 0x3354, 0, 0x08064168 }, { 0x3355, 0, 0x080641B4 }, - { 0x3356, 0, 0x080641EC }, { 0x3357, 0, 0x08064218 }, { 0x3358, 0, 0x08064230 }, { 0x3359, 0, 0x08064264 }, - { 0x335A, 0, 0x08064298 }, { 0x335B, 0, 0x080642F0 }, { 0x335C, 0, 0x08064354 }, { 0x335D, 0, 0x0806437C }, - { 0x335E, 0, 0x080643B4 }, { 0x335F, 0, 0x080643E4 }, { 0x3360, 0, 0x0806444C }, { 0x3361, 0, 0x08064498 }, - { 0x3362, 0, 0x080644EC }, { 0x3363, 0, 0x0806453C }, { 0x3364, 0, 0x08064564 }, { 0x3365, 0, 0x08064654 }, - { 0x3366, 0, 0x08064718 }, { 0x3367, 0, 0x080647E4 }, { 0x3368, 0, 0x08064860 }, { 0x3369, 0, 0x080648B8 }, - { 0x336A, 0, 0x08064988 }, { 0x336B, 0, 0x080649F4 }, { 0x336C, 0, 0x08064A44 }, { 0x336D, 0, 0x08064AA0 }, - { 0x336E, 0, 0x08064AE8 }, { 0x336F, 0, 0x08064B10 }, { 0x3370, 0, 0x08064B64 }, { 0x3371, 0, 0x08064BBC }, - { 0x3390, 0, 0x08064BEC }, { 0x3391, 0, 0x08064C24 }, { 0x3392, 0, 0x08064CE0 }, { 0x3393, 0, 0x08064D4C }, - { 0x3394, 0, 0x08064DA0 }, { 0x3395, 0, 0x08064E04 }, { 0x3396, 0, 0x08064F10 }, { 0x3397, 0, 0x08064F84 }, - { 0x3398, 0, 0x08064FBC }, { 0x3399, 0, 0x08065070 }, { 0x339A, 0, 0x080650DC }, { 0x339B, 0, 0x08065144 }, - { 0x339C, 0, 0x0806516C }, { 0x339D, 0, 0x0806519C }, { 0x339E, 0, 0x080651D4 }, { 0x339F, 0, 0x080651F0 }, - { 0x33A0, 0, 0x0806524C }, { 0x33A1, 0, 0x08065358 }, { 0x33A2, 0, 0x080653CC }, { 0x33A3, 0, 0x08065408 }, - { 0x33A4, 0, 0x08065438 }, { 0x33A5, 0, 0x08065470 }, { 0x33A6, 0, 0x080654CC }, { 0x33A7, 0, 0x08065510 }, - { 0x33A8, 0, 0x0806555C }, { 0x33A9, 0, 0x080655A0 }, { 0x33AA, 0, 0x080655C0 }, { 0x33AB, 0, 0x08065600 }, - { 0x33AC, 0, 0x08065658 }, { 0x33AD, 0, 0x08065678 }, { 0x33AE, 0, 0x08065710 }, { 0x33AF, 0, 0x080657A8 }, - { 0x33B0, 0, 0x080657D0 }, { 0x33B1, 0, 0x080657E8 }, { 0x33B2, 0, 0x08065860 }, { 0x33B3, 0, 0x080658E4 }, - { 0x33B4, 0, 0x08065930 }, { 0x33B5, 0, 0x0806597C }, { 0x33B6, 0, 0x080659DC }, { 0x33B7, 0, 0x08065A28 }, - { 0x33B8, 0, 0x08065ABC }, { 0x33B9, 0, 0x08065AE0 }, { 0x33BA, 0, 0x08065B08 }, { 0x33BB, 0, 0x08065B7C }, - { 0x33BC, 0, 0x08065BD8 }, { 0x33BD, 0, 0x08065C5C }, { 0x33BE, 0, 0x08065C88 }, { 0x33BF, 0, 0x08065CCC }, - { 0x33C0, 0, 0x08065D30 }, { 0x33C1, 0, 0x08065DD4 }, { 0x33C2, 0, 0x08065E24 }, { 0x33C3, 0, 0x08065E84 }, - { 0x33C4, 0, 0x08065F4C }, { 0x33C5, 0, 0x08066024 }, { 0x33C6, 0, 0x08066120 }, { 0x33C7, 0, 0x08066144 }, - { 0x33C8, 0, 0x08066200 }, { 0x33C9, 0, 0x08066268 }, { 0x33CA, 0, 0x0806629C }, { 0x33CB, 0, 0x080662D0 }, - { 0x33CC, 0, 0x0806630C }, { 0x33CD, 0, 0x08066324 }, { 0x33CE, 0, 0x0806635C }, { 0x33CF, 0, 0x0806637C }, - { 0x33D0, 0, 0x080663AC }, { 0x33D1, 0, 0x08066464 }, { 0x33D2, 0, 0x08066578 }, { 0x33D3, 0, 0x080665F4 }, - { 0x33D4, 0, 0x0806665C }, { 0x33D5, 0, 0x080666D0 }, { 0x33D6, 0, 0x08066708 }, { 0x33D7, 0, 0x08066788 }, - { 0x33D8, 0, 0x080667D4 }, { 0x33D9, 0, 0x08066834 }, { 0x33F4, 0, 0x080668FC }, { 0x33F5, 0, 0x08066934 }, - { 0x33F6, 0, 0x080669DC }, { 0x33F7, 0, 0x08066A3C }, { 0x33F9, 0, 0x08066B00 }, { 0x3458, 0, 0x08066B40 }, - { 0x3459, 0, 0x08066B60 }, { 0x345A, 0, 0x08066BC0 }, { 0x345B, 0, 0x08066C10 }, { 0x345C, 0, 0x08066C7C }, - { 0x345D, 0, 0x08066CB8 }, { 0x345E, 0, 0x08066D20 }, { 0x345F, 0, 0x08066D90 }, { 0x3460, 0, 0x08066E58 }, - { 0x3461, 0, 0x08066E9C }, { 0x3462, 0, 0x08066EE8 }, { 0x3463, 0, 0x08066F38 }, { 0x3464, 0, 0x08066F64 }, - { 0x3465, 0, 0x08066FF8 }, { 0x3466, 0, 0x080670A4 }, { 0x3467, 0, 0x080670F0 }, { 0x3468, 0, 0x08067144 }, - { 0x3469, 0, 0x08067174 }, { 0x346A, 0, 0x080671E8 }, { 0x346B, 0, 0x08067208 }, { 0x346C, 0, 0x08067224 }, - { 0x346D, 0, 0x0806728C }, { 0x346E, 0, 0x0806731C }, { 0x346F, 0, 0x0806739C }, { 0x3470, 0, 0x08067400 }, - { 0x3471, 0, 0x0806743C }, { 0x3472, 0, 0x0806746C }, { 0x3473, 0, 0x080674B0 }, { 0x3474, 0, 0x08067520 }, - { 0x3475, 0, 0x08067594 }, { 0x3476, 0, 0x080675B8 }, { 0x3477, 0, 0x080675E0 }, { 0x3478, 0, 0x08067618 }, - { 0x3479, 0, 0x08067648 }, { 0x347A, 0, 0x08067688 }, { 0x347B, 0, 0x080676B0 }, { 0x347C, 0, 0x080676F0 }, - { 0x347D, 0, 0x08067760 }, { 0x347E, 0, 0x080677A4 }, { 0x347F, 0, 0x080677F4 }, { 0x3480, 0, 0x0806782C }, - { 0x3481, 0, 0x080678A0 }, { 0x3482, 0, 0x080678C8 }, { 0x3483, 0, 0x080678F8 }, { 0x3484, 0, 0x08067934 }, - { 0x3485, 0, 0x08067990 }, { 0x3486, 0, 0x080679E0 }, { 0x3487, 0, 0x08067A18 }, { 0x3488, 0, 0x08067A68 }, - { 0x3489, 0, 0x08067AE8 }, { 0x348A, 0, 0x08067B54 }, { 0x348B, 0, 0x08067BBC }, { 0x348C, 0, 0x08067C0C }, - { 0x348D, 0, 0x08067C5C }, { 0x348E, 0, 0x08067CB8 }, { 0x348F, 0, 0x08067D6C }, { 0x3490, 0, 0x08067DE0 }, - { 0x3491, 0, 0x08067E2C }, { 0x3492, 0, 0x08067E80 }, { 0x3493, 0, 0x08067EDC }, { 0x3494, 0, 0x08067F20 }, - { 0x3495, 0, 0x08067F44 }, { 0x3496, 0, 0x08067F64 }, { 0x3497, 0, 0x08067FEC }, { 0x3498, 0, 0x0806803C }, - { 0x3499, 0, 0x08068094 }, { 0x349A, 0, 0x080680C8 }, { 0x349B, 0, 0x080680FC }, { 0x349C, 0, 0x0806812C }, - { 0x349D, 0, 0x08068158 }, { 0x349E, 0, 0x08068180 }, { 0x349F, 0, 0x080681C0 }, { 0x34A0, 0, 0x08068224 }, - { 0x34A1, 0, 0x08068278 }, { 0x34A2, 0, 0x080682C0 }, { 0x34A3, 0, 0x0806830C }, { 0x34A4, 0, 0x08068394 }, - { 0x34A5, 0, 0x080683F4 }, { 0x34A6, 0, 0x08068430 }, { 0x34A7, 0, 0x08068498 }, { 0x34A8, 0, 0x080684FC }, - { 0x34A9, 0, 0x08068544 }, { 0x34AA, 0, 0x08068564 }, { 0x34AB, 0, 0x08068598 }, { 0x34AC, 0, 0x0806860C }, - { 0x34AD, 0, 0x08068640 }, { 0x34AE, 0, 0x080686F4 }, { 0x34AF, 0, 0x08068768 }, { 0x34B0, 0, 0x08068780 }, - { 0x34B1, 0, 0x080687E0 }, { 0x34B2, 0, 0x080687F8 }, { 0x34B3, 0, 0x08068860 }, { 0x3520, 0, 0x080688F4 }, - { 0x3521, 0, 0x08068958 }, { 0x3522, 0, 0x080689C8 }, { 0x3523, 0, 0x08068A38 }, { 0x3524, 0, 0x08068A88 }, - { 0x3525, 0, 0x08068B04 }, { 0x3526, 0, 0x08068B30 }, { 0x3527, 0, 0x08068B7C }, { 0x3528, 0, 0x08068CA0 }, - { 0x3529, 0, 0x08068CF4 }, { 0x352A, 0, 0x08068D1C }, { 0x352B, 0, 0x08068DB0 }, { 0x352C, 0, 0x08068E28 }, - { 0x352D, 0, 0x08068E78 }, { 0x352E, 0, 0x08068F14 }, { 0x352F, 0, 0x08068F78 }, { 0x3530, 0, 0x08068FA0 }, - { 0x3531, 0, 0x08069020 }, { 0x3532, 0, 0x080690CC }, { 0x3533, 0, 0x0806913C }, { 0x3534, 0, 0x080691B0 }, - { 0x3535, 0, 0x08069224 }, { 0x3536, 0, 0x0806923C }, { 0x3537, 0, 0x08069284 }, { 0x3538, 0, 0x080692D8 }, - { 0x3539, 0, 0x08069314 }, { 0x353A, 0, 0x08069358 }, { 0x353B, 0, 0x08069390 }, { 0x353C, 0, 0x080693E4 }, - { 0x353D, 0, 0x08069434 }, { 0x353E, 0, 0x08069490 }, { 0x353F, 0, 0x080694C4 }, { 0x3540, 0, 0x08069524 }, - { 0x3541, 0, 0x0806957C }, { 0x3542, 0, 0x080695C0 }, { 0x3543, 0, 0x08069608 }, { 0x3544, 0, 0x08069668 }, - { 0x3545, 0, 0x080696DC }, { 0x3546, 0, 0x08069734 }, { 0x3548, 0, 0x08069774 }, { 0x3549, 0, 0x08069814 }, - { 0x354A, 0, 0x080698A0 }, { 0x354B, 0, 0x08069930 }, { 0x354C, 0, 0x08069998 }, { 0xFFFC, 0, 0x080699C8 }, - { 0xFFFD, 0, 0x080699D4 }, { 0xFFFF, 0, NULL }, + { 0, 0, (void*)0x08000000 }, { 2, 0, (void*)0x0800000C }, { 4, 0, (void*)0x08000064 }, + { 5, 0, (void*)0x080000B8 }, { 6, 0, (void*)0x08000110 }, { 7, 0, (void*)0x08000168 }, + { 8, 0, (void*)0x080001C4 }, { 9, 0, (void*)0x08000248 }, { 0xA, 0, (void*)0x080002A8 }, + { 0xB, 0, (void*)0x08000310 }, { 0xC, 0, (void*)0x0800031C }, { 0xD, 0, (void*)0x080003E8 }, + { 0xE, 0, (void*)0x08000474 }, { 0xF, 0, (void*)0x080004BC }, { 0x10, 0, (void*)0x08000504 }, + { 0x11, 0, (void*)0x08000510 }, { 0x12, 0, (void*)0x08000554 }, { 0x13, 0, (void*)0x08000560 }, + { 0x14, 0, (void*)0x0800056C }, { 0x15, 0, (void*)0x08000604 }, { 0x16, 0, (void*)0x080006A0 }, + { 0x17, 0, (void*)0x0800073C }, { 0x18, 0, (void*)0x080007D8 }, { 0x19, 0, (void*)0x08000874 }, + { 0x1A, 0, (void*)0x08000940 }, { 0x1B, 0, (void*)0x080009E8 }, { 0x1C, 0, (void*)0x08000A84 }, + { 0x1D, 0, (void*)0x08000AD4 }, { 0x1E, 0, (void*)0x08000B28 }, { 0x1F, 0, (void*)0x08000B58 }, + { 0x20, 0, (void*)0x08000B88 }, { 0x21, 0, (void*)0x08000BB8 }, { 0x22, 0, (void*)0x08000BE8 }, + { 0x23, 0, (void*)0x08000C78 }, { 0x24, 0, (void*)0x08000CD0 }, { 0x25, 0, (void*)0x08000D30 }, + { 0x26, 0, (void*)0x08000DA4 }, { 0x27, 0, (void*)0x08000E38 }, { 0x28, 0, (void*)0x08000EB4 }, + { 0x29, 0, (void*)0x08000F88 }, { 0x2A, 0, (void*)0x08001060 }, { 0x2B, 0, (void*)0x0800113C }, + { 0x2C, 0, (void*)0x08001148 }, { 0x2D, 0, (void*)0x08001154 }, { 0x2E, 0, (void*)0x08001160 }, + { 0x2F, 0, (void*)0x08001210 }, { 0x30, 0, (void*)0x0800121C }, { 0x31, 0, (void*)0x08001228 }, + { 0x32, 0, (void*)0x08001234 }, { 0x33, 0, (void*)0x080012D4 }, { 0x34, 0, (void*)0x0800139C }, + { 0x35, 0, (void*)0x08001428 }, { 0x36, 0, (void*)0x080014B0 }, { 0x37, 0, (void*)0x08001554 }, + { 0x38, 0, (void*)0x08001560 }, { 0x39, 0, (void*)0x08001624 }, { 0x3A, 0, (void*)0x080016B8 }, + { 0x3B, 0, (void*)0x08001768 }, { 0x3C, 0, (void*)0x08001814 }, { 0x3D, 0, (void*)0x08001884 }, + { 0x3E, 0, (void*)0x080018E0 }, { 0x3F, 0, (void*)0x080019DC }, { 0x40, 0, (void*)0x08001A48 }, + { 0x41, 0, (void*)0x08001A54 }, { 0x42, 0, (void*)0x08001B0C }, { 0x43, 0, (void*)0x08001BF4 }, + { 0x4C, 0, (void*)0x08001CBC }, { 0x4D, 0, (void*)0x08001DBC }, { 0x4E, 0, (void*)0x08001DC8 }, + { 0x50, 0, (void*)0x08001DD4 }, { 0x51, 0, (void*)0x08001EA4 }, { 0x52, 0, (void*)0x08001EB0 }, + { 0x53, 0, (void*)0x08001EFC }, { 0x54, 0, (void*)0x08001F08 }, { 0x55, 0, (void*)0x08001F14 }, + { 0x56, 0, (void*)0x08001FB8 }, { 0x57, 0, (void*)0x08002058 }, { 0x58, 0, (void*)0x080020F8 }, + { 0x59, 0, (void*)0x080021A0 }, { 0x5A, 0, (void*)0x08002290 }, { 0x5B, 0, (void*)0x080022E4 }, + { 0x5C, 0, (void*)0x08002388 }, { 0x5D, 0, (void*)0x08002434 }, { 0x5E, 0, (void*)0x080024E8 }, + { 0x5F, 0, (void*)0x08002590 }, { 0x60, 0, (void*)0x0800261C }, { 0x61, 0, (void*)0x080026F0 }, + { 0x62, 0, (void*)0x080026FC }, { 0x63, 0, (void*)0x08002760 }, { 0x64, 0, (void*)0x080027CC }, + { 0x65, 0, (void*)0x080027D8 }, { 0x66, 0, (void*)0x0800282C }, { 0x67, 0, (void*)0x08002884 }, + { 0x68, 0, (void*)0x080028EC }, { 0x69, 0, (void*)0x08002950 }, { 0x6A, 0, (void*)0x080029CC }, + { 0x6B, 0, (void*)0x08002A24 }, { 0x6E, 0, (void*)0x08002A7C }, { 0x6F, 0, (void*)0x08002A88 }, + { 0x70, 0, (void*)0x08002B54 }, { 0x71, 0, (void*)0x08002B60 }, { 0x72, 0, (void*)0x08002B6C }, + { 0x73, 0, (void*)0x08002B78 }, { 0x74, 0, (void*)0x08002B84 }, { 0x75, 0, (void*)0x08002B90 }, + { 0x76, 0, (void*)0x08002B9C }, { 0x77, 0, (void*)0x08002BA8 }, { 0x78, 0, (void*)0x08002BB4 }, + { 0x79, 0, (void*)0x08002C98 }, { 0x7A, 0, (void*)0x08002D54 }, { 0x7B, 0, (void*)0x08002E14 }, + { 0x7C, 0, (void*)0x08002E90 }, { 0x7D, 0, (void*)0x08002F20 }, { 0x7E, 0, (void*)0x08002F9C }, + { 0x7F, 0, (void*)0x0800302C }, { 0x80, 0, (void*)0x0800309C }, { 0x81, 0, (void*)0x08003144 }, + { 0x82, 0, (void*)0x080031B0 }, { 0x83, 0, (void*)0x08003224 }, { 0x84, 0, (void*)0x08003298 }, + { 0x85, 0, (void*)0x08003324 }, { 0x86, 0, (void*)0x08003370 }, { 0x87, 0, (void*)0x08003444 }, + { 0x88, 0, (void*)0x080034F8 }, { 0x89, 0, (void*)0x08003560 }, { 0x8A, 0, (void*)0x080035F4 }, + { 0x8B, 0, (void*)0x080036B8 }, { 0x8C, 0, (void*)0x08003710 }, { 0x8D, 0, (void*)0x080037A0 }, + { 0x8E, 0, (void*)0x08003828 }, { 0x8F, 0, (void*)0x080038E0 }, { 0x91, 0, (void*)0x0800396C }, + { 0x92, 0, (void*)0x08003A44 }, { 0x93, 0, (void*)0x08003B08 }, { 0x94, 0, (void*)0x08003B60 }, + { 0x95, 0, (void*)0x08003B6C }, { 0x96, 0, (void*)0x08003BC0 }, { 0x97, 0, (void*)0x08003C1C }, + { 0x98, 0, (void*)0x08003C60 }, { 0x99, 0, (void*)0x08003CA8 }, { 0x9A, 0, (void*)0x08003CF4 }, + { 0x9B, 0, (void*)0x08003D40 }, { 0x9C, 0, (void*)0x08003DE0 }, { 0x9D, 0, (void*)0x08003E78 }, + { 0x9E, 0, (void*)0x08003F10 }, { 0x9F, 0, (void*)0x08003FA8 }, { 0xA0, 0, (void*)0x08003FB4 }, + { 0xA1, 0, (void*)0x0800401C }, { 0xA2, 0, (void*)0x08004088 }, { 0xA3, 0, (void*)0x08004094 }, + { 0xA4, 0, (void*)0x080040A0 }, { 0xA9, 0, (void*)0x080040AC }, { 0xAA, 0, (void*)0x08004130 }, + { 0xAB, 0, (void*)0x08004198 }, { 0xAC, 0, (void*)0x08004240 }, { 0xAD, 0, (void*)0x0800424C }, + { 0xAE, 0, (void*)0x08004258 }, { 0xAF, 0, (void*)0x08004264 }, { 0xB0, 0, (void*)0x08004270 }, + { 0xB1, 0, (void*)0x0800427C }, { 0xB2, 0, (void*)0x08004288 }, { 0xB4, 0, (void*)0x08004294 }, + { 0xB5, 0, (void*)0x08004354 }, { 0xB6, 0, (void*)0x08004418 }, { 0xB7, 0, (void*)0x080044E0 }, + { 0xB8, 0, (void*)0x080045A8 }, { 0xB9, 0, (void*)0x08004670 }, { 0xBA, 0, (void*)0x08004738 }, + { 0xBB, 0, (void*)0x08004744 }, { 0xBC, 0, (void*)0x08004750 }, { 0xBD, 0, (void*)0x0800475C }, + { 0xBE, 0, (void*)0x08004768 }, { 0xBF, 0, (void*)0x08004774 }, { 0xC0, 0, (void*)0x08004780 }, + { 0xC4, 0, (void*)0x0800478C }, { 0xC5, 0, (void*)0x080047D0 }, { 0xC6, 0, (void*)0x08004850 }, + { 0xC7, 0, (void*)0x080048D0 }, { 0xC8, 0, (void*)0x08004954 }, { 0xC9, 0, (void*)0x08004A5C }, + { 0xCA, 0, (void*)0x08004AFC }, { 0xCB, 0, (void*)0x08004C14 }, { 0xCC, 0, (void*)0x08004C78 }, + { 0xCD, 0, (void*)0x08004CDC }, { 0xF2, 0, (void*)0x08004D8C }, { 0xF3, 0, (void*)0x08004DC8 }, + { 0xF4, 0, (void*)0x08004E3C }, { 0xF5, 0, (void*)0x08004E8C }, { 0xF6, 0, (void*)0x08004EDC }, + { 0xF7, 0, (void*)0x08004F30 }, { 0xF8, 0, (void*)0x08004F70 }, { 0xF9, 0, (void*)0x08004F9C }, + { 0xFA, 0, (void*)0x08005034 }, { 0xFB, 0, (void*)0x08005088 }, { 0xFC, 0, (void*)0x080050FC }, + { 0xFD, 0, (void*)0x0800515C }, { 0xFE, 0, (void*)0x08005184 }, { 0xFF, 0, (void*)0x080051B8 }, + { 0x100, 0, (void*)0x08005214 }, { 0x101, 0, (void*)0x08005230 }, { 0x102, 0, (void*)0x0800524C }, + { 0x103, 0, (void*)0x08005268 }, { 0x104, 0, (void*)0x08005284 }, { 0x105, 0, (void*)0x080052A0 }, + { 0x106, 0, (void*)0x080052B8 }, { 0x107, 0, (void*)0x080052D4 }, { 0x108, 0, (void*)0x080052F8 }, + { 0x109, 0, (void*)0x0800531C }, { 0x10A, 0, (void*)0x0800533C }, { 0x10B, 0, (void*)0x08005358 }, + { 0x10C, 0, (void*)0x0800537C }, { 0x10D, 0, (void*)0x08005390 }, { 0x10E, 0, (void*)0x080053A8 }, + { 0x10F, 0, (void*)0x080053C4 }, { 0x110, 0, (void*)0x080053DC }, { 0x111, 0, (void*)0x080053FC }, + { 0x112, 0, (void*)0x08005414 }, { 0x113, 0, (void*)0x0800542C }, { 0x114, 0, (void*)0x08005450 }, + { 0x115, 0, (void*)0x08005470 }, { 0x116, 0, (void*)0x0800548C }, { 0x117, 0, (void*)0x080054A8 }, + { 0x118, 0, (void*)0x080054BC }, { 0x119, 0, (void*)0x080054D4 }, { 0x11A, 0, (void*)0x080054F4 }, + { 0x11B, 0, (void*)0x08005518 }, { 0x11C, 0, (void*)0x0800553C }, { 0x11D, 0, (void*)0x0800555C }, + { 0x11E, 0, (void*)0x08005578 }, { 0x11F, 0, (void*)0x08005598 }, { 0x120, 0, (void*)0x080055B4 }, + { 0x121, 0, (void*)0x080055CC }, { 0x122, 0, (void*)0x080055E8 }, { 0x123, 0, (void*)0x08005604 }, + { 0x124, 0, (void*)0x08005620 }, { 0x125, 0, (void*)0x08005638 }, { 0x126, 0, (void*)0x0800564C }, + { 0x127, 0, (void*)0x08005668 }, { 0x129, 0, (void*)0x08005684 }, { 0x12A, 0, (void*)0x0800569C }, + { 0x12B, 0, (void*)0x080056B8 }, { 0x12C, 0, (void*)0x080056D4 }, { 0x12D, 0, (void*)0x080056F0 }, + { 0x12E, 0, (void*)0x0800570C }, { 0x12F, 0, (void*)0x08005724 }, { 0x130, 0, (void*)0x0800573C }, + { 0x131, 0, (void*)0x08005758 }, { 0x132, 0, (void*)0x08005770 }, { 0x134, 0, (void*)0x08005788 }, + { 0x135, 0, (void*)0x080057A4 }, { 0x136, 0, (void*)0x080057C0 }, { 0x137, 0, (void*)0x080057D8 }, + { 0x138, 0, (void*)0x080057F4 }, { 0x139, 0, (void*)0x08005814 }, { 0x13A, 0, (void*)0x0800582C }, + { 0x13B, 0, (void*)0x0800584C }, { 0x13D, 0, (void*)0x08005868 }, { 0x13E, 0, (void*)0x08005884 }, + { 0x13F, 0, (void*)0x080058A0 }, { 0x140, 0, (void*)0x080058C4 }, { 0x141, 0, (void*)0x080058DC }, + { 0x142, 0, (void*)0x080058F4 }, { 0x143, 0, (void*)0x08005918 }, { 0x144, 0, (void*)0x08005934 }, + { 0x145, 0, (void*)0x08005954 }, { 0x146, 0, (void*)0x08005970 }, { 0x147, 0, (void*)0x08005988 }, + { 0x148, 0, (void*)0x080059A4 }, { 0x149, 0, (void*)0x080059C0 }, { 0x200, 0, (void*)0x080059D8 }, + { 0x201, 0, (void*)0x08005A54 }, { 0x202, 0, (void*)0x08005B48 }, { 0x203, 0, (void*)0x08005B74 }, + { 0x204, 0, (void*)0x08005BE4 }, { 0x205, 0, (void*)0x08005C38 }, { 0x206, 0, (void*)0x08005C94 }, + { 0x207, 0, (void*)0x08005D04 }, { 0x208, 0, (void*)0x08005D2C }, { 0x209, 0, (void*)0x08005D64 }, + { 0x20A, 0, (void*)0x08005DB4 }, { 0x20B, 0, (void*)0x08005E08 }, { 0x20C, 0, (void*)0x08005E14 }, + { 0x20D, 0, (void*)0x08005E60 }, { 0x20E, 0, (void*)0x08005ECC }, { 0x20F, 0, (void*)0x08005ED8 }, + { 0x210, 0, (void*)0x08005F74 }, { 0x211, 0, (void*)0x08005FAC }, { 0x212, 0, (void*)0x08005FD4 }, + { 0x213, 0, (void*)0x0800602C }, { 0x214, 0, (void*)0x08006050 }, { 0x215, 0, (void*)0x08006124 }, + { 0x216, 0, (void*)0x08006358 }, { 0x217, 0, (void*)0x080065B8 }, { 0x218, 0, (void*)0x08006620 }, + { 0x219, 0, (void*)0x0800668C }, { 0x21A, 0, (void*)0x08006720 }, { 0x21B, 0, (void*)0x0800674C }, + { 0x21D, 0, (void*)0x08006774 }, { 0x21E, 0, (void*)0x080067CC }, { 0x21F, 0, (void*)0x08006874 }, + { 0x220, 0, (void*)0x080068E0 }, { 0x221, 0, (void*)0x08006978 }, { 0x222, 0, (void*)0x08006A04 }, + { 0x223, 0, (void*)0x08006A48 }, { 0x224, 0, (void*)0x08006AE8 }, { 0x225, 0, (void*)0x08006B54 }, + { 0x226, 0, (void*)0x08006BB0 }, { 0x227, 0, (void*)0x08006BE8 }, { 0x228, 0, (void*)0x08006D58 }, + { 0x229, 0, (void*)0x08006E18 }, { 0x22A, 0, (void*)0x08006EA0 }, { 0x22B, 0, (void*)0x08006F00 }, + { 0x22C, 0, (void*)0x08006F44 }, { 0x22D, 0, (void*)0x08006F60 }, { 0x22E, 0, (void*)0x08006FB0 }, + { 0x22F, 0, (void*)0x08006FC8 }, { 0x230, 0, (void*)0x08007010 }, { 0x231, 0, (void*)0x080070C0 }, + { 0x232, 0, (void*)0x08007110 }, { 0x233, 0, (void*)0x08007158 }, { 0x234, 0, (void*)0x080071A4 }, + { 0x235, 0, (void*)0x08007208 }, { 0x236, 0, (void*)0x0800725C }, { 0x237, 0, (void*)0x080072AC }, + { 0x238, 0, (void*)0x0800730C }, { 0x239, 0, (void*)0x0800734C }, { 0x23A, 0, (void*)0x08007400 }, + { 0x23B, 0, (void*)0x08007468 }, { 0x23C, 0, (void*)0x08007500 }, { 0x23D, 0, (void*)0x08007538 }, + { 0x23E, 0, (void*)0x080075E4 }, { 0x23F, 0, (void*)0x080075F0 }, { 0x240, 0, (void*)0x0800765C }, + { 0x241, 0, (void*)0x080076D0 }, { 0x242, 0, (void*)0x08007744 }, { 0x243, 0, (void*)0x080077B0 }, + { 0x244, 0, (void*)0x08007830 }, { 0x245, 0, (void*)0x08007888 }, { 0x246, 0, (void*)0x080078B4 }, + { 0x247, 0, (void*)0x08007904 }, { 0x248, 0, (void*)0x08007950 }, { 0x249, 0, (void*)0x080079A0 }, + { 0x24A, 0, (void*)0x080079F0 }, { 0x24B, 0, (void*)0x08007A30 }, { 0x24C, 0, (void*)0x08007A78 }, + { 0x24D, 0, (void*)0x08007AD8 }, { 0x24E, 0, (void*)0x08007B54 }, { 0x24F, 0, (void*)0x08007BE8 }, + { 0x250, 0, (void*)0x08007C88 }, { 0x251, 0, (void*)0x08007CEC }, { 0x252, 0, (void*)0x08007D18 }, + { 0x253, 0, (void*)0x08007D68 }, { 0x254, 0, (void*)0x08007DAC }, { 0x255, 0, (void*)0x08007E04 }, + { 0x256, 0, (void*)0x08007E4C }, { 0x257, 0, (void*)0x08007EA4 }, { 0x258, 0, (void*)0x08007F00 }, + { 0x25A, 0, (void*)0x08007F58 }, { 0x25B, 0, (void*)0x08007FA0 }, { 0x25C, 0, (void*)0x08007FDC }, + { 0x25D, 0, (void*)0x08007FF8 }, { 0x25E, 0, (void*)0x08008024 }, { 0x25F, 0, (void*)0x080080E4 }, + { 0x260, 0, (void*)0x0800818C }, { 0x261, 0, (void*)0x080081F8 }, { 0x262, 0, (void*)0x08008288 }, + { 0x263, 0, (void*)0x08008304 }, { 0x264, 0, (void*)0x08008344 }, { 0x265, 0, (void*)0x08008420 }, + { 0x302, 0, (void*)0x08008498 }, { 0x303, 0, (void*)0x080085DC }, { 0x304, 0, (void*)0x08008660 }, + { 0x305, 0, (void*)0x080086B4 }, { 0x306, 0, (void*)0x08008720 }, { 0x307, 0, (void*)0x0800872C }, + { 0x308, 0, (void*)0x0800875C }, { 0x309, 0, (void*)0x08008788 }, { 0x30A, 0, (void*)0x080087BC }, + { 0x30B, 0, (void*)0x080087E8 }, { 0x30C, 0, (void*)0x08008824 }, { 0x30D, 0, (void*)0x08008894 }, + { 0x30E, 0, (void*)0x080088E4 }, { 0x30F, 0, (void*)0x08008914 }, { 0x310, 0, (void*)0x08008970 }, + { 0x311, 0, (void*)0x080089BC }, { 0x312, 0, (void*)0x080089F0 }, { 0x313, 0, (void*)0x08008A64 }, + { 0x314, 0, (void*)0x08008AA4 }, { 0x315, 0, (void*)0x08008B0C }, { 0x316, 0, (void*)0x08008B64 }, + { 0x317, 0, (void*)0x08008BA4 }, { 0x318, 0, (void*)0x08008BF0 }, { 0x319, 0, (void*)0x08008C48 }, + { 0x31A, 0, (void*)0x08008C84 }, { 0x31B, 0, (void*)0x08008CD0 }, { 0x31C, 0, (void*)0x08008D10 }, + { 0x31D, 0, (void*)0x08008D5C }, { 0x31E, 0, (void*)0x08008DCC }, { 0x31F, 0, (void*)0x08008E2C }, + { 0x320, 0, (void*)0x08008EBC }, { 0x321, 0, (void*)0x08008F30 }, { 0x322, 0, (void*)0x08008F60 }, + { 0x323, 0, (void*)0x08008F9C }, { 0x324, 0, (void*)0x08008FFC }, { 0x325, 0, (void*)0x08009044 }, + { 0x326, 0, (void*)0x080090A8 }, { 0x327, 0, (void*)0x080090F8 }, { 0x328, 0, (void*)0x08009140 }, + { 0x329, 0, (void*)0x08009188 }, { 0x32A, 0, (void*)0x080091F0 }, { 0x32B, 0, (void*)0x08009240 }, + { 0x32C, 0, (void*)0x0800928C }, { 0x32D, 0, (void*)0x080092F0 }, { 0x32E, 0, (void*)0x08009318 }, + { 0x32F, 0, (void*)0x08009358 }, { 0x330, 0, (void*)0x0800939C }, { 0x331, 0, (void*)0x080093E4 }, + { 0x332, 0, (void*)0x08009440 }, { 0x333, 0, (void*)0x0800949C }, { 0x334, 0, (void*)0x08009518 }, + { 0x335, 0, (void*)0x0800955C }, { 0x336, 0, (void*)0x08009598 }, { 0x337, 0, (void*)0x08009658 }, + { 0x338, 0, (void*)0x08009680 }, { 0x339, 0, (void*)0x080096A8 }, { 0x33A, 0, (void*)0x080096C8 }, + { 0x33B, 0, (void*)0x080096EC }, { 0x33C, 0, (void*)0x0800973C }, { 0x33D, 0, (void*)0x08009778 }, + { 0x33E, 0, (void*)0x080097BC }, { 0x33F, 0, (void*)0x08009930 }, { 0x340, 0, (void*)0x08009C50 }, + { 0x341, 0, (void*)0x08009CC4 }, { 0x342, 0, (void*)0x08009D30 }, { 0x343, 0, (void*)0x08009D58 }, + { 0x3E8, 0, (void*)0x08009D7C }, { 0x3E9, 0, (void*)0x08009DCC }, { 0x3EA, 0, (void*)0x08009DE8 }, + { 0x3EB, 0, (void*)0x08009E2C }, { 0x3EC, 0, (void*)0x08009E54 }, { 0x3ED, 0, (void*)0x08009EB8 }, + { 0x3EE, 0, (void*)0x08009EFC }, { 0x3EF, 0, (void*)0x08009F6C }, { 0x3F0, 0, (void*)0x08009FA0 }, + { 0x3F1, 0, (void*)0x08009FF0 }, { 0x3F2, 0, (void*)0x0800A030 }, { 0x3F3, 0, (void*)0x0800A090 }, + { 0x3F4, 0, (void*)0x0800A0D0 }, { 0x3F5, 0, (void*)0x0800A0F8 }, { 0x3F6, 0, (void*)0x0800A158 }, + { 0x3F7, 0, (void*)0x0800A190 }, { 0x3F8, 0, (void*)0x0800A1BC }, { 0x3F9, 0, (void*)0x0800A214 }, + { 0x3FA, 0, (void*)0x0800A25C }, { 0x3FB, 0, (void*)0x0800A29C }, { 0x3FC, 0, (void*)0x0800A2D8 }, + { 0x3FD, 0, (void*)0x0800A31C }, { 0x3FE, 0, (void*)0x0800A40C }, { 0x3FF, 0, (void*)0x0800A478 }, + { 0x400, 0, (void*)0x0800A4EC }, { 0x401, 0, (void*)0x0800A528 }, { 0x402, 0, (void*)0x0800A560 }, + { 0x403, 0, (void*)0x0800A5D4 }, { 0x404, 0, (void*)0x0800A608 }, { 0x405, 0, (void*)0x0800A63C }, + { 0x406, 0, (void*)0x0800A680 }, { 0x407, 0, (void*)0x0800A6B8 }, { 0x408, 0, (void*)0x0800A70C }, + { 0x44C, 0, (void*)0x0800A75C }, { 0x44D, 0, (void*)0x0800A850 }, { 0x44E, 0, (void*)0x0800A8B8 }, + { 0x44F, 0, (void*)0x0800A904 }, { 0x450, 0, (void*)0x0800A924 }, { 0x451, 0, (void*)0x0800A974 }, + { 0x452, 0, (void*)0x0800A9E8 }, { 0x453, 0, (void*)0x0800AA24 }, { 0x454, 0, (void*)0x0800AA7C }, + { 0x455, 0, (void*)0x0800AAB4 }, { 0x456, 0, (void*)0x0800AB10 }, { 0x457, 0, (void*)0x0800AB44 }, + { 0x458, 0, (void*)0x0800AB78 }, { 0x459, 0, (void*)0x0800AC0C }, { 0x45A, 0, (void*)0x0800AC84 }, + { 0x45B, 0, (void*)0x0800ACD0 }, { 0x45C, 0, (void*)0x0800AD4C }, { 0x45D, 0, (void*)0x0800ADC8 }, + { 0x45E, 0, (void*)0x0800AE68 }, { 0x45F, 0, (void*)0x0800AEBC }, { 0x460, 0, (void*)0x0800AF54 }, + { 0x461, 0, (void*)0x0800AF98 }, { 0x462, 0, (void*)0x0800AFC8 }, { 0x463, 0, (void*)0x0800AFE8 }, + { 0x464, 0, (void*)0x0800B044 }, { 0x465, 0, (void*)0x0800B094 }, { 0x466, 0, (void*)0x0800B0CC }, + { 0x467, 0, (void*)0x0800B0FC }, { 0x468, 0, (void*)0x0800B178 }, { 0x469, 0, (void*)0x0800B1B8 }, + { 0x46A, 0, (void*)0x0800B1F0 }, { 0x46B, 0, (void*)0x0800B244 }, { 0x46C, 0, (void*)0x0800B258 }, + { 0x46D, 0, (void*)0x0800B2B4 }, { 0x46E, 0, (void*)0x0800B324 }, { 0x46F, 0, (void*)0x0800B374 }, + { 0x470, 0, (void*)0x0800B3A8 }, { 0x471, 0, (void*)0x0800B3F4 }, { 0x472, 0, (void*)0x0800B428 }, + { 0x473, 0, (void*)0x0800B484 }, { 0x474, 0, (void*)0x0800B4A4 }, { 0x475, 0, (void*)0x0800B514 }, + { 0x476, 0, (void*)0x0800B570 }, { 0x477, 0, (void*)0x0800B5FC }, { 0x478, 0, (void*)0x0800B65C }, + { 0x479, 0, (void*)0x0800B6CC }, { 0x47A, 0, (void*)0x0800B6FC }, { 0x47B, 0, (void*)0x0800B760 }, + { 0x47C, 0, (void*)0x0800B78C }, { 0x47D, 0, (void*)0x0800B7DC }, { 0x47E, 0, (void*)0x0800B82C }, + { 0x4B0, 0, (void*)0x0800B854 }, { 0x4B1, 0, (void*)0x0800B8B0 }, { 0x4B2, 0, (void*)0x0800B8F8 }, + { 0x4B3, 0, (void*)0x0800B93C }, { 0x4B4, 0, (void*)0x0800B994 }, { 0x4B5, 0, (void*)0x0800B9D0 }, + { 0x4B6, 0, (void*)0x0800BA04 }, { 0x4B7, 0, (void*)0x0800BA94 }, { 0x4B8, 0, (void*)0x0800BAC4 }, + { 0x4B9, 0, (void*)0x0800BB4C }, { 0x4BA, 0, (void*)0x0800BB7C }, { 0x4BB, 0, (void*)0x0800BBFC }, + { 0x4BC, 0, (void*)0x0800BC28 }, { 0x4BD, 0, (void*)0x0800BCA4 }, { 0x4BE, 0, (void*)0x0800BCD0 }, + { 0x4BF, 0, (void*)0x0800BD58 }, { 0x4C0, 0, (void*)0x0800BD84 }, { 0x4C1, 0, (void*)0x0800BE18 }, + { 0x4C2, 0, (void*)0x0800BE54 }, { 0x4C3, 0, (void*)0x0800BED0 }, { 0x4C4, 0, (void*)0x0800BEEC }, + { 0x4C5, 0, (void*)0x0800BF5C }, { 0x4C6, 0, (void*)0x0800BF78 }, { 0x4C7, 0, (void*)0x0800BFF4 }, + { 0x4C8, 0, (void*)0x0800C018 }, { 0x4C9, 0, (void*)0x0800C0A4 }, { 0x4CA, 0, (void*)0x0800C0D8 }, + { 0x4CB, 0, (void*)0x0800C140 }, { 0x4CC, 0, (void*)0x0800C158 }, { 0x4CD, 0, (void*)0x0800C1E0 }, + { 0x4CE, 0, (void*)0x0800C220 }, { 0x4CF, 0, (void*)0x0800C29C }, { 0x4D0, 0, (void*)0x0800C2D0 }, + { 0x4D1, 0, (void*)0x0800C34C }, { 0x4D2, 0, (void*)0x0800C378 }, { 0x4D3, 0, (void*)0x0800C400 }, + { 0x4D4, 0, (void*)0x0800C448 }, { 0x4D5, 0, (void*)0x0800C4BC }, { 0x4D6, 0, (void*)0x0800C4E0 }, + { 0x4D7, 0, (void*)0x0800C560 }, { 0x4D8, 0, (void*)0x0800C598 }, { 0x4D9, 0, (void*)0x0800C604 }, + { 0x4DA, 0, (void*)0x0800C63C }, { 0x4DB, 0, (void*)0x0800C6B4 }, { 0x4DC, 0, (void*)0x0800C714 }, + { 0x4DD, 0, (void*)0x0800C784 }, { 0x4DE, 0, (void*)0x0800C7B4 }, { 0x4DF, 0, (void*)0x0800C81C }, + { 0x4E0, 0, (void*)0x0800C840 }, { 0x4E1, 0, (void*)0x0800C8AC }, { 0x4E2, 0, (void*)0x0800C8CC }, + { 0x4E3, 0, (void*)0x0800C95C }, { 0x4E4, 0, (void*)0x0800C990 }, { 0x4E5, 0, (void*)0x0800CA04 }, + { 0x4E6, 0, (void*)0x0800CA20 }, { 0x4E7, 0, (void*)0x0800CA9C }, { 0x4E8, 0, (void*)0x0800CAC0 }, + { 0x4E9, 0, (void*)0x0800CB48 }, { 0x4EA, 0, (void*)0x0800CB64 }, { 0x4EB, 0, (void*)0x0800CBE8 }, + { 0x4EC, 0, (void*)0x0800CC04 }, { 0x4ED, 0, (void*)0x0800CC64 }, { 0x4EE, 0, (void*)0x0800CC88 }, + { 0x4EF, 0, (void*)0x0800CCE8 }, { 0x4F0, 0, (void*)0x0800CD0C }, { 0x4F1, 0, (void*)0x0800CD7C }, + { 0x514, 0, (void*)0x0800CDA4 }, { 0x515, 0, (void*)0x0800CED0 }, { 0x516, 0, (void*)0x0800CFE8 }, + { 0x517, 0, (void*)0x0800D094 }, { 0x518, 0, (void*)0x0800D128 }, { 0x519, 0, (void*)0x0800D1C8 }, + { 0x51A, 0, (void*)0x0800D254 }, { 0x51B, 0, (void*)0x0800D2A8 }, { 0x51C, 0, (void*)0x0800D318 }, + { 0x51D, 0, (void*)0x0800D360 }, { 0x51E, 0, (void*)0x0800D3D0 }, { 0x51F, 0, (void*)0x0800D418 }, + { 0x520, 0, (void*)0x0800D488 }, { 0x521, 0, (void*)0x0800D534 }, { 0x522, 0, (void*)0x0800D5BC }, + { 0x523, 0, (void*)0x0800D65C }, { 0x524, 0, (void*)0x0800D6E4 }, { 0x525, 0, (void*)0x0800D728 }, + { 0x526, 0, (void*)0x0800D794 }, { 0x527, 0, (void*)0x0800D7D0 }, { 0x528, 0, (void*)0x0800D834 }, + { 0x529, 0, (void*)0x0800D878 }, { 0x52A, 0, (void*)0x0800D8E4 }, { 0x52B, 0, (void*)0x0800D98C }, + { 0x52C, 0, (void*)0x0800DA2C }, { 0x52D, 0, (void*)0x0800DAC8 }, { 0x52E, 0, (void*)0x0800DB6C }, + { 0x52F, 0, (void*)0x0800DBD4 }, { 0x530, 0, (void*)0x0800DC5C }, { 0x531, 0, (void*)0x0800DCC4 }, + { 0x532, 0, (void*)0x0800DD54 }, { 0x533, 0, (void*)0x0800DDA4 }, { 0x534, 0, (void*)0x0800DE1C }, + { 0x535, 0, (void*)0x0800DEC8 }, { 0x536, 0, (void*)0x0800DF50 }, { 0x537, 0, (void*)0x0800DFF0 }, + { 0x538, 0, (void*)0x0800E078 }, { 0x539, 0, (void*)0x0800E0BC }, { 0x53A, 0, (void*)0x0800E128 }, + { 0x53B, 0, (void*)0x0800E16C }, { 0x53C, 0, (void*)0x0800E1D8 }, { 0x53D, 0, (void*)0x0800E21C }, + { 0x53E, 0, (void*)0x0800E288 }, { 0x53F, 0, (void*)0x0800E334 }, { 0x540, 0, (void*)0x0800E414 }, + { 0x541, 0, (void*)0x0800E474 }, { 0x542, 0, (void*)0x0800E50C }, { 0x543, 0, (void*)0x0800E57C }, + { 0x544, 0, (void*)0x0800E614 }, { 0x545, 0, (void*)0x0800E678 }, { 0x546, 0, (void*)0x0800E728 }, + { 0x547, 0, (void*)0x0800E794 }, { 0x548, 0, (void*)0x0800E7F4 }, { 0x549, 0, (void*)0x0800E86C }, + { 0x54A, 0, (void*)0x0800E8D8 }, { 0x54B, 0, (void*)0x0800E934 }, { 0x54C, 0, (void*)0x0800E9B4 }, + { 0x54D, 0, (void*)0x0800EA28 }, { 0x54E, 0, (void*)0x0800EB08 }, { 0x54F, 0, (void*)0x0800EB60 }, + { 0x550, 0, (void*)0x0800EBC8 }, { 0x551, 0, (void*)0x0800EC2C }, { 0x552, 0, (void*)0x0800ECAC }, + { 0x553, 0, (void*)0x0800ED1C }, { 0x554, 0, (void*)0x0800ED9C }, { 0x555, 0, (void*)0x0800EE00 }, + { 0x556, 0, (void*)0x0800EEEC }, { 0x557, 0, (void*)0x0800EF4C }, { 0x558, 0, (void*)0x0800EFBC }, + { 0x559, 0, (void*)0x0800F03C }, { 0x55A, 0, (void*)0x0800F0B4 }, { 0x55B, 0, (void*)0x0800F110 }, + { 0x55C, 0, (void*)0x0800F188 }, { 0x55D, 0, (void*)0x0800F258 }, { 0x55E, 0, (void*)0x0800F300 }, + { 0x55F, 0, (void*)0x0800F398 }, { 0x560, 0, (void*)0x0800F44C }, { 0x561, 0, (void*)0x0800F570 }, + { 0x562, 0, (void*)0x0800F688 }, { 0x563, 0, (void*)0x0800F7A8 }, { 0x564, 0, (void*)0x0800F8B8 }, + { 0x565, 0, (void*)0x0800F9D8 }, { 0x566, 0, (void*)0x0800FAEC }, { 0x567, 0, (void*)0x0800FB84 }, + { 0x568, 0, (void*)0x0800FC34 }, { 0x569, 0, (void*)0x0800FCC8 }, { 0x56A, 0, (void*)0x0800FD78 }, + { 0x56B, 0, (void*)0x0800FE0C }, { 0x56C, 0, (void*)0x0800FEBC }, { 0x56D, 0, (void*)0x08010008 }, + { 0x56E, 0, (void*)0x08010168 }, { 0x56F, 0, (void*)0x080102C4 }, { 0x570, 0, (void*)0x0801042C }, + { 0x571, 0, (void*)0x08010584 }, { 0x572, 0, (void*)0x080106EC }, { 0x573, 0, (void*)0x08010844 }, + { 0x578, 0, (void*)0x080109A4 }, { 0x579, 0, (void*)0x08010A70 }, { 0x57A, 0, (void*)0x08010B28 }, + { 0x57B, 0, (void*)0x08010C7C }, { 0x57C, 0, (void*)0x08010D98 }, { 0x57D, 0, (void*)0x08010EC4 }, + { 0x57E, 0, (void*)0x08010FF4 }, { 0x57F, 0, (void*)0x080110E4 }, { 0x580, 0, (void*)0x080111D0 }, + { 0x582, 0, (void*)0x08011260 }, { 0x583, 0, (void*)0x08011304 }, { 0x584, 0, (void*)0x08011374 }, + { 0x585, 0, (void*)0x08011408 }, { 0x586, 0, (void*)0x080114BC }, { 0x587, 0, (void*)0x08011528 }, + { 0x588, 0, (void*)0x080115C0 }, { 0x589, 0, (void*)0x08011674 }, { 0x58A, 0, (void*)0x080116E4 }, + { 0x58B, 0, (void*)0x08011760 }, { 0x58C, 0, (void*)0x08011820 }, { 0x58D, 0, (void*)0x08011884 }, + { 0x58E, 0, (void*)0x0801192C }, { 0x58F, 0, (void*)0x08011A20 }, { 0x590, 0, (void*)0x08011B08 }, + { 0x591, 0, (void*)0x08011B68 }, { 0x592, 0, (void*)0x08011BA4 }, { 0x593, 0, (void*)0x08011BE4 }, + { 0x594, 0, (void*)0x08011C20 }, { 0x595, 0, (void*)0x08011D00 }, { 0x59C, 0, (void*)0x08011DC8 }, + { 0x59D, 0, (void*)0x08011E78 }, { 0x59E, 0, (void*)0x08011EB4 }, { 0x59F, 0, (void*)0x08011EFC }, + { 0x5A0, 0, (void*)0x08011FB4 }, { 0x5A1, 0, (void*)0x08012068 }, { 0x5A2, 0, (void*)0x080120A4 }, + { 0x5A3, 0, (void*)0x080120E4 }, { 0x5A4, 0, (void*)0x08012198 }, { 0x5A5, 0, (void*)0x08012248 }, + { 0x5A6, 0, (void*)0x08012284 }, { 0x5A7, 0, (void*)0x080122C4 }, { 0x5A8, 0, (void*)0x08012380 }, + { 0x5A9, 0, (void*)0x0801243C }, { 0x5AA, 0, (void*)0x08012478 }, { 0x5DC, 0, (void*)0x080124B8 }, + { 0x5DD, 0, (void*)0x08012548 }, { 0x5DE, 0, (void*)0x080125BC }, { 0x5DF, 0, (void*)0x08012678 }, + { 0x5E0, 0, (void*)0x08012730 }, { 0x5E1, 0, (void*)0x0801276C }, { 0x5E2, 0, (void*)0x08012784 }, + { 0x5E3, 0, (void*)0x080127C4 }, { 0x5E4, 0, (void*)0x080128A8 }, { 0x5E5, 0, (void*)0x080128E0 }, + { 0x5E6, 0, (void*)0x0801294C }, { 0x5E7, 0, (void*)0x08012970 }, { 0x5E8, 0, (void*)0x080129A4 }, + { 0x5E9, 0, (void*)0x08012A5C }, { 0x5EA, 0, (void*)0x08012ACC }, { 0x5EB, 0, (void*)0x08012B4C }, + { 0x5EC, 0, (void*)0x08012BF0 }, { 0x5ED, 0, (void*)0x08012CE0 }, { 0x5EE, 0, (void*)0x08012D84 }, + { 0x5EF, 0, (void*)0x08012DE4 }, { 0x5F0, 0, (void*)0x08012E1C }, { 0x5F1, 0, (void*)0x08012E7C }, + { 0x5F2, 0, (void*)0x08012EF0 }, { 0x5F3, 0, (void*)0x08012FAC }, { 0x5F4, 0, (void*)0x08013060 }, + { 0x5F5, 0, (void*)0x080130F4 }, { 0x5F6, 0, (void*)0x0801315C }, { 0x5F7, 0, (void*)0x08013210 }, + { 0x5F8, 0, (void*)0x08013258 }, { 0x60E, 0, (void*)0x080132B0 }, { 0x60F, 0, (void*)0x08013368 }, + { 0x610, 0, (void*)0x08013470 }, { 0x611, 0, (void*)0x08013530 }, { 0x612, 0, (void*)0x080135F8 }, + { 0x613, 0, (void*)0x08013680 }, { 0x614, 0, (void*)0x080137D0 }, { 0x615, 0, (void*)0x0801386C }, + { 0x616, 0, (void*)0x08013944 }, { 0x617, 0, (void*)0x080139B8 }, { 0x618, 0, (void*)0x08013A44 }, + { 0x619, 0, (void*)0x08013AA8 }, { 0x61A, 0, (void*)0x08013BFC }, { 0x61B, 0, (void*)0x08013C5C }, + { 0x61C, 0, (void*)0x08013CB0 }, { 0x61D, 0, (void*)0x08013D00 }, { 0x61E, 0, (void*)0x08013D60 }, + { 0x61F, 0, (void*)0x08013DAC }, { 0x620, 0, (void*)0x08013DEC }, { 0x621, 0, (void*)0x08013E4C }, + { 0x622, 0, (void*)0x08013E80 }, { 0x623, 0, (void*)0x08013ED8 }, { 0x624, 0, (void*)0x08013F24 }, + { 0x625, 0, (void*)0x08013FEC }, { 0x626, 0, (void*)0x08014010 }, { 0x627, 0, (void*)0x08014064 }, + { 0x628, 0, (void*)0x080140C4 }, { 0x629, 0, (void*)0x08014170 }, { 0x62A, 0, (void*)0x08014208 }, + { 0x62B, 0, (void*)0x080142D0 }, { 0x62C, 0, (void*)0x08014398 }, { 0x640, 0, (void*)0x0801454C }, + { 0x641, 0, (void*)0x0801458C }, { 0x642, 0, (void*)0x080145B4 }, { 0x644, 0, (void*)0x080145F0 }, + { 0x645, 0, (void*)0x08014608 }, { 0x646, 0, (void*)0x08014648 }, { 0x647, 0, (void*)0x080146B0 }, + { 0x648, 0, (void*)0x080146D4 }, { 0x649, 0, (void*)0x08014760 }, { 0x64A, 0, (void*)0x08014798 }, + { 0x64B, 0, (void*)0x08014850 }, { 0x64C, 0, (void*)0x08014898 }, { 0x64D, 0, (void*)0x080148B4 }, + { 0x64E, 0, (void*)0x08014924 }, { 0x64F, 0, (void*)0x08014988 }, { 0x650, 0, (void*)0x080149F0 }, + { 0x651, 0, (void*)0x08014A50 }, { 0x652, 0, (void*)0x08014A8C }, { 0x653, 0, (void*)0x08014AF4 }, + { 0x654, 0, (void*)0x08014B34 }, { 0x655, 0, (void*)0x08014B9C }, { 0x656, 0, (void*)0x08014BD8 }, + { 0x657, 0, (void*)0x08014C38 }, { 0x658, 0, (void*)0x08014C78 }, { 0x659, 0, (void*)0x08014CBC }, + { 0x65A, 0, (void*)0x08014D10 }, { 0x65B, 0, (void*)0x08014D94 }, { 0x65C, 0, (void*)0x08014E68 }, + { 0x65D, 0, (void*)0x08014F18 }, { 0x65E, 0, (void*)0x08014F5C }, { 0x65F, 0, (void*)0x08014F88 }, + { 0x660, 0, (void*)0x08014FD0 }, { 0x661, 0, (void*)0x08015024 }, { 0x662, 0, (void*)0x080150F0 }, + { 0x663, 0, (void*)0x08015188 }, { 0x664, 0, (void*)0x080151AC }, { 0x665, 0, (void*)0x080151E4 }, + { 0x666, 0, (void*)0x08015248 }, { 0x667, 0, (void*)0x0801529C }, { 0x668, 0, (void*)0x080152CC }, + { 0x669, 0, (void*)0x0801532C }, { 0x66A, 0, (void*)0x08015390 }, { 0x66B, 0, (void*)0x080153E4 }, + { 0x66C, 0, (void*)0x08015450 }, { 0x66D, 0, (void*)0x080154BC }, { 0x66E, 0, (void*)0x08015550 }, + { 0x66F, 0, (void*)0x080155C0 }, { 0x670, 0, (void*)0x08015600 }, { 0x671, 0, (void*)0x08015634 }, + { 0x672, 0, (void*)0x0801568C }, { 0x673, 0, (void*)0x080156C8 }, { 0x674, 0, (void*)0x0801574C }, + { 0x675, 0, (void*)0x08015784 }, { 0x676, 0, (void*)0x080157F8 }, { 0x677, 0, (void*)0x0801588C }, + { 0x678, 0, (void*)0x080158E4 }, { 0x679, 0, (void*)0x08015940 }, { 0x67A, 0, (void*)0x08015994 }, + { 0x67B, 0, (void*)0x080159E8 }, { 0x67C, 0, (void*)0x08015A48 }, { 0x67D, 0, (void*)0x08015B58 }, + { 0x67E, 0, (void*)0x08015C04 }, { 0x67F, 0, (void*)0x08015C50 }, { 0x680, 0, (void*)0x08015D64 }, + { 0x681, 0, (void*)0x08015E40 }, { 0x682, 0, (void*)0x08015ED0 }, { 0x683, 0, (void*)0x08015F00 }, + { 0x684, 0, (void*)0x08015F90 }, { 0x685, 0, (void*)0x08015FCC }, { 0x686, 0, (void*)0x08016020 }, + { 0x687, 0, (void*)0x08016078 }, { 0x688, 0, (void*)0x080160AC }, { 0x689, 0, (void*)0x08016104 }, + { 0x68A, 0, (void*)0x08016130 }, { 0x6A4, 0, (void*)0x08016184 }, { 0x6A5, 0, (void*)0x080161B8 }, + { 0x6A6, 0, (void*)0x0801620C }, { 0x6A7, 0, (void*)0x08016248 }, { 0x6A8, 0, (void*)0x080162A0 }, + { 0x6A9, 0, (void*)0x080162C8 }, { 0x6AA, 0, (void*)0x0801634C }, { 0x6AB, 0, (void*)0x08016398 }, + { 0x6AC, 0, (void*)0x080163FC }, { 0x6AD, 0, (void*)0x08016478 }, { 0x6AE, 0, (void*)0x080164B4 }, + { 0x6AF, 0, (void*)0x08016508 }, { 0x6B0, 0, (void*)0x08016548 }, { 0x6B1, 0, (void*)0x080165C0 }, + { 0x6B2, 0, (void*)0x08016600 }, { 0x6B3, 0, (void*)0x08016674 }, { 0x6B4, 0, (void*)0x080166B4 }, + { 0x6B5, 0, (void*)0x0801671C }, { 0x6B6, 0, (void*)0x08016758 }, { 0x6B7, 0, (void*)0x080167C0 }, + { 0x6B8, 0, (void*)0x080167F8 }, { 0x6B9, 0, (void*)0x08016858 }, { 0x6BA, 0, (void*)0x08016894 }, + { 0x6BB, 0, (void*)0x08016900 }, { 0x6BC, 0, (void*)0x0801693C }, { 0x6BD, 0, (void*)0x0801698C }, + { 0x6BE, 0, (void*)0x080169CC }, { 0x6BF, 0, (void*)0x08016A04 }, { 0x6C0, 0, (void*)0x08016A28 }, + { 0x6C1, 0, (void*)0x08016A7C }, { 0x6C2, 0, (void*)0x08016A98 }, { 0x6C3, 0, (void*)0x08016AC8 }, + { 0x6C4, 0, (void*)0x08016AE4 }, { 0x6C5, 0, (void*)0x08016B2C }, { 0x6C6, 0, (void*)0x08016B84 }, + { 0x6C7, 0, (void*)0x08016BC8 }, { 0x6C8, 0, (void*)0x08016BE0 }, { 0x6C9, 0, (void*)0x08016C34 }, + { 0x6CA, 0, (void*)0x08016C94 }, { 0x6CB, 0, (void*)0x08016CD0 }, { 0x6CC, 0, (void*)0x08016D24 }, + { 0x6CD, 0, (void*)0x08016D64 }, { 0x6CE, 0, (void*)0x08016DC8 }, { 0x6CF, 0, (void*)0x08016E08 }, + { 0x6D0, 0, (void*)0x08016E6C }, { 0x6D1, 0, (void*)0x08016EAC }, { 0x6D2, 0, (void*)0x08016F14 }, + { 0x6D3, 0, (void*)0x08016F50 }, { 0x6D4, 0, (void*)0x08016FD0 }, { 0x6D5, 0, (void*)0x08017008 }, + { 0x6D6, 0, (void*)0x08017084 }, { 0x6D7, 0, (void*)0x080170C0 }, { 0x6D8, 0, (void*)0x08017110 }, + { 0x6D9, 0, (void*)0x0801714C }, { 0x6DA, 0, (void*)0x080171A4 }, { 0x6DB, 0, (void*)0x080171E0 }, + { 0x6DC, 0, (void*)0x08017218 }, { 0x6DD, 0, (void*)0x08017264 }, { 0x6DE, 0, (void*)0x080172E0 }, + { 0x708, 0, (void*)0x08017330 }, { 0x709, 0, (void*)0x080173C4 }, { 0x70A, 0, (void*)0x0801741C }, + { 0x70B, 0, (void*)0x080174B4 }, { 0x70C, 0, (void*)0x0801753C }, { 0x70D, 0, (void*)0x08017564 }, + { 0x70E, 0, (void*)0x0801758C }, { 0x70F, 0, (void*)0x080175FC }, { 0x710, 0, (void*)0x08017650 }, + { 0x711, 0, (void*)0x08017748 }, { 0x712, 0, (void*)0x0801775C }, { 0x713, 0, (void*)0x080177B0 }, + { 0x714, 0, (void*)0x080177D8 }, { 0x715, 0, (void*)0x0801781C }, { 0x716, 0, (void*)0x0801787C }, + { 0x717, 0, (void*)0x08017A6C }, { 0x718, 0, (void*)0x08017AB8 }, { 0x719, 0, (void*)0x08017AE8 }, + { 0x71A, 0, (void*)0x08017B48 }, { 0x71B, 0, (void*)0x08017BA0 }, { 0x721, 0, (void*)0x08017C00 }, + { 0x722, 0, (void*)0x08017C44 }, { 0x723, 0, (void*)0x08017C84 }, { 0x724, 0, (void*)0x08017CC4 }, + { 0x725, 0, (void*)0x08017D04 }, { 0x726, 0, (void*)0x08017D90 }, { 0x727, 0, (void*)0x08017DE4 }, + { 0x728, 0, (void*)0x08017DF0 }, { 0x729, 0, (void*)0x08017E50 }, { 0x72A, 0, (void*)0x08017E9C }, + { 0x72B, 0, (void*)0x08017F08 }, { 0x72C, 0, (void*)0x08017F5C }, { 0x72D, 0, (void*)0x08017F8C }, + { 0x72E, 0, (void*)0x08017FC8 }, { 0x72F, 0, (void*)0x0801800C }, { 0x730, 0, (void*)0x08018064 }, + { 0x731, 0, (void*)0x080180A0 }, { 0x732, 0, (void*)0x080180E8 }, { 0x733, 0, (void*)0x08018104 }, + { 0x734, 0, (void*)0x08018188 }, { 0x735, 0, (void*)0x08018240 }, { 0x736, 0, (void*)0x080182A8 }, + { 0x737, 0, (void*)0x080182E4 }, { 0x738, 0, (void*)0x080184D0 }, { 0x73A, 0, (void*)0x08018510 }, + { 0x73B, 0, (void*)0x08018594 }, { 0x73C, 0, (void*)0x08018618 }, { 0x73D, 0, (void*)0x080186B0 }, + { 0x73E, 0, (void*)0x0801876C }, { 0x73F, 0, (void*)0x08018818 }, { 0x740, 0, (void*)0x080188CC }, + { 0x741, 0, (void*)0x08018908 }, { 0x742, 0, (void*)0x08018938 }, { 0x743, 0, (void*)0x080189A0 }, + { 0x744, 0, (void*)0x08018A00 }, { 0x745, 0, (void*)0x08018A90 }, { 0x746, 0, (void*)0x08018B4C }, + { 0x747, 0, (void*)0x08018C18 }, { 0x748, 0, (void*)0x08018C8C }, { 0x749, 0, (void*)0x08018CE0 }, + { 0x74A, 0, (void*)0x08018D78 }, { 0x74B, 0, (void*)0x08018DD0 }, { 0x74C, 0, (void*)0x08018E38 }, + { 0x74D, 0, (void*)0x08018E78 }, { 0x74E, 0, (void*)0x08018EC0 }, { 0x74F, 0, (void*)0x08018F38 }, + { 0x750, 0, (void*)0x08018FF4 }, { 0x751, 0, (void*)0x08019014 }, { 0x752, 0, (void*)0x0801910C }, + { 0x753, 0, (void*)0x08019160 }, { 0x754, 0, (void*)0x080191A4 }, { 0x755, 0, (void*)0x080191FC }, + { 0x756, 0, (void*)0x08019254 }, { 0x757, 0, (void*)0x0801927C }, { 0x758, 0, (void*)0x080192E8 }, + { 0x759, 0, (void*)0x08019354 }, { 0x75A, 0, (void*)0x0801939C }, { 0x76C, 0, (void*)0x0801941C }, + { 0x76D, 0, (void*)0x08019468 }, { 0x76E, 0, (void*)0x080194BC }, { 0x76F, 0, (void*)0x080194F8 }, + { 0x770, 0, (void*)0x08019530 }, { 0x771, 0, (void*)0x0801956C }, { 0x772, 0, (void*)0x080195A4 }, + { 0x773, 0, (void*)0x080195DC }, { 0x774, 0, (void*)0x08019620 }, { 0x775, 0, (void*)0x08019654 }, + { 0x776, 0, (void*)0x08019688 }, { 0x777, 0, (void*)0x080196A4 }, { 0x778, 0, (void*)0x080196F0 }, + { 0x779, 0, (void*)0x080197A4 }, { 0x77A, 0, (void*)0x080197C0 }, { 0x77B, 0, (void*)0x080197E4 }, + { 0x77C, 0, (void*)0x0801982C }, { 0x77D, 0, (void*)0x08019854 }, { 0x7D0, 0, (void*)0x08019878 }, + { 0x7D1, 0, (void*)0x080198BC }, { 0x7D2, 0, (void*)0x080199A8 }, { 0x7D3, 0, (void*)0x080199BC }, + { 0x7D4, 0, (void*)0x080199E4 }, { 0x7D5, 0, (void*)0x08019AD8 }, { 0x7D6, 0, (void*)0x08019B10 }, + { 0x7D7, 0, (void*)0x08019B28 }, { 0x7D8, 0, (void*)0x08019BA4 }, { 0x7D9, 0, (void*)0x08019BC8 }, + { 0x7DC, 0, (void*)0x08019C20 }, { 0x7DD, 0, (void*)0x08019C40 }, { 0x7DE, 0, (void*)0x08019C60 }, + { 0x800, 0, (void*)0x08019C80 }, { 0x801, 0, (void*)0x08019D44 }, { 0x802, 0, (void*)0x08019DD0 }, + { 0x803, 0, (void*)0x08019E24 }, { 0x804, 0, (void*)0x08019E44 }, { 0x806, 0, (void*)0x08019F84 }, + { 0x807, 0, (void*)0x0801A0F0 }, { 0x80B, 0, (void*)0x0801A0FC }, { 0x80C, 0, (void*)0x0801A144 }, + { 0x80D, 0, (void*)0x0801A1AC }, { 0x80E, 0, (void*)0x0801A218 }, { 0x80F, 0, (void*)0x0801A288 }, + { 0x810, 0, (void*)0x0801A320 }, { 0x811, 0, (void*)0x0801A348 }, { 0x820, 0, (void*)0x0801A378 }, + { 0x821, 0, (void*)0x0801A3B4 }, { 0x822, 0, (void*)0x0801A408 }, { 0x823, 0, (void*)0x0801A484 }, + { 0x824, 0, (void*)0x0801A4D4 }, { 0x825, 0, (void*)0x0801A538 }, { 0x826, 0, (void*)0x0801A5A8 }, + { 0x827, 0, (void*)0x0801A614 }, { 0x828, 0, (void*)0x0801A654 }, { 0x829, 0, (void*)0x0801A680 }, + { 0x82A, 0, (void*)0x0801A6EC }, { 0x82B, 0, (void*)0x0801A740 }, { 0x82C, 0, (void*)0x0801A79C }, + { 0x82D, 0, (void*)0x0801A808 }, { 0x82E, 0, (void*)0x0801A868 }, { 0x82F, 0, (void*)0x0801A894 }, + { 0x830, 0, (void*)0x0801A918 }, { 0x831, 0, (void*)0x0801A968 }, { 0x832, 0, (void*)0x0801A9DC }, + { 0x833, 0, (void*)0x0801AA5C }, { 0x834, 0, (void*)0x0801AA80 }, { 0x835, 0, (void*)0x0801AAD0 }, + { 0x836, 0, (void*)0x0801AB60 }, { 0x838, 0, (void*)0x0801AC28 }, { 0x839, 0, (void*)0x0801AC7C }, + { 0x83A, 0, (void*)0x0801AD18 }, { 0x83B, 0, (void*)0x0801AD48 }, { 0x83C, 0, (void*)0x0801ADC4 }, + { 0x83D, 0, (void*)0x0801AE2C }, { 0x83E, 0, (void*)0x0801AE84 }, { 0x83F, 0, (void*)0x0801AEC4 }, + { 0x840, 0, (void*)0x0801AF0C }, { 0x841, 0, (void*)0x0801AF48 }, { 0x842, 0, (void*)0x0801AFA4 }, + { 0x843, 0, (void*)0x0801AFE4 }, { 0x844, 0, (void*)0x0801B054 }, { 0x845, 0, (void*)0x0801B090 }, + { 0x846, 0, (void*)0x0801B0CC }, { 0x847, 0, (void*)0x0801B114 }, { 0x848, 0, (void*)0x0801B168 }, + { 0x849, 0, (void*)0x0801B190 }, { 0x84A, 0, (void*)0x0801B210 }, { 0x84B, 0, (void*)0x0801B278 }, + { 0x84C, 0, (void*)0x0801B2BC }, { 0x84D, 0, (void*)0x0801B310 }, { 0x84E, 0, (void*)0x0801B380 }, + { 0x84F, 0, (void*)0x0801B3A4 }, { 0x850, 0, (void*)0x0801B3CC }, { 0x851, 0, (void*)0x0801B47C }, + { 0x852, 0, (void*)0x0801B488 }, { 0x853, 0, (void*)0x0801B4B4 }, { 0x854, 0, (void*)0x0801B5C4 }, + { 0x855, 0, (void*)0x0801B608 }, { 0x856, 0, (void*)0x0801B678 }, { 0x857, 0, (void*)0x0801B6D8 }, + { 0x858, 0, (void*)0x0801B718 }, { 0x859, 0, (void*)0x0801B78C }, { 0x85A, 0, (void*)0x0801B810 }, + { 0x85B, 0, (void*)0x0801B85C }, { 0x85C, 0, (void*)0x0801B8C4 }, { 0x85D, 0, (void*)0x0801B8F4 }, + { 0x85E, 0, (void*)0x0801B900 }, { 0x85F, 0, (void*)0x0801B92C }, { 0x860, 0, (void*)0x0801B968 }, + { 0x861, 0, (void*)0x0801B994 }, { 0x862, 0, (void*)0x0801B9E0 }, { 0x863, 0, (void*)0x0801BA6C }, + { 0x864, 0, (void*)0x0801BACC }, { 0x865, 0, (void*)0x0801BB18 }, { 0x866, 0, (void*)0x0801BB8C }, + { 0x867, 0, (void*)0x0801BBA4 }, { 0x868, 0, (void*)0x0801BC0C }, { 0x869, 0, (void*)0x0801BC88 }, + { 0x86A, 0, (void*)0x0801BCC0 }, { 0x86B, 0, (void*)0x0801BD30 }, { 0x86C, 0, (void*)0x0801BD90 }, + { 0x86D, 0, (void*)0x0801BDD4 }, { 0x86E, 0, (void*)0x0801BE60 }, { 0x86F, 0, (void*)0x0801BF1C }, + { 0x870, 0, (void*)0x0801BF40 }, { 0x871, 0, (void*)0x0801BF90 }, { 0x872, 0, (void*)0x0801BFB0 }, + { 0x873, 0, (void*)0x0801C004 }, { 0x874, 0, (void*)0x0801C038 }, { 0x875, 0, (void*)0x0801C0A0 }, + { 0x876, 0, (void*)0x0801C0F8 }, { 0x877, 0, (void*)0x0801C170 }, { 0x878, 0, (void*)0x0801C1E0 }, + { 0x879, 0, (void*)0x0801C23C }, { 0x87A, 0, (void*)0x0801C2A0 }, { 0x87B, 0, (void*)0x0801C2D4 }, + { 0x87C, 0, (void*)0x0801C314 }, { 0x87D, 0, (void*)0x0801C384 }, { 0x87E, 0, (void*)0x0801C3DC }, + { 0x87F, 0, (void*)0x0801C43C }, { 0x880, 0, (void*)0x0801C494 }, { 0x881, 0, (void*)0x0801C504 }, + { 0x882, 0, (void*)0x0801C580 }, { 0x883, 0, (void*)0x0801C5E8 }, { 0x884, 0, (void*)0x0801C694 }, + { 0x885, 0, (void*)0x0801C6DC }, { 0x886, 0, (void*)0x0801C73C }, { 0x887, 0, (void*)0x0801C798 }, + { 0x888, 0, (void*)0x0801C7EC }, { 0x889, 0, (void*)0x0801C824 }, { 0x88A, 0, (void*)0x0801C86C }, + { 0x88B, 0, (void*)0x0801C890 }, { 0x88C, 0, (void*)0x0801C8C4 }, { 0x88D, 0, (void*)0x0801C914 }, + { 0x88E, 0, (void*)0x0801C98C }, { 0x88F, 0, (void*)0x0801CA00 }, { 0x890, 0, (void*)0x0801CA40 }, + { 0x898, 0, (void*)0x0801CADC }, { 0x899, 0, (void*)0x0801CB1C }, { 0x89A, 0, (void*)0x0801CB60 }, + { 0x89B, 0, (void*)0x0801CC18 }, { 0x89C, 0, (void*)0x0801CC74 }, { 0x89D, 0, (void*)0x0801CCCC }, + { 0x89E, 0, (void*)0x0801CD40 }, { 0x89F, 0, (void*)0x0801CDA0 }, { 0x8A0, 0, (void*)0x0801CDE8 }, + { 0x8A1, 0, (void*)0x0801CE44 }, { 0x8A2, 0, (void*)0x0801CEB0 }, { 0x8A3, 0, (void*)0x0801CF0C }, + { 0x8A4, 0, (void*)0x0801CF38 }, { 0x8A5, 0, (void*)0x0801CFD0 }, { 0x8CA, 0, (void*)0x0801D010 }, + { 0x8CB, 0, (void*)0x0801D0E0 }, { 0x8CC, 0, (void*)0x0801D108 }, { 0x8CD, 0, (void*)0x0801D138 }, + { 0x8CE, 0, (void*)0x0801D170 }, { 0x8CF, 0, (void*)0x0801D1C0 }, { 0x8D0, 0, (void*)0x0801D200 }, + { 0x8D1, 0, (void*)0x0801D238 }, { 0x8D2, 0, (void*)0x0801D268 }, { 0x8D3, 0, (void*)0x0801D340 }, + { 0x8D4, 0, (void*)0x0801D3D4 }, { 0x8D5, 0, (void*)0x0801D444 }, { 0x8D6, 0, (void*)0x0801D488 }, + { 0x8D7, 0, (void*)0x0801D4D8 }, { 0x8D8, 0, (void*)0x0801D508 }, { 0x8D9, 0, (void*)0x0801D574 }, + { 0x8DA, 0, (void*)0x0801D5A0 }, { 0x8DB, 0, (void*)0x0801D5D0 }, { 0x8DC, 0, (void*)0x0801D600 }, + { 0x8DD, 0, (void*)0x0801D644 }, { 0x8DE, 0, (void*)0x0801D7C8 }, { 0x8DF, 0, (void*)0x0801D7FC }, + { 0x8E0, 0, (void*)0x0801D844 }, { 0x8E1, 0, (void*)0x0801D898 }, { 0x8E2, 0, (void*)0x0801D938 }, + { 0x8E3, 0, (void*)0x0801D9E0 }, { 0x8E4, 0, (void*)0x0801DA40 }, { 0x8E5, 0, (void*)0x0801DA9C }, + { 0x8E6, 0, (void*)0x0801DB20 }, { 0x8E7, 0, (void*)0x0801DB88 }, { 0x8E8, 0, (void*)0x0801DBB0 }, + { 0x8E9, 0, (void*)0x0801DBE4 }, { 0x8EA, 0, (void*)0x0801DC6C }, { 0x8EB, 0, (void*)0x0801DC84 }, + { 0x8EC, 0, (void*)0x0801DD18 }, { 0x910, 0, (void*)0x0801DD64 }, { 0x911, 0, (void*)0x0801DDC0 }, + { 0x912, 0, (void*)0x0801DE3C }, { 0x913, 0, (void*)0x0801DEAC }, { 0x914, 0, (void*)0x0801DF18 }, + { 0x915, 0, (void*)0x0801DF88 }, { 0x916, 0, (void*)0x0801DFF0 }, { 0x917, 0, (void*)0x0801E038 }, + { 0x918, 0, (void*)0x0801E164 }, { 0x919, 0, (void*)0x0801E1BC }, { 0x91A, 0, (void*)0x0801E204 }, + { 0x91B, 0, (void*)0x0801E330 }, { 0x91C, 0, (void*)0x0801E370 }, { 0x91E, 0, (void*)0x0801E3CC }, + { 0x92E, 0, (void*)0x0801E464 }, { 0x92F, 0, (void*)0x0801E4C0 }, { 0x930, 0, (void*)0x0801E534 }, + { 0x931, 0, (void*)0x0801E5AC }, { 0x932, 0, (void*)0x0801E5B8 }, { 0x933, 0, (void*)0x0801E608 }, + { 0x934, 0, (void*)0x0801E650 }, { 0x935, 0, (void*)0x0801E698 }, { 0x936, 0, (void*)0x0801E6D0 }, + { 0x937, 0, (void*)0x0801E738 }, { 0x938, 0, (void*)0x0801E768 }, { 0x960, 0, (void*)0x0801E774 }, + { 0x961, 0, (void*)0x0801E798 }, { 0x962, 0, (void*)0x0801E810 }, { 0x963, 0, (void*)0x0801E8AC }, + { 0x964, 0, (void*)0x0801E97C }, { 0x965, 0, (void*)0x0801E9C8 }, { 0x966, 0, (void*)0x0801EA1C }, + { 0x967, 0, (void*)0x0801EABC }, { 0x968, 0, (void*)0x0801EB08 }, { 0x969, 0, (void*)0x0801EBC8 }, + { 0x96A, 0, (void*)0x0801EC58 }, { 0x96B, 0, (void*)0x0801EC8C }, { 0x96C, 0, (void*)0x0801ECD4 }, + { 0x96D, 0, (void*)0x0801ED40 }, { 0x96E, 0, (void*)0x0801ED88 }, { 0x96F, 0, (void*)0x0801EE4C }, + { 0x970, 0, (void*)0x0801EF08 }, { 0x971, 0, (void*)0x0801EF98 }, { 0x972, 0, (void*)0x0801EFF4 }, + { 0x9C4, 0, (void*)0x0801F000 }, { 0x9C5, 0, (void*)0x0801F08C }, { 0x9C6, 0, (void*)0x0801F0B0 }, + { 0x9C7, 0, (void*)0x0801F104 }, { 0x9C8, 0, (void*)0x0801F110 }, { 0x9C9, 0, (void*)0x0801F160 }, + { 0x9CA, 0, (void*)0x0801F1D4 }, { 0x9CB, 0, (void*)0x0801F25C }, { 0x9CC, 0, (void*)0x0801F2A0 }, + { 0x9CD, 0, (void*)0x0801F2E8 }, { 0x9CE, 0, (void*)0x0801F338 }, { 0x9CF, 0, (void*)0x0801F37C }, + { 0x9D0, 0, (void*)0x0801F3CC }, { 0x9D1, 0, (void*)0x0801F424 }, { 0x9D2, 0, (void*)0x0801F450 }, + { 0x9D3, 0, (void*)0x0801F510 }, { 0x9D4, 0, (void*)0x0801F558 }, { 0x9D5, 0, (void*)0x0801F580 }, + { 0x9D6, 0, (void*)0x0801F5D0 }, { 0x9D7, 0, (void*)0x0801F61C }, { 0x9D8, 0, (void*)0x0801F65C }, + { 0x9D9, 0, (void*)0x0801F69C }, { 0x9DA, 0, (void*)0x0801F6EC }, { 0x9DB, 0, (void*)0x0801F764 }, + { 0x9DC, 0, (void*)0x0801F7B0 }, { 0x9DD, 0, (void*)0x0801F808 }, { 0x9DE, 0, (void*)0x0801F8AC }, + { 0x9DF, 0, (void*)0x0801F91C }, { 0x9E0, 0, (void*)0x0801F990 }, { 0x9E1, 0, (void*)0x0801F9CC }, + { 0x9E2, 0, (void*)0x0801FA2C }, { 0x9E3, 0, (void*)0x0801FA74 }, { 0x9E4, 0, (void*)0x0801FB24 }, + { 0x9E5, 0, (void*)0x0801FB90 }, { 0x9E6, 0, (void*)0x0801FBBC }, { 0x9E7, 0, (void*)0x0801FBE4 }, + { 0x9E8, 0, (void*)0x0801FC4C }, { 0x9E9, 0, (void*)0x0801FCA0 }, { 0x9EA, 0, (void*)0x0801FD80 }, + { 0x9EB, 0, (void*)0x0801FDE8 }, { 0x9EC, 0, (void*)0x0801FE70 }, { 0x9ED, 0, (void*)0x0801FEAC }, + { 0x9EE, 0, (void*)0x0801FF40 }, { 0x9EF, 0, (void*)0x0801FF8C }, { 0xA28, 0, (void*)0x0801FFC4 }, + { 0xA29, 0, (void*)0x0801FFF4 }, { 0xA2A, 0, (void*)0x08020014 }, { 0xA2B, 0, (void*)0x08020048 }, + { 0xA2C, 0, (void*)0x0802012C }, { 0xA2D, 0, (void*)0x08020190 }, { 0xA2E, 0, (void*)0x080201EC }, + { 0xA2F, 0, (void*)0x08020278 }, { 0xA30, 0, (void*)0x080202E4 }, { 0xA31, 0, (void*)0x0802031C }, + { 0xA32, 0, (void*)0x08020360 }, { 0xA33, 0, (void*)0x080203A4 }, { 0xA34, 0, (void*)0x080203C8 }, + { 0xA35, 0, (void*)0x08020424 }, { 0xA36, 0, (void*)0x0802047C }, { 0xA37, 0, (void*)0x080204F0 }, + { 0xA38, 0, (void*)0x08020534 }, { 0xA39, 0, (void*)0x08020570 }, { 0xA3A, 0, (void*)0x080205E4 }, + { 0xBB8, 0, (void*)0x08020668 }, { 0xBB9, 0, (void*)0x080206A4 }, { 0xBBA, 0, (void*)0x080206EC }, + { 0xBBB, 0, (void*)0x08020710 }, { 0xBBC, 0, (void*)0x08020764 }, { 0xBBD, 0, (void*)0x080207A4 }, + { 0xBBE, 0, (void*)0x080207E8 }, { 0xBBF, 0, (void*)0x08020814 }, { 0xBC0, 0, (void*)0x08020858 }, + { 0xBC1, 0, (void*)0x080208B0 }, { 0xBC2, 0, (void*)0x08020910 }, { 0xBC3, 0, (void*)0x08020960 }, + { 0xBC4, 0, (void*)0x080209C4 }, { 0xBC5, 0, (void*)0x080209F0 }, { 0xBC6, 0, (void*)0x08020A50 }, + { 0xBC7, 0, (void*)0x08020A8C }, { 0xBC8, 0, (void*)0x08020B00 }, { 0xBC9, 0, (void*)0x08020B3C }, + { 0xBCA, 0, (void*)0x08020BB8 }, { 0xBCB, 0, (void*)0x08020BF4 }, { 0xBCC, 0, (void*)0x08020C4C }, + { 0xBCD, 0, (void*)0x08020C88 }, { 0xBCE, 0, (void*)0x08020CF0 }, { 0xBCF, 0, (void*)0x08020D2C }, + { 0xBD0, 0, (void*)0x08020D80 }, { 0xBD1, 0, (void*)0x08020DC0 }, { 0xBD2, 0, (void*)0x08020DFC }, + { 0xBD3, 0, (void*)0x08020E58 }, { 0xBD4, 0, (void*)0x08020E88 }, { 0xBD5, 0, (void*)0x08020EE0 }, + { 0xBD6, 0, (void*)0x08020F18 }, { 0xBD7, 0, (void*)0x08020F44 }, { 0xBEA, 0, (void*)0x08020F60 }, + { 0xBEB, 0, (void*)0x08021158 }, { 0xBEC, 0, (void*)0x080211C0 }, { 0xBED, 0, (void*)0x080211EC }, + { 0xBEE, 0, (void*)0x08021350 }, { 0xBEF, 0, (void*)0x08021380 }, { 0xBF0, 0, (void*)0x080213F8 }, + { 0xBF1, 0, (void*)0x08021480 }, { 0xBF2, 0, (void*)0x08021558 }, { 0xBF3, 0, (void*)0x08021588 }, + { 0xBF4, 0, (void*)0x080215E0 }, { 0xBF5, 0, (void*)0x080216A0 }, { 0xBF6, 0, (void*)0x080217CC }, + { 0xBF7, 0, (void*)0x08021858 }, { 0xBF8, 0, (void*)0x080218CC }, { 0xBF9, 0, (void*)0x08021974 }, + { 0xBFA, 0, (void*)0x080219F8 }, { 0xBFB, 0, (void*)0x08021A68 }, { 0xBFC, 0, (void*)0x08021AF8 }, + { 0xBFD, 0, (void*)0x08021B9C }, { 0xBFE, 0, (void*)0x08021BE0 }, { 0xBFF, 0, (void*)0x08021C54 }, + { 0xC00, 0, (void*)0x08021C80 }, { 0xC01, 0, (void*)0x08021CC8 }, { 0xC02, 0, (void*)0x08021F20 }, + { 0xC03, 0, (void*)0x08021F50 }, { 0xC04, 0, (void*)0x08022024 }, { 0xC1D, 0, (void*)0x08022090 }, + { 0xC1E, 0, (void*)0x080220B8 }, { 0xC1F, 0, (void*)0x080220D0 }, { 0xC20, 0, (void*)0x08022104 }, + { 0xC21, 0, (void*)0x08022198 }, { 0xC22, 0, (void*)0x080221B8 }, { 0xC23, 0, (void*)0x080221DC }, + { 0xC24, 0, (void*)0x08022248 }, { 0xC25, 0, (void*)0x08022288 }, { 0xC26, 0, (void*)0x08022308 }, + { 0xC27, 0, (void*)0x0802233C }, { 0xC28, 0, (void*)0x0802239C }, { 0xC29, 0, (void*)0x080223E4 }, + { 0xC2A, 0, (void*)0x08022408 }, { 0xC2B, 0, (void*)0x08022470 }, { 0xC2C, 0, (void*)0x080224C4 }, + { 0xC2D, 0, (void*)0x0802255C }, { 0xC2E, 0, (void*)0x08022584 }, { 0xC2F, 0, (void*)0x080225AC }, + { 0xC30, 0, (void*)0x08022640 }, { 0xC31, 0, (void*)0x08022670 }, { 0xC32, 0, (void*)0x0802268C }, + { 0xC33, 0, (void*)0x080226A0 }, { 0xC34, 0, (void*)0x080226E0 }, { 0xC35, 0, (void*)0x08022738 }, + { 0xC36, 0, (void*)0x08022760 }, { 0xC37, 0, (void*)0x08022780 }, { 0xC38, 0, (void*)0x080227B8 }, + { 0xC39, 0, (void*)0x080227F0 }, { 0xC3A, 0, (void*)0x080228DC }, { 0xC3B, 0, (void*)0x08022954 }, + { 0xC3C, 0, (void*)0x08022AD4 }, { 0xC3D, 0, (void*)0x08022B48 }, { 0xC3E, 0, (void*)0x08022C14 }, + { 0xC3F, 0, (void*)0x08022C48 }, { 0xC40, 0, (void*)0x08022C78 }, { 0xC41, 0, (void*)0x08022CB0 }, + { 0xC42, 0, (void*)0x08022CFC }, { 0xC43, 0, (void*)0x08022D64 }, { 0xC44, 0, (void*)0x08022D84 }, + { 0xC45, 0, (void*)0x08022DEC }, { 0xC46, 0, (void*)0x08022EBC }, { 0xC47, 0, (void*)0x08022F9C }, + { 0xC48, 0, (void*)0x08023004 }, { 0xC49, 0, (void*)0x08023024 }, { 0xC4A, 0, (void*)0x080230B0 }, + { 0xC4B, 0, (void*)0x080230E0 }, { 0xC4C, 0, (void*)0x080231E4 }, { 0xC4D, 0, (void*)0x0802329C }, + { 0xC4E, 0, (void*)0x080232FC }, { 0xC4F, 0, (void*)0x08023360 }, { 0xC50, 0, (void*)0x080233BC }, + { 0xC51, 0, (void*)0x080233F4 }, { 0xC52, 0, (void*)0x0802352C }, { 0xC53, 0, (void*)0x08023550 }, + { 0xC54, 0, (void*)0x08023640 }, { 0xC55, 0, (void*)0x08023668 }, { 0xC56, 0, (void*)0x080236A4 }, + { 0xC57, 0, (void*)0x080236F4 }, { 0xC58, 0, (void*)0x08023788 }, { 0xC80, 0, (void*)0x080237C4 }, + { 0xC81, 0, (void*)0x08023824 }, { 0xC82, 0, (void*)0x080238F0 }, { 0xC83, 0, (void*)0x08023920 }, + { 0xC84, 0, (void*)0x080239E4 }, { 0xC85, 0, (void*)0x08023B24 }, { 0xC86, 0, (void*)0x08023B58 }, + { 0xC87, 0, (void*)0x08023C3C }, { 0xC88, 0, (void*)0x08023CF0 }, { 0xC89, 0, (void*)0x08023D44 }, + { 0xC8A, 0, (void*)0x08023D80 }, { 0xC8B, 0, (void*)0x08023DB0 }, { 0xC8C, 0, (void*)0x08023E0C }, + { 0xC8D, 0, (void*)0x08023E60 }, { 0xC8E, 0, (void*)0x08023E90 }, { 0xC8F, 0, (void*)0x08023F40 }, + { 0xC90, 0, (void*)0x08023FA0 }, { 0xC91, 0, (void*)0x0802400C }, { 0xC92, 0, (void*)0x08024058 }, + { 0xC93, 0, (void*)0x080240D0 }, { 0xC94, 0, (void*)0x0802410C }, { 0xCE4, 0, (void*)0x08024164 }, + { 0xCE5, 0, (void*)0x080241D4 }, { 0xCE6, 0, (void*)0x08024254 }, { 0xCE7, 0, (void*)0x08024304 }, + { 0xCE8, 0, (void*)0x08024330 }, { 0xCE9, 0, (void*)0x08024360 }, { 0xCEA, 0, (void*)0x0802444C }, + { 0xCEB, 0, (void*)0x08024470 }, { 0xCEC, 0, (void*)0x080244E8 }, { 0xCED, 0, (void*)0x08024548 }, + { 0xCEE, 0, (void*)0x08024634 }, { 0xCEF, 0, (void*)0x08024718 }, { 0xCF0, 0, (void*)0x0802476C }, + { 0xCF1, 0, (void*)0x080247F8 }, { 0xCF2, 0, (void*)0x0802483C }, { 0xCF3, 0, (void*)0x08024880 }, + { 0xCF4, 0, (void*)0x08024918 }, { 0xCF5, 0, (void*)0x08024994 }, { 0xCF6, 0, (void*)0x08024B58 }, + { 0xCF7, 0, (void*)0x08024BD8 }, { 0xCF8, 0, (void*)0x08024C84 }, { 0xCF9, 0, (void*)0x08024D10 }, + { 0xCFA, 0, (void*)0x08024D44 }, { 0xCFB, 0, (void*)0x08024D8C }, { 0xCFC, 0, (void*)0x08024DB8 }, + { 0xCFD, 0, (void*)0x08024DFC }, { 0xCFE, 0, (void*)0x08024E6C }, { 0xCFF, 0, (void*)0x08024EA4 }, + { 0xD00, 0, (void*)0x08024ED4 }, { 0xD01, 0, (void*)0x08024F4C }, { 0xD02, 0, (void*)0x08024F8C }, + { 0xD03, 0, (void*)0x08024FDC }, { 0xD04, 0, (void*)0x08025040 }, { 0xD05, 0, (void*)0x080250D8 }, + { 0xD06, 0, (void*)0x08025100 }, { 0xD07, 0, (void*)0x08025134 }, { 0xD08, 0, (void*)0x0802516C }, + { 0xD09, 0, (void*)0x080251B4 }, { 0xD0A, 0, (void*)0x080251E0 }, { 0xD0B, 0, (void*)0x08025260 }, + { 0xD0C, 0, (void*)0x080252AC }, { 0xD0D, 0, (void*)0x080252E4 }, { 0xD0E, 0, (void*)0x08025330 }, + { 0xD0F, 0, (void*)0x08025358 }, { 0xD10, 0, (void*)0x08025394 }, { 0xD11, 0, (void*)0x080253C8 }, + { 0xD12, 0, (void*)0x08025434 }, { 0xD13, 0, (void*)0x0802547C }, { 0xD14, 0, (void*)0x080254C0 }, + { 0xD15, 0, (void*)0x0802550C }, { 0xD16, 0, (void*)0x08025550 }, { 0xD17, 0, (void*)0x080255A4 }, + { 0xD18, 0, (void*)0x080255DC }, { 0xD19, 0, (void*)0x080255FC }, { 0xD1A, 0, (void*)0x0802563C }, + { 0xD1B, 0, (void*)0x080256C8 }, { 0xD1C, 0, (void*)0x08025708 }, { 0xD1D, 0, (void*)0x0802575C }, + { 0xD1E, 0, (void*)0x080257B8 }, { 0xD1F, 0, (void*)0x08025814 }, { 0xD20, 0, (void*)0x08025874 }, + { 0xD21, 0, (void*)0x080258EC }, { 0xD48, 0, (void*)0x08025960 }, { 0xD49, 0, (void*)0x0802597C }, + { 0xD4A, 0, (void*)0x080259B8 }, { 0xD4B, 0, (void*)0x080259F8 }, { 0xD4C, 0, (void*)0x08025A9C }, + { 0xD4D, 0, (void*)0x08025AF4 }, { 0xD4E, 0, (void*)0x08025B4C }, { 0xD4F, 0, (void*)0x08025B80 }, + { 0xD5E, 0, (void*)0x08025BBC }, { 0xD5F, 0, (void*)0x08025BD8 }, { 0xD60, 0, (void*)0x08025BFC }, + { 0xD61, 0, (void*)0x08025C3C }, { 0xD62, 0, (void*)0x08025C7C }, { 0xD63, 0, (void*)0x08025CE0 }, + { 0xD64, 0, (void*)0x08025D64 }, { 0xD65, 0, (void*)0x08025D90 }, { 0xD66, 0, (void*)0x08025DC0 }, + { 0xD67, 0, (void*)0x08025E34 }, { 0xD68, 0, (void*)0x08025E74 }, { 0xD69, 0, (void*)0x08025EB0 }, + { 0xD6A, 0, (void*)0x08025EE4 }, { 0xD6B, 0, (void*)0x08025F14 }, { 0xD6C, 0, (void*)0x08025F4C }, + { 0xD6D, 0, (void*)0x08025F9C }, { 0xD6E, 0, (void*)0x08025FEC }, { 0xD6F, 0, (void*)0x08026024 }, + { 0xD70, 0, (void*)0x08026064 }, { 0xD71, 0, (void*)0x080260D4 }, { 0xD72, 0, (void*)0x0802613C }, + { 0xD73, 0, (void*)0x08026190 }, { 0xD74, 0, (void*)0x080261E4 }, { 0xD75, 0, (void*)0x0802621C }, + { 0xD76, 0, (void*)0x0802626C }, { 0xD77, 0, (void*)0x08026354 }, { 0xD78, 0, (void*)0x0802637C }, + { 0xD79, 0, (void*)0x080263C8 }, { 0xD7A, 0, (void*)0x08026444 }, { 0xD7B, 0, (void*)0x08026490 }, + { 0xD7C, 0, (void*)0x080264EC }, { 0xD7D, 0, (void*)0x08026548 }, { 0xD7E, 0, (void*)0x08026598 }, + { 0xD7F, 0, (void*)0x080265C4 }, { 0xD80, 0, (void*)0x080265F8 }, { 0xD81, 0, (void*)0x08026628 }, + { 0xD82, 0, (void*)0x08026658 }, { 0xD83, 0, (void*)0x08026688 }, { 0xD84, 0, (void*)0x080266D0 }, + { 0xD85, 0, (void*)0x08026728 }, { 0xD86, 0, (void*)0x08026770 }, { 0xD87, 0, (void*)0x080267B4 }, + { 0xD88, 0, (void*)0x08026850 }, { 0xD89, 0, (void*)0x080268B0 }, { 0xD8A, 0, (void*)0x08026998 }, + { 0xD8B, 0, (void*)0x08026A5C }, { 0xDAC, 0, (void*)0x08026AA0 }, { 0xDAD, 0, (void*)0x08026AC8 }, + { 0xDAE, 0, (void*)0x08026B04 }, { 0xDAF, 0, (void*)0x08026B9C }, { 0xDB0, 0, (void*)0x08026BDC }, + { 0xDB1, 0, (void*)0x08026C6C }, { 0xDB2, 0, (void*)0x08026CD8 }, { 0xDB3, 0, (void*)0x08026D4C }, + { 0xDB4, 0, (void*)0x08026DB4 }, { 0xDB5, 0, (void*)0x08026E34 }, { 0xDB6, 0, (void*)0x08026EA4 }, + { 0xDB7, 0, (void*)0x08026EBC }, { 0xDB8, 0, (void*)0x08026EE8 }, { 0xDB9, 0, (void*)0x08026F28 }, + { 0xDBA, 0, (void*)0x08026F70 }, { 0xDBB, 0, (void*)0x08026FA0 }, { 0xDBC, 0, (void*)0x0802701C }, + { 0xDBD, 0, (void*)0x08027070 }, { 0xDBE, 0, (void*)0x08027088 }, { 0xDBF, 0, (void*)0x080270BC }, + { 0xDC0, 0, (void*)0x080270E0 }, { 0xDC1, 0, (void*)0x0802713C }, { 0xDC2, 0, (void*)0x08027194 }, + { 0xDC3, 0, (void*)0x08027220 }, { 0xDC4, 0, (void*)0x0802727C }, { 0xDC5, 0, (void*)0x08027300 }, + { 0xDC6, 0, (void*)0x08027334 }, { 0xDC7, 0, (void*)0x08027370 }, { 0xDC8, 0, (void*)0x08027394 }, + { 0xDC9, 0, (void*)0x080273A8 }, { 0xDCA, 0, (void*)0x080273D0 }, { 0xDCB, 0, (void*)0x08027414 }, + { 0xDCC, 0, (void*)0x0802744C }, { 0xDCD, 0, (void*)0x080274BC }, { 0xDCE, 0, (void*)0x08027500 }, + { 0xDCF, 0, (void*)0x080275D4 }, { 0xDD0, 0, (void*)0x0802762C }, { 0xDD1, 0, (void*)0x08027668 }, + { 0xDD2, 0, (void*)0x08027684 }, { 0xDD3, 0, (void*)0x080276D8 }, { 0xDD4, 0, (void*)0x08027710 }, + { 0xDD5, 0, (void*)0x0802773C }, { 0xDD6, 0, (void*)0x08027760 }, { 0xDD7, 0, (void*)0x08027798 }, + { 0xDD8, 0, (void*)0x080277C0 }, { 0xDD9, 0, (void*)0x08027824 }, { 0xDDA, 0, (void*)0x080278AC }, + { 0xDDB, 0, (void*)0x08027934 }, { 0xDDC, 0, (void*)0x08027984 }, { 0xDDD, 0, (void*)0x080279E8 }, + { 0xDDE, 0, (void*)0x08027A70 }, { 0xDDF, 0, (void*)0x08027AE8 }, { 0xDE0, 0, (void*)0x08027B28 }, + { 0xDE1, 0, (void*)0x08027B84 }, { 0xDE2, 0, (void*)0x08027BF4 }, { 0xDE3, 0, (void*)0x08027C40 }, + { 0xDE4, 0, (void*)0x08027C84 }, { 0xDE5, 0, (void*)0x08027CC8 }, { 0xDE6, 0, (void*)0x08027D3C }, + { 0xDE7, 0, (void*)0x08027D8C }, { 0xDE8, 0, (void*)0x08027DBC }, { 0xDE9, 0, (void*)0x08027DEC }, + { 0xDEA, 0, (void*)0x08027E78 }, { 0xDEB, 0, (void*)0x08027EBC }, { 0xDEC, 0, (void*)0x08027EE4 }, + { 0xDED, 0, (void*)0x08027F4C }, { 0xDEE, 0, (void*)0x08027F9C }, { 0xDEF, 0, (void*)0x0802800C }, + { 0xDF0, 0, (void*)0x08028058 }, { 0xDF1, 0, (void*)0x080280A4 }, { 0xDF2, 0, (void*)0x080280DC }, + { 0xDF3, 0, (void*)0x08028134 }, { 0xDF4, 0, (void*)0x080281B0 }, { 0xDF5, 0, (void*)0x080281E8 }, + { 0xDF6, 0, (void*)0x08028234 }, { 0xDF7, 0, (void*)0x08028264 }, { 0xDF8, 0, (void*)0x080282C0 }, + { 0xDF9, 0, (void*)0x080282F8 }, { 0xDFA, 0, (void*)0x08028378 }, { 0xDFB, 0, (void*)0x080283C4 }, + { 0xDFC, 0, (void*)0x080283FC }, { 0xDFD, 0, (void*)0x08028444 }, { 0xDFE, 0, (void*)0x08028478 }, + { 0xDFF, 0, (void*)0x080284BC }, { 0xE02, 0, (void*)0x080284F4 }, { 0xE03, 0, (void*)0x08028540 }, + { 0xE04, 0, (void*)0x08028588 }, { 0xE05, 0, (void*)0x080285C8 }, { 0xE06, 0, (void*)0x08028604 }, + { 0xE07, 0, (void*)0x08028620 }, { 0xE10, 0, (void*)0x08028670 }, { 0xE11, 0, (void*)0x080286AC }, + { 0xE12, 0, (void*)0x08028744 }, { 0xE13, 0, (void*)0x080287C4 }, { 0xE14, 0, (void*)0x0802885C }, + { 0xE15, 0, (void*)0x08028940 }, { 0xE16, 0, (void*)0x080289D4 }, { 0xE17, 0, (void*)0x08028A20 }, + { 0xE18, 0, (void*)0x08028A58 }, { 0xE19, 0, (void*)0x08028AA8 }, { 0xE1A, 0, (void*)0x08028B5C }, + { 0xE1B, 0, (void*)0x08028B8C }, { 0xE1C, 0, (void*)0x08028BF0 }, { 0xE1D, 0, (void*)0x08028C38 }, + { 0xE1E, 0, (void*)0x08028C98 }, { 0xE1F, 0, (void*)0x08028CBC }, { 0xE20, 0, (void*)0x08028D10 }, + { 0xE21, 0, (void*)0x08028D28 }, { 0xE22, 0, (void*)0x08028D68 }, { 0xE23, 0, (void*)0x08028DC8 }, + { 0xE24, 0, (void*)0x08028E24 }, { 0xE25, 0, (void*)0x08028E44 }, { 0xE26, 0, (void*)0x08028E88 }, + { 0xE27, 0, (void*)0x08028ED0 }, { 0xE28, 0, (void*)0x08028EEC }, { 0xE29, 0, (void*)0x08028F40 }, + { 0xE2A, 0, (void*)0x08028F9C }, { 0xE2B, 0, (void*)0x08029010 }, { 0xE2C, 0, (void*)0x08029078 }, + { 0xE2D, 0, (void*)0x08029104 }, { 0xE2E, 0, (void*)0x08029174 }, { 0xE2F, 0, (void*)0x080291D4 }, + { 0xE30, 0, (void*)0x08029238 }, { 0xE31, 0, (void*)0x080292B8 }, { 0xE32, 0, (void*)0x0802933C }, + { 0xE42, 0, (void*)0x0802939C }, { 0xE43, 0, (void*)0x080293FC }, { 0xE44, 0, (void*)0x08029428 }, + { 0xE45, 0, (void*)0x080294A8 }, { 0xE46, 0, (void*)0x08029500 }, { 0xE47, 0, (void*)0x080295A0 }, + { 0xE48, 0, (void*)0x080295C4 }, { 0xE49, 0, (void*)0x08029634 }, { 0xE4A, 0, (void*)0x0802969C }, + { 0xE4B, 0, (void*)0x08029704 }, { 0xE4C, 0, (void*)0x08029774 }, { 0xE4D, 0, (void*)0x080297D4 }, + { 0xE4E, 0, (void*)0x08029860 }, { 0xE4F, 0, (void*)0x080298C8 }, { 0xE50, 0, (void*)0x08029948 }, + { 0xE51, 0, (void*)0x080299D0 }, { 0xE52, 0, (void*)0x08029A30 }, { 0xE74, 0, (void*)0x08029AC0 }, + { 0xE75, 0, (void*)0x08029B20 }, { 0xE76, 0, (void*)0x08029B74 }, { 0xE77, 0, (void*)0x08029BD4 }, + { 0xE78, 0, (void*)0x08029C48 }, { 0xE79, 0, (void*)0x08029C9C }, { 0xE7A, 0, (void*)0x08029CB0 }, + { 0xE7B, 0, (void*)0x08029CCC }, { 0xE7C, 0, (void*)0x08029D58 }, { 0xE7D, 0, (void*)0x08029DAC }, + { 0xE7E, 0, (void*)0x08029DC0 }, { 0xE7F, 0, (void*)0x08029E10 }, { 0xE80, 0, (void*)0x08029E74 }, + { 0xE81, 0, (void*)0x08029ED4 }, { 0xE82, 0, (void*)0x08029F2C }, { 0xE83, 0, (void*)0x08029F54 }, + { 0xE84, 0, (void*)0x08029FCC }, { 0xE85, 0, (void*)0x0802A03C }, { 0xE86, 0, (void*)0x0802A090 }, + { 0xE87, 0, (void*)0x0802A0D8 }, { 0xE88, 0, (void*)0x0802A128 }, { 0xE89, 0, (void*)0x0802A1BC }, + { 0xE8A, 0, (void*)0x0802A1F4 }, { 0xE8B, 0, (void*)0x0802A260 }, { 0xE8C, 0, (void*)0x0802A2A4 }, + { 0xE8D, 0, (void*)0x0802A2F4 }, { 0xE8E, 0, (void*)0x0802A334 }, { 0xE8F, 0, (void*)0x0802A37C }, + { 0xE90, 0, (void*)0x0802A3DC }, { 0xE91, 0, (void*)0x0802A448 }, { 0xE92, 0, (void*)0x0802A47C }, + { 0xE93, 0, (void*)0x0802A4A8 }, { 0xE94, 0, (void*)0x0802A550 }, { 0xE95, 0, (void*)0x0802A5B0 }, + { 0xE97, 0, (void*)0x0802A608 }, { 0xE98, 0, (void*)0x0802A69C }, { 0xE99, 0, (void*)0x0802A6F0 }, + { 0xFA0, 0, (void*)0x0802A760 }, { 0xFA1, 0, (void*)0x0802A79C }, { 0xFA2, 0, (void*)0x0802A7F4 }, + { 0xFA3, 0, (void*)0x0802A84C }, { 0xFA4, 0, (void*)0x0802A8F4 }, { 0xFA5, 0, (void*)0x0802AA24 }, + { 0xFA6, 0, (void*)0x0802AAA0 }, { 0xFA7, 0, (void*)0x0802AB04 }, { 0xFA8, 0, (void*)0x0802ABA0 }, + { 0xFA9, 0, (void*)0x0802AC08 }, { 0xFAA, 0, (void*)0x0802ACA4 }, { 0xFAB, 0, (void*)0x0802AD1C }, + { 0xFAC, 0, (void*)0x0802AD8C }, { 0xFAD, 0, (void*)0x0802ADF4 }, { 0xFAE, 0, (void*)0x0802AE90 }, + { 0xFAF, 0, (void*)0x0802AF00 }, { 0xFB0, 0, (void*)0x0802AF70 }, { 0xFB1, 0, (void*)0x0802B018 }, + { 0xFB2, 0, (void*)0x0802B0B8 }, { 0xFB3, 0, (void*)0x0802B110 }, { 0xFB4, 0, (void*)0x0802B190 }, + { 0xFB5, 0, (void*)0x0802B24C }, { 0xFB6, 0, (void*)0x0802B288 }, { 0xFB7, 0, (void*)0x0802B2E4 }, + { 0xFB8, 0, (void*)0x0802B314 }, { 0xFB9, 0, (void*)0x0802B39C }, { 0xFBA, 0, (void*)0x0802B40C }, + { 0xFBB, 0, (void*)0x0802B488 }, { 0xFBC, 0, (void*)0x0802B4EC }, { 0xFBD, 0, (void*)0x0802B598 }, + { 0xFBE, 0, (void*)0x0802B650 }, { 0xFBF, 0, (void*)0x0802B6F8 }, { 0x1004, 0, (void*)0x0802B750 }, + { 0x1005, 0, (void*)0x0802B778 }, { 0x1006, 0, (void*)0x0802B7A0 }, { 0x1007, 0, (void*)0x0802B7C8 }, + { 0x1008, 0, (void*)0x0802B7EC }, { 0x1009, 0, (void*)0x0802B84C }, { 0x100A, 0, (void*)0x0802B890 }, + { 0x100B, 0, (void*)0x0802B8D8 }, { 0x100C, 0, (void*)0x0802B908 }, { 0x100D, 0, (void*)0x0802B97C }, + { 0x100E, 0, (void*)0x0802BA00 }, { 0x100F, 0, (void*)0x0802BA54 }, { 0x1010, 0, (void*)0x0802BAC0 }, + { 0x1011, 0, (void*)0x0802BB28 }, { 0x1012, 0, (void*)0x0802BB94 }, { 0x1013, 0, (void*)0x0802BC18 }, + { 0x1014, 0, (void*)0x0802BC44 }, { 0x1015, 0, (void*)0x0802BC88 }, { 0x1016, 0, (void*)0x0802BCE0 }, + { 0x1017, 0, (void*)0x0802BD24 }, { 0x1018, 0, (void*)0x0802BD8C }, { 0x1019, 0, (void*)0x0802BE18 }, + { 0x101A, 0, (void*)0x0802BE80 }, { 0x101B, 0, (void*)0x0802BF84 }, { 0x101C, 0, (void*)0x0802C048 }, + { 0x101D, 0, (void*)0x0802C064 }, { 0x101E, 0, (void*)0x0802C15C }, { 0x101F, 0, (void*)0x0802C284 }, + { 0x1020, 0, (void*)0x0802C3BC }, { 0x1021, 0, (void*)0x0802C3D4 }, { 0x1022, 0, (void*)0x0802C438 }, + { 0x1023, 0, (void*)0x0802C470 }, { 0x1024, 0, (void*)0x0802C494 }, { 0x1025, 0, (void*)0x0802C4C4 }, + { 0x1026, 0, (void*)0x0802C4F8 }, { 0x1027, 0, (void*)0x0802C564 }, { 0x1028, 0, (void*)0x0802C5F8 }, + { 0x1029, 0, (void*)0x0802C67C }, { 0x102A, 0, (void*)0x0802C6DC }, { 0x102B, 0, (void*)0x0802C73C }, + { 0x102C, 0, (void*)0x0802C798 }, { 0x102D, 0, (void*)0x0802C824 }, { 0x102E, 0, (void*)0x0802C87C }, + { 0x102F, 0, (void*)0x0802C8B8 }, { 0x1030, 0, (void*)0x0802C928 }, { 0x1031, 0, (void*)0x0802CA60 }, + { 0x1032, 0, (void*)0x0802CAB4 }, { 0x1033, 0, (void*)0x0802CB00 }, { 0x1034, 0, (void*)0x0802CB3C }, + { 0x1035, 0, (void*)0x0802CB94 }, { 0x1036, 0, (void*)0x0802CBF0 }, { 0x1037, 0, (void*)0x0802CC28 }, + { 0x1038, 0, (void*)0x0802CC80 }, { 0x1039, 0, (void*)0x0802CCE0 }, { 0x103A, 0, (void*)0x0802CD30 }, + { 0x103B, 0, (void*)0x0802CD64 }, { 0x103C, 0, (void*)0x0802CDDC }, { 0x1068, 0, (void*)0x0802CE10 }, + { 0x1069, 0, (void*)0x0802CE64 }, { 0x106A, 0, (void*)0x0802CF30 }, { 0x106B, 0, (void*)0x0802CF90 }, + { 0x106C, 0, (void*)0x0802CFD4 }, { 0x106D, 0, (void*)0x0802D07C }, { 0x106E, 0, (void*)0x0802D0C0 }, + { 0x106F, 0, (void*)0x0802D110 }, { 0x1070, 0, (void*)0x0802D178 }, { 0x1071, 0, (void*)0x0802D1C4 }, + { 0x1072, 0, (void*)0x0802D234 }, { 0x1073, 0, (void*)0x0802D27C }, { 0x1074, 0, (void*)0x0802D2BC }, + { 0x1075, 0, (void*)0x0802D314 }, { 0x1076, 0, (void*)0x0802D354 }, { 0x1077, 0, (void*)0x0802D3AC }, + { 0x1078, 0, (void*)0x0802D3F0 }, { 0x1079, 0, (void*)0x0802D434 }, { 0x107A, 0, (void*)0x0802D4AC }, + { 0x107B, 0, (void*)0x0802D4EC }, { 0x107C, 0, (void*)0x0802D554 }, { 0x107D, 0, (void*)0x0802D5A8 }, + { 0x107E, 0, (void*)0x0802D5FC }, { 0x107F, 0, (void*)0x0802D69C }, { 0x1080, 0, (void*)0x0802D6E8 }, + { 0x1081, 0, (void*)0x0802D744 }, { 0x1082, 0, (void*)0x0802D7A4 }, { 0x1083, 0, (void*)0x0802D7EC }, + { 0x1084, 0, (void*)0x0802D82C }, { 0x1085, 0, (void*)0x0802D8B0 }, { 0x1086, 0, (void*)0x0802D8F0 }, + { 0x1087, 0, (void*)0x0802D954 }, { 0x1088, 0, (void*)0x0802D9DC }, { 0x1089, 0, (void*)0x0802DA24 }, + { 0x108A, 0, (void*)0x0802DA8C }, { 0x108B, 0, (void*)0x0802DACC }, { 0x108C, 0, (void*)0x0802DB30 }, + { 0x108D, 0, (void*)0x0802DBA0 }, { 0x108E, 0, (void*)0x0802DBF4 }, { 0x108F, 0, (void*)0x0802DC28 }, + { 0x1090, 0, (void*)0x0802DC94 }, { 0x1091, 0, (void*)0x0802DCFC }, { 0x1092, 0, (void*)0x0802DDC0 }, + { 0x1093, 0, (void*)0x0802DE18 }, { 0x1094, 0, (void*)0x0802DEA0 }, { 0x1095, 0, (void*)0x0802DF10 }, + { 0x1096, 0, (void*)0x0802DF78 }, { 0x1097, 0, (void*)0x0802DFE0 }, { 0x1098, 0, (void*)0x0802E024 }, + { 0x1099, 0, (void*)0x0802E088 }, { 0x109A, 0, (void*)0x0802E170 }, { 0x109B, 0, (void*)0x0802E1F8 }, + { 0x109C, 0, (void*)0x0802E240 }, { 0x109D, 0, (void*)0x0802E290 }, { 0x109E, 0, (void*)0x0802E2D8 }, + { 0x109F, 0, (void*)0x0802E308 }, { 0x10A0, 0, (void*)0x0802E364 }, { 0x10A1, 0, (void*)0x0802E3B8 }, + { 0x10A2, 0, (void*)0x0802E3DC }, { 0x10A3, 0, (void*)0x0802E480 }, { 0x10A4, 0, (void*)0x0802E4D4 }, + { 0x10A5, 0, (void*)0x0802E53C }, { 0x10A6, 0, (void*)0x0802E624 }, { 0x10A7, 0, (void*)0x0802E68C }, + { 0x10A8, 0, (void*)0x0802E738 }, { 0x10A9, 0, (void*)0x0802E78C }, { 0x10CE, 0, (void*)0x0802E830 }, + { 0x10CF, 0, (void*)0x0802E878 }, { 0x10D0, 0, (void*)0x0802E8CC }, { 0x10D1, 0, (void*)0x0802E90C }, + { 0x10D2, 0, (void*)0x0802E970 }, { 0x10D3, 0, (void*)0x0802E9A4 }, { 0x10D4, 0, (void*)0x0802E9D0 }, + { 0x10D6, 0, (void*)0x0802EA7C }, { 0x10D7, 0, (void*)0x0802EB50 }, { 0x10D8, 0, (void*)0x0802EB6C }, + { 0x10D9, 0, (void*)0x0802EBA0 }, { 0x10DA, 0, (void*)0x0802EBC8 }, { 0x10DB, 0, (void*)0x0802EC10 }, + { 0x10DC, 0, (void*)0x0802EC40 }, { 0x10DD, 0, (void*)0x0802EC6C }, { 0x10DE, 0, (void*)0x0802ECA8 }, + { 0x10DF, 0, (void*)0x0802ECD8 }, { 0x10E0, 0, (void*)0x0802ED14 }, { 0x10E1, 0, (void*)0x0802ED40 }, + { 0x10E2, 0, (void*)0x0802ED68 }, { 0x10E3, 0, (void*)0x0802EDA0 }, { 0x10E4, 0, (void*)0x0802EE18 }, + { 0x10E5, 0, (void*)0x0802EE44 }, { 0x10E6, 0, (void*)0x0802EEB0 }, { 0x10E7, 0, (void*)0x0802EEE8 }, + { 0x10E8, 0, (void*)0x0802EF24 }, { 0x10E9, 0, (void*)0x0802EF84 }, { 0x10EA, 0, (void*)0x0802EFCC }, + { 0x10EB, 0, (void*)0x0802EFF8 }, { 0x10EC, 0, (void*)0x0802F030 }, { 0x10ED, 0, (void*)0x0802F078 }, + { 0x10EE, 0, (void*)0x0802F0B4 }, { 0x10EF, 0, (void*)0x0802F0E0 }, { 0x10F0, 0, (void*)0x0802F110 }, + { 0x10F1, 0, (void*)0x0802F14C }, { 0x10F2, 0, (void*)0x0802F184 }, { 0x10F3, 0, (void*)0x0802F1A8 }, + { 0x10F4, 0, (void*)0x0802F1D4 }, { 0x10F5, 0, (void*)0x0802F204 }, { 0x10F6, 0, (void*)0x0802F258 }, + { 0x10F7, 0, (void*)0x0802F28C }, { 0x10F8, 0, (void*)0x0802F2D4 }, { 0x10F9, 0, (void*)0x0802F30C }, + { 0x10FA, 0, (void*)0x0802F334 }, { 0x10FB, 0, (void*)0x0802F3A8 }, { 0x10FC, 0, (void*)0x0802F3D8 }, + { 0x10FD, 0, (void*)0x0802F408 }, { 0x10FE, 0, (void*)0x0802F44C }, { 0x10FF, 0, (void*)0x0802F484 }, + { 0x1100, 0, (void*)0x0802F4CC }, { 0x1101, 0, (void*)0x0802F500 }, { 0x1102, 0, (void*)0x0802F590 }, + { 0x1103, 0, (void*)0x0802F5CC }, { 0x1104, 0, (void*)0x0802F604 }, { 0x1105, 0, (void*)0x0802F660 }, + { 0x1106, 0, (void*)0x0802F694 }, { 0x1107, 0, (void*)0x0802F6B8 }, { 0x1108, 0, (void*)0x0802F730 }, + { 0x1109, 0, (void*)0x0802F7B4 }, { 0x1130, 0, (void*)0x0802F7D8 }, { 0x1131, 0, (void*)0x0802F7F4 }, + { 0x1132, 0, (void*)0x0802F82C }, { 0x1133, 0, (void*)0x0802F8C0 }, { 0x1134, 0, (void*)0x0802F8E8 }, + { 0x1135, 0, (void*)0x0802F8F4 }, { 0x1136, 0, (void*)0x0802F900 }, { 0x1137, 0, (void*)0x0802F960 }, + { 0x1138, 0, (void*)0x0802F9D0 }, { 0x1139, 0, (void*)0x0802FA70 }, { 0x113A, 0, (void*)0x0802FB2C }, + { 0x113B, 0, (void*)0x0802FB64 }, { 0x113C, 0, (void*)0x0802FBF4 }, { 0x113D, 0, (void*)0x0802FC4C }, + { 0x113E, 0, (void*)0x0802FCA0 }, { 0x113F, 0, (void*)0x0802FD10 }, { 0x1140, 0, (void*)0x0802FDA8 }, + { 0x1141, 0, (void*)0x0802FE38 }, { 0x1142, 0, (void*)0x0802FE7C }, { 0x1143, 0, (void*)0x0802FEBC }, + { 0x1144, 0, (void*)0x0802FEF8 }, { 0x1145, 0, (void*)0x0802FF58 }, { 0x1146, 0, (void*)0x0802FFB4 }, + { 0x1147, 0, (void*)0x08030004 }, { 0x1148, 0, (void*)0x08030018 }, { 0x1149, 0, (void*)0x080300B8 }, + { 0x114A, 0, (void*)0x08030114 }, { 0x114B, 0, (void*)0x08030170 }, { 0x114C, 0, (void*)0x080301CC }, + { 0x114D, 0, (void*)0x08030228 }, { 0x114E, 0, (void*)0x08030284 }, { 0x114F, 0, (void*)0x080302E0 }, + { 0x1150, 0, (void*)0x08030318 }, { 0x1151, 0, (void*)0x080303C8 }, { 0x1152, 0, (void*)0x080303DC }, + { 0x1194, 0, (void*)0x08030438 }, { 0x1195, 0, (void*)0x08030458 }, { 0x1196, 0, (void*)0x080304AC }, + { 0x1197, 0, (void*)0x080304E0 }, { 0x1198, 0, (void*)0x08030578 }, { 0x1199, 0, (void*)0x080305E4 }, + { 0x119A, 0, (void*)0x080305FC }, { 0x119B, 0, (void*)0x08030638 }, { 0x119C, 0, (void*)0x080306D0 }, + { 0x119D, 0, (void*)0x08030748 }, { 0x119E, 0, (void*)0x08030770 }, { 0x119F, 0, (void*)0x08030784 }, + { 0x11A0, 0, (void*)0x080307EC }, { 0x11A1, 0, (void*)0x08030828 }, { 0x11A2, 0, (void*)0x080308E0 }, + { 0x11A3, 0, (void*)0x08030918 }, { 0x11A4, 0, (void*)0x08030934 }, { 0x11A5, 0, (void*)0x08030948 }, + { 0x11A6, 0, (void*)0x080309BC }, { 0x11A7, 0, (void*)0x080309E8 }, { 0x11A8, 0, (void*)0x08030A38 }, + { 0x11A9, 0, (void*)0x08030A60 }, { 0x11AA, 0, (void*)0x08030AA0 }, { 0x11AB, 0, (void*)0x08030ADC }, + { 0x11AC, 0, (void*)0x08030B10 }, { 0x11AD, 0, (void*)0x08030B40 }, { 0x11AE, 0, (void*)0x08030B80 }, + { 0x11AF, 0, (void*)0x08030BB4 }, { 0x11F8, 0, (void*)0x08030BFC }, { 0x11F9, 0, (void*)0x08030C64 }, + { 0x11FA, 0, (void*)0x08030CA0 }, { 0x11FB, 0, (void*)0x08030D28 }, { 0x11FC, 0, (void*)0x08030D58 }, + { 0x11FD, 0, (void*)0x08030E14 }, { 0x11FE, 0, (void*)0x08030E94 }, { 0x11FF, 0, (void*)0x08030F2C }, + { 0x1200, 0, (void*)0x08030F6C }, { 0x1201, 0, (void*)0x08031004 }, { 0x1202, 0, (void*)0x08031038 }, + { 0x1203, 0, (void*)0x080310A4 }, { 0x1204, 0, (void*)0x08031110 }, { 0x1205, 0, (void*)0x08031154 }, + { 0x1206, 0, (void*)0x080311EC }, { 0x1207, 0, (void*)0x08031230 }, { 0x1208, 0, (void*)0x08031290 }, + { 0x1209, 0, (void*)0x080312C4 }, { 0x120A, 0, (void*)0x08031304 }, { 0x120B, 0, (void*)0x08031320 }, + { 0x120C, 0, (void*)0x08031348 }, { 0x120D, 0, (void*)0x08031390 }, { 0x120E, 0, (void*)0x080313DC }, + { 0x120F, 0, (void*)0x08031470 }, { 0x1210, 0, (void*)0x08031498 }, { 0x1211, 0, (void*)0x08031520 }, + { 0x1212, 0, (void*)0x08031580 }, { 0x1213, 0, (void*)0x080315A8 }, { 0x1214, 0, (void*)0x08031644 }, + { 0x1215, 0, (void*)0x080316AC }, { 0x1216, 0, (void*)0x08031708 }, { 0x1217, 0, (void*)0x0803176C }, + { 0x1218, 0, (void*)0x080317BC }, { 0x1219, 0, (void*)0x080317E8 }, { 0x121A, 0, (void*)0x08031834 }, + { 0x121B, 0, (void*)0x080318B8 }, { 0x121C, 0, (void*)0x08031900 }, { 0x121D, 0, (void*)0x08031930 }, + { 0x121E, 0, (void*)0x08031984 }, { 0x121F, 0, (void*)0x080319C8 }, { 0x1220, 0, (void*)0x08031A08 }, + { 0x1221, 0, (void*)0x08031A7C }, { 0x1222, 0, (void*)0x08031AFC }, { 0x1223, 0, (void*)0x08031B68 }, + { 0x1224, 0, (void*)0x08031BC0 }, { 0x1225, 0, (void*)0x08031C10 }, { 0x1226, 0, (void*)0x08031CD4 }, + { 0x1227, 0, (void*)0x08031D38 }, { 0x1228, 0, (void*)0x08031DC0 }, { 0x1229, 0, (void*)0x08031E00 }, + { 0x122A, 0, (void*)0x08031E54 }, { 0x122B, 0, (void*)0x08031E80 }, { 0x122C, 0, (void*)0x08031EF8 }, + { 0x122D, 0, (void*)0x08031F1C }, { 0x122E, 0, (void*)0x08031FA4 }, { 0x122F, 0, (void*)0x0803202C }, + { 0x1230, 0, (void*)0x08032050 }, { 0x1231, 0, (void*)0x0803210C }, { 0x1232, 0, (void*)0x08032148 }, + { 0x1233, 0, (void*)0x080321B4 }, { 0x1234, 0, (void*)0x08032200 }, { 0x1235, 0, (void*)0x08032250 }, + { 0x1236, 0, (void*)0x080322C4 }, { 0x1237, 0, (void*)0x08032330 }, { 0x1238, 0, (void*)0x08032364 }, + { 0x1239, 0, (void*)0x08032414 }, { 0x123A, 0, (void*)0x08032464 }, { 0x123B, 0, (void*)0x08032504 }, + { 0x123C, 0, (void*)0x08032550 }, { 0x123D, 0, (void*)0x080325A4 }, { 0x123E, 0, (void*)0x08032638 }, + { 0x123F, 0, (void*)0x08032698 }, { 0x1240, 0, (void*)0x080326FC }, { 0x1241, 0, (void*)0x080327D4 }, + { 0x1242, 0, (void*)0x0803284C }, { 0x1243, 0, (void*)0x08032904 }, { 0x1244, 0, (void*)0x08032964 }, + { 0x1245, 0, (void*)0x080329B8 }, { 0x1246, 0, (void*)0x080329E4 }, { 0x1247, 0, (void*)0x08032A54 }, + { 0x1248, 0, (void*)0x08032AC0 }, { 0x1249, 0, (void*)0x08032B08 }, { 0x124A, 0, (void*)0x08032B68 }, + { 0x124B, 0, (void*)0x08032BC4 }, { 0x124C, 0, (void*)0x08032BE0 }, { 0x124D, 0, (void*)0x08032C24 }, + { 0x124E, 0, (void*)0x08032C68 }, { 0x124F, 0, (void*)0x08032CD8 }, { 0x1250, 0, (void*)0x08032D1C }, + { 0x1251, 0, (void*)0x08032D6C }, { 0x1252, 0, (void*)0x08032DE4 }, { 0x1253, 0, (void*)0x08032E0C }, + { 0x1254, 0, (void*)0x08032E60 }, { 0x1255, 0, (void*)0x08032EC4 }, { 0x1256, 0, (void*)0x08032F38 }, + { 0x1257, 0, (void*)0x08032F7C }, { 0x1258, 0, (void*)0x08032FF4 }, { 0x1259, 0, (void*)0x08033030 }, + { 0x125A, 0, (void*)0x080330BC }, { 0x125B, 0, (void*)0x080330F8 }, { 0x125C, 0, (void*)0x0803319C }, + { 0x125D, 0, (void*)0x08033224 }, { 0x125E, 0, (void*)0x080332D0 }, { 0x125F, 0, (void*)0x08033358 }, + { 0x1260, 0, (void*)0x080333CC }, { 0x1261, 0, (void*)0x08033410 }, { 0x1262, 0, (void*)0x08033450 }, + { 0x1263, 0, (void*)0x080334BC }, { 0x1264, 0, (void*)0x080334F4 }, { 0x1265, 0, (void*)0x0803353C }, + { 0x1266, 0, (void*)0x08033588 }, { 0x1267, 0, (void*)0x080335F4 }, { 0x1268, 0, (void*)0x08033678 }, + { 0x1269, 0, (void*)0x0803370C }, { 0x126A, 0, (void*)0x08033778 }, { 0x126B, 0, (void*)0x080337CC }, + { 0x126C, 0, (void*)0x08033830 }, { 0x126D, 0, (void*)0x080338B0 }, { 0x126E, 0, (void*)0x08033934 }, + { 0x126F, 0, (void*)0x0803397C }, { 0x1270, 0, (void*)0x080339F0 }, { 0x1271, 0, (void*)0x08033A14 }, + { 0x1272, 0, (void*)0x08033A44 }, { 0x1273, 0, (void*)0x08033A88 }, { 0x1274, 0, (void*)0x08033AE0 }, + { 0x1275, 0, (void*)0x08033B74 }, { 0x1276, 0, (void*)0x08033BC0 }, { 0x1277, 0, (void*)0x08033C24 }, + { 0x1278, 0, (void*)0x08033CA0 }, { 0x1279, 0, (void*)0x08033D10 }, { 0x127A, 0, (void*)0x08033D80 }, + { 0x127B, 0, (void*)0x08033DB4 }, { 0x127C, 0, (void*)0x08033E18 }, { 0x127D, 0, (void*)0x08033E68 }, + { 0x127E, 0, (void*)0x08033EB4 }, { 0x127F, 0, (void*)0x08033F04 }, { 0x1280, 0, (void*)0x08033F58 }, + { 0x1281, 0, (void*)0x08033FB8 }, { 0x1282, 0, (void*)0x08034014 }, { 0x1283, 0, (void*)0x08034044 }, + { 0x1284, 0, (void*)0x0803409C }, { 0x1285, 0, (void*)0x080340EC }, { 0x1286, 0, (void*)0x08034140 }, + { 0x1287, 0, (void*)0x080341A0 }, { 0x1288, 0, (void*)0x08034204 }, { 0x1289, 0, (void*)0x08034248 }, + { 0x128A, 0, (void*)0x080342A8 }, { 0x128B, 0, (void*)0x080342E0 }, { 0x128C, 0, (void*)0x08034314 }, + { 0x128D, 0, (void*)0x08034340 }, { 0x128E, 0, (void*)0x08034368 }, { 0x128F, 0, (void*)0x080343C8 }, + { 0x1290, 0, (void*)0x0803445C }, { 0x1291, 0, (void*)0x080344E8 }, { 0x1292, 0, (void*)0x08034528 }, + { 0x1293, 0, (void*)0x08034538 }, { 0x1294, 0, (void*)0x08034578 }, { 0x1295, 0, (void*)0x080345C4 }, + { 0x1296, 0, (void*)0x08034618 }, { 0x1297, 0, (void*)0x08034680 }, { 0x1298, 0, (void*)0x080346AC }, + { 0x1299, 0, (void*)0x08034728 }, { 0x129A, 0, (void*)0x0803479C }, { 0x129B, 0, (void*)0x08034808 }, + { 0x129C, 0, (void*)0x08034854 }, { 0x129D, 0, (void*)0x08034888 }, { 0x129E, 0, (void*)0x080348B4 }, + { 0x129F, 0, (void*)0x080348FC }, { 0x12A0, 0, (void*)0x08034938 }, { 0x12A1, 0, (void*)0x08034984 }, + { 0x12A2, 0, (void*)0x080349C4 }, { 0x12A3, 0, (void*)0x08034A24 }, { 0x12A4, 0, (void*)0x08034A80 }, + { 0x12A5, 0, (void*)0x08034AF0 }, { 0x12A6, 0, (void*)0x08034B40 }, { 0x12A7, 0, (void*)0x08034B74 }, + { 0x12A8, 0, (void*)0x08034BCC }, { 0x12A9, 0, (void*)0x08034C2C }, { 0x12AA, 0, (void*)0x08034CA0 }, + { 0x12AB, 0, (void*)0x08034CDC }, { 0x12AC, 0, (void*)0x08034D50 }, { 0x12AD, 0, (void*)0x08034D9C }, + { 0x12AE, 0, (void*)0x08034E10 }, { 0x12AF, 0, (void*)0x08034E40 }, { 0x12B0, 0, (void*)0x08034E70 }, + { 0x12B1, 0, (void*)0x08034EDC }, { 0x12B2, 0, (void*)0x08034F28 }, { 0x12B3, 0, (void*)0x08034F74 }, + { 0x12B4, 0, (void*)0x08034FA0 }, { 0x12B5, 0, (void*)0x08034FF4 }, { 0x12B6, 0, (void*)0x08035018 }, + { 0x12B7, 0, (void*)0x0803504C }, { 0x12B8, 0, (void*)0x08035078 }, { 0x12B9, 0, (void*)0x080350C0 }, + { 0x12BA, 0, (void*)0x080350F0 }, { 0x12BB, 0, (void*)0x08035134 }, { 0x12BC, 0, (void*)0x0803516C }, + { 0x12BD, 0, (void*)0x080351D0 }, { 0x12BE, 0, (void*)0x0803521C }, { 0x12BF, 0, (void*)0x08035288 }, + { 0x12C0, 0, (void*)0x08035308 }, { 0x12C1, 0, (void*)0x0803534C }, { 0x12C2, 0, (void*)0x0803539C }, + { 0x12C3, 0, (void*)0x080353CC }, { 0x12C4, 0, (void*)0x08035410 }, { 0x12C5, 0, (void*)0x08035470 }, + { 0x12C6, 0, (void*)0x080354B8 }, { 0x12C7, 0, (void*)0x08035520 }, { 0x12C8, 0, (void*)0x08035560 }, + { 0x12C9, 0, (void*)0x08035604 }, { 0x12CA, 0, (void*)0x0803566C }, { 0x12CB, 0, (void*)0x080356A4 }, + { 0x12CC, 0, (void*)0x080356E4 }, { 0x12CD, 0, (void*)0x0803577C }, { 0x12CE, 0, (void*)0x080357EC }, + { 0x12CF, 0, (void*)0x0803581C }, { 0x12D0, 0, (void*)0x08035848 }, { 0x12D1, 0, (void*)0x08035888 }, + { 0x12D2, 0, (void*)0x080358D0 }, { 0x12D3, 0, (void*)0x080358E8 }, { 0x12D4, 0, (void*)0x0803590C }, + { 0x12D5, 0, (void*)0x0803592C }, { 0x12D6, 0, (void*)0x0803596C }, { 0x12D7, 0, (void*)0x080359C4 }, + { 0x12D8, 0, (void*)0x08035A10 }, { 0x12D9, 0, (void*)0x08035A80 }, { 0x12DA, 0, (void*)0x08035ADC }, + { 0x12DB, 0, (void*)0x08035B48 }, { 0x12DC, 0, (void*)0x08035BB8 }, { 0x12DD, 0, (void*)0x08035BF8 }, + { 0x12DE, 0, (void*)0x08035C74 }, { 0x12DF, 0, (void*)0x08035CB0 }, { 0x12E0, 0, (void*)0x08035D10 }, + { 0x12E3, 0, (void*)0x08035D4C }, { 0x12E4, 0, (void*)0x08035D70 }, { 0x12E5, 0, (void*)0x08035DAC }, + { 0x12E6, 0, (void*)0x08035DD8 }, { 0x12E7, 0, (void*)0x08035DF4 }, { 0x12E8, 0, (void*)0x08035E0C }, + { 0x12E9, 0, (void*)0x08035E58 }, { 0x12EA, 0, (void*)0x08035ED4 }, { 0x12EB, 0, (void*)0x08035F44 }, + { 0x12EC, 0, (void*)0x08036074 }, { 0x12ED, 0, (void*)0x080360BC }, { 0x12EE, 0, (void*)0x08036104 }, + { 0x12EF, 0, (void*)0x0803613C }, { 0x12F0, 0, (void*)0x080361A0 }, { 0x12F1, 0, (void*)0x080361F0 }, + { 0x12F2, 0, (void*)0x08036248 }, { 0x12F3, 0, (void*)0x08036260 }, { 0x12F4, 0, (void*)0x080362A0 }, + { 0x12F5, 0, (void*)0x08036300 }, { 0x12F6, 0, (void*)0x08036324 }, { 0x12F7, 0, (void*)0x080363A0 }, + { 0x12F8, 0, (void*)0x0803640C }, { 0x12F9, 0, (void*)0x08036474 }, { 0x12FA, 0, (void*)0x080364CC }, + { 0x12FB, 0, (void*)0x08036508 }, { 0x12FC, 0, (void*)0x0803655C }, { 0x12FD, 0, (void*)0x08036578 }, + { 0x12FE, 0, (void*)0x080365D4 }, { 0x12FF, 0, (void*)0x080365F8 }, { 0x1300, 0, (void*)0x08036654 }, + { 0x1301, 0, (void*)0x080366A4 }, { 0x1302, 0, (void*)0x080366F0 }, { 0x1303, 0, (void*)0x08036738 }, + { 0x1304, 0, (void*)0x08036770 }, { 0x1305, 0, (void*)0x080367AC }, { 0x1306, 0, (void*)0x080367F0 }, + { 0x1307, 0, (void*)0x08036830 }, { 0x1308, 0, (void*)0x08036850 }, { 0x1309, 0, (void*)0x0803688C }, + { 0x130A, 0, (void*)0x080368F0 }, { 0x130B, 0, (void*)0x08036924 }, { 0x130C, 0, (void*)0x0803695C }, + { 0x130D, 0, (void*)0x080369A8 }, { 0x130E, 0, (void*)0x080369FC }, { 0x130F, 0, (void*)0x08036A40 }, + { 0x1310, 0, (void*)0x08036A74 }, { 0x1311, 0, (void*)0x08036AB8 }, { 0x1312, 0, (void*)0x08036B14 }, + { 0x1313, 0, (void*)0x08036B4C }, { 0x1314, 0, (void*)0x08036BAC }, { 0x1315, 0, (void*)0x08036C0C }, + { 0x1316, 0, (void*)0x08036C64 }, { 0x1317, 0, (void*)0x08036CBC }, { 0x1318, 0, (void*)0x08036D1C }, + { 0x1319, 0, (void*)0x08036D80 }, { 0x131A, 0, (void*)0x08036DC4 }, { 0x131B, 0, (void*)0x08036E0C }, + { 0x131C, 0, (void*)0x08036E8C }, { 0x131D, 0, (void*)0x08036F14 }, { 0x1388, 0, (void*)0x08036F8C }, + { 0x1389, 0, (void*)0x08036FB4 }, { 0x138A, 0, (void*)0x08036FF8 }, { 0x138B, 0, (void*)0x08037034 }, + { 0x138C, 0, (void*)0x08037060 }, { 0x138D, 0, (void*)0x0803709C }, { 0x138E, 0, (void*)0x0803711C }, + { 0x138F, 0, (void*)0x08037140 }, { 0x1390, 0, (void*)0x08037178 }, { 0x1391, 0, (void*)0x080371AC }, + { 0x1392, 0, (void*)0x08037204 }, { 0x1393, 0, (void*)0x08037234 }, { 0x1394, 0, (void*)0x08037288 }, + { 0x1395, 0, (void*)0x080372BC }, { 0x1396, 0, (void*)0x080372F0 }, { 0x1397, 0, (void*)0x08037310 }, + { 0x1398, 0, (void*)0x08037338 }, { 0x1399, 0, (void*)0x080373C4 }, { 0x139A, 0, (void*)0x08037438 }, + { 0x139B, 0, (void*)0x080374A0 }, { 0x139C, 0, (void*)0x0803751C }, { 0x139D, 0, (void*)0x0803758C }, + { 0x139E, 0, (void*)0x08037620 }, { 0x139F, 0, (void*)0x08037704 }, { 0x13A0, 0, (void*)0x08037764 }, + { 0x13A1, 0, (void*)0x080377F4 }, { 0x13A2, 0, (void*)0x08037838 }, { 0x13A3, 0, (void*)0x08037894 }, + { 0x13A4, 0, (void*)0x08037918 }, { 0x13A5, 0, (void*)0x08037974 }, { 0x13A6, 0, (void*)0x080379CC }, + { 0x13A7, 0, (void*)0x08037A68 }, { 0x13A8, 0, (void*)0x08037ACC }, { 0x13AE, 0, (void*)0x08037B5C }, + { 0x13AF, 0, (void*)0x08037BF8 }, { 0x13B0, 0, (void*)0x08037CE0 }, { 0x13B1, 0, (void*)0x08037D2C }, + { 0x13B2, 0, (void*)0x08037D54 }, { 0x13B3, 0, (void*)0x08037D74 }, { 0x13EC, 0, (void*)0x08037DB8 }, + { 0x13ED, 0, (void*)0x08037DCC }, { 0x13EE, 0, (void*)0x08037E30 }, { 0x13EF, 0, (void*)0x08037EB4 }, + { 0x13F0, 0, (void*)0x08037EF4 }, { 0x13F1, 0, (void*)0x08037F34 }, { 0x13F2, 0, (void*)0x08037F74 }, + { 0x13F3, 0, (void*)0x08037F8C }, { 0x13F4, 0, (void*)0x08037FA4 }, { 0x13F5, 0, (void*)0x08037FC8 }, + { 0x13F6, 0, (void*)0x08037FF8 }, { 0x13F7, 0, (void*)0x0803800C }, { 0x13F8, 0, (void*)0x0803803C }, + { 0x13F9, 0, (void*)0x08038084 }, { 0x13FA, 0, (void*)0x080380C8 }, { 0x13FB, 0, (void*)0x08038108 }, + { 0x13FC, 0, (void*)0x080381A4 }, { 0x13FD, 0, (void*)0x080381FC }, { 0x13FE, 0, (void*)0x08038254 }, + { 0x13FF, 0, (void*)0x080382D8 }, { 0x1400, 0, (void*)0x080383A8 }, { 0x1401, 0, (void*)0x08038504 }, + { 0x1402, 0, (void*)0x080385A8 }, { 0x1403, 0, (void*)0x08038630 }, { 0x1404, 0, (void*)0x0803868C }, + { 0x1405, 0, (void*)0x080386C4 }, { 0x1406, 0, (void*)0x08038728 }, { 0x1407, 0, (void*)0x08038824 }, + { 0x1408, 0, (void*)0x08038844 }, { 0x1409, 0, (void*)0x080388F4 }, { 0x140A, 0, (void*)0x08038984 }, + { 0x140B, 0, (void*)0x080389D0 }, { 0x140C, 0, (void*)0x08038A3C }, { 0x140D, 0, (void*)0x08038A88 }, + { 0x140E, 0, (void*)0x08038AE8 }, { 0x140F, 0, (void*)0x08038B20 }, { 0x1410, 0, (void*)0x08038B60 }, + { 0x1411, 0, (void*)0x08038BBC }, { 0x1412, 0, (void*)0x08038BF4 }, { 0x1413, 0, (void*)0x08038C34 }, + { 0x1414, 0, (void*)0x08038CC0 }, { 0x1450, 0, (void*)0x08038D04 }, { 0x1451, 0, (void*)0x08038EC4 }, + { 0x1452, 0, (void*)0x08038EF8 }, { 0x1453, 0, (void*)0x08038F10 }, { 0x1454, 0, (void*)0x08038F50 }, + { 0x1455, 0, (void*)0x08038F9C }, { 0x1456, 0, (void*)0x08038FE4 }, { 0x1457, 0, (void*)0x08039064 }, + { 0x1458, 0, (void*)0x080390A8 }, { 0x1459, 0, (void*)0x080390D4 }, { 0x145A, 0, (void*)0x08039128 }, + { 0x145B, 0, (void*)0x08039198 }, { 0x145C, 0, (void*)0x080391C4 }, { 0x145D, 0, (void*)0x080391D8 }, + { 0x145E, 0, (void*)0x08039204 }, { 0x145F, 0, (void*)0x080392B0 }, { 0x1460, 0, (void*)0x08039360 }, + { 0x1461, 0, (void*)0x080393A8 }, { 0x1462, 0, (void*)0x080393BC }, { 0x1463, 0, (void*)0x080393EC }, + { 0x1464, 0, (void*)0x0803940C }, { 0x1465, 0, (void*)0x0803942C }, { 0x1466, 0, (void*)0x08039454 }, + { 0x1467, 0, (void*)0x0803948C }, { 0x1468, 0, (void*)0x080394E8 }, { 0x1469, 0, (void*)0x08039548 }, + { 0x146A, 0, (void*)0x080395A8 }, { 0x146B, 0, (void*)0x08039638 }, { 0x146C, 0, (void*)0x08039700 }, + { 0x146D, 0, (void*)0x08039738 }, { 0x146E, 0, (void*)0x08039758 }, { 0x146F, 0, (void*)0x080397D8 }, + { 0x1470, 0, (void*)0x08039858 }, { 0x1471, 0, (void*)0x08039880 }, { 0x1472, 0, (void*)0x080398B8 }, + { 0x1473, 0, (void*)0x08039924 }, { 0x1474, 0, (void*)0x08039950 }, { 0x1475, 0, (void*)0x08039A64 }, + { 0x1476, 0, (void*)0x08039AE8 }, { 0x1477, 0, (void*)0x08039B4C }, { 0x1478, 0, (void*)0x08039B70 }, + { 0x1479, 0, (void*)0x08039B98 }, { 0x147A, 0, (void*)0x08039BCC }, { 0x147B, 0, (void*)0x08039C00 }, + { 0x147C, 0, (void*)0x08039D6C }, { 0x147D, 0, (void*)0x08039E18 }, { 0x14B4, 0, (void*)0x08039E78 }, + { 0x14B5, 0, (void*)0x08039EA8 }, { 0x14B6, 0, (void*)0x08039EF8 }, { 0x14B7, 0, (void*)0x08039F64 }, + { 0x14B8, 0, (void*)0x08039F90 }, { 0x14B9, 0, (void*)0x08039FE4 }, { 0x14BA, 0, (void*)0x0803A044 }, + { 0x14BB, 0, (void*)0x0803A090 }, { 0x14BC, 0, (void*)0x0803A110 }, { 0x14BD, 0, (void*)0x0803A138 }, + { 0x14BE, 0, (void*)0x0803A1B8 }, { 0x14BF, 0, (void*)0x0803A208 }, { 0x14C0, 0, (void*)0x0803A25C }, + { 0x14C1, 0, (void*)0x0803A29C }, { 0x14C2, 0, (void*)0x0803A2E8 }, { 0x14C3, 0, (void*)0x0803A384 }, + { 0x14C4, 0, (void*)0x0803A3FC }, { 0x14C5, 0, (void*)0x0803A458 }, { 0x14C6, 0, (void*)0x0803A514 }, + { 0x14C7, 0, (void*)0x0803A540 }, { 0x14C8, 0, (void*)0x0803A570 }, { 0x14C9, 0, (void*)0x0803A5E4 }, + { 0x14CA, 0, (void*)0x0803A614 }, { 0x14CB, 0, (void*)0x0803A684 }, { 0x14CC, 0, (void*)0x0803A700 }, + { 0x14CD, 0, (void*)0x0803A79C }, { 0x14CE, 0, (void*)0x0803A7B8 }, { 0x14CF, 0, (void*)0x0803A880 }, + { 0x14D0, 0, (void*)0x0803A8AC }, { 0x14D1, 0, (void*)0x0803A96C }, { 0x14D2, 0, (void*)0x0803AA08 }, + { 0x14D3, 0, (void*)0x0803AA80 }, { 0x14D4, 0, (void*)0x0803AB40 }, { 0x14D5, 0, (void*)0x0803AB80 }, + { 0x14D6, 0, (void*)0x0803ABC0 }, { 0x14D7, 0, (void*)0x0803AC30 }, { 0x14D8, 0, (void*)0x0803AC78 }, + { 0x14D9, 0, (void*)0x0803ACEC }, { 0x14DA, 0, (void*)0x0803AD64 }, { 0x14DB, 0, (void*)0x0803AD8C }, + { 0x14DC, 0, (void*)0x0803ADB8 }, { 0x14DD, 0, (void*)0x0803ADEC }, { 0x14DE, 0, (void*)0x0803AE40 }, + { 0x14DF, 0, (void*)0x0803AEAC }, { 0x14E0, 0, (void*)0x0803AEFC }, { 0x14E1, 0, (void*)0x0803AF58 }, + { 0x14E2, 0, (void*)0x0803AFDC }, { 0x14E3, 0, (void*)0x0803B018 }, { 0x14E4, 0, (void*)0x0803B044 }, + { 0x14E5, 0, (void*)0x0803B07C }, { 0x14E6, 0, (void*)0x0803B100 }, { 0x14E7, 0, (void*)0x0803B13C }, + { 0x14E8, 0, (void*)0x0803B19C }, { 0x14E9, 0, (void*)0x0803B220 }, { 0x14EA, 0, (void*)0x0803B2A0 }, + { 0x14EB, 0, (void*)0x0803B358 }, { 0x14EC, 0, (void*)0x0803B398 }, { 0x14ED, 0, (void*)0x0803B40C }, + { 0x14EE, 0, (void*)0x0803B518 }, { 0x14EF, 0, (void*)0x0803B5F8 }, { 0x14F0, 0, (void*)0x0803B63C }, + { 0x14F1, 0, (void*)0x0803B6A8 }, { 0x14F2, 0, (void*)0x0803B734 }, { 0x14F3, 0, (void*)0x0803B7B8 }, + { 0x14F4, 0, (void*)0x0803B834 }, { 0x14F5, 0, (void*)0x0803B910 }, { 0x14F6, 0, (void*)0x0803B984 }, + { 0x14F7, 0, (void*)0x0803B9F0 }, { 0x14F8, 0, (void*)0x0803BA80 }, { 0x14F9, 0, (void*)0x0803BAB8 }, + { 0x14FA, 0, (void*)0x0803BAF8 }, { 0x14FB, 0, (void*)0x0803BB60 }, { 0x14FC, 0, (void*)0x0803BB8C }, + { 0x1518, 0, (void*)0x0803BBFC }, { 0x1519, 0, (void*)0x0803BC5C }, { 0x151A, 0, (void*)0x0803BCB0 }, + { 0x151B, 0, (void*)0x0803BCC8 }, { 0x151C, 0, (void*)0x0803BCF8 }, { 0x151D, 0, (void*)0x0803BD44 }, + { 0x151E, 0, (void*)0x0803BDB8 }, { 0x151F, 0, (void*)0x0803BDFC }, { 0x1520, 0, (void*)0x0803BE9C }, + { 0x1521, 0, (void*)0x0803BF18 }, { 0x1522, 0, (void*)0x0803BF64 }, { 0x1523, 0, (void*)0x0803BF8C }, + { 0x1524, 0, (void*)0x0803BFA4 }, { 0x1525, 0, (void*)0x0803BFD8 }, { 0x1526, 0, (void*)0x0803BFF8 }, + { 0x1527, 0, (void*)0x0803C014 }, { 0x1528, 0, (void*)0x0803C068 }, { 0x1529, 0, (void*)0x0803C0EC }, + { 0x152A, 0, (void*)0x0803C174 }, { 0x152B, 0, (void*)0x0803C1CC }, { 0x152C, 0, (void*)0x0803C22C }, + { 0x152D, 0, (void*)0x0803C290 }, { 0x152E, 0, (void*)0x0803C314 }, { 0x152F, 0, (void*)0x0803C398 }, + { 0x1530, 0, (void*)0x0803C3F0 }, { 0x1531, 0, (void*)0x0803C454 }, { 0x1532, 0, (void*)0x0803C4DC }, + { 0x1533, 0, (void*)0x0803C518 }, { 0x1534, 0, (void*)0x0803C564 }, { 0x1535, 0, (void*)0x0803C5A4 }, + { 0x1536, 0, (void*)0x0803C5E4 }, { 0x1537, 0, (void*)0x0803C644 }, { 0x1538, 0, (void*)0x0803C6C8 }, + { 0x1539, 0, (void*)0x0803C744 }, { 0x153A, 0, (void*)0x0803C7E0 }, { 0x153B, 0, (void*)0x0803C80C }, + { 0x153C, 0, (void*)0x0803C84C }, { 0x153D, 0, (void*)0x0803C884 }, { 0x153E, 0, (void*)0x0803C89C }, + { 0x153F, 0, (void*)0x0803C8DC }, { 0x1540, 0, (void*)0x0803C908 }, { 0x1541, 0, (void*)0x0803C944 }, + { 0x1542, 0, (void*)0x0803C9A0 }, { 0x157C, 0, (void*)0x0803C9BC }, { 0x157D, 0, (void*)0x0803C9D4 }, + { 0x157E, 0, (void*)0x0803CA30 }, { 0x157F, 0, (void*)0x0803CA70 }, { 0x1580, 0, (void*)0x0803CAA0 }, + { 0x1581, 0, (void*)0x0803CAEC }, { 0x1582, 0, (void*)0x0803CB04 }, { 0x1583, 0, (void*)0x0803CB18 }, + { 0x1584, 0, (void*)0x0803CB30 }, { 0x1585, 0, (void*)0x0803CB64 }, { 0x1586, 0, (void*)0x0803CBD8 }, + { 0x1587, 0, (void*)0x0803CBF4 }, { 0x1588, 0, (void*)0x0803CC34 }, { 0x1589, 0, (void*)0x0803CC78 }, + { 0x158A, 0, (void*)0x0803CD14 }, { 0x158B, 0, (void*)0x0803CDA0 }, { 0x158C, 0, (void*)0x0803CDE0 }, + { 0x158D, 0, (void*)0x0803CE3C }, { 0x158E, 0, (void*)0x0803CEA8 }, { 0x158F, 0, (void*)0x0803CEE8 }, + { 0x1590, 0, (void*)0x0803CF30 }, { 0x1591, 0, (void*)0x0803CFA4 }, { 0x1592, 0, (void*)0x0803D050 }, + { 0x1593, 0, (void*)0x0803D0C8 }, { 0x1594, 0, (void*)0x0803D118 }, { 0x1595, 0, (void*)0x0803D168 }, + { 0x1596, 0, (void*)0x0803D1A8 }, { 0x1597, 0, (void*)0x0803D1F0 }, { 0x1598, 0, (void*)0x0803D228 }, + { 0x1599, 0, (void*)0x0803D290 }, { 0x159A, 0, (void*)0x0803D2FC }, { 0x159B, 0, (void*)0x0803D368 }, + { 0x159C, 0, (void*)0x0803D448 }, { 0x159D, 0, (void*)0x0803D4C0 }, { 0x159E, 0, (void*)0x0803D500 }, + { 0x159F, 0, (void*)0x0803D558 }, { 0x15A0, 0, (void*)0x0803D5B4 }, { 0x15A1, 0, (void*)0x0803D628 }, + { 0x15A2, 0, (void*)0x0803D730 }, { 0x15A3, 0, (void*)0x0803D798 }, { 0x15A4, 0, (void*)0x0803D818 }, + { 0x15A5, 0, (void*)0x0803D868 }, { 0x15A6, 0, (void*)0x0803D8C4 }, { 0x15A7, 0, (void*)0x0803D9AC }, + { 0x15A8, 0, (void*)0x0803D9FC }, { 0x15E0, 0, (void*)0x0803DA3C }, { 0x15E1, 0, (void*)0x0803DA80 }, + { 0x15E2, 0, (void*)0x0803DB14 }, { 0x15E3, 0, (void*)0x0803DB9C }, { 0x15E4, 0, (void*)0x0803DC1C }, + { 0x15E5, 0, (void*)0x0803DC70 }, { 0x15E6, 0, (void*)0x0803DCA8 }, { 0x15E7, 0, (void*)0x0803DCF8 }, + { 0x15E8, 0, (void*)0x0803DD5C }, { 0x15E9, 0, (void*)0x0803DE00 }, { 0x15EA, 0, (void*)0x0803DE5C }, + { 0x15EB, 0, (void*)0x0803DE84 }, { 0x15EC, 0, (void*)0x0803DED0 }, { 0x15ED, 0, (void*)0x0803DF34 }, + { 0x15EE, 0, (void*)0x0803DF64 }, { 0x15EF, 0, (void*)0x0803DF9C }, { 0x15F0, 0, (void*)0x0803DFBC }, + { 0x15F1, 0, (void*)0x0803E018 }, { 0x15F2, 0, (void*)0x0803E0B8 }, { 0x15F3, 0, (void*)0x0803E124 }, + { 0x15F4, 0, (void*)0x0803E178 }, { 0x15F5, 0, (void*)0x0803E1E0 }, { 0x15F6, 0, (void*)0x0803E298 }, + { 0x15F7, 0, (void*)0x0803E310 }, { 0x15F8, 0, (void*)0x0803E36C }, { 0x15F9, 0, (void*)0x0803E3D0 }, + { 0x15FA, 0, (void*)0x0803E420 }, { 0x15FB, 0, (void*)0x0803E454 }, { 0x15FC, 0, (void*)0x0803E488 }, + { 0x15FD, 0, (void*)0x0803E4E8 }, { 0x15FE, 0, (void*)0x0803E59C }, { 0x15FF, 0, (void*)0x0803E620 }, + { 0x1600, 0, (void*)0x0803E66C }, { 0x1601, 0, (void*)0x0803E70C }, { 0x1602, 0, (void*)0x0803E74C }, + { 0x1603, 0, (void*)0x0803E7A4 }, { 0x1604, 0, (void*)0x0803E7DC }, { 0x1605, 0, (void*)0x0803E804 }, + { 0x1606, 0, (void*)0x0803E864 }, { 0x1607, 0, (void*)0x0803E8E8 }, { 0x1608, 0, (void*)0x0803E930 }, + { 0x1609, 0, (void*)0x0803E9E4 }, { 0x160A, 0, (void*)0x0803EA4C }, { 0x160B, 0, (void*)0x0803EAB0 }, + { 0x160C, 0, (void*)0x0803EB18 }, { 0x160D, 0, (void*)0x0803EB58 }, { 0x160E, 0, (void*)0x0803EBA8 }, + { 0x160F, 0, (void*)0x0803EBFC }, { 0x1610, 0, (void*)0x0803EC9C }, { 0x1611, 0, (void*)0x0803ED14 }, + { 0x1612, 0, (void*)0x0803EE08 }, { 0x1613, 0, (void*)0x0803EE48 }, { 0x1614, 0, (void*)0x0803EEB0 }, + { 0x1615, 0, (void*)0x0803EEF0 }, { 0x1616, 0, (void*)0x0803EFAC }, { 0x1617, 0, (void*)0x0803F004 }, + { 0x1618, 0, (void*)0x0803F04C }, { 0x1619, 0, (void*)0x0803F078 }, { 0x161A, 0, (void*)0x0803F0E0 }, + { 0x161B, 0, (void*)0x0803F110 }, { 0x161C, 0, (void*)0x0803F15C }, { 0x161D, 0, (void*)0x0803F1EC }, + { 0x161E, 0, (void*)0x0803F264 }, { 0x161F, 0, (void*)0x0803F2CC }, { 0x1620, 0, (void*)0x0803F344 }, + { 0x1621, 0, (void*)0x0803F3A8 }, { 0x1622, 0, (void*)0x0803F3F4 }, { 0x1623, 0, (void*)0x0803F46C }, + { 0x1624, 0, (void*)0x0803F4AC }, { 0x1625, 0, (void*)0x0803F500 }, { 0x1626, 0, (void*)0x0803F608 }, + { 0x1627, 0, (void*)0x0803F66C }, { 0x1628, 0, (void*)0x0803F6E8 }, { 0x1629, 0, (void*)0x0803F718 }, + { 0x162A, 0, (void*)0x0803F760 }, { 0x162B, 0, (void*)0x0803F7C0 }, { 0x162C, 0, (void*)0x0803F87C }, + { 0x162D, 0, (void*)0x0803F8A8 }, { 0x162E, 0, (void*)0x0803F8EC }, { 0x162F, 0, (void*)0x0803F94C }, + { 0x1630, 0, (void*)0x0803F978 }, { 0x1631, 0, (void*)0x0803F9DC }, { 0x1632, 0, (void*)0x0803FA3C }, + { 0x1633, 0, (void*)0x0803FA78 }, { 0x1634, 0, (void*)0x0803FAC4 }, { 0x1635, 0, (void*)0x0803FB0C }, + { 0x1636, 0, (void*)0x0803FB5C }, { 0x1637, 0, (void*)0x0803FBCC }, { 0x1638, 0, (void*)0x0803FC50 }, + { 0x1644, 0, (void*)0x0803FC6C }, { 0x1645, 0, (void*)0x0803FD0C }, { 0x1646, 0, (void*)0x0803FD5C }, + { 0x1647, 0, (void*)0x0803FDC0 }, { 0x1648, 0, (void*)0x0803FE08 }, { 0x1649, 0, (void*)0x0803FE54 }, + { 0x164A, 0, (void*)0x0803FEB4 }, { 0x164B, 0, (void*)0x0803FF88 }, { 0x164C, 0, (void*)0x0803FFF4 }, + { 0x164D, 0, (void*)0x08040064 }, { 0x164E, 0, (void*)0x080400BC }, { 0x164F, 0, (void*)0x0804010C }, + { 0x1650, 0, (void*)0x08040174 }, { 0x1651, 0, (void*)0x0804019C }, { 0x1652, 0, (void*)0x08040208 }, + { 0x1653, 0, (void*)0x08040250 }, { 0x1654, 0, (void*)0x080402B0 }, { 0x1655, 0, (void*)0x080402CC }, + { 0x1656, 0, (void*)0x0804032C }, { 0x1657, 0, (void*)0x0804035C }, { 0x1658, 0, (void*)0x080403C0 }, + { 0x1659, 0, (void*)0x08040494 }, { 0x165A, 0, (void*)0x08040530 }, { 0x165B, 0, (void*)0x0804054C }, + { 0x165C, 0, (void*)0x080405AC }, { 0x165D, 0, (void*)0x080405E0 }, { 0x165E, 0, (void*)0x08040624 }, + { 0x165F, 0, (void*)0x0804070C }, { 0x1660, 0, (void*)0x08040798 }, { 0x1661, 0, (void*)0x080407C0 }, + { 0x1700, 0, (void*)0x08040848 }, { 0x1701, 0, (void*)0x080408E4 }, { 0x1702, 0, (void*)0x0804092C }, + { 0x1703, 0, (void*)0x08040988 }, { 0x1704, 0, (void*)0x080409D4 }, { 0x1705, 0, (void*)0x08040A28 }, + { 0x1706, 0, (void*)0x08040ABC }, { 0x1707, 0, (void*)0x08040B0C }, { 0x1708, 0, (void*)0x08040B50 }, + { 0x1709, 0, (void*)0x08040BA4 }, { 0x170A, 0, (void*)0x08040C18 }, { 0x170B, 0, (void*)0x08040C60 }, + { 0x170C, 0, (void*)0x08040C6C }, { 0x170D, 0, (void*)0x08040CC8 }, { 0x170E, 0, (void*)0x08040D38 }, + { 0x170F, 0, (void*)0x08040DBC }, { 0x1710, 0, (void*)0x08040E0C }, { 0x1711, 0, (void*)0x08040E84 }, + { 0x1712, 0, (void*)0x08040E90 }, { 0x1713, 0, (void*)0x08040EE8 }, { 0x1714, 0, (void*)0x08040F30 }, + { 0x1715, 0, (void*)0x08040F78 }, { 0x1716, 0, (void*)0x08040FD0 }, { 0x1717, 0, (void*)0x08041050 }, + { 0x1718, 0, (void*)0x08041084 }, { 0x1719, 0, (void*)0x080410E8 }, { 0x171A, 0, (void*)0x08041128 }, + { 0x171B, 0, (void*)0x08041170 }, { 0x171C, 0, (void*)0x080411BC }, { 0x171D, 0, (void*)0x080411C8 }, + { 0x171E, 0, (void*)0x0804122C }, { 0x171F, 0, (void*)0x0804125C }, { 0x1720, 0, (void*)0x080412A8 }, + { 0x1721, 0, (void*)0x080412E8 }, { 0x1722, 0, (void*)0x0804132C }, { 0x1723, 0, (void*)0x08041378 }, + { 0x1724, 0, (void*)0x080413C0 }, { 0x1725, 0, (void*)0x08041414 }, { 0x1726, 0, (void*)0x08041470 }, + { 0x1727, 0, (void*)0x0804147C }, { 0x1728, 0, (void*)0x08041488 }, { 0x1729, 0, (void*)0x080414D0 }, + { 0x172A, 0, (void*)0x08041530 }, { 0x172B, 0, (void*)0x08041588 }, { 0x172C, 0, (void*)0x080415E4 }, + { 0x172D, 0, (void*)0x08041640 }, { 0x172E, 0, (void*)0x08041698 }, { 0x172F, 0, (void*)0x080416FC }, + { 0x1730, 0, (void*)0x08041740 }, { 0x1731, 0, (void*)0x08041794 }, { 0x1732, 0, (void*)0x080417A0 }, + { 0x1733, 0, (void*)0x080417F4 }, { 0x1734, 0, (void*)0x08041848 }, { 0x1735, 0, (void*)0x0804189C }, + { 0x1736, 0, (void*)0x08041900 }, { 0x1737, 0, (void*)0x08041958 }, { 0x1738, 0, (void*)0x080419A8 }, + { 0x1739, 0, (void*)0x080419F4 }, { 0x173A, 0, (void*)0x08041A54 }, { 0x173B, 0, (void*)0x08041AA0 }, + { 0x173C, 0, (void*)0x08041AF8 }, { 0x173D, 0, (void*)0x08041B54 }, { 0x173E, 0, (void*)0x08041BA4 }, + { 0x173F, 0, (void*)0x08041BF4 }, { 0x1740, 0, (void*)0x08041C48 }, { 0x1741, 0, (void*)0x08041CAC }, + { 0x1742, 0, (void*)0x08041D08 }, { 0x1743, 0, (void*)0x08041D68 }, { 0x1744, 0, (void*)0x08041DB4 }, + { 0x1745, 0, (void*)0x08041DF8 }, { 0x1746, 0, (void*)0x08041E54 }, { 0x1747, 0, (void*)0x08041EB0 }, + { 0x1748, 0, (void*)0x08041F2C }, { 0x1749, 0, (void*)0x08041F78 }, { 0x1784, 0, (void*)0x08041FD0 }, + { 0x1785, 0, (void*)0x0804202C }, { 0x1786, 0, (void*)0x08042088 }, { 0x1787, 0, (void*)0x080420E4 }, + { 0x1788, 0, (void*)0x080420F0 }, { 0x1789, 0, (void*)0x0804214C }, { 0x178A, 0, (void*)0x080421B0 }, + { 0x178B, 0, (void*)0x080421F4 }, { 0x178C, 0, (void*)0x0804223C }, { 0x178D, 0, (void*)0x08042288 }, + { 0x178E, 0, (void*)0x080422CC }, { 0x178F, 0, (void*)0x08042314 }, { 0x1798, 0, (void*)0x08042360 }, + { 0x1799, 0, (void*)0x080423AC }, { 0x179A, 0, (void*)0x080423F4 }, { 0x179B, 0, (void*)0x08042440 }, + { 0x17AA, 0, (void*)0x08042490 }, { 0x17AC, 0, (void*)0x08042514 }, { 0x17AD, 0, (void*)0x08042568 }, + { 0x17AE, 0, (void*)0x080425C0 }, { 0x17AF, 0, (void*)0x0804262C }, { 0x1800, 0, (void*)0x080426AC }, + { 0x1801, 0, (void*)0x080426CC }, { 0x1802, 0, (void*)0x0804272C }, { 0x1803, 0, (void*)0x08042754 }, + { 0x1804, 0, (void*)0x08042784 }, { 0x1805, 0, (void*)0x080427E0 }, { 0x1806, 0, (void*)0x08042834 }, + { 0x1807, 0, (void*)0x08042870 }, { 0x1808, 0, (void*)0x080428D0 }, { 0x1809, 0, (void*)0x08042910 }, + { 0x180A, 0, (void*)0x0804293C }, { 0x180B, 0, (void*)0x08042968 }, { 0x180C, 0, (void*)0x08042990 }, + { 0x180D, 0, (void*)0x080429AC }, { 0x180E, 0, (void*)0x08042A04 }, { 0x180F, 0, (void*)0x08042A50 }, + { 0x1810, 0, (void*)0x08042A80 }, { 0x1811, 0, (void*)0x08042AB4 }, { 0x1812, 0, (void*)0x08042AF8 }, + { 0x1813, 0, (void*)0x08042B38 }, { 0x1814, 0, (void*)0x08042B6C }, { 0x1815, 0, (void*)0x08042BAC }, + { 0x1816, 0, (void*)0x08042C04 }, { 0x1817, 0, (void*)0x08042C4C }, { 0x1818, 0, (void*)0x08042C8C }, + { 0x1819, 0, (void*)0x08042CB8 }, { 0x181A, 0, (void*)0x08042CEC }, { 0x181B, 0, (void*)0x08042D28 }, + { 0x181C, 0, (void*)0x08042D34 }, { 0x181D, 0, (void*)0x08042D94 }, { 0x181E, 0, (void*)0x08042DD8 }, + { 0x181F, 0, (void*)0x08042DF0 }, { 0x1820, 0, (void*)0x08042E40 }, { 0x1821, 0, (void*)0x08042E7C }, + { 0x1822, 0, (void*)0x08042EB0 }, { 0x1823, 0, (void*)0x08042EE8 }, { 0x1824, 0, (void*)0x08042F20 }, + { 0x1883, 0, (void*)0x08042F2C }, { 0x1884, 0, (void*)0x08042F60 }, { 0x1885, 0, (void*)0x08042F9C }, + { 0x1886, 0, (void*)0x08043008 }, { 0x1887, 0, (void*)0x08043054 }, { 0x1888, 0, (void*)0x08043094 }, + { 0x1889, 0, (void*)0x080430E4 }, { 0x188A, 0, (void*)0x08043134 }, { 0x188B, 0, (void*)0x08043150 }, + { 0x188C, 0, (void*)0x0804318C }, { 0x188D, 0, (void*)0x080431E8 }, { 0x188E, 0, (void*)0x08043224 }, + { 0x188F, 0, (void*)0x0804326C }, { 0x1890, 0, (void*)0x08043298 }, { 0x1891, 0, (void*)0x080432D8 }, + { 0x1892, 0, (void*)0x0804332C }, { 0x1893, 0, (void*)0x08043378 }, { 0x1901, 0, (void*)0x080433B4 }, + { 0x1902, 0, (void*)0x0804341C }, { 0x1903, 0, (void*)0x08043484 }, { 0x1904, 0, (void*)0x08043508 }, + { 0x1905, 0, (void*)0x08043580 }, { 0x1906, 0, (void*)0x08043610 }, { 0x1907, 0, (void*)0x0804367C }, + { 0x1908, 0, (void*)0x08043710 }, { 0x1909, 0, (void*)0x08043784 }, { 0x190A, 0, (void*)0x0804380C }, + { 0x190B, 0, (void*)0x08043880 }, { 0x190C, 0, (void*)0x080438E8 }, { 0x190D, 0, (void*)0x08043948 }, + { 0x190E, 0, (void*)0x080439C4 }, { 0x190F, 0, (void*)0x08043A20 }, { 0x1910, 0, (void*)0x08043AA0 }, + { 0x1911, 0, (void*)0x08043B24 }, { 0x1912, 0, (void*)0x08043BA8 }, { 0x1913, 0, (void*)0x08043C30 }, + { 0x1914, 0, (void*)0x08043C9C }, { 0x1915, 0, (void*)0x08043CEC }, { 0x1916, 0, (void*)0x08043D50 }, + { 0x1917, 0, (void*)0x08043DD8 }, { 0x1918, 0, (void*)0x08043E40 }, { 0x1919, 0, (void*)0x08043EB0 }, + { 0x191A, 0, (void*)0x08043F24 }, { 0x191B, 0, (void*)0x08043FB0 }, { 0x191C, 0, (void*)0x0804401C }, + { 0x191D, 0, (void*)0x08044098 }, { 0x191E, 0, (void*)0x0804411C }, { 0x191F, 0, (void*)0x08044184 }, + { 0x1921, 0, (void*)0x080441E8 }, { 0x1922, 0, (void*)0x08044258 }, { 0x1923, 0, (void*)0x080442D4 }, + { 0x1924, 0, (void*)0x08044348 }, { 0x1925, 0, (void*)0x080443D0 }, { 0x1926, 0, (void*)0x08044458 }, + { 0x1927, 0, (void*)0x080444DC }, { 0x1928, 0, (void*)0x08044574 }, { 0x1929, 0, (void*)0x080445CC }, + { 0x192A, 0, (void*)0x08044630 }, { 0x192C, 0, (void*)0x080446AC }, { 0x192D, 0, (void*)0x0804471C }, + { 0x192E, 0, (void*)0x08044780 }, { 0x1930, 0, (void*)0x08044808 }, { 0x1931, 0, (void*)0x08044898 }, + { 0x1932, 0, (void*)0x08044910 }, { 0x1933, 0, (void*)0x0804498C }, { 0x1934, 0, (void*)0x08044A04 }, + { 0x1935, 0, (void*)0x08044A94 }, { 0x1937, 0, (void*)0x08044B10 }, { 0x1939, 0, (void*)0x08044B9C }, + { 0x193A, 0, (void*)0x08044C0C }, { 0x193B, 0, (void*)0x08044C18 }, { 0x193C, 0, (void*)0x08044C8C }, + { 0x1942, 0, (void*)0x08044D04 }, { 0x1944, 0, (void*)0x08044D6C }, { 0x1945, 0, (void*)0x08044DCC }, + { 0x1946, 0, (void*)0x08044E48 }, { 0x1947, 0, (void*)0x08044EAC }, { 0x1948, 0, (void*)0x08044F20 }, + { 0x1949, 0, (void*)0x08044F88 }, { 0x194A, 0, (void*)0x08045004 }, { 0x194B, 0, (void*)0x08045084 }, + { 0x194C, 0, (void*)0x080450F4 }, { 0x194D, 0, (void*)0x08045174 }, { 0x1950, 0, (void*)0x080451C8 }, + { 0x1951, 0, (void*)0x08045238 }, { 0x1952, 0, (void*)0x080452A0 }, { 0x1953, 0, (void*)0x08045310 }, + { 0x1954, 0, (void*)0x08045378 }, { 0x1955, 0, (void*)0x080453E8 }, { 0x1956, 0, (void*)0x08045458 }, + { 0x1957, 0, (void*)0x080454CC }, { 0x1958, 0, (void*)0x08045540 }, { 0x1959, 0, (void*)0x080455C4 }, + { 0x195A, 0, (void*)0x0804564C }, { 0x195B, 0, (void*)0x080456AC }, { 0x195C, 0, (void*)0x08045704 }, + { 0x195D, 0, (void*)0x0804576C }, { 0x195E, 0, (void*)0x080457E8 }, { 0x195F, 0, (void*)0x08045838 }, + { 0x1960, 0, (void*)0x0804589C }, { 0x1961, 0, (void*)0x08045918 }, { 0x1962, 0, (void*)0x08045988 }, + { 0x1963, 0, (void*)0x080459E4 }, { 0x1964, 0, (void*)0x08045A24 }, { 0x1B58, 0, (void*)0x08045ACC }, + { 0x1B59, 0, (void*)0x08045ADC }, { 0x1B5A, 0, (void*)0x08045B00 }, { 0x1B5B, 0, (void*)0x08045B20 }, + { 0x1B5C, 0, (void*)0x08045B2C }, { 0x1B5D, 0, (void*)0x08045B58 }, { 0x1B5E, 0, (void*)0x08045B7C }, + { 0x1B5F, 0, (void*)0x08045BAC }, { 0x1B60, 0, (void*)0x08045BD8 }, { 0x1B61, 0, (void*)0x08045BFC }, + { 0x1B62, 0, (void*)0x08045C18 }, { 0x1B63, 0, (void*)0x08045C3C }, { 0x1B64, 0, (void*)0x08045C60 }, + { 0x1B65, 0, (void*)0x08045C90 }, { 0x1B66, 0, (void*)0x08045CC0 }, { 0x1B67, 0, (void*)0x08045CEC }, + { 0x1B6A, 0, (void*)0x08045CF8 }, { 0x1B6B, 0, (void*)0x08045D28 }, { 0x1B72, 0, (void*)0x08045D58 }, + { 0x1B73, 0, (void*)0x08045D8C }, { 0x1B74, 0, (void*)0x08045DB8 }, { 0x1B75, 0, (void*)0x08045DEC }, + { 0x1B76, 0, (void*)0x08045E1C }, { 0x1B77, 0, (void*)0x08045E48 }, { 0x1B78, 0, (void*)0x08045E54 }, + { 0x1B79, 0, (void*)0x08045E80 }, { 0x1B7A, 0, (void*)0x08045EB0 }, { 0x1B7B, 0, (void*)0x08045ED8 }, + { 0x1B7C, 0, (void*)0x08045F08 }, { 0x1B7D, 0, (void*)0x08045F34 }, { 0x1B7E, 0, (void*)0x08045F40 }, + { 0x1B7F, 0, (void*)0x08045F74 }, { 0x1B80, 0, (void*)0x08045FA8 }, { 0x1B81, 0, (void*)0x08045FD4 }, + { 0x1B89, 0, (void*)0x08045FE0 }, { 0x1B8A, 0, (void*)0x08045FF0 }, { 0x1B8B, 0, (void*)0x08046038 }, + { 0x1B8C, 0, (void*)0x08046060 }, { 0x1B8D, 0, (void*)0x08046098 }, { 0x1B8E, 0, (void*)0x080460D4 }, + { 0x1B8F, 0, (void*)0x08046110 }, { 0x1B90, 0, (void*)0x08046150 }, { 0x1B91, 0, (void*)0x0804618C }, + { 0x1B92, 0, (void*)0x080461CC }, { 0x1B93, 0, (void*)0x08046208 }, { 0x1B94, 0, (void*)0x0804622C }, + { 0x1B95, 0, (void*)0x0804626C }, { 0x1B96, 0, (void*)0x080462A8 }, { 0x1B98, 0, (void*)0x080462B4 }, + { 0x1B9E, 0, (void*)0x08046300 }, { 0x1B9F, 0, (void*)0x08046374 }, { 0x1BA0, 0, (void*)0x080463FC }, + { 0x1BA1, 0, (void*)0x08046480 }, { 0x1BA2, 0, (void*)0x08046594 }, { 0x1BA4, 0, (void*)0x080465C4 }, + { 0x1BA5, 0, (void*)0x08046654 }, { 0x1BA6, 0, (void*)0x08046684 }, { 0x1BA7, 0, (void*)0x080466D4 }, + { 0x1BA8, 0, (void*)0x08046760 }, { 0x1BAC, 0, (void*)0x080467E8 }, { 0x1BB2, 0, (void*)0x08046848 }, + { 0x1BB3, 0, (void*)0x08046888 }, { 0x1BB4, 0, (void*)0x080468C4 }, { 0x1BB5, 0, (void*)0x08046904 }, + { 0x1BB6, 0, (void*)0x08046944 }, { 0x1C00, 0, (void*)0x08046984 }, { 0x1C01, 0, (void*)0x08046A4C }, + { 0x1C02, 0, (void*)0x08046AB8 }, { 0x1C03, 0, (void*)0x08046BA8 }, { 0x1C04, 0, (void*)0x08046C10 }, + { 0x1C05, 0, (void*)0x08046D68 }, { 0x1C06, 0, (void*)0x08046E44 }, { 0x1C07, 0, (void*)0x08046EAC }, + { 0x1C08, 0, (void*)0x08046F0C }, { 0x1C09, 0, (void*)0x08046F5C }, { 0x1C0A, 0, (void*)0x08046F94 }, + { 0x1C0B, 0, (void*)0x08047014 }, { 0x1C0C, 0, (void*)0x080470D4 }, { 0x1C0D, 0, (void*)0x08047118 }, + { 0x1C0E, 0, (void*)0x08047130 }, { 0x1C0F, 0, (void*)0x08047148 }, { 0x1C10, 0, (void*)0x08047164 }, + { 0x1C11, 0, (void*)0x0804717C }, { 0x1C12, 0, (void*)0x0804719C }, { 0x1C13, 0, (void*)0x080471BC }, + { 0x1C14, 0, (void*)0x080471D4 }, { 0x1C15, 0, (void*)0x080471F0 }, { 0x1C16, 0, (void*)0x08047214 }, + { 0x1C17, 0, (void*)0x0804730C }, { 0x1C18, 0, (void*)0x0804734C }, { 0x1D00, 0, (void*)0x080473A4 }, + { 0x1D01, 0, (void*)0x08047414 }, { 0x1D02, 0, (void*)0x08047524 }, { 0x1D03, 0, (void*)0x0804758C }, + { 0x1D04, 0, (void*)0x08047644 }, { 0x1D05, 0, (void*)0x08047678 }, { 0x1D06, 0, (void*)0x080476D0 }, + { 0x1D07, 0, (void*)0x080476F8 }, { 0x1D08, 0, (void*)0x08047728 }, { 0x1D09, 0, (void*)0x08047788 }, + { 0x1D0A, 0, (void*)0x080477C0 }, { 0x1D0B, 0, (void*)0x080477F4 }, { 0x1D0C, 0, (void*)0x08047808 }, + { 0x1D0D, 0, (void*)0x08047820 }, { 0x1D11, 0, (void*)0x08047844 }, { 0x1D12, 0, (void*)0x08047890 }, + { 0x1D13, 0, (void*)0x080478D8 }, { 0x1D14, 0, (void*)0x08047920 }, { 0x1D15, 0, (void*)0x0804796C }, + { 0x1D16, 0, (void*)0x080479B4 }, { 0x1D17, 0, (void*)0x080479FC }, { 0x1F40, 0, (void*)0x08047A20 }, + { 0x1F41, 0, (void*)0x08047ABC }, { 0x1F42, 0, (void*)0x08047B20 }, { 0x1F43, 0, (void*)0x08047B94 }, + { 0x1F44, 0, (void*)0x08047BD8 }, { 0x1F45, 0, (void*)0x08047C40 }, { 0x1F46, 0, (void*)0x08047CB4 }, + { 0x1F47, 0, (void*)0x08047D1C }, { 0x1F48, 0, (void*)0x08047D88 }, { 0x1F49, 0, (void*)0x08047DA8 }, + { 0x1F4A, 0, (void*)0x08047E48 }, { 0x1F4B, 0, (void*)0x08047F30 }, { 0x1F4C, 0, (void*)0x08047F88 }, + { 0x1F4D, 0, (void*)0x08048014 }, { 0x1F4E, 0, (void*)0x080480E0 }, { 0x1F4F, 0, (void*)0x0804819C }, + { 0x1F50, 0, (void*)0x08048280 }, { 0x1F51, 0, (void*)0x080482E4 }, { 0x1F52, 0, (void*)0x0804833C }, + { 0x1F53, 0, (void*)0x080483B8 }, { 0x1F54, 0, (void*)0x08048430 }, { 0x1F55, 0, (void*)0x080484AC }, + { 0x1F56, 0, (void*)0x080484F8 }, { 0x1F5F, 0, (void*)0x0804857C }, { 0x1F60, 0, (void*)0x0804859C }, + { 0x1F61, 0, (void*)0x080485D4 }, { 0x1F62, 0, (void*)0x08048604 }, { 0x1F63, 0, (void*)0x0804862C }, + { 0x1F64, 0, (void*)0x0804866C }, { 0x1F65, 0, (void*)0x080486A4 }, { 0x1F66, 0, (void*)0x080486E0 }, + { 0x1F67, 0, (void*)0x08048708 }, { 0x1F68, 0, (void*)0x08048774 }, { 0x1F69, 0, (void*)0x080487A4 }, + { 0x1F6A, 0, (void*)0x080487E0 }, { 0x1F6B, 0, (void*)0x08048810 }, { 0x1F6C, 0, (void*)0x08048864 }, + { 0x1F6D, 0, (void*)0x08048898 }, { 0x1F6E, 0, (void*)0x08048960 }, { 0x1F6F, 0, (void*)0x08048990 }, + { 0x1F70, 0, (void*)0x080489E8 }, { 0x1F71, 0, (void*)0x08048A44 }, { 0x1F72, 0, (void*)0x08048AB8 }, + { 0x1F73, 0, (void*)0x08048AE8 }, { 0x1F74, 0, (void*)0x08048B94 }, { 0x1F75, 0, (void*)0x08048BB0 }, + { 0x1FA4, 0, (void*)0x08048BD8 }, { 0x1FA5, 0, (void*)0x08048C14 }, { 0x1FA6, 0, (void*)0x08048CF8 }, + { 0x1FA7, 0, (void*)0x08048D40 }, { 0x1FA8, 0, (void*)0x08048D88 }, { 0x1FA9, 0, (void*)0x08048DF4 }, + { 0x1FAA, 0, (void*)0x08048E68 }, { 0x1FAB, 0, (void*)0x08048EE0 }, { 0x1FAC, 0, (void*)0x08048FB4 }, + { 0x1FAD, 0, (void*)0x08049034 }, { 0x1FAE, 0, (void*)0x08049068 }, { 0x1FAF, 0, (void*)0x080491B0 }, + { 0x1FB0, 0, (void*)0x0804927C }, { 0x1FB1, 0, (void*)0x080492C8 }, { 0x1FB2, 0, (void*)0x08049318 }, + { 0x1FB3, 0, (void*)0x08049384 }, { 0x1FB4, 0, (void*)0x08049424 }, { 0x1FB5, 0, (void*)0x0804951C }, + { 0x1FB6, 0, (void*)0x08049558 }, { 0x1FB7, 0, (void*)0x08049598 }, { 0x1FB8, 0, (void*)0x080495B8 }, + { 0x1FB9, 0, (void*)0x080495D0 }, { 0x1FBA, 0, (void*)0x080495E8 }, { 0x1FBB, 0, (void*)0x08049614 }, + { 0x1FBC, 0, (void*)0x0804963C }, { 0x1FBD, 0, (void*)0x08049688 }, { 0x1FBE, 0, (void*)0x080496DC }, + { 0x1FBF, 0, (void*)0x08049758 }, { 0x1FC0, 0, (void*)0x080497BC }, { 0x1FC1, 0, (void*)0x080497E4 }, + { 0x1FC2, 0, (void*)0x0804982C }, { 0x1FC3, 0, (void*)0x080498A0 }, { 0x1FC4, 0, (void*)0x08049920 }, + { 0x1FC5, 0, (void*)0x08049940 }, { 0x1FC6, 0, (void*)0x08049A0C }, { 0x1FC7, 0, (void*)0x08049A38 }, + { 0x1FC8, 0, (void*)0x08049AA0 }, { 0x1FC9, 0, (void*)0x08049AB8 }, { 0x1FCA, 0, (void*)0x08049AF0 }, + { 0x1FCB, 0, (void*)0x08049B74 }, { 0x1FCC, 0, (void*)0x08049BD0 }, { 0x1FCD, 0, (void*)0x08049C34 }, + { 0x1FCE, 0, (void*)0x08049D14 }, { 0x1FCF, 0, (void*)0x08049D70 }, { 0x1FD0, 0, (void*)0x08049DAC }, + { 0x1FD1, 0, (void*)0x08049E08 }, { 0x1FD2, 0, (void*)0x08049E24 }, { 0x1FD3, 0, (void*)0x08049E44 }, + { 0x1FD4, 0, (void*)0x08049E88 }, { 0x1FD5, 0, (void*)0x08049EB8 }, { 0x1FD6, 0, (void*)0x08049F00 }, + { 0x1FD7, 0, (void*)0x08049F3C }, { 0x1FD8, 0, (void*)0x08049F90 }, { 0x1FD9, 0, (void*)0x08049FC4 }, + { 0x1FDA, 0, (void*)0x0804A018 }, { 0x1FDB, 0, (void*)0x0804A050 }, { 0x1FDC, 0, (void*)0x0804A0BC }, + { 0x1FDD, 0, (void*)0x0804A0F0 }, { 0x1FDE, 0, (void*)0x0804A11C }, { 0x1FDF, 0, (void*)0x0804A14C }, + { 0x1FE0, 0, (void*)0x0804A1A0 }, { 0x1FE1, 0, (void*)0x0804A1D4 }, { 0x1FE2, 0, (void*)0x0804A210 }, + { 0x1FE3, 0, (void*)0x0804A244 }, { 0x1FE4, 0, (void*)0x0804A290 }, { 0x1FE5, 0, (void*)0x0804A2C8 }, + { 0x1FE6, 0, (void*)0x0804A334 }, { 0x1FE7, 0, (void*)0x0804A36C }, { 0x1FE8, 0, (void*)0x0804A3EC }, + { 0x1FE9, 0, (void*)0x0804A420 }, { 0x1FEA, 0, (void*)0x0804A484 }, { 0x1FEB, 0, (void*)0x0804A4B8 }, + { 0x1FEC, 0, (void*)0x0804A51C }, { 0x1FED, 0, (void*)0x0804A554 }, { 0x1FEE, 0, (void*)0x0804A59C }, + { 0x1FEF, 0, (void*)0x0804A5D0 }, { 0x1FF0, 0, (void*)0x0804A620 }, { 0x1FF1, 0, (void*)0x0804A658 }, + { 0x1FF2, 0, (void*)0x0804A6C0 }, { 0x1FF3, 0, (void*)0x0804A6F4 }, { 0x1FF4, 0, (void*)0x0804A74C }, + { 0x1FF5, 0, (void*)0x0804A788 }, { 0x1FF6, 0, (void*)0x0804A800 }, { 0x1FF7, 0, (void*)0x0804A834 }, + { 0x1FF8, 0, (void*)0x0804A888 }, { 0x1FF9, 0, (void*)0x0804A8B8 }, { 0x1FFA, 0, (void*)0x0804A908 }, + { 0x1FFB, 0, (void*)0x0804A940 }, { 0x1FFC, 0, (void*)0x0804A970 }, { 0x1FFD, 0, (void*)0x0804A9A4 }, + { 0x1FFE, 0, (void*)0x0804AA00 }, { 0x1FFF, 0, (void*)0x0804AA60 }, { 0x2000, 0, (void*)0x0804AAA0 }, + { 0x2001, 0, (void*)0x0804AACC }, { 0x2002, 0, (void*)0x0804AB00 }, { 0x2003, 0, (void*)0x0804AB60 }, + { 0x2004, 0, (void*)0x0804ABA0 }, { 0x2005, 0, (void*)0x0804ACE0 }, { 0x2006, 0, (void*)0x0804ADB4 }, + { 0x2007, 0, (void*)0x0804AE8C }, { 0x2008, 0, (void*)0x0804AEE0 }, { 0x2009, 0, (void*)0x0804AEF8 }, + { 0x200A, 0, (void*)0x0804AF10 }, { 0x200B, 0, (void*)0x0804AFAC }, { 0x200C, 0, (void*)0x0804B024 }, + { 0x200D, 0, (void*)0x0804B058 }, { 0x200E, 0, (void*)0x0804B0D0 }, { 0x200F, 0, (void*)0x0804B144 }, + { 0x2010, 0, (void*)0x0804B168 }, { 0x2011, 0, (void*)0x0804B1B4 }, { 0x2012, 0, (void*)0x0804B1F8 }, + { 0x2013, 0, (void*)0x0804B260 }, { 0x2014, 0, (void*)0x0804B298 }, { 0x2015, 0, (void*)0x0804B300 }, + { 0x2016, 0, (void*)0x0804B338 }, { 0x2017, 0, (void*)0x0804B350 }, { 0x201D, 0, (void*)0x0804B3B0 }, + { 0x201E, 0, (void*)0x0804B3F8 }, { 0x201F, 0, (void*)0x0804B508 }, { 0x2020, 0, (void*)0x0804B58C }, + { 0x2021, 0, (void*)0x0804B5F8 }, { 0x2022, 0, (void*)0x0804B68C }, { 0x2023, 0, (void*)0x0804B6E4 }, + { 0x2024, 0, (void*)0x0804B6F0 }, { 0x2026, 0, (void*)0x0804B6FC }, { 0x2027, 0, (void*)0x0804B71C }, + { 0x2028, 0, (void*)0x0804B744 }, { 0x2029, 0, (void*)0x0804B758 }, { 0x202A, 0, (void*)0x0804B770 }, + { 0x202B, 0, (void*)0x0804B7C4 }, { 0x202C, 0, (void*)0x0804B81C }, { 0x202D, 0, (void*)0x0804B860 }, + { 0x202E, 0, (void*)0x0804B8A8 }, { 0x202F, 0, (void*)0x0804B908 }, { 0x2030, 0, (void*)0x0804B93C }, + { 0x2031, 0, (void*)0x0804B9B8 }, { 0x2032, 0, (void*)0x0804BA20 }, { 0x2033, 0, (void*)0x0804BA9C }, + { 0x2034, 0, (void*)0x0804BAEC }, { 0x2035, 0, (void*)0x0804BB34 }, { 0x2036, 0, (void*)0x0804BB7C }, + { 0x2037, 0, (void*)0x0804BBAC }, { 0x2038, 0, (void*)0x0804BBDC }, { 0x2039, 0, (void*)0x0804BC20 }, + { 0x203A, 0, (void*)0x0804BC98 }, { 0x203B, 0, (void*)0x0804BCF0 }, { 0x203C, 0, (void*)0x0804BD40 }, + { 0x203D, 0, (void*)0x0804BD5C }, { 0x203E, 0, (void*)0x0804BDAC }, { 0x203F, 0, (void*)0x0804BE24 }, + { 0x2040, 0, (void*)0x0804BE4C }, { 0x2041, 0, (void*)0x0804BEB8 }, { 0x2042, 0, (void*)0x0804BEEC }, + { 0x2043, 0, (void*)0x0804BF08 }, { 0x2044, 0, (void*)0x0804BF38 }, { 0x2045, 0, (void*)0x0804BF74 }, + { 0x2046, 0, (void*)0x0804BFB4 }, { 0x2047, 0, (void*)0x0804C028 }, { 0x2048, 0, (void*)0x0804C08C }, + { 0x2049, 0, (void*)0x0804C0BC }, { 0x204A, 0, (void*)0x0804C0D8 }, { 0x204B, 0, (void*)0x0804C114 }, + { 0x204C, 0, (void*)0x0804C144 }, { 0x204D, 0, (void*)0x0804C180 }, { 0x204E, 0, (void*)0x0804C204 }, + { 0x206C, 0, (void*)0x0804C264 }, { 0x206D, 0, (void*)0x0804C2A8 }, { 0x206E, 0, (void*)0x0804C2F8 }, + { 0x206F, 0, (void*)0x0804C338 }, { 0x2070, 0, (void*)0x0804C384 }, { 0x2076, 0, (void*)0x0804C390 }, + { 0x2077, 0, (void*)0x0804C3C0 }, { 0x2078, 0, (void*)0x0804C404 }, { 0x2079, 0, (void*)0x0804C480 }, + { 0x2080, 0, (void*)0x0804C4C4 }, { 0x2081, 0, (void*)0x0804C5B4 }, { 0x2082, 0, (void*)0x0804C5FC }, + { 0x2083, 0, (void*)0x0804C630 }, { 0x208A, 0, (void*)0x0804C674 }, { 0x208B, 0, (void*)0x0804C6BC }, + { 0x208C, 0, (void*)0x0804C708 }, { 0x208D, 0, (void*)0x0804C7B4 }, { 0x208E, 0, (void*)0x0804C7FC }, + { 0x2093, 0, (void*)0x0804C8A4 }, { 0x2094, 0, (void*)0x0804C8C0 }, { 0x2095, 0, (void*)0x0804C8E8 }, + { 0x20B0, 0, (void*)0x0804C920 }, { 0x20B1, 0, (void*)0x0804C984 }, { 0x20B2, 0, (void*)0x0804CA38 }, + { 0x20B3, 0, (void*)0x0804CB34 }, { 0x20B4, 0, (void*)0x0804CC18 }, { 0x20B5, 0, (void*)0x0804CD10 }, + { 0x20B6, 0, (void*)0x0804CDD4 }, { 0x20B7, 0, (void*)0x0804CE8C }, { 0x20B8, 0, (void*)0x0804CF48 }, + { 0x20B9, 0, (void*)0x0804CFA4 }, { 0x20BA, 0, (void*)0x0804D018 }, { 0x20BB, 0, (void*)0x0804D084 }, + { 0x20BC, 0, (void*)0x0804D0EC }, { 0x20BD, 0, (void*)0x0804D158 }, { 0x20BE, 0, (void*)0x0804D1C0 }, + { 0x20BF, 0, (void*)0x0804D230 }, { 0x20C0, 0, (void*)0x0804D294 }, { 0x20C1, 0, (void*)0x0804D300 }, + { 0x20C2, 0, (void*)0x0804D380 }, { 0x20C3, 0, (void*)0x0804D3F8 }, { 0x20C4, 0, (void*)0x0804D460 }, + { 0x20C5, 0, (void*)0x0804D4AC }, { 0x20C6, 0, (void*)0x0804D52C }, { 0x20C7, 0, (void*)0x0804D590 }, + { 0x20D0, 0, (void*)0x0804D5FC }, { 0x20D1, 0, (void*)0x0804D654 }, { 0x20D2, 0, (void*)0x0804D6C8 }, + { 0x20D4, 0, (void*)0x0804D6EC }, { 0x20D5, 0, (void*)0x0804D75C }, { 0x20D6, 0, (void*)0x0804D7B4 }, + { 0x20D7, 0, (void*)0x0804D834 }, { 0x20D8, 0, (void*)0x0804D8B0 }, { 0x20D9, 0, (void*)0x0804D93C }, + { 0x20DA, 0, (void*)0x0804D99C }, { 0x20DB, 0, (void*)0x0804D9FC }, { 0x20DC, 0, (void*)0x0804DA74 }, + { 0x20DD, 0, (void*)0x0804DB20 }, { 0x20DE, 0, (void*)0x0804DBB0 }, { 0x20DF, 0, (void*)0x0804DC18 }, + { 0x20E0, 0, (void*)0x0804DC90 }, { 0x20E1, 0, (void*)0x0804DCFC }, { 0x20E2, 0, (void*)0x0804DD84 }, + { 0x20E3, 0, (void*)0x0804DE0C }, { 0x20E4, 0, (void*)0x0804DEA0 }, { 0x20E5, 0, (void*)0x0804DF10 }, + { 0x20E6, 0, (void*)0x0804DF78 }, { 0x20E7, 0, (void*)0x0804DFEC }, { 0x20F3, 0, (void*)0x0804E05C }, + { 0x20F7, 0, (void*)0x0804E0C0 }, { 0x20F8, 0, (void*)0x0804E134 }, { 0x20F9, 0, (void*)0x0804E1AC }, + { 0x2103, 0, (void*)0x0804E220 }, { 0x2104, 0, (void*)0x0804E288 }, { 0x2105, 0, (void*)0x0804E2CC }, + { 0x2106, 0, (void*)0x0804E320 }, { 0x2107, 0, (void*)0x0804E364 }, { 0x2108, 0, (void*)0x0804E3BC }, + { 0x2109, 0, (void*)0x0804E408 }, { 0x210A, 0, (void*)0x0804E458 }, { 0x210B, 0, (void*)0x0804E4B0 }, + { 0x210C, 0, (void*)0x0804E4EC }, { 0x210D, 0, (void*)0x0804E52C }, { 0x210E, 0, (void*)0x0804E578 }, + { 0x210F, 0, (void*)0x0804E5D0 }, { 0x2110, 0, (void*)0x0804E618 }, { 0x2111, 0, (void*)0x0804E660 }, + { 0x2112, 0, (void*)0x0804E6BC }, { 0x2113, 0, (void*)0x0804E70C }, { 0x2114, 0, (void*)0x0804E75C }, + { 0x2115, 0, (void*)0x0804E7A8 }, { 0x2116, 0, (void*)0x0804E7F0 }, { 0x2134, 0, (void*)0x0804E83C }, + { 0x2135, 0, (void*)0x0804E880 }, { 0x2136, 0, (void*)0x0804E8CC }, { 0x2137, 0, (void*)0x0804E91C }, + { 0x2138, 0, (void*)0x0804E96C }, { 0x2139, 0, (void*)0x0804E9B4 }, { 0x213A, 0, (void*)0x0804E9FC }, + { 0x213B, 0, (void*)0x0804EA38 }, { 0x213C, 0, (void*)0x0804EA88 }, { 0x213D, 0, (void*)0x0804EAD0 }, + { 0x213E, 0, (void*)0x0804EB28 }, { 0x213F, 0, (void*)0x0804EB80 }, { 0x2140, 0, (void*)0x0804EBD0 }, + { 0x2141, 0, (void*)0x0804EC1C }, { 0x2142, 0, (void*)0x0804EC60 }, { 0x2143, 0, (void*)0x0804ECAC }, + { 0x2144, 0, (void*)0x0804ECF0 }, { 0x2145, 0, (void*)0x0804ED40 }, { 0x2146, 0, (void*)0x0804ED88 }, + { 0x2147, 0, (void*)0x0804EDDC }, { 0x2152, 0, (void*)0x0804EE34 }, { 0x2153, 0, (void*)0x0804EE78 }, + { 0x2154, 0, (void*)0x0804EECC }, { 0x2156, 0, (void*)0x0804EF1C }, { 0x2157, 0, (void*)0x0804EF64 }, + { 0x2158, 0, (void*)0x0804EFC4 }, { 0x2159, 0, (void*)0x0804F014 }, { 0x215A, 0, (void*)0x0804F05C }, + { 0x215B, 0, (void*)0x0804F0C0 }, { 0x215D, 0, (void*)0x0804F124 }, { 0x215E, 0, (void*)0x0804F178 }, + { 0x215F, 0, (void*)0x0804F184 }, { 0x2160, 0, (void*)0x0804F1D8 }, { 0x2161, 0, (void*)0x0804F234 }, + { 0x2162, 0, (void*)0x0804F298 }, { 0x2163, 0, (void*)0x0804F2A4 }, { 0x2164, 0, (void*)0x0804F2F8 }, + { 0x2165, 0, (void*)0x0804F358 }, { 0x2166, 0, (void*)0x0804F3B0 }, { 0x2167, 0, (void*)0x0804F400 }, + { 0x2168, 0, (void*)0x0804F458 }, { 0x2169, 0, (void*)0x0804F4B0 }, { 0x216A, 0, (void*)0x0804F504 }, + { 0x216B, 0, (void*)0x0804F554 }, { 0x216C, 0, (void*)0x0804F5A0 }, { 0x216D, 0, (void*)0x0804F5F8 }, + { 0x216E, 0, (void*)0x0804F658 }, { 0x216F, 0, (void*)0x0804F6B8 }, { 0x2170, 0, (void*)0x0804F710 }, + { 0x2171, 0, (void*)0x0804F764 }, { 0x2172, 0, (void*)0x0804F7BC }, { 0x2173, 0, (void*)0x0804F814 }, + { 0x2174, 0, (void*)0x0804F870 }, { 0x2198, 0, (void*)0x0804F8CC }, { 0x2199, 0, (void*)0x0804F920 }, + { 0x219A, 0, (void*)0x0804F978 }, { 0x219B, 0, (void*)0x0804F9D0 }, { 0x219C, 0, (void*)0x0804FA2C }, + { 0x219D, 0, (void*)0x0804FA80 }, { 0x219E, 0, (void*)0x0804FAD0 }, { 0x219F, 0, (void*)0x0804FB28 }, + { 0x21A0, 0, (void*)0x0804FB80 }, { 0x21A1, 0, (void*)0x0804FBD8 }, { 0x21A2, 0, (void*)0x0804FC30 }, + { 0x21A3, 0, (void*)0x0804FC88 }, { 0x21A4, 0, (void*)0x0804FCD8 }, { 0x21A5, 0, (void*)0x0804FD30 }, + { 0x21A6, 0, (void*)0x0804FD84 }, { 0x21A7, 0, (void*)0x0804FDDC }, { 0x21A8, 0, (void*)0x0804FE34 }, + { 0x21A9, 0, (void*)0x0804FE88 }, { 0x21AA, 0, (void*)0x0804FED8 }, { 0x21AB, 0, (void*)0x0804FF30 }, + { 0x21AC, 0, (void*)0x0804FF84 }, { 0x21AD, 0, (void*)0x0804FFDC }, { 0x21AE, 0, (void*)0x08050038 }, + { 0x21AF, 0, (void*)0x08050094 }, { 0x21B0, 0, (void*)0x080500EC }, { 0x21B1, 0, (void*)0x08050140 }, + { 0x21B2, 0, (void*)0x08050198 }, { 0x21B3, 0, (void*)0x080501F4 }, { 0x21B4, 0, (void*)0x0805024C }, + { 0x21B5, 0, (void*)0x080502A4 }, { 0x21B6, 0, (void*)0x080502F8 }, { 0x21B7, 0, (void*)0x08050350 }, + { 0x21B8, 0, (void*)0x080503A8 }, { 0x21B9, 0, (void*)0x08050400 }, { 0x21BA, 0, (void*)0x0805045C }, + { 0x21CA, 0, (void*)0x080504AC }, { 0x21CB, 0, (void*)0x080504EC }, { 0x21CC, 0, (void*)0x08050528 }, + { 0x21CD, 0, (void*)0x08050580 }, { 0x21CE, 0, (void*)0x080505C8 }, { 0x21CF, 0, (void*)0x08050604 }, + { 0x21D0, 0, (void*)0x08050648 }, { 0x21D1, 0, (void*)0x08050680 }, { 0x21D2, 0, (void*)0x080506CC }, + { 0x21D3, 0, (void*)0x08050700 }, { 0x21D4, 0, (void*)0x0805075C }, { 0x21D5, 0, (void*)0x080507A8 }, + { 0x21D6, 0, (void*)0x080507F0 }, { 0x21D7, 0, (void*)0x08050840 }, { 0x21D8, 0, (void*)0x08050884 }, + { 0x21D9, 0, (void*)0x080508CC }, { 0x21DA, 0, (void*)0x08050910 }, { 0x21DB, 0, (void*)0x0805094C }, + { 0x21DC, 0, (void*)0x08050998 }, { 0x21DD, 0, (void*)0x080509D0 }, { 0x21FC, 0, (void*)0x08050A20 }, + { 0x21FD, 0, (void*)0x08050A50 }, { 0x21FE, 0, (void*)0x08050A74 }, { 0x21FF, 0, (void*)0x08050ABC }, + { 0x2200, 0, (void*)0x08050ADC }, { 0x2201, 0, (void*)0x08050AF0 }, { 0x2202, 0, (void*)0x08050B0C }, + { 0x2203, 0, (void*)0x08050B44 }, { 0x2204, 0, (void*)0x08050B74 }, { 0x2205, 0, (void*)0x08050B98 }, + { 0x2206, 0, (void*)0x08050BCC }, { 0x2207, 0, (void*)0x08050BF8 }, { 0x2208, 0, (void*)0x08050C48 }, + { 0x2209, 0, (void*)0x08050CB0 }, { 0x220A, 0, (void*)0x08050CC4 }, { 0x220B, 0, (void*)0x08050CE0 }, + { 0x220C, 0, (void*)0x08050D10 }, { 0x220D, 0, (void*)0x08050D44 }, { 0x220E, 0, (void*)0x08050D98 }, + { 0x220F, 0, (void*)0x08050DE0 }, { 0x2210, 0, (void*)0x08050E24 }, { 0x2211, 0, (void*)0x08050E44 }, + { 0x2212, 0, (void*)0x08050E78 }, { 0x2213, 0, (void*)0x08050E8C }, { 0x2214, 0, (void*)0x08050ECC }, + { 0x2215, 0, (void*)0x08050F14 }, { 0x2216, 0, (void*)0x08050F44 }, { 0x2217, 0, (void*)0x08050F6C }, + { 0x2218, 0, (void*)0x08050FB4 }, { 0x2219, 0, (void*)0x08050FDC }, { 0x221A, 0, (void*)0x0805100C }, + { 0x221B, 0, (void*)0x08051034 }, { 0x221C, 0, (void*)0x08051054 }, { 0x221D, 0, (void*)0x08051080 }, + { 0x221E, 0, (void*)0x080510A0 }, { 0x221F, 0, (void*)0x080510DC }, { 0x2220, 0, (void*)0x08051104 }, + { 0x2221, 0, (void*)0x08051138 }, { 0x2222, 0, (void*)0x0805114C }, { 0x2223, 0, (void*)0x0805117C }, + { 0x2224, 0, (void*)0x080511A8 }, { 0x2225, 0, (void*)0x080511E4 }, { 0x2226, 0, (void*)0x0805122C }, + { 0x2227, 0, (void*)0x08051258 }, { 0x2228, 0, (void*)0x080512AC }, { 0x2229, 0, (void*)0x080512D8 }, + { 0x222A, 0, (void*)0x08051338 }, { 0x222B, 0, (void*)0x08051374 }, { 0x2328, 0, (void*)0x080513C4 }, + { 0x2329, 0, (void*)0x08051410 }, { 0x232A, 0, (void*)0x08051454 }, { 0x232B, 0, (void*)0x080514B4 }, + { 0x232C, 0, (void*)0x08051514 }, { 0x232D, 0, (void*)0x08051564 }, { 0x232E, 0, (void*)0x080515A8 }, + { 0x232F, 0, (void*)0x080515E4 }, { 0x2330, 0, (void*)0x08051630 }, { 0x2331, 0, (void*)0x08051680 }, + { 0x2332, 0, (void*)0x08051700 }, { 0x2333, 0, (void*)0x08051750 }, { 0x2334, 0, (void*)0x080517AC }, + { 0x2335, 0, (void*)0x08051814 }, { 0x2336, 0, (void*)0x08051868 }, { 0x2337, 0, (void*)0x080518C8 }, + { 0x2338, 0, (void*)0x08051914 }, { 0x2339, 0, (void*)0x08051948 }, { 0x233A, 0, (void*)0x080519A4 }, + { 0x233B, 0, (void*)0x080519D8 }, { 0x233C, 0, (void*)0x08051A10 }, { 0x233D, 0, (void*)0x08051A70 }, + { 0x233E, 0, (void*)0x08051AA4 }, { 0x233F, 0, (void*)0x08051ADC }, { 0x2340, 0, (void*)0x08051B10 }, + { 0x2341, 0, (void*)0x08051B54 }, { 0x2342, 0, (void*)0x08051BC8 }, { 0x2343, 0, (void*)0x08051C38 }, + { 0x2344, 0, (void*)0x08051C70 }, { 0x2345, 0, (void*)0x08051CC0 }, { 0x2346, 0, (void*)0x08051CFC }, + { 0x2347, 0, (void*)0x08051D24 }, { 0x2348, 0, (void*)0x08051DA4 }, { 0x2349, 0, (void*)0x08051DE4 }, + { 0x234A, 0, (void*)0x08051E44 }, { 0x234B, 0, (void*)0x08051E84 }, { 0x234C, 0, (void*)0x08051EA4 }, + { 0x234D, 0, (void*)0x08051EC4 }, { 0x234E, 0, (void*)0x08051F04 }, { 0x234F, 0, (void*)0x08051F30 }, + { 0x2350, 0, (void*)0x08051F48 }, { 0x2351, 0, (void*)0x08051F7C }, { 0x2352, 0, (void*)0x08051FA8 }, + { 0x2353, 0, (void*)0x08051FC0 }, { 0x2354, 0, (void*)0x08051FE4 }, { 0x2355, 0, (void*)0x08052004 }, + { 0x2356, 0, (void*)0x08052020 }, { 0x2357, 0, (void*)0x08052048 }, { 0x2358, 0, (void*)0x080520AC }, + { 0x2359, 0, (void*)0x080520DC }, { 0x235A, 0, (void*)0x08052104 }, { 0x235B, 0, (void*)0x08052138 }, + { 0x235C, 0, (void*)0x0805215C }, { 0x235D, 0, (void*)0x08052188 }, { 0x235E, 0, (void*)0x080522B4 }, + { 0x235F, 0, (void*)0x080522DC }, { 0x2360, 0, (void*)0x08052334 }, { 0x2361, 0, (void*)0x080523A8 }, + { 0x2362, 0, (void*)0x08052400 }, { 0x2363, 0, (void*)0x08052450 }, { 0x2364, 0, (void*)0x0805250C }, + { 0x2365, 0, (void*)0x08052644 }, { 0x2366, 0, (void*)0x080526C0 }, { 0x2367, 0, (void*)0x08052718 }, + { 0x2368, 0, (void*)0x080527E4 }, { 0x2369, 0, (void*)0x080528E0 }, { 0x236A, 0, (void*)0x08052930 }, + { 0x236B, 0, (void*)0x08052A04 }, { 0x236C, 0, (void*)0x08052A40 }, { 0x236D, 0, (void*)0x08052A8C }, + { 0x236E, 0, (void*)0x08052ABC }, { 0x236F, 0, (void*)0x08052AD8 }, { 0x2370, 0, (void*)0x08052B34 }, + { 0x2371, 0, (void*)0x08052B64 }, { 0x2372, 0, (void*)0x08052BE0 }, { 0x2373, 0, (void*)0x08052BF8 }, + { 0x2374, 0, (void*)0x08052C3C }, { 0x2375, 0, (void*)0x08052C80 }, { 0x2376, 0, (void*)0x08052CE4 }, + { 0x2377, 0, (void*)0x08052D08 }, { 0x2378, 0, (void*)0x08052D54 }, { 0x2710, 0, (void*)0x08052D8C }, + { 0x2711, 0, (void*)0x08052E54 }, { 0x2712, 0, (void*)0x08052EA4 }, { 0x2713, 0, (void*)0x08053008 }, + { 0x2714, 0, (void*)0x0805305C }, { 0x2715, 0, (void*)0x080531A0 }, { 0x2716, 0, (void*)0x08053220 }, + { 0x2717, 0, (void*)0x08053284 }, { 0x2718, 0, (void*)0x080532BC }, { 0x2719, 0, (void*)0x08053300 }, + { 0x271A, 0, (void*)0x0805332C }, { 0x271B, 0, (void*)0x08053424 }, { 0x271C, 0, (void*)0x080534AC }, + { 0x271D, 0, (void*)0x08053524 }, { 0x271E, 0, (void*)0x0805358C }, { 0x271F, 0, (void*)0x08053608 }, + { 0x2720, 0, (void*)0x0805367C }, { 0x2721, 0, (void*)0x08053718 }, { 0x2722, 0, (void*)0x0805374C }, + { 0x2723, 0, (void*)0x080537A8 }, { 0x2724, 0, (void*)0x080537F4 }, { 0x2725, 0, (void*)0x08053850 }, + { 0x2726, 0, (void*)0x080538A8 }, { 0x2727, 0, (void*)0x08053914 }, { 0x2728, 0, (void*)0x08053974 }, + { 0x2729, 0, (void*)0x08053A34 }, { 0x272A, 0, (void*)0x08053A4C }, { 0x272B, 0, (void*)0x08053A90 }, + { 0x272C, 0, (void*)0x08053AB0 }, { 0x272D, 0, (void*)0x08053AF4 }, { 0x272E, 0, (void*)0x08053B3C }, + { 0x272F, 0, (void*)0x08053B9C }, { 0x2730, 0, (void*)0x08053BCC }, { 0x2731, 0, (void*)0x08053C04 }, + { 0x2732, 0, (void*)0x08053C70 }, { 0x2733, 0, (void*)0x08053CD8 }, { 0x2734, 0, (void*)0x08053D4C }, + { 0x2735, 0, (void*)0x08053DD4 }, { 0x2736, 0, (void*)0x08053E48 }, { 0x2737, 0, (void*)0x08053EA8 }, + { 0x2738, 0, (void*)0x08053F9C }, { 0x2739, 0, (void*)0x08054038 }, { 0x273A, 0, (void*)0x080540A0 }, + { 0x273B, 0, (void*)0x0805411C }, { 0x273C, 0, (void*)0x08054188 }, { 0x273D, 0, (void*)0x080541D0 }, + { 0x273E, 0, (void*)0x08054278 }, { 0x273F, 0, (void*)0x080542A0 }, { 0x2740, 0, (void*)0x0805432C }, + { 0x2741, 0, (void*)0x080543CC }, { 0x2742, 0, (void*)0x08054478 }, { 0x2743, 0, (void*)0x080544F8 }, + { 0x2744, 0, (void*)0x08054580 }, { 0x2745, 0, (void*)0x08054630 }, { 0x2746, 0, (void*)0x08054674 }, + { 0x2747, 0, (void*)0x080546C4 }, { 0x2748, 0, (void*)0x08054784 }, { 0x2749, 0, (void*)0x080547EC }, + { 0x274A, 0, (void*)0x0805483C }, { 0x274B, 0, (void*)0x0805489C }, { 0x274C, 0, (void*)0x08054924 }, + { 0x274D, 0, (void*)0x0805494C }, { 0x274E, 0, (void*)0x080549E0 }, { 0x274F, 0, (void*)0x08054A90 }, + { 0x2774, 0, (void*)0x08054B24 }, { 0x2775, 0, (void*)0x08054B7C }, { 0x2776, 0, (void*)0x08054C30 }, + { 0x2777, 0, (void*)0x08054C3C }, { 0x2778, 0, (void*)0x08054CD0 }, { 0x2779, 0, (void*)0x08054CDC }, + { 0x277A, 0, (void*)0x08054D00 }, { 0x277B, 0, (void*)0x08054DA4 }, { 0x277C, 0, (void*)0x08054EC8 }, + { 0x277D, 0, (void*)0x08054F54 }, { 0x277E, 0, (void*)0x08054FA0 }, { 0x277F, 0, (void*)0x08055004 }, + { 0x2780, 0, (void*)0x0805503C }, { 0x2781, 0, (void*)0x080550B0 }, { 0x2782, 0, (void*)0x08055110 }, + { 0x2783, 0, (void*)0x08055138 }, { 0x2784, 0, (void*)0x08055160 }, { 0x2785, 0, (void*)0x08055194 }, + { 0x2786, 0, (void*)0x080551E0 }, { 0x2787, 0, (void*)0x08055224 }, { 0x2788, 0, (void*)0x08055264 }, + { 0x2789, 0, (void*)0x080552A8 }, { 0x278A, 0, (void*)0x080552E8 }, { 0x278B, 0, (void*)0x08055310 }, + { 0x278C, 0, (void*)0x0805535C }, { 0x278D, 0, (void*)0x080553E0 }, { 0x278E, 0, (void*)0x08055424 }, + { 0x278F, 0, (void*)0x08055448 }, { 0x2790, 0, (void*)0x08055470 }, { 0x2791, 0, (void*)0x080554F0 }, + { 0x2792, 0, (void*)0x08055510 }, { 0x2793, 0, (void*)0x08055534 }, { 0x2794, 0, (void*)0x080555BC }, + { 0x2795, 0, (void*)0x080555FC }, { 0x2796, 0, (void*)0x0805565C }, { 0x2797, 0, (void*)0x08055688 }, + { 0x2798, 0, (void*)0x080556CC }, { 0x2799, 0, (void*)0x08055700 }, { 0x279A, 0, (void*)0x0805573C }, + { 0x279B, 0, (void*)0x0805576C }, { 0x279C, 0, (void*)0x080557B0 }, { 0x279D, 0, (void*)0x08055804 }, + { 0x279E, 0, (void*)0x08055858 }, { 0x279F, 0, (void*)0x080558DC }, { 0x27A0, 0, (void*)0x0805591C }, + { 0x27A1, 0, (void*)0x08055984 }, { 0x27A2, 0, (void*)0x080559C0 }, { 0x27A3, 0, (void*)0x08055A10 }, + { 0x27A4, 0, (void*)0x08055A38 }, { 0x27A5, 0, (void*)0x08055AB0 }, { 0x27A6, 0, (void*)0x08055AE8 }, + { 0x27A7, 0, (void*)0x08055B1C }, { 0x27A8, 0, (void*)0x08055B60 }, { 0x27A9, 0, (void*)0x08055BA8 }, + { 0x27AA, 0, (void*)0x08055BC0 }, { 0x27AB, 0, (void*)0x08055C10 }, { 0x27AC, 0, (void*)0x08055C34 }, + { 0x27AD, 0, (void*)0x08055CAC }, { 0x27AE, 0, (void*)0x08055CC4 }, { 0x27D8, 0, (void*)0x08055D0C }, + { 0x27D9, 0, (void*)0x08055D50 }, { 0x27DA, 0, (void*)0x08055D94 }, { 0x27DB, 0, (void*)0x08055DCC }, + { 0x27DC, 0, (void*)0x08055E10 }, { 0x27DD, 0, (void*)0x08055E50 }, { 0x27DE, 0, (void*)0x08055ED0 }, + { 0x27DF, 0, (void*)0x08055F14 }, { 0x27E0, 0, (void*)0x08055F70 }, { 0x27E1, 0, (void*)0x08056000 }, + { 0x27E2, 0, (void*)0x0805609C }, { 0x27E3, 0, (void*)0x080560DC }, { 0x27E4, 0, (void*)0x080560F8 }, + { 0x27E5, 0, (void*)0x08056128 }, { 0x27E6, 0, (void*)0x08056170 }, { 0x27E7, 0, (void*)0x08056220 }, + { 0x27E8, 0, (void*)0x0805627C }, { 0x27E9, 0, (void*)0x080562D8 }, { 0x27EA, 0, (void*)0x08056334 }, + { 0x27EB, 0, (void*)0x0805635C }, { 0x27EC, 0, (void*)0x080563B0 }, { 0x27ED, 0, (void*)0x080563D8 }, + { 0x27EE, 0, (void*)0x0805643C }, { 0x27EF, 0, (void*)0x08056468 }, { 0x27F0, 0, (void*)0x08056488 }, + { 0x27F1, 0, (void*)0x080564AC }, { 0x27F2, 0, (void*)0x080564F4 }, { 0x27F3, 0, (void*)0x0805653C }, + { 0x27F4, 0, (void*)0x08056570 }, { 0x27F5, 0, (void*)0x0805662C }, { 0x27F6, 0, (void*)0x0805668C }, + { 0x27F7, 0, (void*)0x080566B0 }, { 0x27F8, 0, (void*)0x080566E4 }, { 0x27F9, 0, (void*)0x08056708 }, + { 0x27FA, 0, (void*)0x08056734 }, { 0x283C, 0, (void*)0x0805678C }, { 0x283D, 0, (void*)0x080567C4 }, + { 0x2841, 0, (void*)0x080567FC }, { 0x2842, 0, (void*)0x08056840 }, { 0x2843, 0, (void*)0x08056878 }, + { 0x2844, 0, (void*)0x080568E0 }, { 0x2845, 0, (void*)0x0805696C }, { 0x2846, 0, (void*)0x080569BC }, + { 0x2847, 0, (void*)0x08056A18 }, { 0x2848, 0, (void*)0x08056A54 }, { 0x2849, 0, (void*)0x08056AB0 }, + { 0x284A, 0, (void*)0x08056AF4 }, { 0x284B, 0, (void*)0x08056B38 }, { 0x284C, 0, (void*)0x08056B88 }, + { 0x284D, 0, (void*)0x08056BCC }, { 0x284E, 0, (void*)0x08056C2C }, { 0x284F, 0, (void*)0x08056C7C }, + { 0x2850, 0, (void*)0x08056CA8 }, { 0x2851, 0, (void*)0x08056CF8 }, { 0x2852, 0, (void*)0x08056D24 }, + { 0x2853, 0, (void*)0x08056D68 }, { 0x2854, 0, (void*)0x08056DC0 }, { 0x2855, 0, (void*)0x08056E04 }, + { 0x2856, 0, (void*)0x08056E50 }, { 0x2857, 0, (void*)0x08056E98 }, { 0x2858, 0, (void*)0x08056EFC }, + { 0x2859, 0, (void*)0x08056F44 }, { 0x285A, 0, (void*)0x08056FA8 }, { 0x285B, 0, (void*)0x08056FE8 }, + { 0x285C, 0, (void*)0x08057014 }, { 0x285D, 0, (void*)0x0805705C }, { 0x285E, 0, (void*)0x08057088 }, + { 0x285F, 0, (void*)0x080570C8 }, { 0x2860, 0, (void*)0x080570FC }, { 0x2861, 0, (void*)0x08057114 }, + { 0x2862, 0, (void*)0x08057174 }, { 0x2863, 0, (void*)0x080571C0 }, { 0x2864, 0, (void*)0x0805722C }, + { 0x2865, 0, (void*)0x08057278 }, { 0x2866, 0, (void*)0x080572E4 }, { 0x2867, 0, (void*)0x08057328 }, + { 0x2868, 0, (void*)0x08057358 }, { 0x2869, 0, (void*)0x080573A4 }, { 0x286A, 0, (void*)0x08057410 }, + { 0x286B, 0, (void*)0x08057454 }, { 0x286C, 0, (void*)0x08057484 }, { 0x286D, 0, (void*)0x080574D0 }, + { 0x286E, 0, (void*)0x080574F8 }, { 0x286F, 0, (void*)0x0805753C }, { 0x2870, 0, (void*)0x080575A8 }, + { 0x2871, 0, (void*)0x080575E4 }, { 0x2872, 0, (void*)0x08057628 }, { 0x2873, 0, (void*)0x0805765C }, + { 0x2874, 0, (void*)0x080576B4 }, { 0x2875, 0, (void*)0x080576D0 }, { 0x2876, 0, (void*)0x08057728 }, + { 0x2877, 0, (void*)0x0805777C }, { 0x2878, 0, (void*)0x080577D4 }, { 0x2879, 0, (void*)0x08057828 }, + { 0x287A, 0, (void*)0x08057890 }, { 0x287B, 0, (void*)0x08057900 }, { 0x287C, 0, (void*)0x08057968 }, + { 0x287D, 0, (void*)0x080579B8 }, { 0x287E, 0, (void*)0x080579E8 }, { 0x287F, 0, (void*)0x08057A5C }, + { 0x2880, 0, (void*)0x08057AA8 }, { 0x2881, 0, (void*)0x08057B24 }, { 0x2882, 0, (void*)0x08057B5C }, + { 0x2883, 0, (void*)0x08057B94 }, { 0x2884, 0, (void*)0x08057BC8 }, { 0x2885, 0, (void*)0x08057BE0 }, + { 0x2886, 0, (void*)0x08057BF8 }, { 0x2887, 0, (void*)0x08057C24 }, { 0x2888, 0, (void*)0x08057C5C }, + { 0x2889, 0, (void*)0x08057C88 }, { 0x288A, 0, (void*)0x08057CB4 }, { 0x288B, 0, (void*)0x08057CD4 }, + { 0x28A0, 0, (void*)0x08057CF0 }, { 0x28A1, 0, (void*)0x08057D20 }, { 0x28A2, 0, (void*)0x08057D5C }, + { 0x28A3, 0, (void*)0x08057D94 }, { 0x28A4, 0, (void*)0x08057E80 }, { 0x28A5, 0, (void*)0x08057F64 }, + { 0x28A6, 0, (void*)0x08057FA8 }, { 0x28A7, 0, (void*)0x08058080 }, { 0x28A8, 0, (void*)0x080580B4 }, + { 0x28A9, 0, (void*)0x080580F4 }, { 0x28AA, 0, (void*)0x08058130 }, { 0x28AB, 0, (void*)0x08058160 }, + { 0x28AC, 0, (void*)0x080581EC }, { 0x28AD, 0, (void*)0x080582C0 }, { 0x28AF, 0, (void*)0x080582DC }, + { 0x28B0, 0, (void*)0x080582F8 }, { 0x28B1, 0, (void*)0x08058340 }, { 0x28B2, 0, (void*)0x080583A8 }, + { 0x28B3, 0, (void*)0x08058400 }, { 0x28B4, 0, (void*)0x08058488 }, { 0x28B5, 0, (void*)0x080584E8 }, + { 0x28B6, 0, (void*)0x08058524 }, { 0x28B7, 0, (void*)0x08058594 }, { 0x28B8, 0, (void*)0x080585F4 }, + { 0x28B9, 0, (void*)0x08058618 }, { 0x28BA, 0, (void*)0x0805864C }, { 0x28BB, 0, (void*)0x08058688 }, + { 0x28BC, 0, (void*)0x080586B8 }, { 0x28BD, 0, (void*)0x080586F8 }, { 0x28BE, 0, (void*)0x0805871C }, + { 0x28BF, 0, (void*)0x08058760 }, { 0x28C0, 0, (void*)0x0805878C }, { 0x28C1, 0, (void*)0x080587B4 }, + { 0x28C2, 0, (void*)0x0805881C }, { 0x28C3, 0, (void*)0x08058880 }, { 0x28C4, 0, (void*)0x080589EC }, + { 0x28C5, 0, (void*)0x08058A60 }, { 0x28C6, 0, (void*)0x08058A78 }, { 0x28C7, 0, (void*)0x08058AC0 }, + { 0x28C8, 0, (void*)0x08058AF4 }, { 0x28C9, 0, (void*)0x08058B54 }, { 0x28CA, 0, (void*)0x08058B9C }, + { 0x28CB, 0, (void*)0x08058BD4 }, { 0x28CC, 0, (void*)0x08058C24 }, { 0x28CD, 0, (void*)0x08058C58 }, + { 0x28CE, 0, (void*)0x08058C6C }, { 0x28CF, 0, (void*)0x08058C88 }, { 0x28D0, 0, (void*)0x08058CCC }, + { 0x28D1, 0, (void*)0x08058D1C }, { 0x28D2, 0, (void*)0x08058D4C }, { 0x28D3, 0, (void*)0x08058DA0 }, + { 0x28D4, 0, (void*)0x08058DF0 }, { 0x28D5, 0, (void*)0x08058E4C }, { 0x28D6, 0, (void*)0x08058EE8 }, + { 0x28D7, 0, (void*)0x08058F10 }, { 0x28D8, 0, (void*)0x08058F60 }, { 0x28D9, 0, (void*)0x0805901C }, + { 0x28DA, 0, (void*)0x08059030 }, { 0x28DB, 0, (void*)0x08059154 }, { 0x28DC, 0, (void*)0x08059184 }, + { 0x28DE, 0, (void*)0x080591A8 }, { 0x28DF, 0, (void*)0x080591E4 }, { 0x28E0, 0, (void*)0x08059220 }, + { 0x28E1, 0, (void*)0x08059260 }, { 0x28E2, 0, (void*)0x080592C8 }, { 0x28E3, 0, (void*)0x0805931C }, + { 0x28E4, 0, (void*)0x08059378 }, { 0x28E5, 0, (void*)0x080593A4 }, { 0x28E6, 0, (void*)0x080593B8 }, + { 0x28E7, 0, (void*)0x080593FC }, { 0x28E8, 0, (void*)0x08059420 }, { 0x28E9, 0, (void*)0x0805945C }, + { 0x28EA, 0, (void*)0x08059480 }, { 0x28EB, 0, (void*)0x080594D4 }, { 0x28EC, 0, (void*)0x08059564 }, + { 0x28ED, 0, (void*)0x080595B8 }, { 0x28EE, 0, (void*)0x080595F8 }, { 0x28EF, 0, (void*)0x08059640 }, + { 0x28F0, 0, (void*)0x080596F8 }, { 0x28F1, 0, (void*)0x08059754 }, { 0x28F2, 0, (void*)0x080597D4 }, + { 0x28F3, 0, (void*)0x08059814 }, { 0x28F4, 0, (void*)0x080599B0 }, { 0x28F5, 0, (void*)0x080599F8 }, + { 0x28F6, 0, (void*)0x08059AC0 }, { 0x28F7, 0, (void*)0x08059AEC }, { 0x28F8, 0, (void*)0x08059B70 }, + { 0x28F9, 0, (void*)0x08059BDC }, { 0x28FA, 0, (void*)0x08059C00 }, { 0x28FB, 0, (void*)0x08059C60 }, + { 0x28FC, 0, (void*)0x08059CBC }, { 0x28FD, 0, (void*)0x08059DA0 }, { 0x28FE, 0, (void*)0x08059DB0 }, + { 0x28FF, 0, (void*)0x08059E2C }, { 0x2900, 0, (void*)0x08059EC8 }, { 0x2901, 0, (void*)0x08059EF4 }, + { 0x2902, 0, (void*)0x08059F70 }, { 0x2903, 0, (void*)0x08059FD0 }, { 0x2904, 0, (void*)0x0805A04C }, + { 0x2905, 0, (void*)0x0805A24C }, { 0x2906, 0, (void*)0x0805A4F8 }, { 0x2907, 0, (void*)0x0805A584 }, + { 0x2908, 0, (void*)0x0805A5C0 }, { 0x2909, 0, (void*)0x0805A60C }, { 0x290A, 0, (void*)0x0805A640 }, + { 0x290B, 0, (void*)0x0805A6C8 }, { 0x290C, 0, (void*)0x0805A9C0 }, { 0x290D, 0, (void*)0x0805AD84 }, + { 0x290E, 0, (void*)0x0805ADF8 }, { 0x290F, 0, (void*)0x0805AE40 }, { 0x2910, 0, (void*)0x0805AE74 }, + { 0x2911, 0, (void*)0x0805AF50 }, { 0x2912, 0, (void*)0x0805AFCC }, { 0x2913, 0, (void*)0x0805B044 }, + { 0x2914, 0, (void*)0x0805B104 }, { 0x2915, 0, (void*)0x0805B1F8 }, { 0x2916, 0, (void*)0x0805B224 }, + { 0x2917, 0, (void*)0x0805B244 }, { 0x2918, 0, (void*)0x0805B2A0 }, { 0x2919, 0, (void*)0x0805B2D0 }, + { 0x291A, 0, (void*)0x0805B314 }, { 0x291B, 0, (void*)0x0805B354 }, { 0x291C, 0, (void*)0x0805B3B0 }, + { 0x291D, 0, (void*)0x0805B400 }, { 0x291E, 0, (void*)0x0805B454 }, { 0x291F, 0, (void*)0x0805B494 }, + { 0x2920, 0, (void*)0x0805B4EC }, { 0x2921, 0, (void*)0x0805B538 }, { 0x2922, 0, (void*)0x0805B58C }, + { 0x2923, 0, (void*)0x0805B600 }, { 0x2924, 0, (void*)0x0805B65C }, { 0x2925, 0, (void*)0x0805B738 }, + { 0x2926, 0, (void*)0x0805B770 }, { 0x2927, 0, (void*)0x0805B794 }, { 0x2928, 0, (void*)0x0805B7C8 }, + { 0x2929, 0, (void*)0x0805B7EC }, { 0x292A, 0, (void*)0x0805B814 }, { 0x292B, 0, (void*)0x0805B8C0 }, + { 0x292C, 0, (void*)0x0805B994 }, { 0x292D, 0, (void*)0x0805BA44 }, { 0x292E, 0, (void*)0x0805BB14 }, + { 0x292F, 0, (void*)0x0805BB74 }, { 0x2930, 0, (void*)0x0805BBEC }, { 0x2931, 0, (void*)0x0805BC40 }, + { 0x2932, 0, (void*)0x0805BCBC }, { 0x2933, 0, (void*)0x0805BD3C }, { 0x2934, 0, (void*)0x0805BDA4 }, + { 0x2935, 0, (void*)0x0805BDE0 }, { 0x2936, 0, (void*)0x0805BE20 }, { 0x2937, 0, (void*)0x0805BE90 }, + { 0x2938, 0, (void*)0x0805BEE8 }, { 0x2939, 0, (void*)0x0805BF5C }, { 0x293A, 0, (void*)0x0805BF80 }, + { 0x293B, 0, (void*)0x0805BFE4 }, { 0x293C, 0, (void*)0x0805C00C }, { 0x293D, 0, (void*)0x0805C094 }, + { 0x293E, 0, (void*)0x0805C0EC }, { 0x293F, 0, (void*)0x0805C168 }, { 0x2940, 0, (void*)0x0805C1EC }, + { 0x2941, 0, (void*)0x0805C258 }, { 0x2942, 0, (void*)0x0805C2DC }, { 0x2943, 0, (void*)0x0805C350 }, + { 0x2944, 0, (void*)0x0805C3B8 }, { 0x2945, 0, (void*)0x0805C3F8 }, { 0x2946, 0, (void*)0x0805C44C }, + { 0x2947, 0, (void*)0x0805C470 }, { 0x2948, 0, (void*)0x0805C4F0 }, { 0x2949, 0, (void*)0x0805C518 }, + { 0x294A, 0, (void*)0x0805C534 }, { 0x294B, 0, (void*)0x0805C54C }, { 0x294C, 0, (void*)0x0805C570 }, + { 0x294D, 0, (void*)0x0805C5A8 }, { 0x294E, 0, (void*)0x0805C680 }, { 0x294F, 0, (void*)0x0805C740 }, + { 0x2950, 0, (void*)0x0805C794 }, { 0x2951, 0, (void*)0x0805C7F4 }, { 0x2952, 0, (void*)0x0805C854 }, + { 0x2953, 0, (void*)0x0805C914 }, { 0x2954, 0, (void*)0x0805C940 }, { 0x2955, 0, (void*)0x0805C980 }, + { 0x2956, 0, (void*)0x0805C9DC }, { 0x2957, 0, (void*)0x0805CA08 }, { 0x2958, 0, (void*)0x0805CA2C }, + { 0x2959, 0, (void*)0x0805CA48 }, { 0x295A, 0, (void*)0x0805CA6C }, { 0x295B, 0, (void*)0x0805CAB4 }, + { 0x295C, 0, (void*)0x0805CB08 }, { 0x295D, 0, (void*)0x0805CB24 }, { 0x295E, 0, (void*)0x0805CB44 }, + { 0x295F, 0, (void*)0x0805CB60 }, { 0x2960, 0, (void*)0x0805CC3C }, { 0x2961, 0, (void*)0x0805CD14 }, + { 0x2962, 0, (void*)0x0805CD3C }, { 0x2968, 0, (void*)0x0805CE60 }, { 0x2969, 0, (void*)0x0805CE78 }, + { 0x296A, 0, (void*)0x0805CEF4 }, { 0x296B, 0, (void*)0x0805CF24 }, { 0x296C, 0, (void*)0x0805CF64 }, + { 0x296D, 0, (void*)0x0805CF9C }, { 0x296E, 0, (void*)0x0805CFB4 }, { 0x296F, 0, (void*)0x0805D018 }, + { 0x2970, 0, (void*)0x0805D08C }, { 0x2971, 0, (void*)0x0805D17C }, { 0x2972, 0, (void*)0x0805D1C4 }, + { 0x2973, 0, (void*)0x0805D234 }, { 0x2974, 0, (void*)0x0805D258 }, { 0x2975, 0, (void*)0x0805D2E4 }, + { 0x2976, 0, (void*)0x0805D314 }, { 0x2977, 0, (void*)0x0805D358 }, { 0x2978, 0, (void*)0x0805D3DC }, + { 0x2979, 0, (void*)0x0805D414 }, { 0x297A, 0, (void*)0x0805D458 }, { 0x29CC, 0, (void*)0x0805D4A8 }, + { 0x29CD, 0, (void*)0x0805D4C0 }, { 0x29CE, 0, (void*)0x0805D514 }, { 0x29CF, 0, (void*)0x0805D550 }, + { 0x29D0, 0, (void*)0x0805D580 }, { 0x29D1, 0, (void*)0x0805D5AC }, { 0x29D2, 0, (void*)0x0805D5D4 }, + { 0x29D3, 0, (void*)0x0805D620 }, { 0x29D4, 0, (void*)0x0805D724 }, { 0x29D5, 0, (void*)0x0805D824 }, + { 0x29D6, 0, (void*)0x0805D864 }, { 0x29D7, 0, (void*)0x0805D8A8 }, { 0x29D8, 0, (void*)0x0805D9A8 }, + { 0x29D9, 0, (void*)0x0805DAA4 }, { 0x29DA, 0, (void*)0x0805DAFC }, { 0x29DB, 0, (void*)0x0805DB3C }, + { 0x29DC, 0, (void*)0x0805DBA0 }, { 0x29DD, 0, (void*)0x0805DBDC }, { 0x29DE, 0, (void*)0x0805DC00 }, + { 0x29DF, 0, (void*)0x0805DC68 }, { 0x29E0, 0, (void*)0x0805DC94 }, { 0x29E1, 0, (void*)0x0805DCC0 }, + { 0x29E2, 0, (void*)0x0805DCE8 }, { 0x29E3, 0, (void*)0x0805DE80 }, { 0x29E4, 0, (void*)0x0805DEC0 }, + { 0x29E5, 0, (void*)0x0805DFAC }, { 0x29E6, 0, (void*)0x0805DFC8 }, { 0x29E7, 0, (void*)0x0805E00C }, + { 0x29E8, 0, (void*)0x0805E098 }, { 0x29E9, 0, (void*)0x0805E0DC }, { 0x29EA, 0, (void*)0x0805E1D0 }, + { 0x29EB, 0, (void*)0x0805E204 }, { 0x29EC, 0, (void*)0x0805E234 }, { 0x29ED, 0, (void*)0x0805E258 }, + { 0x29EE, 0, (void*)0x0805E2A4 }, { 0x29EF, 0, (void*)0x0805E2D4 }, { 0x29F0, 0, (void*)0x0805E314 }, + { 0x29F1, 0, (void*)0x0805E344 }, { 0x29F2, 0, (void*)0x0805E390 }, { 0x29F3, 0, (void*)0x0805E3EC }, + { 0x29F4, 0, (void*)0x0805E428 }, { 0x29F5, 0, (void*)0x0805E49C }, { 0x29F8, 0, (void*)0x0805E4D8 }, + { 0x29F9, 0, (void*)0x0805E530 }, { 0x29FA, 0, (void*)0x0805E56C }, { 0x29FB, 0, (void*)0x0805E5B8 }, + { 0x29FC, 0, (void*)0x0805E608 }, { 0x29FD, 0, (void*)0x0805E654 }, { 0x29FE, 0, (void*)0x0805E6C8 }, + { 0x29FF, 0, (void*)0x0805E700 }, { 0x2A00, 0, (void*)0x0805E7B4 }, { 0x2A01, 0, (void*)0x0805E7D0 }, + { 0x2A02, 0, (void*)0x0805E81C }, { 0x2A30, 0, (void*)0x0805E878 }, { 0x2A31, 0, (void*)0x0805E898 }, + { 0x2A32, 0, (void*)0x0805E8DC }, { 0x2A33, 0, (void*)0x0805E94C }, { 0x2A34, 0, (void*)0x0805EA04 }, + { 0x2A35, 0, (void*)0x0805EA90 }, { 0x2A36, 0, (void*)0x0805EB14 }, { 0x2A37, 0, (void*)0x0805EB4C }, + { 0x2A38, 0, (void*)0x0805EBD0 }, { 0x2A39, 0, (void*)0x0805EC28 }, { 0x2A3A, 0, (void*)0x0805EC40 }, + { 0x2A94, 0, (void*)0x0805EC78 }, { 0x2A95, 0, (void*)0x0805ECA4 }, { 0x2A96, 0, (void*)0x0805ECD0 }, + { 0x2A97, 0, (void*)0x0805EDEC }, { 0x2A98, 0, (void*)0x0805EF18 }, { 0x2A99, 0, (void*)0x0805EF50 }, + { 0x2A9A, 0, (void*)0x0805EFE0 }, { 0x2A9B, 0, (void*)0x0805F120 }, { 0x2A9C, 0, (void*)0x0805F254 }, + { 0x2A9D, 0, (void*)0x0805F30C }, { 0x2A9E, 0, (void*)0x0805F3CC }, { 0x2A9F, 0, (void*)0x0805F4B4 }, + { 0x2AA0, 0, (void*)0x0805F5D0 }, { 0x2AA1, 0, (void*)0x0805F604 }, { 0x2AA2, 0, (void*)0x0805F63C }, + { 0x2AA3, 0, (void*)0x0805F68C }, { 0x2AA4, 0, (void*)0x0805F6BC }, { 0x2AA5, 0, (void*)0x0805F71C }, + { 0x2AA6, 0, (void*)0x0805F760 }, { 0x2AA7, 0, (void*)0x0805F7E4 }, { 0x2AA8, 0, (void*)0x0805F81C }, + { 0x2AA9, 0, (void*)0x0805F834 }, { 0x2AAA, 0, (void*)0x0805F870 }, { 0x2AAB, 0, (void*)0x0805F888 }, + { 0x2AAC, 0, (void*)0x0805F8B0 }, { 0x2AAD, 0, (void*)0x0805F8D4 }, { 0x2AAE, 0, (void*)0x0805F944 }, + { 0x2AAF, 0, (void*)0x0805F988 }, { 0x2AB0, 0, (void*)0x0805F9B0 }, { 0x2AB1, 0, (void*)0x0805FA58 }, + { 0x2AB2, 0, (void*)0x0805FA6C }, { 0x2AB3, 0, (void*)0x0805FA80 }, { 0x2AB4, 0, (void*)0x0805FB0C }, + { 0x2AB5, 0, (void*)0x0805FB20 }, { 0x2AB6, 0, (void*)0x0805FB64 }, { 0x2AB7, 0, (void*)0x0805FB80 }, + { 0x2AB8, 0, (void*)0x0805FB9C }, { 0x2AB9, 0, (void*)0x0805FBF4 }, { 0x2ABA, 0, (void*)0x0805FC24 }, + { 0x2ABB, 0, (void*)0x0805FC88 }, { 0x2ABC, 0, (void*)0x0805FCB0 }, { 0x2ABD, 0, (void*)0x0805FCD8 }, + { 0x2ABE, 0, (void*)0x0805FDD8 }, { 0x2ABF, 0, (void*)0x0805FDFC }, { 0x2AC0, 0, (void*)0x0805FF50 }, + { 0x2AC1, 0, (void*)0x0805FF7C }, { 0x2AC2, 0, (void*)0x080600D0 }, { 0x2AC3, 0, (void*)0x080600EC }, + { 0x2AC4, 0, (void*)0x080601F8 }, { 0x2AC5, 0, (void*)0x0806022C }, { 0x2AC6, 0, (void*)0x08060250 }, + { 0x2AC7, 0, (void*)0x08060260 }, { 0x2AC8, 0, (void*)0x08060270 }, { 0x2AC9, 0, (void*)0x08060280 }, + { 0x2ACA, 0, (void*)0x080602E0 }, { 0x2ACB, 0, (void*)0x0806030C }, { 0x2ACC, 0, (void*)0x08060340 }, + { 0x2ACD, 0, (void*)0x080603A4 }, { 0x2ACE, 0, (void*)0x080603C0 }, { 0x2ACF, 0, (void*)0x0806047C }, + { 0x2AD0, 0, (void*)0x08060494 }, { 0x2AD1, 0, (void*)0x0806053C }, { 0x2AD2, 0, (void*)0x080605B0 }, + { 0x2AD3, 0, (void*)0x080605FC }, { 0x2AD4, 0, (void*)0x0806067C }, { 0x2AD5, 0, (void*)0x080606A0 }, + { 0x2AD6, 0, (void*)0x080606BC }, { 0x2AD7, 0, (void*)0x080606EC }, { 0x2AD8, 0, (void*)0x08060724 }, + { 0x2AD9, 0, (void*)0x08060748 }, { 0x2ADA, 0, (void*)0x08060794 }, { 0x2ADB, 0, (void*)0x08060814 }, + { 0x2ADC, 0, (void*)0x08060874 }, { 0x2ADD, 0, (void*)0x080608B4 }, { 0x2ADE, 0, (void*)0x080608D0 }, + { 0x2ADF, 0, (void*)0x08060960 }, { 0x2AE0, 0, (void*)0x08060A00 }, { 0x2AE1, 0, (void*)0x08060AA8 }, + { 0x2AE2, 0, (void*)0x08060AD4 }, { 0x2AE3, 0, (void*)0x08060B10 }, { 0x2AE4, 0, (void*)0x08060B74 }, + { 0x2AE5, 0, (void*)0x08060BD0 }, { 0x2AE6, 0, (void*)0x08060C6C }, { 0x2AEA, 0, (void*)0x08060CDC }, + { 0x2AEB, 0, (void*)0x08060D1C }, { 0x2AEC, 0, (void*)0x08060D70 }, { 0x2AED, 0, (void*)0x08060D98 }, + { 0x2AEE, 0, (void*)0x08060DB8 }, { 0x2AF8, 0, (void*)0x08060DC8 }, { 0x2AF9, 0, (void*)0x08060DE4 }, + { 0x2AFA, 0, (void*)0x08060EC8 }, { 0x2AFB, 0, (void*)0x08060FC0 }, { 0x2AFC, 0, (void*)0x080610CC }, + { 0x2AFD, 0, (void*)0x080611BC }, { 0x2AFE, 0, (void*)0x080611F4 }, { 0x2AFF, 0, (void*)0x080612EC }, + { 0x2B00, 0, (void*)0x080613FC }, { 0x2B01, 0, (void*)0x08061448 }, { 0x2B02, 0, (void*)0x08061470 }, + { 0x2B03, 0, (void*)0x080614D0 }, { 0x2B04, 0, (void*)0x08061504 }, { 0x2B05, 0, (void*)0x08061578 }, + { 0x2B06, 0, (void*)0x080615DC }, { 0x2B07, 0, (void*)0x08061658 }, { 0x2B08, 0, (void*)0x0806167C }, + { 0x2B09, 0, (void*)0x080616C0 }, { 0x2B0A, 0, (void*)0x08061714 }, { 0x2B0B, 0, (void*)0x08061750 }, + { 0x2B0C, 0, (void*)0x080617A8 }, { 0x2B0D, 0, (void*)0x080617D8 }, { 0x2B0E, 0, (void*)0x08061810 }, + { 0x2B0F, 0, (void*)0x08061890 }, { 0x2B10, 0, (void*)0x080619A0 }, { 0x2B11, 0, (void*)0x08061AD8 }, + { 0x2B12, 0, (void*)0x08061B44 }, { 0x2B13, 0, (void*)0x08061BA0 }, { 0x2B14, 0, (void*)0x08061C0C }, + { 0x2B15, 0, (void*)0x08061C44 }, { 0x2B16, 0, (void*)0x08061CE0 }, { 0x2B17, 0, (void*)0x08061D4C }, + { 0x2B18, 0, (void*)0x08061D70 }, { 0x2B19, 0, (void*)0x08061DD4 }, { 0x2B1A, 0, (void*)0x08061EB4 }, + { 0x2B1B, 0, (void*)0x08061F10 }, { 0x2B1C, 0, (void*)0x08061F88 }, { 0x2B1D, 0, (void*)0x08061FC4 }, + { 0x2B1E, 0, (void*)0x08061FEC }, { 0x2B1F, 0, (void*)0x08062024 }, { 0x2B20, 0, (void*)0x0806209C }, + { 0x2B21, 0, (void*)0x0806212C }, { 0x2B22, 0, (void*)0x08062164 }, { 0x2B23, 0, (void*)0x080621A8 }, + { 0x2B24, 0, (void*)0x0806229C }, { 0x2B25, 0, (void*)0x080622D8 }, { 0x2B26, 0, (void*)0x080622F8 }, + { 0x2B27, 0, (void*)0x08062350 }, { 0x2B28, 0, (void*)0x080623A0 }, { 0x2B29, 0, (void*)0x080623D0 }, + { 0x2B2A, 0, (void*)0x08062428 }, { 0x2B2B, 0, (void*)0x08062478 }, { 0x2B2C, 0, (void*)0x080624AC }, + { 0x2B2D, 0, (void*)0x08062500 }, { 0x2B2E, 0, (void*)0x08062550 }, { 0x2B2F, 0, (void*)0x08062580 }, + { 0x2B30, 0, (void*)0x080625D4 }, { 0x2B31, 0, (void*)0x08062624 }, { 0x2B32, 0, (void*)0x08062650 }, + { 0x2B33, 0, (void*)0x08062670 }, { 0x2B34, 0, (void*)0x080626B0 }, { 0x2B35, 0, (void*)0x080626DC }, + { 0x2B36, 0, (void*)0x080626FC }, { 0x2B37, 0, (void*)0x0806273C }, { 0x2B38, 0, (void*)0x080627D8 }, + { 0x2B39, 0, (void*)0x08062890 }, { 0x2B3A, 0, (void*)0x08062910 }, { 0x2B3B, 0, (void*)0x08062968 }, + { 0x2B3C, 0, (void*)0x080629A4 }, { 0x2B3D, 0, (void*)0x080629E0 }, { 0x2B3E, 0, (void*)0x08062A90 }, + { 0x2B3F, 0, (void*)0x08062AD8 }, { 0x2B40, 0, (void*)0x08062B34 }, { 0x2B5C, 0, (void*)0x08062B84 }, + { 0x2B5D, 0, (void*)0x08062C3C }, { 0x2B5E, 0, (void*)0x08062C68 }, { 0x2B5F, 0, (void*)0x08062C94 }, + { 0x2B60, 0, (void*)0x08062CE8 }, { 0x2B61, 0, (void*)0x08062D8C }, { 0x2B62, 0, (void*)0x08062E34 }, + { 0x2B63, 0, (void*)0x08062E84 }, { 0x2B64, 0, (void*)0x08062F18 }, { 0x2B65, 0, (void*)0x08062F50 }, + { 0x2B66, 0, (void*)0x08062F98 }, { 0x2B67, 0, (void*)0x08062FE0 }, { 0x32C8, 0, (void*)0x08063054 }, + { 0x32C9, 0, (void*)0x080630D8 }, { 0x32CA, 0, (void*)0x08063120 }, { 0x32CB, 0, (void*)0x08063184 }, + { 0x32CC, 0, (void*)0x080631E0 }, { 0x32CD, 0, (void*)0x08063210 }, { 0x32CE, 0, (void*)0x0806326C }, + { 0x32CF, 0, (void*)0x08063294 }, { 0x32D0, 0, (void*)0x080632B4 }, { 0x32D1, 0, (void*)0x08063300 }, + { 0x32D2, 0, (void*)0x08063338 }, { 0x32D3, 0, (void*)0x08063384 }, { 0x32D4, 0, (void*)0x080633B4 }, + { 0x332C, 0, (void*)0x080633E8 }, { 0x332D, 0, (void*)0x08063408 }, { 0x332E, 0, (void*)0x080634FC }, + { 0x332F, 0, (void*)0x0806356C }, { 0x3330, 0, (void*)0x08063594 }, { 0x3331, 0, (void*)0x080635AC }, + { 0x3332, 0, (void*)0x080635D0 }, { 0x3333, 0, (void*)0x08063618 }, { 0x3334, 0, (void*)0x0806369C }, + { 0x3335, 0, (void*)0x08063714 }, { 0x3336, 0, (void*)0x08063734 }, { 0x3337, 0, (void*)0x08063788 }, + { 0x3338, 0, (void*)0x080637AC }, { 0x3339, 0, (void*)0x080637CC }, { 0x333A, 0, (void*)0x08063838 }, + { 0x333B, 0, (void*)0x08063868 }, { 0x333C, 0, (void*)0x08063898 }, { 0x333D, 0, (void*)0x08063948 }, + { 0x333E, 0, (void*)0x08063988 }, { 0x333F, 0, (void*)0x080639AC }, { 0x3340, 0, (void*)0x08063A58 }, + { 0x3341, 0, (void*)0x08063AB0 }, { 0x3342, 0, (void*)0x08063B24 }, { 0x3343, 0, (void*)0x08063BBC }, + { 0x3344, 0, (void*)0x08063C28 }, { 0x3345, 0, (void*)0x08063CF0 }, { 0x3346, 0, (void*)0x08063D24 }, + { 0x3347, 0, (void*)0x08063D5C }, { 0x3348, 0, (void*)0x08063D8C }, { 0x3349, 0, (void*)0x08063DEC }, + { 0x334A, 0, (void*)0x08063E70 }, { 0x334B, 0, (void*)0x08063EA8 }, { 0x334C, 0, (void*)0x08063EC4 }, + { 0x334D, 0, (void*)0x08063FB4 }, { 0x334E, 0, (void*)0x08063FDC }, { 0x334F, 0, (void*)0x08064038 }, + { 0x3350, 0, (void*)0x08064058 }, { 0x3351, 0, (void*)0x0806408C }, { 0x3352, 0, (void*)0x080640B0 }, + { 0x3353, 0, (void*)0x080640E0 }, { 0x3354, 0, (void*)0x08064168 }, { 0x3355, 0, (void*)0x080641B4 }, + { 0x3356, 0, (void*)0x080641EC }, { 0x3357, 0, (void*)0x08064218 }, { 0x3358, 0, (void*)0x08064230 }, + { 0x3359, 0, (void*)0x08064264 }, { 0x335A, 0, (void*)0x08064298 }, { 0x335B, 0, (void*)0x080642F0 }, + { 0x335C, 0, (void*)0x08064354 }, { 0x335D, 0, (void*)0x0806437C }, { 0x335E, 0, (void*)0x080643B4 }, + { 0x335F, 0, (void*)0x080643E4 }, { 0x3360, 0, (void*)0x0806444C }, { 0x3361, 0, (void*)0x08064498 }, + { 0x3362, 0, (void*)0x080644EC }, { 0x3363, 0, (void*)0x0806453C }, { 0x3364, 0, (void*)0x08064564 }, + { 0x3365, 0, (void*)0x08064654 }, { 0x3366, 0, (void*)0x08064718 }, { 0x3367, 0, (void*)0x080647E4 }, + { 0x3368, 0, (void*)0x08064860 }, { 0x3369, 0, (void*)0x080648B8 }, { 0x336A, 0, (void*)0x08064988 }, + { 0x336B, 0, (void*)0x080649F4 }, { 0x336C, 0, (void*)0x08064A44 }, { 0x336D, 0, (void*)0x08064AA0 }, + { 0x336E, 0, (void*)0x08064AE8 }, { 0x336F, 0, (void*)0x08064B10 }, { 0x3370, 0, (void*)0x08064B64 }, + { 0x3371, 0, (void*)0x08064BBC }, { 0x3390, 0, (void*)0x08064BEC }, { 0x3391, 0, (void*)0x08064C24 }, + { 0x3392, 0, (void*)0x08064CE0 }, { 0x3393, 0, (void*)0x08064D4C }, { 0x3394, 0, (void*)0x08064DA0 }, + { 0x3395, 0, (void*)0x08064E04 }, { 0x3396, 0, (void*)0x08064F10 }, { 0x3397, 0, (void*)0x08064F84 }, + { 0x3398, 0, (void*)0x08064FBC }, { 0x3399, 0, (void*)0x08065070 }, { 0x339A, 0, (void*)0x080650DC }, + { 0x339B, 0, (void*)0x08065144 }, { 0x339C, 0, (void*)0x0806516C }, { 0x339D, 0, (void*)0x0806519C }, + { 0x339E, 0, (void*)0x080651D4 }, { 0x339F, 0, (void*)0x080651F0 }, { 0x33A0, 0, (void*)0x0806524C }, + { 0x33A1, 0, (void*)0x08065358 }, { 0x33A2, 0, (void*)0x080653CC }, { 0x33A3, 0, (void*)0x08065408 }, + { 0x33A4, 0, (void*)0x08065438 }, { 0x33A5, 0, (void*)0x08065470 }, { 0x33A6, 0, (void*)0x080654CC }, + { 0x33A7, 0, (void*)0x08065510 }, { 0x33A8, 0, (void*)0x0806555C }, { 0x33A9, 0, (void*)0x080655A0 }, + { 0x33AA, 0, (void*)0x080655C0 }, { 0x33AB, 0, (void*)0x08065600 }, { 0x33AC, 0, (void*)0x08065658 }, + { 0x33AD, 0, (void*)0x08065678 }, { 0x33AE, 0, (void*)0x08065710 }, { 0x33AF, 0, (void*)0x080657A8 }, + { 0x33B0, 0, (void*)0x080657D0 }, { 0x33B1, 0, (void*)0x080657E8 }, { 0x33B2, 0, (void*)0x08065860 }, + { 0x33B3, 0, (void*)0x080658E4 }, { 0x33B4, 0, (void*)0x08065930 }, { 0x33B5, 0, (void*)0x0806597C }, + { 0x33B6, 0, (void*)0x080659DC }, { 0x33B7, 0, (void*)0x08065A28 }, { 0x33B8, 0, (void*)0x08065ABC }, + { 0x33B9, 0, (void*)0x08065AE0 }, { 0x33BA, 0, (void*)0x08065B08 }, { 0x33BB, 0, (void*)0x08065B7C }, + { 0x33BC, 0, (void*)0x08065BD8 }, { 0x33BD, 0, (void*)0x08065C5C }, { 0x33BE, 0, (void*)0x08065C88 }, + { 0x33BF, 0, (void*)0x08065CCC }, { 0x33C0, 0, (void*)0x08065D30 }, { 0x33C1, 0, (void*)0x08065DD4 }, + { 0x33C2, 0, (void*)0x08065E24 }, { 0x33C3, 0, (void*)0x08065E84 }, { 0x33C4, 0, (void*)0x08065F4C }, + { 0x33C5, 0, (void*)0x08066024 }, { 0x33C6, 0, (void*)0x08066120 }, { 0x33C7, 0, (void*)0x08066144 }, + { 0x33C8, 0, (void*)0x08066200 }, { 0x33C9, 0, (void*)0x08066268 }, { 0x33CA, 0, (void*)0x0806629C }, + { 0x33CB, 0, (void*)0x080662D0 }, { 0x33CC, 0, (void*)0x0806630C }, { 0x33CD, 0, (void*)0x08066324 }, + { 0x33CE, 0, (void*)0x0806635C }, { 0x33CF, 0, (void*)0x0806637C }, { 0x33D0, 0, (void*)0x080663AC }, + { 0x33D1, 0, (void*)0x08066464 }, { 0x33D2, 0, (void*)0x08066578 }, { 0x33D3, 0, (void*)0x080665F4 }, + { 0x33D4, 0, (void*)0x0806665C }, { 0x33D5, 0, (void*)0x080666D0 }, { 0x33D6, 0, (void*)0x08066708 }, + { 0x33D7, 0, (void*)0x08066788 }, { 0x33D8, 0, (void*)0x080667D4 }, { 0x33D9, 0, (void*)0x08066834 }, + { 0x33F4, 0, (void*)0x080668FC }, { 0x33F5, 0, (void*)0x08066934 }, { 0x33F6, 0, (void*)0x080669DC }, + { 0x33F7, 0, (void*)0x08066A3C }, { 0x33F9, 0, (void*)0x08066B00 }, { 0x3458, 0, (void*)0x08066B40 }, + { 0x3459, 0, (void*)0x08066B60 }, { 0x345A, 0, (void*)0x08066BC0 }, { 0x345B, 0, (void*)0x08066C10 }, + { 0x345C, 0, (void*)0x08066C7C }, { 0x345D, 0, (void*)0x08066CB8 }, { 0x345E, 0, (void*)0x08066D20 }, + { 0x345F, 0, (void*)0x08066D90 }, { 0x3460, 0, (void*)0x08066E58 }, { 0x3461, 0, (void*)0x08066E9C }, + { 0x3462, 0, (void*)0x08066EE8 }, { 0x3463, 0, (void*)0x08066F38 }, { 0x3464, 0, (void*)0x08066F64 }, + { 0x3465, 0, (void*)0x08066FF8 }, { 0x3466, 0, (void*)0x080670A4 }, { 0x3467, 0, (void*)0x080670F0 }, + { 0x3468, 0, (void*)0x08067144 }, { 0x3469, 0, (void*)0x08067174 }, { 0x346A, 0, (void*)0x080671E8 }, + { 0x346B, 0, (void*)0x08067208 }, { 0x346C, 0, (void*)0x08067224 }, { 0x346D, 0, (void*)0x0806728C }, + { 0x346E, 0, (void*)0x0806731C }, { 0x346F, 0, (void*)0x0806739C }, { 0x3470, 0, (void*)0x08067400 }, + { 0x3471, 0, (void*)0x0806743C }, { 0x3472, 0, (void*)0x0806746C }, { 0x3473, 0, (void*)0x080674B0 }, + { 0x3474, 0, (void*)0x08067520 }, { 0x3475, 0, (void*)0x08067594 }, { 0x3476, 0, (void*)0x080675B8 }, + { 0x3477, 0, (void*)0x080675E0 }, { 0x3478, 0, (void*)0x08067618 }, { 0x3479, 0, (void*)0x08067648 }, + { 0x347A, 0, (void*)0x08067688 }, { 0x347B, 0, (void*)0x080676B0 }, { 0x347C, 0, (void*)0x080676F0 }, + { 0x347D, 0, (void*)0x08067760 }, { 0x347E, 0, (void*)0x080677A4 }, { 0x347F, 0, (void*)0x080677F4 }, + { 0x3480, 0, (void*)0x0806782C }, { 0x3481, 0, (void*)0x080678A0 }, { 0x3482, 0, (void*)0x080678C8 }, + { 0x3483, 0, (void*)0x080678F8 }, { 0x3484, 0, (void*)0x08067934 }, { 0x3485, 0, (void*)0x08067990 }, + { 0x3486, 0, (void*)0x080679E0 }, { 0x3487, 0, (void*)0x08067A18 }, { 0x3488, 0, (void*)0x08067A68 }, + { 0x3489, 0, (void*)0x08067AE8 }, { 0x348A, 0, (void*)0x08067B54 }, { 0x348B, 0, (void*)0x08067BBC }, + { 0x348C, 0, (void*)0x08067C0C }, { 0x348D, 0, (void*)0x08067C5C }, { 0x348E, 0, (void*)0x08067CB8 }, + { 0x348F, 0, (void*)0x08067D6C }, { 0x3490, 0, (void*)0x08067DE0 }, { 0x3491, 0, (void*)0x08067E2C }, + { 0x3492, 0, (void*)0x08067E80 }, { 0x3493, 0, (void*)0x08067EDC }, { 0x3494, 0, (void*)0x08067F20 }, + { 0x3495, 0, (void*)0x08067F44 }, { 0x3496, 0, (void*)0x08067F64 }, { 0x3497, 0, (void*)0x08067FEC }, + { 0x3498, 0, (void*)0x0806803C }, { 0x3499, 0, (void*)0x08068094 }, { 0x349A, 0, (void*)0x080680C8 }, + { 0x349B, 0, (void*)0x080680FC }, { 0x349C, 0, (void*)0x0806812C }, { 0x349D, 0, (void*)0x08068158 }, + { 0x349E, 0, (void*)0x08068180 }, { 0x349F, 0, (void*)0x080681C0 }, { 0x34A0, 0, (void*)0x08068224 }, + { 0x34A1, 0, (void*)0x08068278 }, { 0x34A2, 0, (void*)0x080682C0 }, { 0x34A3, 0, (void*)0x0806830C }, + { 0x34A4, 0, (void*)0x08068394 }, { 0x34A5, 0, (void*)0x080683F4 }, { 0x34A6, 0, (void*)0x08068430 }, + { 0x34A7, 0, (void*)0x08068498 }, { 0x34A8, 0, (void*)0x080684FC }, { 0x34A9, 0, (void*)0x08068544 }, + { 0x34AA, 0, (void*)0x08068564 }, { 0x34AB, 0, (void*)0x08068598 }, { 0x34AC, 0, (void*)0x0806860C }, + { 0x34AD, 0, (void*)0x08068640 }, { 0x34AE, 0, (void*)0x080686F4 }, { 0x34AF, 0, (void*)0x08068768 }, + { 0x34B0, 0, (void*)0x08068780 }, { 0x34B1, 0, (void*)0x080687E0 }, { 0x34B2, 0, (void*)0x080687F8 }, + { 0x34B3, 0, (void*)0x08068860 }, { 0x3520, 0, (void*)0x080688F4 }, { 0x3521, 0, (void*)0x08068958 }, + { 0x3522, 0, (void*)0x080689C8 }, { 0x3523, 0, (void*)0x08068A38 }, { 0x3524, 0, (void*)0x08068A88 }, + { 0x3525, 0, (void*)0x08068B04 }, { 0x3526, 0, (void*)0x08068B30 }, { 0x3527, 0, (void*)0x08068B7C }, + { 0x3528, 0, (void*)0x08068CA0 }, { 0x3529, 0, (void*)0x08068CF4 }, { 0x352A, 0, (void*)0x08068D1C }, + { 0x352B, 0, (void*)0x08068DB0 }, { 0x352C, 0, (void*)0x08068E28 }, { 0x352D, 0, (void*)0x08068E78 }, + { 0x352E, 0, (void*)0x08068F14 }, { 0x352F, 0, (void*)0x08068F78 }, { 0x3530, 0, (void*)0x08068FA0 }, + { 0x3531, 0, (void*)0x08069020 }, { 0x3532, 0, (void*)0x080690CC }, { 0x3533, 0, (void*)0x0806913C }, + { 0x3534, 0, (void*)0x080691B0 }, { 0x3535, 0, (void*)0x08069224 }, { 0x3536, 0, (void*)0x0806923C }, + { 0x3537, 0, (void*)0x08069284 }, { 0x3538, 0, (void*)0x080692D8 }, { 0x3539, 0, (void*)0x08069314 }, + { 0x353A, 0, (void*)0x08069358 }, { 0x353B, 0, (void*)0x08069390 }, { 0x353C, 0, (void*)0x080693E4 }, + { 0x353D, 0, (void*)0x08069434 }, { 0x353E, 0, (void*)0x08069490 }, { 0x353F, 0, (void*)0x080694C4 }, + { 0x3540, 0, (void*)0x08069524 }, { 0x3541, 0, (void*)0x0806957C }, { 0x3542, 0, (void*)0x080695C0 }, + { 0x3543, 0, (void*)0x08069608 }, { 0x3544, 0, (void*)0x08069668 }, { 0x3545, 0, (void*)0x080696DC }, + { 0x3546, 0, (void*)0x08069734 }, { 0x3548, 0, (void*)0x08069774 }, { 0x3549, 0, (void*)0x08069814 }, + { 0x354A, 0, (void*)0x080698A0 }, { 0x354B, 0, (void*)0x08069930 }, { 0x354C, 0, (void*)0x08069998 }, + { 0xFFFC, 0, (void*)0x080699C8 }, { 0xFFFD, 0, (void*)0x080699D4 }, { 0xFFFF, 0, NULL }, }; MessageTableEntry D_801CFB08[46] = { - { 0x4E20, 0xB0, 0x07000000 }, { 0x4E21, 0xB0, 0x0700003C }, { 0x4E22, 0xB0, 0x07000094 }, - { 0x4E23, 0xB0, 0x070000F0 }, { 0x4E24, 0xB0, 0x07000140 }, { 0x4E25, 0xB0, 0x0700019C }, - { 0x4E26, 0xB0, 0x070001D8 }, { 0x4E27, 0xB0, 0x07000248 }, { 0x4E28, 0xB0, 0x0700027C }, - { 0x4E29, 0xB0, 0x070002E0 }, { 0x4E2A, 0xB0, 0x0700033C }, { 0x4E2B, 0xB0, 0x07000384 }, - { 0x4E2C, 0xB0, 0x070003C8 }, { 0x4E2D, 0xB0, 0x0700040C }, { 0x4E2E, 0xB0, 0x07000450 }, - { 0x4E2F, 0xB0, 0x070004A8 }, { 0x4E30, 0xB0, 0x07000504 }, { 0x4E31, 0xB0, 0x07000564 }, - { 0x4E32, 0xB0, 0x070005CC }, { 0x4E33, 0xB0, 0x07000610 }, { 0x4E34, 0xB0, 0x07000654 }, - { 0x4E35, 0xB0, 0x07000698 }, { 0x4E36, 0xB0, 0x070006F8 }, { 0x4E37, 0xB0, 0x07000750 }, - { 0x4E38, 0xB0, 0x07000798 }, { 0x4E39, 0xB0, 0x0700081C }, { 0x4E3A, 0xB0, 0x07000888 }, - { 0x4E3B, 0xB0, 0x07000924 }, { 0x4E3C, 0xB0, 0x070009B4 }, { 0x4E3D, 0xB0, 0x070009E8 }, - { 0x4E3E, 0xB0, 0x07000A78 }, { 0x4E3F, 0xB0, 0x07000AB0 }, { 0x4E40, 0xB0, 0x07000B2C }, - { 0x4E41, 0xB0, 0x07000B54 }, { 0x4E42, 0xB0, 0x07000B7C }, { 0x4E43, 0xB0, 0x07000BA4 }, - { 0x4E44, 0xB0, 0x07000BCC }, { 0x4E45, 0xB0, 0x07000BF4 }, { 0x4E46, 0xB0, 0x07000C1C }, - { 0x4E47, 0xB0, 0x07000C44 }, { 0x4E48, 0xB0, 0x07000C6C }, { 0x4E49, 0xB0, 0x07000CEC }, - { 0x4E4A, 0xB0, 0x07000D5C }, { 0x4E4B, 0xB0, 0x07000DC8 }, { 0x4E4C, 0xB0, 0x07000E54 }, - { 0xFFFF, 0, NULL }, + { 0x4E20, 0xB0, (void*)0x07000000 }, { 0x4E21, 0xB0, (void*)0x0700003C }, + { 0x4E22, 0xB0, (void*)0x07000094 }, { 0x4E23, 0xB0, (void*)0x070000F0 }, + { 0x4E24, 0xB0, (void*)0x07000140 }, { 0x4E25, 0xB0, (void*)0x0700019C }, + { 0x4E26, 0xB0, (void*)0x070001D8 }, { 0x4E27, 0xB0, (void*)0x07000248 }, + { 0x4E28, 0xB0, (void*)0x0700027C }, { 0x4E29, 0xB0, (void*)0x070002E0 }, + { 0x4E2A, 0xB0, (void*)0x0700033C }, { 0x4E2B, 0xB0, (void*)0x07000384 }, + { 0x4E2C, 0xB0, (void*)0x070003C8 }, { 0x4E2D, 0xB0, (void*)0x0700040C }, + { 0x4E2E, 0xB0, (void*)0x07000450 }, { 0x4E2F, 0xB0, (void*)0x070004A8 }, + { 0x4E30, 0xB0, (void*)0x07000504 }, { 0x4E31, 0xB0, (void*)0x07000564 }, + { 0x4E32, 0xB0, (void*)0x070005CC }, { 0x4E33, 0xB0, (void*)0x07000610 }, + { 0x4E34, 0xB0, (void*)0x07000654 }, { 0x4E35, 0xB0, (void*)0x07000698 }, + { 0x4E36, 0xB0, (void*)0x070006F8 }, { 0x4E37, 0xB0, (void*)0x07000750 }, + { 0x4E38, 0xB0, (void*)0x07000798 }, { 0x4E39, 0xB0, (void*)0x0700081C }, + { 0x4E3A, 0xB0, (void*)0x07000888 }, { 0x4E3B, 0xB0, (void*)0x07000924 }, + { 0x4E3C, 0xB0, (void*)0x070009B4 }, { 0x4E3D, 0xB0, (void*)0x070009E8 }, + { 0x4E3E, 0xB0, (void*)0x07000A78 }, { 0x4E3F, 0xB0, (void*)0x07000AB0 }, + { 0x4E40, 0xB0, (void*)0x07000B2C }, { 0x4E41, 0xB0, (void*)0x07000B54 }, + { 0x4E42, 0xB0, (void*)0x07000B7C }, { 0x4E43, 0xB0, (void*)0x07000BA4 }, + { 0x4E44, 0xB0, (void*)0x07000BCC }, { 0x4E45, 0xB0, (void*)0x07000BF4 }, + { 0x4E46, 0xB0, (void*)0x07000C1C }, { 0x4E47, 0xB0, (void*)0x07000C44 }, + { 0x4E48, 0xB0, (void*)0x07000C6C }, { 0x4E49, 0xB0, (void*)0x07000CEC }, + { 0x4E4A, 0xB0, (void*)0x07000D5C }, { 0x4E4B, 0xB0, (void*)0x07000DC8 }, + { 0x4E4C, 0xB0, (void*)0x07000E54 }, { 0xFFFF, 0, NULL }, }; diff --git a/src/code/z_olib.c b/src/code/z_olib.c index 848a48a72..86fa656f9 100644 --- a/src/code/z_olib.c +++ b/src/code/z_olib.c @@ -57,7 +57,7 @@ f32 OLib_ClampMaxDist(f32 val, f32 max) { /** * Takes the difference of points b and a, and creates a normal vector */ -Vec3f* OLib_Vec3fDistNormalize(Vec3f* dest, Vec3f* a, Vec3f* b) { +Vec3f OLib_Vec3fDistNormalize(Vec3f* a, Vec3f* b) { Vec3f v1; Vec3f v2; f32 dist; @@ -72,15 +72,13 @@ Vec3f* OLib_Vec3fDistNormalize(Vec3f* dest, Vec3f* a, Vec3f* b) { v2.y = v1.y / dist; v2.z = v1.z / dist; - *dest = v2; - - return dest; + return v2; } /** * Takes the spherical coordinate `sph`, and converts it into a x,y,z position */ -Vec3f* OLib_VecSphToVec3f(Vec3f* dest, VecSph* sph) { +Vec3f OLib_VecSphToVec3f(VecSph* sph) { Vec3f v; f32 sinPitch; f32 cosPitch = Math_CosS(sph->pitch); @@ -94,28 +92,26 @@ Vec3f* OLib_VecSphToVec3f(Vec3f* dest, VecSph* sph) { v.y = sph->r * cosPitch; v.z = sph->r * sinPitch * cosYaw; - *dest = v; - - return dest; + return v; } /** * Takes the geographic point `geo` and converts it into a x,y,z position */ -Vec3f* OLib_VecGeoToVec3f(Vec3f* dest, VecGeo* geo) { +Vec3f OLib_VecGeoToVec3f(VecGeo* geo) { VecSph sph; sph.r = geo->r; sph.pitch = 0x4000 - geo->pitch; sph.yaw = geo->yaw; - return OLib_VecSphToVec3f(dest, &sph); + return OLib_VecSphToVec3f(&sph); } /** * Takes the point `vec`, and converts it into a spherical coordinate */ -VecSph* OLib_Vec3fToVecSph(VecSph* dest, Vec3f* vec) { +VecSph OLib_Vec3fToVecSph(Vec3f* vec) { VecSph sph; f32 distXZSq = SQ(vec->x) + SQ(vec->z); f32 distXZ = sqrtf(distXZSq); @@ -133,118 +129,100 @@ VecSph* OLib_Vec3fToVecSph(VecSph* dest, Vec3f* vec) { sph.yaw = CAM_DEG_TO_BINANG(RAD_TO_DEG(Math_FAtan2F(vec->x, vec->z))); } - *dest = sph; - - return dest; + return sph; } /** * Takes the point `vec`, and converts it to a geographic coordinate */ -VecGeo* OLib_Vec3fToVecGeo(VecGeo* dest, Vec3f* vec) { - VecSph sph; +VecGeo OLib_Vec3fToVecGeo(Vec3f* vec) { + VecSph sph = OLib_Vec3fToVecSph(vec); - OLib_Vec3fToVecSph(&sph, vec); sph.pitch = 0x4000 - sph.pitch; - *dest = sph; - - return dest; + return sph; } /** * Takes the differences of positions `a` and `b`, and converts them to spherical coordinates */ -VecSph* OLib_Vec3fDiffToVecSph(VecSph* dest, Vec3f* a, Vec3f* b) { +VecSph OLib_Vec3fDiffToVecSph(Vec3f* a, Vec3f* b) { Vec3f diff; diff.x = b->x - a->x; diff.y = b->y - a->y; diff.z = b->z - a->z; - return OLib_Vec3fToVecSph(dest, &diff); + return OLib_Vec3fToVecSph(&diff); } /** * Takes the difference of positions `a` and `b`, and converts them to geographic coordinates */ -VecGeo* OLib_Vec3fDiffToVecGeo(VecGeo* dest, Vec3f* a, Vec3f* b) { +VecGeo OLib_Vec3fDiffToVecGeo(Vec3f* a, Vec3f* b) { Vec3f diff; diff.x = b->x - a->x; diff.y = b->y - a->y; diff.z = b->z - a->z; - return OLib_Vec3fToVecGeo(dest, &diff); + return OLib_Vec3fToVecGeo(&diff); } /** * Takes the sum of positions `a` (x,y,z coordinates) and `geo` (geographic coordinates), result is in x,y,z position * Identical to Quake_AddVec from OoT */ -Vec3f* OLib_AddVecGeoToVec3f(Vec3f* dest, Vec3f* a, VecGeo* geo) { +Vec3f OLib_AddVecGeoToVec3f(Vec3f* a, VecGeo* geo) { Vec3f sum; - Vec3f b; + Vec3f b = OLib_VecGeoToVec3f(geo); - OLib_VecGeoToVec3f(&b, geo); sum.x = a->x + b.x; sum.y = a->y + b.y; sum.z = a->z + b.z; - *dest = sum; - - return dest; + return sum; } /** * Gets the pitch/yaw of the vector formed from `b`-`a`, result is in radians */ -Vec3f* OLib_Vec3fDiffRad(Vec3f* dest, Vec3f* a, Vec3f* b) { +Vec3f OLib_Vec3fDiffRad(Vec3f* a, Vec3f* b) { Vec3f anglesRad; anglesRad.x = Math_FAtan2F(b->z - a->z, b->y - a->y); anglesRad.y = Math_FAtan2F(b->x - a->x, b->z - a->z); anglesRad.z = 0; - *dest = anglesRad; - - return dest; + return anglesRad; } /** * Gets the pitch/yaw of the vector formed from `b`-`a`, result is in degrees */ -Vec3f* OLib_Vec3fDiffDegF(Vec3f* dest, Vec3f* a, Vec3f* b) { - Vec3f anglesRad; +Vec3f OLib_Vec3fDiffDegF(Vec3f* a, Vec3f* b) { + Vec3f anglesRad = OLib_Vec3fDiffRad(a, b); Vec3f anglesDegrees; - OLib_Vec3fDiffRad(&anglesRad, a, b); - anglesDegrees.x = RAD_TO_DEG(anglesRad.x); anglesDegrees.y = RAD_TO_DEG(anglesRad.y); anglesDegrees.z = 0.0f; - *dest = anglesDegrees; - - return dest; + return anglesDegrees; } /** * Gets the pitch/yaw of the vector formed from `b`-`a`, result is in binary degrees */ -Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b) { - Vec3f anglesRad; +Vec3s OLib_Vec3fDiffBinAng(Vec3f* a, Vec3f* b) { + Vec3f anglesRad = OLib_Vec3fDiffRad(a, b); Vec3s anglesBinAng; - OLib_Vec3fDiffRad(&anglesRad, a, b); - anglesBinAng.x = CAM_DEG_TO_BINANG(RAD_TO_DEG(anglesRad.x)); anglesBinAng.y = CAM_DEG_TO_BINANG(RAD_TO_DEG(anglesRad.y)); anglesBinAng.z = 0.0f; - *dest = anglesBinAng; - - return dest; + return anglesBinAng; } /** @@ -255,9 +233,9 @@ void OLib_Vec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode) { switch (mode) { case OLIB_DIFF_OFFSET: - OLib_Vec3fDiffToVecGeo(&geo, &a->pos, b); + geo = OLib_Vec3fDiffToVecGeo(&a->pos, b); geo.yaw -= a->rot.y; - OLib_VecGeoToVec3f(dest, &geo); + *dest = OLib_VecGeoToVec3f(&geo); break; case OLIB_DIFF: @@ -280,9 +258,9 @@ void OLib_Vec3fAdd(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode) { switch (mode) { case OLIB_ADD_OFFSET: - OLib_Vec3fToVecGeo(&geo, b); + geo = OLib_Vec3fToVecGeo(b); geo.yaw += a->rot.y; - OLib_AddVecGeoToVec3f(dest, &a->pos, &geo); + *dest = OLib_AddVecGeoToVec3f(&a->pos, &geo); break; case OLIB_ADD: diff --git a/src/code/z_overlay.c b/src/code/z_overlay.c index 2e348c336..fe0857820 100644 --- a/src/code/z_overlay.c +++ b/src/code/z_overlay.c @@ -19,7 +19,7 @@ void* TransitionOverlay_VramToRam(TransitionOverlay* overlayEntry, void* vramAdd void* loadedRamAddr = Lib_PhysicalToVirtual(overlayEntry->loadInfo.addr); if ((loadedRamAddr != NULL) && (vramAddr >= overlayEntry->vramStart) && (vramAddr < overlayEntry->vramEnd)) { - return ((uintptr_t)loadedRamAddr - (uintptr_t)overlayEntry->vramStart) + (uintptr_t)vramAddr; + return (void*)(((uintptr_t)loadedRamAddr - (uintptr_t)overlayEntry->vramStart) + (uintptr_t)vramAddr); } return vramAddr; } diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 4da2e4d7a..d076f3578 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -918,8 +918,8 @@ void Interface_NewDay(PlayState* play, s32 day) { } // Loads day number from week_static for the three-day clock - DmaMgr_SendRequest0((u32)play->interfaceCtx.doActionSegment + 0x780, - (u32)SEGMENT_ROM_START(week_static) + i * 0x510, 0x510); + DmaMgr_SendRequest0((void*)(play->interfaceCtx.doActionSegment + 0x780), + SEGMENT_ROM_START_OFFSET(week_static, i * 0x510), 0x510); // i is used to store sceneId for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.permanentSceneFlags); i++) { @@ -3131,7 +3131,7 @@ void Inventory_UnequipItem(s16 item) { s32 Inventory_ReplaceItem(PlayState* play, u8 oldItem, u8 newItem) { u8 i; - for (i = 0; i < 24; i++) { + for (i = 0; i < ITEM_NUM_SLOTS; i++) { if (gSaveContext.save.saveInfo.inventory.items[i] == oldItem) { gSaveContext.save.saveInfo.inventory.items[i] = newItem; @@ -4444,6 +4444,7 @@ void Interface_DrawClock(PlayState* play) { CLOCK_TIME(10, 0), CLOCK_TIME(11, 0), CLOCK_TIME(12, 0), CLOCK_TIME(13, 0), CLOCK_TIME(14, 0), CLOCK_TIME(15, 0), CLOCK_TIME(16, 0), CLOCK_TIME(17, 0), CLOCK_TIME(18, 0), CLOCK_TIME(19, 0), CLOCK_TIME(20, 0), CLOCK_TIME(21, 0), CLOCK_TIME(22, 0), CLOCK_TIME(23, 0), CLOCK_TIME(24, 0) - 1, + CLOCK_TIME(0, 0), }; static TexturePtr sThreeDayClockHourTextures[] = { gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, @@ -5540,7 +5541,7 @@ void Interface_StartMoonCrash(PlayState* play) { play->transitionType = TRANS_TYPE_FADE_WHITE; } -void Interface_GetTimerDigits(OSTime time, s16* timerArr) { +void Interface_GetTimerDigits(OSTime time, s16 timerArr[8]) { OSTime t = time; // 6 minutes @@ -7221,7 +7222,8 @@ void Interface_Init(PlayState* play) { interfaceCtx->doActionSegment = THA_AllocTailAlign16(&play->state.tha, 0xC90); DmaMgr_SendRequest0(interfaceCtx->doActionSegment, SEGMENT_ROM_START(do_action_static), 0x300); - DmaMgr_SendRequest0(interfaceCtx->doActionSegment + 0x300, SEGMENT_ROM_START(do_action_static) + 0x480, 0x180); + DmaMgr_SendRequest0(interfaceCtx->doActionSegment + 0x300, SEGMENT_ROM_START_OFFSET(do_action_static, 0x480), + 0x180); Interface_NewDay(play, CURRENT_DAY); diff --git a/src/code/z_play.c b/src/code/z_play.c index 4e3ace87e..c17bcbfba 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -1028,11 +1028,11 @@ void Play_UpdateMain(PlayState* this) { } } - if ((!sp5C) || gDbgCamEnabled) { + if (!sp5C || gDbgCamEnabled) { s32 i; this->nextCamera = this->activeCamId; - for (i = 0; i < 4; i++) { + for (i = 0; i < NUM_CAMS; i++) { if ((i != this->nextCamera) && (this->cameraPtrs[i] != NULL)) { Camera_Update(this->cameraPtrs[i]); } @@ -1127,10 +1127,10 @@ void Play_PostWorldDraw(PlayState* this) { void Play_DrawMain(PlayState* this) { GraphicsContext* gfxCtx = this->state.gfxCtx; - Lights* sp268; + Lights* lights; Vec3f temp; u8 sp25B = false; - f32 var_fv0; // zFar + f32 zFar; if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_UNK4) { PreRender_ApplyFiltersSlowlyDestroy(&this->pauseBgPreRender); @@ -1167,19 +1167,17 @@ void Play_DrawMain(PlayState* this) { gSPSegment(OVERLAY_DISP++, 0x02, this->sceneSegment); if (1) { - ShrinkWindow_Draw(gfxCtx); POLY_OPA_DISP = Play_SetFog(this, POLY_OPA_DISP); POLY_XLU_DISP = Play_SetFog(this, POLY_XLU_DISP); - // zFar - var_fv0 = this->lightCtx.zFar; - if (var_fv0 > 12800.0f) { - var_fv0 = 12800.0f; + zFar = this->lightCtx.zFar; + if (zFar > 12800.0f) { + zFar = 12800.0f; } - View_SetPerspective(&this->view, this->view.fovy, this->view.zNear, var_fv0); + View_SetPerspective(&this->view, this->view.fovy, this->view.zNear, zFar); View_Apply(&this->view, 0xF); @@ -1291,14 +1289,14 @@ void Play_DrawMain(PlayState* this) { Environment_Draw(this); } - sp268 = LightContext_NewLights(&this->lightCtx, gfxCtx); + lights = LightContext_NewLights(&this->lightCtx, gfxCtx); if (this->roomCtx.curRoom.enablePosLights || (MREG(93) != 0)) { - sp268->enablePosLights = true; + lights->enablePosLights = true; } - Lights_BindAll(sp268, this->lightCtx.listHead, NULL, this); - Lights_Draw(sp268, gfxCtx); + Lights_BindAll(lights, this->lightCtx.listHead, NULL, this); + Lights_Draw(lights, gfxCtx); if (1) { u32 roomDrawFlags = ((1) ? 1 : 0) | (((void)0, 1) ? 2 : 0); // FAKE: @@ -1311,12 +1309,12 @@ void Play_DrawMain(PlayState* this) { } if (this->skyboxCtx.skyboxShouldDraw) { - Vec3f sp78; + Vec3f quakeOffset; if (1) { - Camera_GetQuakeOffset(&sp78, GET_ACTIVE_CAM(this)); - Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + sp78.x, - this->view.eye.y + sp78.y, this->view.eye.z + sp78.z); + quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(this)); + Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + quakeOffset.x, + this->view.eye.y + quakeOffset.y, this->view.eye.z + quakeOffset.z); } } @@ -2317,7 +2315,10 @@ void Play_Init(GameState* thisx) { THA_GetRemaining(&this->state.tha); zAllocSize = THA_GetRemaining(&this->state.tha); zAlloc = (uintptr_t)THA_AllocTailAlign16(&this->state.tha, zAllocSize); - ZeldaArena_Init(((zAlloc + 8) & ~0xF), (zAllocSize - ((zAlloc + 8) & ~0xF)) + zAlloc); //! @bug: Incorrect ALIGN16s + + //! @bug: Incorrect ALIGN16s + ZeldaArena_Init((void*)((zAlloc + 8) & ~0xF), (zAllocSize - ((zAlloc + 8) & ~0xF)) + zAlloc); + Actor_InitContext(this, &this->actorCtx, this->linkActorEntry); while (!Room_HandleLoadCallbacks(this, &this->roomCtx)) {} diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index f5b034f2b..dda20d7da 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1037,7 +1037,7 @@ Gfx* sPlayerFirstPersonRightShoulderDLs[PLAYER_FORM_MAX] = { Gfx* sPlayerFirstPersonRightHandDLs[PLAYER_FORM_MAX] = { gLinkFierceDeityRightHandDL, //! @bug This is in the middle of a texture in the link_goron object. It has the same offset as a link_nuts dlist - 0x060038C0, + (Gfx*)0x060038C0, gLinkZoraRightHandOpenDL, gLinkDekuRightHandDL, object_link_child_DL_018490, @@ -1046,7 +1046,7 @@ Gfx* sPlayerFirstPersonRightHandDLs[PLAYER_FORM_MAX] = { Gfx* sPlayerFirstPersonRightHandHookshotDLs[PLAYER_FORM_MAX] = { gLinkFierceDeityRightHandDL, //! @bug This is in the middle of a texture in the link_goron object. It has the same offset as a link_nuts dlist - 0x060038C0, + (Gfx*)0x060038C0, gLinkZoraRightHandOpenDL, gLinkDekuRightHandDL, object_link_child_DL_017B40, @@ -2036,7 +2036,7 @@ s32 Player_OverrideLimbDrawGameplayCommon(PlayState* play, s32 limbIndex, Gfx** // Note: The increment would not be done for the root limb, even if it had a non-NULL `dList`. // So if the root limb had a non-NULL `dList` (which is not the case in vanilla), // an out-of-bounds write to `bodyPartsPos` would occur. - sPlayerCurBodyPartPos = &player->bodyPartsPos[-1]; + sPlayerCurBodyPartPos = &player->bodyPartsPos[0] - 1; if (player->transformation != PLAYER_FORM_FIERCE_DEITY) { if (!(player->skelAnime.moveFlags & ANIM_FLAG_4) || (player->skelAnime.moveFlags & ANIM_FLAG_1)) { diff --git a/src/code/z_quake.c b/src/code/z_quake.c index 8225c6347..19db37c63 100644 --- a/src/code/z_quake.c +++ b/src/code/z_quake.c @@ -55,7 +55,7 @@ void Quake_UpdateShakeInfo(QuakeRequest* req, ShakeInfo* shake, f32 yOffset, f32 atEyeOffset.x = 0; atEyeOffset.y = 0; atEyeOffset.z = 0; - OLib_Vec3fDiffToVecGeo(&eyeToAtGeo, eye, at); + eyeToAtGeo = OLib_Vec3fDiffToVecGeo(eye, at); // y shake geo.r = req->y * yOffset; @@ -63,7 +63,7 @@ void Quake_UpdateShakeInfo(QuakeRequest* req, ShakeInfo* shake, f32 yOffset, f32 geo.pitch = eyeToAtGeo.pitch + req->orientation.x + 0x4000; geo.yaw = eyeToAtGeo.yaw + req->orientation.y; // apply y shake - OLib_AddVecGeoToVec3f(&atEyeOffset, &atEyeOffset, &geo); + atEyeOffset = OLib_AddVecGeoToVec3f(&atEyeOffset, &geo); // x shake geo.r = req->x * xOffset; @@ -71,7 +71,7 @@ void Quake_UpdateShakeInfo(QuakeRequest* req, ShakeInfo* shake, f32 yOffset, f32 geo.pitch = eyeToAtGeo.pitch + req->orientation.x; geo.yaw = eyeToAtGeo.yaw + req->orientation.y + 0x4000; // apply x shake - OLib_AddVecGeoToVec3f(&atEyeOffset, &atEyeOffset, &geo); + atEyeOffset = OLib_AddVecGeoToVec3f(&atEyeOffset, &geo); } else { atEyeOffset.x = 0; atEyeOffset.y = req->y * yOffset; @@ -81,7 +81,7 @@ void Quake_UpdateShakeInfo(QuakeRequest* req, ShakeInfo* shake, f32 yOffset, f32 geo.pitch = req->orientation.x; geo.yaw = req->orientation.y; - OLib_AddVecGeoToVec3f(&atEyeOffset, &atEyeOffset, &geo); + atEyeOffset = OLib_AddVecGeoToVec3f(&atEyeOffset, &geo); } shake->atOffset = shake->eyeOffset = atEyeOffset; @@ -752,7 +752,7 @@ void Distortion_Update(void) { player = GET_PLAYER(play); if (player != NULL) { - Actor_GetWorldPosShapeRot(&playerPosRot, &player->actor); + playerPosRot = Actor_GetWorldPosShapeRot(&player->actor); } depthPhaseStep = 359.2f; diff --git a/src/code/z_rcp.c b/src/code/z_rcp.c index 0830fa572..b30e22440 100644 --- a/src/code/z_rcp.c +++ b/src/code/z_rcp.c @@ -1449,8 +1449,8 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g s32 i; gSegments[0x00] = 0; - gSegments[0x0F] = gfxCtx->curFrameBuffer; - gSegments[0x0E] = gGfxMasterDL; + gSegments[0x0F] = (uintptr_t)gfxCtx->curFrameBuffer; + gSegments[0x0E] = (uintptr_t)gGfxMasterDL; zbuffer = gfxCtx->zbuffer; diff --git a/src/code/z_room.c b/src/code/z_room.c index f96073440..dd6aa2b9a 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -332,7 +332,7 @@ void Room_DrawImageSingle(PlayState* play, Room* room, u32 flags) { { Vec3f quakeOffset; - Camera_GetQuakeOffset(&quakeOffset, activeCam); + quakeOffset = Camera_GetQuakeOffset(activeCam); Prerender_DrawBackground2D( &gfx, roomShape->source, roomShape->tlut, roomShape->width, roomShape->height, roomShape->fmt, @@ -431,7 +431,8 @@ void Room_DrawImageMulti(PlayState* play, Room* room, u32 flags) { { Vec3f quakeOffset; - Camera_GetQuakeOffset(&quakeOffset, activeCam); + quakeOffset = Camera_GetQuakeOffset(activeCam); + Prerender_DrawBackground2D(&gfx, bgEntry->source, bgEntry->tlut, bgEntry->width, bgEntry->height, bgEntry->fmt, bgEntry->siz, bgEntry->tlutMode, bgEntry->tlutCount, (quakeOffset.x + quakeOffset.z) * 1.2f + quakeOffset.y * 0.6f, diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 0218424cf..6a073ad72 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -26,7 +26,7 @@ s32 Object_SpawnPersistent(ObjectContext* objectCtx, s16 id) { if (objectCtx->numEntries < ARRAY_COUNT(objectCtx->slots) - 1) { objectCtx->slots[objectCtx->numEntries + 1].segment = - ALIGN16((u32)objectCtx->slots[objectCtx->numEntries].segment + size); + (void*)ALIGN16((uintptr_t)objectCtx->slots[objectCtx->numEntries].segment + size); } objectCtx->numEntries++; diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index 675487072..bb900b994 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -1007,11 +1007,11 @@ void AnimationContext_SetLoadFrame(PlayState* play, PlayerAnimationHeader* anima if (entry != NULL) { PlayerAnimationHeader* playerAnimHeader = Lib_SegmentedToVirtual(animation); - void* ram = (void*)frameTable; + s32 pad; osCreateMesgQueue(&entry->data.load.msgQueue, entry->data.load.msg, ARRAY_COUNT(entry->data.load.msg)); DmaMgr_SendRequestImpl( - &entry->data.load.req, ram, + &entry->data.load.req, frameTable, LINK_ANIMETION_OFFSET(playerAnimHeader->linkAnimSegment, (sizeof(Vec3s) * limbCount + sizeof(s16)) * frame), sizeof(Vec3s) * limbCount + sizeof(s16), 0, &entry->data.load.msgQueue, NULL); } diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 5f9e11878..e4eb1ef9a 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -1,6 +1,7 @@ #include "global.h" #include "z64horse.h" #include "overlays/gamestates/ovl_file_choose/z_file_select.h" +#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" void Sram_SyncWriteToFlash(SramContext* sramCtx, s32 curPage, s32 numPages); void func_80147314(SramContext* sramCtx, s32 fileNum); @@ -270,7 +271,7 @@ u32 gSramSlotOffsets[] = { OOT_SLOT_OFFSET(5), }; -u8 gAmmoItems[] = { +u8 gAmmoItems[ITEM_NUM_SLOTS] = { ITEM_NONE, // SLOT_OCARINA ITEM_BOW, // SLOT_BOW ITEM_NONE, // SLOT_ARROW_FIRE @@ -529,7 +530,7 @@ void Sram_SaveEndOfCycle(PlayState* play) { } } - for (i = 0; i < ARRAY_COUNT(gAmmoItems); i++) { + for (i = 0; i < ITEM_NUM_SLOTS; i++) { if (gAmmoItems[i] != ITEM_NONE) { if ((gSaveContext.save.saveInfo.inventory.items[i] != ITEM_NONE) && (i != SLOT_PICTOGRAPH_BOX)) { item = gSaveContext.save.saveInfo.inventory.items[i]; @@ -1487,8 +1488,8 @@ void func_801457CC(GameState* gameState, SramContext* sramCtx) { fileSelect->rupees[sp76] = gSaveContext.save.saveInfo.playerData.rupees; fileSelect->walletUpgrades[sp76] = CUR_UPG_VALUE(UPG_WALLET); - for (sp7A = 0, maskCount = 0; sp7A < 24; sp7A++) { - if (gSaveContext.save.saveInfo.inventory.items[sp7A + 24] == ITEM_NONE) { + for (sp7A = 0, maskCount = 0; sp7A < MASK_NUM_SLOTS; sp7A++) { + if (gSaveContext.save.saveInfo.inventory.items[sp7A + ITEM_NUM_SLOTS] == ITEM_NONE) { continue; } maskCount++; @@ -1601,8 +1602,8 @@ void func_801457CC(GameState* gameState, SramContext* sramCtx) { fileSelect->rupees[sp76] = gSaveContext.save.saveInfo.playerData.rupees; fileSelect->walletUpgrades[sp76] = CUR_UPG_VALUE(UPG_WALLET); - for (sp7A = 0, maskCount = 0; sp7A < 24; sp7A++) { - if (gSaveContext.save.saveInfo.inventory.items[sp7A + 24] == ITEM_NONE) { + for (sp7A = 0, maskCount = 0; sp7A < MASK_NUM_SLOTS; sp7A++) { + if (gSaveContext.save.saveInfo.inventory.items[sp7A + ITEM_NUM_SLOTS] == ITEM_NONE) { continue; } maskCount++; @@ -1718,8 +1719,8 @@ void Sram_CopySave(FileSelectState* fileSelect2, SramContext* sramCtx) { fileSelect->rupees[fileSelect->copyDestFileIndex + 2] = gSaveContext.save.saveInfo.playerData.rupees; fileSelect->walletUpgrades[fileSelect->copyDestFileIndex + 2] = CUR_UPG_VALUE(UPG_WALLET); - for (i = 0, maskCount = 0; i < 24; i++) { - if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) { + for (i = 0, maskCount = 0; i < MASK_NUM_SLOTS; i++) { + if (gSaveContext.save.saveInfo.inventory.items[i + ITEM_NUM_SLOTS] != ITEM_NONE) { maskCount++; } } @@ -1759,8 +1760,8 @@ void Sram_CopySave(FileSelectState* fileSelect2, SramContext* sramCtx) { fileSelect->rupees[fileSelect->copyDestFileIndex] = gSaveContext.save.saveInfo.playerData.rupees; fileSelect->walletUpgrades[fileSelect->copyDestFileIndex] = CUR_UPG_VALUE(UPG_WALLET); - for (i = 0, maskCount = 0; i < 24; i++) { - if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) { + for (i = 0, maskCount = 0; i < MASK_NUM_SLOTS; i++) { + if (gSaveContext.save.saveInfo.inventory.items[i + ITEM_NUM_SLOTS] != ITEM_NONE) { maskCount++; } } @@ -1823,8 +1824,8 @@ void Sram_InitSave(FileSelectState* fileSelect2, SramContext* sramCtx) { fileSelect->rupees[fileSelect->buttonIndex] = gSaveContext.save.saveInfo.playerData.rupees; fileSelect->walletUpgrades[fileSelect->buttonIndex] = CUR_UPG_VALUE(UPG_WALLET); - for (i = 0, maskCount = 0; i < 24; i++) { - if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) { + for (i = 0, maskCount = 0; i < MASK_NUM_SLOTS; i++) { + if (gSaveContext.save.saveInfo.inventory.items[i + ITEM_NUM_SLOTS] != ITEM_NONE) { maskCount++; } } diff --git a/src/libultra/io/motor.c b/src/libultra/io/motor.c index 343047e7b..92cc69e87 100644 --- a/src/libultra/io/motor.c +++ b/src/libultra/io/motor.c @@ -1,11 +1,12 @@ #include "ultra64.h" #include "PR/os_motor.h" #include "PR/controller.h" +#include "alignment.h" #define BANK_ADDR 0x400 #define MOTOR_ID 0x80 -OSPifRam __MotorDataBuf[MAXCONTROLLERS]; +OSPifRam __MotorDataBuf[MAXCONTROLLERS] ALIGNED(16); s32 __osPfsSelectBank(OSPfs* pfs, u8 bank); diff --git a/src/libultra/io/sptask.c b/src/libultra/io/sptask.c index b261664f0..511461faf 100644 --- a/src/libultra/io/sptask.c +++ b/src/libultra/io/sptask.c @@ -33,7 +33,7 @@ void osSpTaskLoad(OSTask* intp) { intp->t.flags &= ~OS_TASK_YIELDED; if (tp->t.flags & OS_TASK_LOADABLE) { - tp->t.ucode = IO_READ((uintptr_t)intp->t.yieldDataPtr + OS_YIELD_DATA_SIZE - 4); + tp->t.ucode = (void*)IO_READ((uintptr_t)intp->t.yieldDataPtr + OS_YIELD_DATA_SIZE - 4); } } diff --git a/src/libultra/os/createthread.c b/src/libultra/os/createthread.c index d0f3a7419..eaddc0884 100644 --- a/src/libultra/os/createthread.c +++ b/src/libultra/os/createthread.c @@ -9,9 +9,9 @@ void osCreateThread(OSThread* thread, OSId id, void* entry, void* arg, void* sp, thread->next = NULL; thread->queue = NULL; thread->context.pc = (u32)entry; - thread->context.a0 = arg; + thread->context.a0 = (intptr_t)arg; thread->context.sp = (u64)(s32)sp - 16; - thread->context.ra = __osCleanupThread; + thread->context.ra = (intptr_t)__osCleanupThread; mask = OS_IM_ALL; thread->context.sr = (mask & (SR_IMASK | SR_IE)) | SR_EXL; diff --git a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c index 8af51f000..ecc6a718c 100644 --- a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c +++ b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c @@ -794,7 +794,7 @@ void func_80B819F0(Actor* thisx, PlayState* play) { if (CutsceneManager_IsNext(this->dyna.actor.csId)) { CutsceneManager_StartWithPlayerCs(this->dyna.actor.csId, &this->dyna.actor); if (this->dyna.actor.csId >= 0) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); } func_80B81A64(this); } else { diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index ea0596ba3..d8538ea44 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -126,7 +126,7 @@ s32 func_80953DA8(BgIngate* this, PlayState* play) { Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN); if (CHECK_EVENTINF(EVENTINF_35)) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); } else { SET_EVENTINF(EVENTINF_41); } @@ -149,7 +149,7 @@ void func_80953E38(PlayState* play) { void func_80953EA4(BgIngate* this, PlayState* play) { Player* player = GET_PLAYER(play); - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_58); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_58); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; this->unk160 &= ~0x4; @@ -192,7 +192,7 @@ void func_80953F9C(BgIngate* this, PlayState* play) { if (this->timePath->additionalPathIndex != ADDITIONAL_PATH_INDEX_NONE) { func_80953E38(play); - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); this->dyna.actor.textId = 0x9E4; Message_StartTextbox(play, this->dyna.actor.textId, NULL); this->unk16C += 1; @@ -231,7 +231,7 @@ void func_809541B8(BgIngate* this, PlayState* play) { if ((player->transformation == PLAYER_FORM_HUMAN) && (player->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && (this->dyna.actor.xzDistToPlayer < 40.0f)) { if (this->dyna.actor.playerHeightRel > 15.0f) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); this->dyna.actor.textId = 0x9E6; Message_StartTextbox(play, this->dyna.actor.textId, NULL); this->actionFunc = func_809543D4; @@ -261,7 +261,7 @@ void func_809542A0(BgIngate* this, PlayState* play) { void func_80954340(BgIngate* this, PlayState* play) { if (DECR(this->unk16A) == 0) { if (this->timePath != NULL) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_END); this->timePath = &play->setupPathList[this->timePath->additionalPathIndex]; func_80953F14(this, play); Environment_StopTime(); @@ -280,7 +280,7 @@ void func_809543D4(BgIngate* this, PlayState* play) { break; case 0x9E5: if (play->msgCtx.choiceIndex == 0) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_END); this->unk160 &= ~0x4; this->actionFunc = func_809541B8; Environment_StartTime(); @@ -301,7 +301,7 @@ void func_809543D4(BgIngate* this, PlayState* play) { CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); Audio_PlaySfx_MessageDecide(); } else { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_END); this->unk160 &= ~0x4; this->actionFunc = func_809541B8; Environment_StartTime(); diff --git a/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c b/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c index 0addd3520..ec5c63fc1 100644 --- a/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c +++ b/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c @@ -405,7 +405,7 @@ void BgNumaHana_Draw(Actor* thisx, PlayState* play2) { } objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_SYOKUDAI); - if ((objectSlot > OBJECT_SLOT_NONE) && (Object_IsLoaded(&play->objectCtx, objectSlot))) { + if ((objectSlot > OBJECT_SLOT_NONE) && Object_IsLoaded(&play->objectCtx, objectSlot)) { Matrix_SetTranslateRotateYXZ(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y - 64.5f, this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); Matrix_Scale(1.5f, 1.5f, 1.5f, MTXMODE_APPLY); diff --git a/src/overlays/actors/ovl_Boss_01/z_boss_01.c b/src/overlays/actors/ovl_Boss_01/z_boss_01.c index 6adf386d7..3674a227b 100644 --- a/src/overlays/actors/ovl_Boss_01/z_boss_01.c +++ b/src/overlays/actors/ovl_Boss_01/z_boss_01.c @@ -1001,7 +1001,7 @@ void Boss01_IntroCutscene(Boss01* this, PlayState* play) { } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -1036,11 +1036,11 @@ void Boss01_IntroCutscene(Boss01* this, PlayState* play) { } if (this->cutsceneTimer == 40) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_21); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_21); } if (this->cutsceneTimer == 100) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_4); } if (this->cutsceneTimer >= 90) { @@ -1136,7 +1136,7 @@ void Boss01_IntroCutscene(Boss01* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->actor.flags |= ACTOR_FLAG_TARGETABLE; SET_EVENTINF(EVENTINF_54); } @@ -1189,7 +1189,7 @@ void Boss01_SummonBugsCutscene(Boss01* this, PlayState* play) { } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -1232,7 +1232,7 @@ void Boss01_SummonBugsCutscene(Boss01* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->actor.flags |= ACTOR_FLAG_TARGETABLE; player->actor.world.rot.y = player->actor.shape.rot.y = -0x8000; player->actor.world.pos.x = 0.0f; @@ -2135,7 +2135,7 @@ void Boss01_DeathCutscene(Boss01* this, PlayState* play) { } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_1); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -2252,7 +2252,7 @@ void Boss01_DeathCutscene(Boss01* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->actor.flags &= ~ACTOR_FLAG_TARGETABLE; } break; diff --git a/src/overlays/actors/ovl_Boss_02/z_boss_02.c b/src/overlays/actors/ovl_Boss_02/z_boss_02.c index e202a08cb..691931fce 100644 --- a/src/overlays/actors/ovl_Boss_02/z_boss_02.c +++ b/src/overlays/actors/ovl_Boss_02/z_boss_02.c @@ -2172,7 +2172,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) { } if (this->unk_1D1C == 45) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_21); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_21); sTwinmoldMusicStartTimer = KREG(91) + 43; } @@ -2186,7 +2186,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) { } if (this->unk_1D1C == 100) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_115); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_115); } if (this->unk_1D1C == 112) { @@ -2225,7 +2225,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->actor.flags |= ACTOR_FLAG_TARGETABLE; this->unk_1D20 = 0; sRedTwinmold->unk_0144 = sBlueTwinmold->unk_0144 = 3; @@ -2286,7 +2286,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->unk_1D20 = 0; this->actor.flags |= ACTOR_FLAG_TARGETABLE; sp68->unk_0144 = 10; diff --git a/src/overlays/actors/ovl_Boss_03/z_boss_03.c b/src/overlays/actors/ovl_Boss_03/z_boss_03.c index 07ded0e90..ba994a3bf 100644 --- a/src/overlays/actors/ovl_Boss_03/z_boss_03.c +++ b/src/overlays/actors/ovl_Boss_03/z_boss_03.c @@ -1148,7 +1148,7 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { case 0: if (player->actor.world.pos.y < 1350.0f) { Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -1259,7 +1259,7 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { if (this->csTimer == 5) { // Rotates Player towards Gyorg - func_800B7298(play, &this->actor, PLAYER_CSACTION_8); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_8); } this->subCamEye.x = player->actor.world.pos.x + 30.0f; @@ -1370,7 +1370,7 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->subCamId = SUB_CAM_ID_DONE; func_809E344C(this, play); @@ -1448,7 +1448,7 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { case 0: if (CutsceneManager_GetCurrentCsId() == CS_ID_NONE) { Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_1); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -1627,7 +1627,7 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->csState = 3; Play_DisableMotionBlur(); Boss03_PlayUnderwaterSfx(&this->actor.projectedPos, NA_SE_EN_KONB_INIT_OLD); @@ -1661,7 +1661,7 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) { case 0: if (CutsceneManager_GetCurrentCsId() == CS_ID_NONE) { Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_1); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -1722,7 +1722,7 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); func_809E344C(this, play); this->workTimer[WORK_TIMER_UNK1_A] = 50; diff --git a/src/overlays/actors/ovl_Boss_04/z_boss_04.c b/src/overlays/actors/ovl_Boss_04/z_boss_04.c index 62250d6a4..1e9736b5f 100644 --- a/src/overlays/actors/ovl_Boss_04/z_boss_04.c +++ b/src/overlays/actors/ovl_Boss_04/z_boss_04.c @@ -264,7 +264,7 @@ void func_809EC568(Boss04* this, PlayState* play) { this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); player->actor.world.pos.x = this->unk_6E8; player->actor.world.pos.z = this->unk_6F0 + 410.0f; player->actor.shape.rot.y = 0x7FFF; @@ -314,7 +314,7 @@ void func_809EC568(Boss04* this, PlayState* play) { if (this->unk_704 == 45) { this->unk_708 = 1; this->unk_704 = 0; - func_800B7298(play, &this->actor, PLAYER_CSACTION_21); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_21); this->actor.gravity = 0.0f; break; } @@ -391,7 +391,7 @@ void func_809EC568(Boss04* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); Play_DisableMotionBlur(); SET_EVENTINF(EVENTINF_60); } diff --git a/src/overlays/actors/ovl_Boss_06/z_boss_06.c b/src/overlays/actors/ovl_Boss_06/z_boss_06.c index 94b10fcfb..82aeb5259 100644 --- a/src/overlays/actors/ovl_Boss_06/z_boss_06.c +++ b/src/overlays/actors/ovl_Boss_06/z_boss_06.c @@ -198,7 +198,7 @@ void func_809F24C8(Boss06* this, PlayState* play) { } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -238,7 +238,7 @@ void func_809F24C8(Boss06* this, PlayState* play) { this->unk_1D8 = 0.0f; if (this->unk_1CA == 60) { D_809F4970->unk_154++; - func_800B7298(play, &this->actor, PLAYER_CSACTION_132); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_132); player->actor.shape.rot.y = 0; player->actor.world.rot.y = player->actor.shape.rot.y; } @@ -331,7 +331,7 @@ void func_809F24C8(Boss06* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); D_809F4970->unk_151 = 0; } break; diff --git a/src/overlays/actors/ovl_Boss_07/z_boss_07.c b/src/overlays/actors/ovl_Boss_07/z_boss_07.c index 50425affa..3f8e7b500 100644 --- a/src/overlays/actors/ovl_Boss_07/z_boss_07.c +++ b/src/overlays/actors/ovl_Boss_07/z_boss_07.c @@ -929,7 +929,7 @@ void Boss07_Wrath_Intro(Boss07* this, PlayState* play) { func_80169AFC(play, this->subCamIndex, 0); this->subCamIndex = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, 6); this->actor.flags |= ACTOR_FLAG_TARGETABLE; Play_DisableMotionBlur(); if (sBossRemains[REMAINS_ODOLWA] != NULL) { @@ -987,7 +987,7 @@ void Boss07_Wrath_Death(Boss07* this, PlayState* play) { break; } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 1); + Player_SetCsActionWithHaltedActors(play, &this->actor, 1); this->subCamIndex = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamIndex, CAM_STATUS_ACTIVE); @@ -3072,7 +3072,7 @@ void Boss07_Incarnation_Intro(Boss07* this, PlayState* play) { func_80169AFC(play, this->subCamIndex, 0); this->subCamIndex = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, 6); this->actor.flags |= ACTOR_FLAG_TARGETABLE; } break; @@ -3409,7 +3409,7 @@ void Boss07_Incarnation_Death(Boss07* this, PlayState* play) { break; } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); this->subCamIndex = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamIndex, CAM_STATUS_ACTIVE); @@ -4389,7 +4389,7 @@ void Boss07_Mask_Intro(Boss07* this, PlayState* play) { break; } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); this->subCamIndex = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamIndex, CAM_STATUS_ACTIVE); @@ -4402,7 +4402,7 @@ void Boss07_Mask_Intro(Boss07* this, PlayState* play) { Math_ApproachF(&sMajoraStatic->introOrbScale, sREG(50) + 1.0f, 0.05f, sREG(51) + 0.05f); } if (this->timer_ABC8 == 35) { - func_800B7298(play, &this->actor, 0xF); + Player_SetCsActionWithHaltedActors(play, &this->actor, 0xF); } player->actor.world.pos.x = 0.0f; player->actor.world.pos.z = 700.0f; @@ -4441,10 +4441,10 @@ void Boss07_Mask_Intro(Boss07* this, PlayState* play) { sBossRemains[REMAINS_TWINMOLD]->actionState = MAJORAS_REMAINS_CS_FLY; } if (this->timer_ABC8 == 0) { - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); } if (this->timer_ABC8 == 120) { - func_800B7298(play, &this->actor, 0x15); + Player_SetCsActionWithHaltedActors(play, &this->actor, 0x15); } if (this->timer_ABC8 > 30) { Math_ApproachF(&this->subCamAt.y, player->actor.world.pos.y + 24.0f + 20.0f, 0.05f, @@ -4530,7 +4530,7 @@ void Boss07_Mask_Intro(Boss07* this, PlayState* play) { this->subCamEye.y = this->actor.world.pos.y; this->subCamEye.z = this->actor.world.pos.z + 400.0f; player->actor.world.pos.z = 0.0f; - func_800B7298(play, &this->actor, 1); + Player_SetCsActionWithHaltedActors(play, &this->actor, 1); this->motionBlurAlpha = KREG(74) + 200; } break; @@ -4580,7 +4580,7 @@ void Boss07_Mask_Intro(Boss07* this, PlayState* play) { func_80169AFC(play, this->subCamIndex, 0); this->subCamIndex = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, 6); this->actor.flags |= ACTOR_FLAG_TARGETABLE; gSaveContext.eventInf[6] |= 2; Play_DisableMotionBlur(); @@ -4636,7 +4636,7 @@ void Boss07_Mask_Death(Boss07* this, PlayState* play) { case MAJORAS_MASK_DEATH_STATE_0: if (CutsceneManager_GetCurrentCsId() == -1) { Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 1); + Player_SetCsActionWithHaltedActors(play, &this->actor, 1); this->subCamIndex = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamIndex, CAM_STATUS_ACTIVE); @@ -5886,7 +5886,7 @@ void Boss07_Static_Update(Actor* thisx, PlayState* play2) { case MAJORAS_STATIC_CS_STATE_1: if (CutsceneManager_GetCurrentCsId() == -1) { Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); this->subCamIndex = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamIndex, CAM_STATUS_ACTIVE); @@ -5966,7 +5966,7 @@ void Boss07_Static_Update(Actor* thisx, PlayState* play2) { func_80169AFC(play, this->subCamIndex, 0); this->subCamIndex = SUB_CAM_ID_DONE; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, 6); Play_DisableMotionBlur(); for (i = 0; i < ARRAY_COUNT(sBossRemains); i++) { func_800BC154(play, &play->actorCtx, &sBossRemains[i]->actor, ACTORCAT_ENEMY); diff --git a/src/overlays/actors/ovl_Boss_Hakugin/z_boss_hakugin.c b/src/overlays/actors/ovl_Boss_Hakugin/z_boss_hakugin.c index d79e26261..ba73ef67e 100644 --- a/src/overlays/actors/ovl_Boss_Hakugin/z_boss_hakugin.c +++ b/src/overlays/actors/ovl_Boss_Hakugin/z_boss_hakugin.c @@ -1244,7 +1244,7 @@ void func_80B07EEC(BossHakugin* this, PlayState* play) { Play_SetCameraAtEye(play, this->unk_01AC, &sp20, &this->unk_038C); this->unk_037A.x = Math_Atan2S_XY(70.0f, -20.0f); this->unk_037A.y = player->actor.shape.rot.y + 0x8000; - func_800B7298(play, &this->actor, PLAYER_CSACTION_21); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_21); this->unk_019C = 0; this->actionFunc = func_80B08018; } @@ -1388,7 +1388,7 @@ void func_80B08550(BossHakugin* this, PlayState* play) { player->actor.world.pos.z = -1560.0f; player->actor.shape.rot.y = this->actor.yawTowardsPlayer + 0x8000; player->currentYaw = player->actor.world.rot.y = player->actor.shape.rot.y; - func_800B7298(play, &this->actor, PLAYER_CSACTION_131); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_131); this->actionFunc = func_80B0863C; } @@ -1460,7 +1460,7 @@ void func_80B08848(BossHakugin* this, PlayState* play) { Animation_Change(&this->skelAnime, &gGohtRunAnim, 1.5f, 0.0f, 0.0f, ANIMMODE_LOOP, -3.0f); this->unk_019C = 0; this->actor.speed = 5.0f; - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); player->stateFlags1 |= PLAYER_STATE1_20; play->actorCtx.unk268 = true; this->actionFunc = func_80B08960; diff --git a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c index f671d412c..719e3df0e 100644 --- a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c +++ b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c @@ -177,7 +177,7 @@ s32 func_80C224D8(Actor* thisx, PlayState* play) { break; case 6: - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); play->nextEntrance = ENTRANCE(STOCK_POT_INN, 5); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; @@ -196,7 +196,7 @@ s32 func_80C227E8(Actor* thisx, PlayState* play) { DmTag* this = THIS; if (this->unk_1A4 == 0) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); play->nextEntrance = ENTRANCE(STOCK_POT_INN, 4); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; diff --git a/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.c b/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.c index 19871c2dc..ff64bdef2 100644 --- a/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.c +++ b/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.c @@ -34,9 +34,9 @@ void DmTsg_Init(Actor* thisx, PlayState* play) { if (gSaveContext.save.entrance == ENTRANCE(OPENING_DUNGEON, 0)) { Actor_SetScale(&this->actor, 0.1f); - for (i = 0; i < 100; i++) { - this->unk_78C[i] = (Rand_ZeroOne() * 65535.0f); - this->unk_856[i] = (s16)(Rand_ZeroOne() * 200.0f) + 100; + for (i = 0; i < DMTSG_UNK_SIZE; i++) { + this->unk_78C[i] = Rand_ZeroOne() * 0xFFFF; + this->unk_856[i] = TRUNCF_BINANG(Rand_ZeroOne() * 200.0f) + 100; } } else { Actor_Kill(&this->actor); @@ -51,21 +51,21 @@ void DmTsg_Update(Actor* thisx, PlayState* play) { s32 cueChannel; s16 i; - for (i = 0; i < 100; i++) { - this->unk_5F8[i] = (Math_SinS((i & 0xF) * this->unk_854) * 60.0f) + 120.0f; + for (i = 0; i < DMTSG_UNK_SIZE; i++) { + this->unk_5F8[i] = (Math_SinS((i % 16U) * this->unk_854) * 60.0f) + 120.0f; this->unk_148[i].x = Math_CosS(this->unk_78C[i]) * this->unk_5F8[i]; this->unk_148[i].y = this->unk_788 + (i * 16); this->unk_148[i].z = Math_SinS(this->unk_78C[i]) * this->unk_5F8[i]; this->unk_78C[i] += this->unk_856[i]; } - this->unk_91E = 0; + this->canDraw = false; this->unk_854 += 40; if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_514)) { cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_514); if (play->csCtx.actorCues[cueChannel]->id != 1) { - this->unk_91E = 1; + this->canDraw = true; } Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel); } @@ -77,8 +77,8 @@ void DmTsg_Draw(Actor* thisx, PlayState* play2) { s32 i; u32 j; - if (this->unk_91E != 0) { - for (i = 0, j = 0; i < 100; i++) { + if (this->canDraw) { + for (i = 0, j = 0; i < DMTSG_UNK_SIZE; i++) { Matrix_Translate(this->unk_148[i].x + this->actor.world.pos.x, this->unk_148[i].y + this->actor.world.pos.y, this->unk_148[i].z + this->actor.world.pos.z, MTXMODE_NEW); Matrix_Scale(0.3f, 0.3f, 0.3f, MTXMODE_APPLY); diff --git a/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.h b/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.h index b25d3a4d0..cfd8c0214 100644 --- a/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.h +++ b/src/overlays/actors/ovl_Dm_Tsg/z_dm_tsg.h @@ -5,18 +5,18 @@ struct DmTsg; -typedef void (*DmTsgActionFunc)(struct DmTsg*, PlayState*); +#define DMTSG_UNK_SIZE 100 typedef struct DmTsg { /* 0x000 */ Actor actor; - /* 0x144 */ DmTsgActionFunc ActionFunc; - /* 0x148 */ Vec3f unk_148[100]; - /* 0x5F8 */ f32 unk_5F8[100]; + /* 0x144 */ UNK_TYPE1 unk_144[0x4]; + /* 0x148 */ Vec3f unk_148[DMTSG_UNK_SIZE]; + /* 0x5F8 */ f32 unk_5F8[DMTSG_UNK_SIZE]; /* 0x788 */ f32 unk_788; - /* 0x78C */ s16 unk_78C[100]; + /* 0x78C */ s16 unk_78C[DMTSG_UNK_SIZE]; /* 0x854 */ s16 unk_854; - /* 0x856 */ s16 unk_856[100]; - /* 0x91E */ u8 unk_91E; + /* 0x856 */ s16 unk_856[DMTSG_UNK_SIZE]; + /* 0x91E */ u8 canDraw; } DmTsg; // size = 0x920 #endif // Z_DM_TSG_H diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c index 2ad447e97..c3ea64e67 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c @@ -461,7 +461,7 @@ s32 func_808A1478(DoorShutter* this, PlayState* play, f32 arg2) { } if ((this->csId != CS_ID_NONE) && (CutsceneManager_GetCurrentCsId() == this->csId)) { - func_800B724C(play, &this->slidingDoor.dyna.actor, PLAYER_CSACTION_1); + Player_SetCsAction(play, &this->slidingDoor.dyna.actor, PLAYER_CSACTION_1); } } @@ -581,7 +581,7 @@ void func_808A1884(DoorShutter* this, PlayState* play) { if (CutsceneManager_GetCurrentCsId() == CS_ID_GLOBAL_DOOR) { func_801226E0(play, ((void)0, gSaveContext.respawn[RESPAWN_MODE_DOWN].data)); player->csId = CS_ID_NONE; - func_800B7298(play, NULL, PLAYER_CSACTION_115); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_115); } } } @@ -636,7 +636,7 @@ void func_808A1B48(DoorShutter* this, PlayState* play) { void func_808A1C50(DoorShutter* this, PlayState* play) { if (this->unk_167++ > 30) { if (GET_PLAYER(play)->csAction == PLAYER_CSACTION_115) { - func_800B7298(play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_END); } DoorShutter_SetupDoor(this, play); } diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index 5f491f431..938f41edb 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -344,7 +344,7 @@ void func_808B921C(DoorWarp1* this, PlayState* play) { } if (func_808B866C(this, play) && !Play_InCsMode(play)) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); Message_StartTextbox(play, 0xF2, &this->dyna.actor); DoorWarp1_SetupAction(this, func_808B93A0); } @@ -360,14 +360,14 @@ void func_808B93A0(DoorWarp1* this, PlayState* play) { Message_CloseTextbox(play); if (play->msgCtx.choiceIndex == 0) { Audio_PlaySfx_MessageDecide(); - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_9); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_9); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; this->unk_1CA = 1; DoorWarp1_SetupAction(this, func_808B9524); } else { Audio_PlaySfx_MessageCancel(); - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_END); DoorWarp1_SetupAction(this, func_808B94A4); } } @@ -448,7 +448,7 @@ void func_808B977C(DoorWarp1* this, PlayState* play) { AudioSfx_PlaySfx(NA_SE_EV_LINK_WARP, &player->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_9); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_9); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; this->unk_1CA = 1; @@ -602,7 +602,7 @@ void func_808B9F10(DoorWarp1* this, PlayState* play) { Player* player = GET_PLAYER(play); Interface_SetHudVisibility(HUD_VISIBILITY_NONE); - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_9); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_9); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; this->unk_1CA = 20; diff --git a/src/overlays/actors/ovl_Eff_Stk/z_eff_stk.c b/src/overlays/actors/ovl_Eff_Stk/z_eff_stk.c index e6e2694c3..cf4e978e0 100644 --- a/src/overlays/actors/ovl_Eff_Stk/z_eff_stk.c +++ b/src/overlays/actors/ovl_Eff_Stk/z_eff_stk.c @@ -83,7 +83,7 @@ void EffStk_Draw(Actor* thisx, PlayState* play) { Vec3f eye = activeCam->eye; Vec3f quakeOffset; - Camera_GetQuakeOffset(&quakeOffset, activeCam); + quakeOffset = Camera_GetQuakeOffset(activeCam); OPEN_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_An/z_en_an.c b/src/overlays/actors/ovl_En_An/z_en_an.c index 9591a9101..1195c0dbf 100644 --- a/src/overlays/actors/ovl_En_An/z_en_an.c +++ b/src/overlays/actors/ovl_En_An/z_en_an.c @@ -23,7 +23,7 @@ void EnAn_Update(Actor* thisx, PlayState* play); void EnAn_Draw(Actor* thisx, PlayState* play); // Action funcs -void EnAn_Initialize(EnAn* this, PlayState* play); +void EnAn_FinishInit(EnAn* this, PlayState* play); void EnAn_FollowSchedule(EnAn* this, PlayState* play); void EnAn_Talk(EnAn* this, PlayState* play); @@ -794,7 +794,7 @@ static ColliderCylinderInit sCylinderInit = { static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE }; -s32 EnAn_InitializeObjectSlots(EnAn* this, PlayState* play) { +s32 EnAn_InitObjectSlots(EnAn* this, PlayState* play) { s32 ret = false; if ((this->roomNum != play->roomCtx.curRoom.num) && (play->roomCtx.status == 0) && !this->slotsInitialized) { @@ -863,7 +863,7 @@ Actor* func_80B53A7C(EnAn* this, PlayState* play, u8 actorCategory, s16 actorId) } if ((this != (EnAn*)foundActor) && (foundActor->update != NULL)) { - if (!(foundActor->params & ENAN_8000)) { + if (!ENAN_GET_8000(foundActor)) { break; } } @@ -998,7 +998,9 @@ static AnimationInfoS sAnimationInfo[ENAN_ANIM_MAX] = { { &gAnju3BroomIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENAN_ANIM_BROOM_IDLE { &gAnju3BroomWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENAN_ANIM_BROOM_WALK { &gAnju3BroomSweepAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENAN_ANIM_BROOM_SWEEP - //! @bug Uses symbol from OBJECT_AN2 instead of OBJECT_AN3 + //! @bug Uses symbol from OBJECT_AN2 instead of OBJECT_AN3. Because of this entry being in the OBJECT_AN3 block, + //! then the actor will try to load this address from OBJECT_AN3, but this address is way outside said object, + //! producing an OoB read and reading garbage, possible from other object. This will likely produce a crash. { &gAnju2UmbrellaSitAnim, -1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ENAN_ANIM_24 // ENAN_ANIMOBJ_AN4 @@ -1018,7 +1020,7 @@ static AnimationInfoS sAnimationInfo[ENAN_ANIM_MAX] = { s32 EnAn_UpdateSkelAnime(EnAn* this, PlayState* play) { s8 originalObjectSlot = this->actor.objectSlot; s8 otherObjectSlot = OBJECT_SLOT_NONE; - s32 ret = 0; + s32 ret = false; if ((this->animIndex >= ENAN_ANIMOBJ_AN4) && (this->an4ObjectSlot > OBJECT_SLOT_NONE)) { otherObjectSlot = this->an4ObjectSlot; @@ -1105,7 +1107,7 @@ s32 EnAn_ChangeAnim(EnAn* this, PlayState* play, EnAnAnimation animIndex) { } void EnAn_UpdateCollider(EnAn* this, PlayState* play) { - f32 temp; + f32 height; s32 pad; Vec3f sp24; @@ -1119,8 +1121,8 @@ void EnAn_UpdateCollider(EnAn* this, PlayState* play) { Collider_UpdateCylinder(&this->actor, &this->collider); } - temp = this->actor.focus.pos.y - this->actor.world.pos.y; - this->collider.dim.height = TRUNCF_BINANG(temp); + height = this->actor.focus.pos.y - this->actor.world.pos.y; + this->collider.dim.height = TRUNCF_BINANG(height); CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); } @@ -1517,7 +1519,7 @@ s32 EnAn_MsgEvent_MidnightMeeting(Actor* thisx, PlayState* play) { EnAn* this = THIS; if (this->msgEventState == 0) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); play->nextEntrance = ENTRANCE(STOCK_POT_INN, 3); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; @@ -1526,7 +1528,7 @@ s32 EnAn_MsgEvent_MidnightMeeting(Actor* thisx, PlayState* play) { this->msgEventState++; } - return 0; + return false; } s32 EnAn_MsgEvent_Cooking(Actor* thisx, PlayState* play) { @@ -1577,7 +1579,6 @@ s32 EnAn_MsgEvent_LaundryPool(Actor* thisx, PlayState* play) { } FALLTHROUGH; case 0x1: - label: this->stateFlags &= ~(ENAN_STATE_ENGAGED | ENAN_STATE_DRAW_KAFEIS_MASK); this->stateFlags |= ENAN_STATE_LOST_ATTENTION; EnAn_ChangeAnim(this, play, ENAN_ANIM_UMBRELLA_CRY); @@ -1741,6 +1742,7 @@ s32* EnAn_GetMsgEventScript(EnAn* this, PlayState* play) { return NULL; } +// TODO: consider renaming this (and similar functions of other schedule actors) to `TryTalking` s32 EnAn_CheckTalk(EnAn* this, PlayState* play) { s32 ret = false; @@ -2033,11 +2035,11 @@ s32 EnAn_HandleDialogue(EnAn* this, PlayState* play) { case 0x28A7: // Enjoy the carnival case 0x28A8: // Did you have a reservation? case 0x28AA: // One moment please - case 0x28AB: // I expected your arrival for afternon. Your room is on the second floor - case 0x28AC: // Have you been to the plaza yet? They are putting the carnival stuff + case 0x28AB: // I expected your arrival for afternoon. Your room is on the second floor + case 0x28AC: // Have you been to the plaza yet? They are putting up the carnival stuff case 0x28AD: // Relax... - case 0x28AE: // oesn't exis - case 0x28B0: // It's hard to find one's way on the city goro + case 0x28AE: // doesn't exist + case 0x28B0: // It's hard to find one's way on the city, goro case 0x28B2: // I should have a reservation-goro case 0x28B3: // I do have your reservation. Your room is on the second floor case 0x28B4: // The place is falling apart-goro @@ -2245,6 +2247,7 @@ Actor* EnAn_FindLookAtActor(EnAn* this, PlayState* play) { return actor; } +// Known uses: looks for En_Ig, En_Nb, En_Pm s32 func_80B55D98(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput, u8 actorCategory, s16 actorId) { u8 pathIndex = ENAN_GET_PATH_INDEX(&this->actor); Vec3s* points; @@ -3162,7 +3165,7 @@ void EnAn_HandleSchedule(EnAn* this, PlayState* play) { Math_ApproachS(&this->actor.shape.rot.y, this->actor.world.rot.y, 3, 0x2AA8); } -void EnAn_Initialize(EnAn* this, PlayState* play) { +void EnAn_FinishInit(EnAn* this, PlayState* play) { ActorShape_Init(&this->actor.shape, 0.0f, NULL, 14.0f); SkelAnime_InitFlex(play, &this->skelAnime, &gAnju1Skel, NULL, this->jointTable, this->morphTable, ANJU1_LIMB_MAX); @@ -3171,7 +3174,7 @@ void EnAn_Initialize(EnAn* this, PlayState* play) { Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit); - if (this->actor.params & ENAN_8000) { + if (ENAN_GET_8000(&this->actor)) { this->unk_3C0 = true; } @@ -3189,7 +3192,7 @@ void EnAn_FollowSchedule(EnAn* this, PlayState* play) { this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); - if (!(this->actor.params & ENAN_8000) && !this->unk_3C0 && + if (!ENAN_GET_8000(&this->actor) && !this->unk_3C0 && CHECK_WEEKEVENTREG(WEEKEVENTREG_COUPLES_MASK_CUTSCENE_FINISHED)) { Actor_Kill(&this->actor); return; @@ -3267,13 +3270,13 @@ void EnAn_HandleCouplesMaskCutscene(EnAn* this, PlayState* play) { s32 pad; //! FAKE - if (0) {} + if (1) {} if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_557)) { s32 cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_557); u16 cueId = play->csCtx.actorCues[cueChannel]->id; - if (this->cueId != (cueId & 0xFF)) { + if (this->cueId != (u8)cueId) { this->cueId = cueId; if (this->cueId == 3) { @@ -3316,6 +3319,8 @@ void EnAn_Init(Actor* thisx, PlayState* play) { return; } + // Check if there's an Anju actor with the ENAN_8000 flag, if there's one then give priority to that Anju and Kill + // all the others if (temp_v1 == 0) { if (func_80B53A7C(this, play, ACTORCAT_NPC, ACTOR_EN_AN) != NULL) { Actor_Kill(&this->actor); @@ -3329,7 +3334,7 @@ void EnAn_Init(Actor* thisx, PlayState* play) { this->actor.room = -1; } - this->actionFunc = EnAn_Initialize; + this->actionFunc = EnAn_FinishInit; } void EnAn_Destroy(Actor* thisx, PlayState* play) { @@ -3341,11 +3346,11 @@ void EnAn_Destroy(Actor* thisx, PlayState* play) { void EnAn_Update(Actor* thisx, PlayState* play) { EnAn* this = THIS; - if (EnAn_InitializeObjectSlots(this, play)) { + if (EnAn_InitObjectSlots(this, play)) { return; } - if ((this->actionFunc != EnAn_Initialize) && !EnAn_CheckTalk(this, play) && + if ((this->actionFunc != EnAn_FinishInit) && !EnAn_CheckTalk(this, play) && EnAn_IsCouplesMaskCsPlaying(this, play)) { EnAn_HandleCouplesMaskCutscene(this, play); EnAn_UpdateSkelAnime(this, play); @@ -3428,7 +3433,6 @@ void EnAn_Draw(Actor* thisx, PlayState* play) { gAnju1MouthHappyTex, // ENAN_MOUTH_HAPPY gAnju1MouthOpenTex, // ENAN_MOUTH_OPEN }; - static TexturePtr sEyeTextures[ENAN_EYES_MAX] = { gAnju1EyeOpenTex, // ENAN_EYES_OPEN gAnju1EyeHalfTex, // ENAN_EYES_HALF1 diff --git a/src/overlays/actors/ovl_En_An/z_en_an.h b/src/overlays/actors/ovl_En_An/z_en_an.h index 86a357d66..cf7cf57d5 100644 --- a/src/overlays/actors/ovl_En_An/z_en_an.h +++ b/src/overlays/actors/ovl_En_An/z_en_an.h @@ -43,7 +43,7 @@ typedef struct EnAn { /* 0x1F8 */ s32 timePathWaypoint; /* 0x1FC */ s32 timePathElapsedTime; /* 0x200 */ u8 scheduleResult; - /* 0x204 */ s32* msgEventScript; + /* 0x204 */ MsgScript* msgEventScript; /* 0x208 */ s8 an2ObjectSlot; /* 0x209 */ s8 an3ObjectSlot; /* 0x20A */ s8 maskKerfayObjectSlot; diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 90ba60b78..fb88bb043 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -448,7 +448,7 @@ void EnAob01_BeforeRace_HandleConversation(EnAob01* this, PlayState* play) { if (this->stateFlags & ENAOB01_FLAG_PLAYER_CONFIRMED_CHOICE) { this->stateFlags &= ~ENAOB01_FLAG_PLAYER_CONFIRMED_CHOICE; Rupees_ChangeBy(-this->rupeesBet); - func_800B7298(play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_WAIT); play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING; play->msgCtx.stateTimer = 4; this->actionFunc = EnAob01_BeforeRace_StartRace; diff --git a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c index 837e3560c..cf06ca1ff 100644 --- a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c +++ b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c @@ -378,7 +378,7 @@ void EnBigokuta_PlayDeathCutscene(EnBigokuta* this, PlayState* play) { CutsceneManager_Start(this->csId, &this->picto.actor); if (!CHECK_EVENTINF(EVENTINF_41) && !CHECK_EVENTINF(EVENTINF_35)) { - func_800B724C(play, &this->picto.actor, PLAYER_CSACTION_WAIT); + Player_SetCsAction(play, &this->picto.actor, PLAYER_CSACTION_WAIT); } else { player = GET_PLAYER(play); player->stateFlags1 |= PLAYER_STATE1_20; @@ -454,7 +454,7 @@ void EnBigokuta_PlayDeathEffects(EnBigokuta* this, PlayState* play) { Actor_Kill(&this->picto.actor); if (!CHECK_EVENTINF(EVENTINF_41) && !CHECK_EVENTINF(EVENTINF_35)) { - func_800B724C(play, &this->picto.actor, PLAYER_CSACTION_END); + Player_SetCsAction(play, &this->picto.actor, PLAYER_CSACTION_END); } else { Player* player = GET_PLAYER(play); diff --git a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c index e9f1a263a..92e542f4d 100644 --- a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c +++ b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c @@ -308,7 +308,7 @@ void EnBigpo_SetupSpawnCutscene(EnBigpo* this) { void EnBigpo_WaitCutsceneQueue(EnBigpo* this, PlayState* play) { if (CutsceneManager_IsNext(this->actor.csId)) { CutsceneManager_Start(this->actor.csId, &this->actor); - func_800B724C(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_WAIT); this->subCamId = CutsceneManager_GetCurrentSubCamId(this->actor.csId); if (this->actor.params == BIG_POE_TYPE_REGULAR) { // and SUMMONED, got switched earlier EnBigpo_SpawnCutsceneStage1(this, play); @@ -478,7 +478,7 @@ void EnBigpo_SpawnCutsceneStage8(EnBigpo* this, PlayState* play) { } else { // BIG_POE_TYPE_REGULAR CutsceneManager_Stop(this->actor.csId); } - func_800B724C(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_END); EnBigpo_SetupIdleFlying(this); // setup idle flying } } diff --git a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c index 4dd19f417..23a2ede70 100644 --- a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c +++ b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c @@ -850,7 +850,7 @@ void EnBigslime_EndCutscene(EnBigslime* this, PlayState* play) { this->subCamId = SUB_CAM_ID_DONE; CutsceneManager_Stop(this->csId); this->csId = CutsceneManager_GetAdditionalCsId(this->actor.csId); - func_800B724C(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_END); } } @@ -939,7 +939,7 @@ void EnBigslime_SetupCutsceneStartBattle(EnBigslime* this, PlayState* play) { this->bigslimeCollider[0].base.acFlags &= ~AC_ON; Math_Vec3f_Copy(&subCam->at, &this->actor.focus.pos); - func_800B7298(play, &this->actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_4); player->actor.shape.rot.y = this->actor.yawTowardsPlayer + 0x8000; player->actor.world.pos.x = Math_SinS(this->actor.yawTowardsPlayer) * 347.0f + this->actor.world.pos.x; @@ -987,7 +987,7 @@ void EnBigslime_SetupCallMinislime(EnBigslime* this, PlayState* play) { Animation_MorphToPlayOnce(&this->skelAnime, &gGekkoCallAnim, 5.0f); EnBigslime_GekkoSfxOutsideBigslime(this, NA_SE_EN_FROG_GREET); this->callTimer = 0; - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->actionFunc = EnBigslime_CallMinislime; } @@ -1011,7 +1011,7 @@ void EnBigslime_CallMinislime(EnBigslime* this, PlayState* play) { EnBigslime_InitFallMinislime(this); play->envCtx.lightSettingOverride = LIGHT_SETTING_OVERRIDE_NONE; this->callTimer = 35; - func_800B7298(play, &this->actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_4); } } @@ -2546,7 +2546,7 @@ void EnBigslime_PlayCutscene(EnBigslime* this, PlayState* play) { } else if (CutsceneManager_IsNext(this->csId)) { CutsceneManager_Start(this->csId, &this->actor); if (this->actionFuncStored != EnBigslime_SquishFlat) { - func_800B724C(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_WAIT); } this->subCamId = CutsceneManager_GetCurrentSubCamId(this->csId); diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c index 1f2073db6..c31a28966 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c @@ -427,7 +427,7 @@ void func_809C5310(EnBomBowlMan* this, PlayState* play) { if (player->actor.world.pos.x < 1510.0f) { if (player->transformation != PLAYER_FORM_DEKU) { if (this->actor.xzDistToPlayer < this->unk_2C8) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); func_809C53A4(this); } } else { @@ -485,7 +485,7 @@ void func_809C5598(EnBomBowlMan* this, PlayState* play) { } else if (this->actor.textId == 0x734) { this->actor.textId = 0x715; } else if (this->actor.textId == 0x715) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); EnBomBowlMan_ChangeAnim(this, ENBOMBOWLMAN_ANIM_17, 1.0f); func_809C59A4(this, play); return; @@ -497,7 +497,7 @@ void func_809C5598(EnBomBowlMan* this, PlayState* play) { Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE); Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK); Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->actionFunc = func_809C5738; return; } diff --git a/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c b/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c index fa295b0b6..317093341 100644 --- a/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c +++ b/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c @@ -474,7 +474,7 @@ void EnBomChu_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); if ((this->actionFunc != EnBomChu_WaitForDeath) && - (SurfaceType_IsWallDamage(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId))) { + SurfaceType_IsWallDamage(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId)) { EnBomChu_Explode(this, play); return; } diff --git a/src/overlays/actors/ovl_En_Box/z_en_box.c b/src/overlays/actors/ovl_En_Box/z_en_box.c index c27583eac..2cf81e94e 100644 --- a/src/overlays/actors/ovl_En_Box/z_en_box.c +++ b/src/overlays/actors/ovl_En_Box/z_en_box.c @@ -425,9 +425,9 @@ void func_80868B74(EnBox* this, PlayState* play) { this->unk_1A0++; if ((this->csId1 != CS_ID_NONE) && (CutsceneManager_GetCurrentCsId() == this->csId1)) { if (this->unk_1A0 == 2) { - func_800B724C(play, &this->dyna.actor, PLAYER_CSACTION_4); + Player_SetCsAction(play, &this->dyna.actor, PLAYER_CSACTION_4); } else if (this->unk_1A0 == 22) { - func_800B724C(play, &this->dyna.actor, PLAYER_CSACTION_1); + Player_SetCsAction(play, &this->dyna.actor, PLAYER_CSACTION_1); } } } else if (this->unk_1A0 < 60) { diff --git a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c index eb688824c..1d09f8ef7 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c @@ -1011,7 +1011,7 @@ void func_80C0D51C(EnBsb* this, PlayState* play) { return; } CutsceneManager_StartWithPlayerCs(this->unk_02CC[1], &this->actor); - func_800B7298(play, &this->actor, 0x51); + Player_SetCsActionWithHaltedActors(play, &this->actor, 0x51); this->unk_111A = CutsceneManager_GetCurrentSubCamId(this->actor.csId); this->unk_02A4 = 1; } @@ -1052,7 +1052,7 @@ void func_80C0D51C(EnBsb* this, PlayState* play) { if (this->unk_02D8 < 9) { player = GET_PLAYER(play); func_80C0B290(this, 9); - func_800B7298(play, &this->actor, 4); + Player_SetCsActionWithHaltedActors(play, &this->actor, 4); player->actor.velocity.y = 5.0f; Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale - 20.0f, 0x14, 8.0f, 1000, 100, 1); @@ -1060,7 +1060,7 @@ void func_80C0D51C(EnBsb* this, PlayState* play) { Actor_RequestQuakeAndRumble(&this->actor, play, 4, 10); } else if ((this->unk_02D8 == 9) && (curFrame >= this->unk_02C4)) { func_80C0B290(this, 0xA); - func_800B7298(play, &this->actor, 0x51); + Player_SetCsActionWithHaltedActors(play, &this->actor, 0x51); } } func_80C0BE1C(this, play); @@ -1131,7 +1131,7 @@ void func_80C0DB18(EnBsb* this, PlayState* play) { } CutsceneManager_StartWithPlayerCs(this->unk_02CC[3], &this->actor); func_80C0B290(this, 1); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); this->unk_111A = CutsceneManager_GetCurrentSubCamId(this->actor.csId); this->unk_02A4 = 1; } diff --git a/src/overlays/actors/ovl_En_Butte/z_en_butte.c b/src/overlays/actors/ovl_En_Butte/z_en_butte.c index 84b473e41..f449421b5 100644 --- a/src/overlays/actors/ovl_En_Butte/z_en_butte.c +++ b/src/overlays/actors/ovl_En_Butte/z_en_butte.c @@ -144,7 +144,7 @@ void func_8091C178(EnButte* this, PlayState* play) { sp48 = Math_SinS(D_8091D3A0) * 250.0f; sp48 = CLAMP(sp48, 0, 255); - Camera_GetCamDir(&sp40, GET_ACTIVE_CAM(play)); + sp40 = Camera_GetCamDir(GET_ACTIVE_CAM(play)); Matrix_RotateYS(sp40.y, MTXMODE_NEW); Matrix_RotateXS(sp40.x, MTXMODE_APPLY); Matrix_RotateZS(sp40.z, MTXMODE_APPLY); diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c index 3bef992a9..226dc567b 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c @@ -560,7 +560,7 @@ void EnClearTag_UpdateCamera(EnClearTag* this, PlayState* play) { this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); - func_800B7298(play, &this->actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_4); mainCam = Play_GetCamera(play, CAM_ID_MAIN); this->subCamEye.x = mainCam->eye.x; this->subCamEye.y = mainCam->eye.y; @@ -586,7 +586,7 @@ void EnClearTag_UpdateCamera(EnClearTag* this, PlayState* play) { mainCam->at = this->subCamAt; func_80169AFC(play, this->subCamId, 0); Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->cameraState = 0; this->subCamId = SUB_CAM_ID_DONE; this->activeTimer = 20; diff --git a/src/overlays/actors/ovl_En_Death/z_en_death.c b/src/overlays/actors/ovl_En_Death/z_en_death.c index 7915e4b1e..04fafd9e3 100644 --- a/src/overlays/actors/ovl_En_Death/z_en_death.c +++ b/src/overlays/actors/ovl_En_Death/z_en_death.c @@ -410,7 +410,7 @@ void EnDeath_SetupIntroCutscenePart1(EnDeath* this, PlayState* play) { Play_SetCameraAtEye(play, this->camId, &at, &eye); Play_SetCameraFov(play, this->camId, 77.0f); - func_800B724C(play, &this->actor, 0x15); + Player_SetCsAction(play, &this->actor, 0x15); this->actionFunc = EnDeath_IntroCutscenePart1; } @@ -423,7 +423,7 @@ void EnDeath_IntroCutscenePart1(EnDeath* this, PlayState* play) { player->actor.shape.rot.y = Actor_WorldYawTowardActor(&player->actor, &this->actor); if (this->actionTimer == 25) { - func_800B724C(play, &this->actor, 0x51); + Player_SetCsAction(play, &this->actor, 0x51); } if (this->actionTimer > 0) { this->actionTimer--; @@ -459,9 +459,9 @@ void EnDeath_IntroCutscenePart2(EnDeath* this, PlayState* play) { Camera* camera = Play_GetCamera(play, this->camId); if (this->actionTimer == 42) { - func_800B724C(play, &this->actor, 4); + Player_SetCsAction(play, &this->actor, 4); } else if (this->actionTimer == 27) { - func_800B724C(play, &this->actor, 0x7B); + Player_SetCsAction(play, &this->actor, 0x7B); } if (this->actionTimer <= 0) { if (this->actor.world.pos.y < (this->actor.home.pos.y + 400.0f) - 225.0f) { @@ -605,7 +605,7 @@ void EnDeath_IntroCutscenePart5(EnDeath* this, PlayState* play) { } if (SkelAnime_Update(&this->skelAnime)) { CutsceneManager_Stop(this->actor.csId); - func_800B724C(play, &this->actor, 6); + Player_SetCsAction(play, &this->actor, 6); this->actor.flags |= ACTOR_FLAG_TARGETABLE; this->coreCollider.base.acFlags |= AC_ON; EnDeath_SetupApproachPlayer(this); @@ -829,7 +829,7 @@ void EnDeath_SetupDeathCutscenePart1(EnDeath* this, PlayState* play) { Play_SetCameraAtEye(play, this->camId, &at, &eye); this->camEyeSpeed = Math_Vec3f_DistXYZ(&eye, &this->camEyeTarget) * 0.05f; this->actor.shape.rot.y += 0x2000; - func_800B724C(play, &this->actor, 7); + Player_SetCsAction(play, &this->actor, 7); Actor_PlaySfx(&this->actor, NA_SE_EN_DEATH_DEAD); this->actionFunc = EnDeath_DeathCutscenePart1; } @@ -1062,7 +1062,7 @@ void EnDeath_DeathCutscenePart4(EnDeath* this, PlayState* play) { void EnDeath_SetupDead(EnDeath* this, PlayState* play) { CutsceneManager_Stop(this->actor.csId); - func_800B724C(play, &this->actor, 6); + Player_SetCsAction(play, &this->actor, 6); Flags_SetClearTemp(play, play->roomCtx.curRoom.num); this->actionTimer = 255; play->envCtx.lightSettingOverride = 255; diff --git a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c index 0c52ca7b7..88f8fad24 100644 --- a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c +++ b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c @@ -369,7 +369,7 @@ void func_8089ABF4(EnDinofos* this, PlayState* play) { this->subCamId = SUB_CAM_ID_DONE; CutsceneManager_Stop(this->actor.csId); if (this->actor.colChkInfo.health == 0) { - func_800B724C(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_END); } } } @@ -1209,7 +1209,7 @@ void func_8089D318(EnDinofos* this, PlayState* play) { if (CutsceneManager_IsNext(this->actor.csId)) { if (this->actor.colChkInfo.health == 0) { CutsceneManager_Start(this->actor.csId, &this->actor); - func_800B724C(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_WAIT); } else { CutsceneManager_StartWithPlayerCs(this->actor.csId, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c index d1b4f1f90..f6f2f2acd 100644 --- a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c +++ b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c @@ -245,8 +245,8 @@ static TexturePtr sEyeTextures[] = { gKoumeKioskEyeHalfTex, }; -s32 func_80A50D40(Actor* thisx, PlayState* play) { - func_800B7298(play, thisx, PLAYER_CSACTION_WAIT); +s32 func_80A50D40(Actor* actor, PlayState* play) { + Player_SetCsActionWithHaltedActors(play, actor, PLAYER_CSACTION_WAIT); if (CHECK_EVENTINF(EVENTINF_35)) { play->nextEntrance = ENTRANCE(SOUTHERN_SWAMP_CLEARED, 6); } else { @@ -285,7 +285,7 @@ s32 func_80A50E40(EnDnh* this, PlayState* play) { return 1; } -s32 func_80A50EC0(EnDnh* this) { +void func_80A50EC0(EnDnh* this) { if (DECR(this->blinkTimer) == 0) { this->eyeTexIndex++; if (this->eyeTexIndex >= ARRAY_COUNT(sEyeTextures)) { diff --git a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.h b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.h index fb436f899..997c5f702 100644 --- a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.h +++ b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.h @@ -15,7 +15,7 @@ typedef struct EnDnh { /* 0x144 */ EnDnhActionFunc actionFunc; /* 0x148 */ SkelAnime skelAnime; /* 0x18C */ u16 unk18C; - /* 0x190 */ s32 msgEventScript; + /* 0x190 */ s32* msgEventScript; /* 0x194 */ s32 unk194; /* 0x198 */ s16 unk198; /* 0x19A */ UNK_TYPE1 pad19A[0x2]; diff --git a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c index bb1d60c2c..5ec892f13 100644 --- a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c +++ b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c @@ -542,7 +542,7 @@ void EnDragon_Grab(EnDragon* this, PlayState* play) { if (this->grabTimer > sMaxGrabTimerPerPython[this->pythonIndex]) { if (this->state == DEEP_PYTHON_GRAB_STATE_START) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); this->state = DEEP_PYTHON_GRAB_STATE_GRABBED; } diff --git a/src/overlays/actors/ovl_En_Dt/z_en_dt.c b/src/overlays/actors/ovl_En_Dt/z_en_dt.c index 2b8ec504f..70fc957b1 100644 --- a/src/overlays/actors/ovl_En_Dt/z_en_dt.c +++ b/src/overlays/actors/ovl_En_Dt/z_en_dt.c @@ -87,10 +87,10 @@ static u8 D_80BEB2E0[] = { 0, 0, 2, 0, 0, 2 }; static s32 D_80BEB2E8[] = { 0, 1, 3, 1, 0, 2, 3, 1, 0, 3, 3, 1, 0, 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0 }; -static TexturePtr* D_80BEB348[] = { &gDotourEyeShockTex, &gDotourEyeOpenTex, &gDotourEyeClosedTex, - &gDotourEyeLookDownTex, &gDotourEyeSquintTex }; +static TexturePtr D_80BEB348[] = { gDotourEyeShockTex, gDotourEyeOpenTex, gDotourEyeClosedTex, + gDotourEyeLookDownTex, gDotourEyeSquintTex }; -static TexturePtr* D_80BEB35C[] = { &gDotourEyebrowHighTex, &gDotourEyebrowMidTex, &gDotourEyebrowLowTex }; +static TexturePtr D_80BEB35C[] = { &gDotourEyebrowHighTex, &gDotourEyebrowMidTex, &gDotourEyebrowLowTex }; void EnDt_Init(Actor* thisx, PlayState* play) { EnDt* this = THIS; @@ -221,7 +221,7 @@ void func_80BE9EF8(EnDt* this, PlayState* play) { func_80BE9D9C(this); this->actor.textId = D_80BEB1D0[this->unk_256]; Message_StartTextbox(play, this->actor.textId, &this->actor); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); this->unk_254 = 1; this->actionFunc = func_80BEA394; } else { @@ -372,7 +372,7 @@ void func_80BEA394(EnDt* this, PlayState* play) { if (((this->unk_244 == 0) && (Message_GetState(&play->msgCtx) == 5)) && (Message_ShouldAdvance(play) != 0)) { if (this->unk_256 == 21) { - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, 6); if (this->unk_270 == 2) { CutsceneManager_Stop(this->csIdList[i]); this->unk_270 = 0; @@ -646,7 +646,7 @@ void EnDt_Update(Actor* thisx, PlayState* play) { Actor_SetFocus(&this->actor, 60.0f); Actor_MoveWithGravity(&this->actor); Collider_UpdateCylinder(&this->actor, &this->collider); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); } s32 EnDt_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { diff --git a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c index 5e36b20f9..aceda34c4 100644 --- a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c +++ b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c @@ -1112,15 +1112,15 @@ void func_80B2ADB0(EnFish2* this, Vec3f* vec, s16 arg2) { for (i = 0; i < ARRAY_COUNT(this->unk_3F8); i++, ptr++) { if (!ptr->unk_00) { - TexturePtr phi_v0; + TexturePtr texture; if (Rand_ZeroOne() < 0.5f) { - phi_v0 = gEffBubble2Tex; + texture = gEffBubble2Tex; } else { - phi_v0 = gEffBubble1Tex; + texture = gEffBubble1Tex; } - ptr->unk_20 = OS_K0_TO_PHYSICAL(SEGMENTED_TO_K0(phi_v0)); + ptr->unk_20 = (TexturePtr)OS_K0_TO_PHYSICAL(SEGMENTED_TO_K0(texture)); ptr->unk_00 = true; ptr->unk_04 = *vec; ptr->unk_04.x += Rand_CenteredFloat(ptr->unk_00 + (this->unk_330 * 4000.0f)); diff --git a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.h b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.h index a324e0bab..16485d8b5 100644 --- a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.h +++ b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.h @@ -15,7 +15,7 @@ typedef struct { /* 0x14 */ f32 unk_14; /* 0x18 */ f32 unk_18; /* 0x1C */ s16 unk_1C; - /* 0x20 */ void* unk_20; + /* 0x20 */ TexturePtr unk_20; } EnFish2UnkStruct; // size = 0x24 typedef struct EnFish2 { diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index c1320150a..115bbf007 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -5324,7 +5324,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { sSubCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, sSubCamId, CAM_STATUS_ACTIVE); - func_800B7298(play, &this->actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_4); mainCam = Play_GetCamera(play, CAM_ID_MAIN); sSubCamEye.x = mainCam->eye.x; @@ -5351,7 +5351,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { func_80169AFC(play, sSubCamId, 0); Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); D_8090CD4C = 0; sSubCamId = SUB_CAM_ID_DONE; D_8090CD50 = 30; @@ -5365,7 +5365,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { sSubCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, sSubCamId, CAM_STATUS_ACTIVE); - func_800B7298(play, &this->actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_4); mainCam = Play_GetCamera(play, CAM_ID_MAIN); sSubCamEye.x = mainCam->eye.x; @@ -5383,7 +5383,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { if ((D_8090CD50 == 0) && Message_ShouldAdvance(play)) { D_8090CD4C = 22; D_8090CD50 = 40; - // func_800B7298 call removed in MM + // Player_SetCsActionWithHaltedActors call removed in MM D_80911F64 = 0.0f; } break; @@ -5452,7 +5452,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { mainCam->at = sSubCamAt; func_80169AFC(play, sSubCamId, 0); Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); D_8090CD4C = 0; sSubCamId = SUB_CAM_ID_DONE; player->unk_B28 = -5; diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index fa31aa428..f5ffeee9c 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -445,7 +445,7 @@ void func_80B0FFA8(EnGb2* this, PlayState* play) { Rupees_ChangeBy(-this->unk_288); play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING; play->msgCtx.stateTimer = 4; - func_800B7298(play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_WAIT); this->actionFunc = func_80B11344; break; @@ -600,7 +600,7 @@ void func_80B10634(EnGb2* this, PlayState* play) { Rupees_ChangeBy(-this->unk_288); play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING; play->msgCtx.stateTimer = 4; - func_800B7298(play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_WAIT); this->actionFunc = func_80B11344; } break; diff --git a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c index 78a79f14a..a6f201813 100644 --- a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c +++ b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c @@ -494,7 +494,7 @@ void EnGe2_PatrolDuties(EnGe2* this, PlayState* play) { this->picto.actor.shape.rot.y, 0x1800, visionRange, this->verticalDetectRange)) { if ((GERUDO_PURPLE_GET_EXIT(&this->picto.actor) != GERUDO_PURPLE_EXIT_NONE) && !Play_InCsMode(play)) { this->picto.actor.speed = 0.0f; - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_26); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_26); Lib_PlaySfx(NA_SE_SY_FOUND); Message_StartTextbox(play, 0x1194, &this->picto.actor); this->actionFunc = EnGe2_SetupCharge; @@ -682,7 +682,7 @@ void EnGe2_GuardStationary(EnGe2* this, PlayState* play) { if (EnGe2_LookForPlayer(play, &this->picto.actor, &this->picto.actor.focus.pos, this->picto.actor.shape.rot.y, 0x4000, 720.0f, this->verticalDetectRange)) { if ((GERUDO_PURPLE_GET_EXIT(&this->picto.actor) != GERUDO_PURPLE_EXIT_NONE) && !Play_InCsMode(play)) { - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_26); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_26); Lib_PlaySfx(NA_SE_SY_FOUND); Message_StartTextbox(play, 0x1194, &this->picto.actor); this->timer = 50; diff --git a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c index c9623136e..3115453f5 100644 --- a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c +++ b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c @@ -273,7 +273,7 @@ void EnGe3_AveilsChamberIdle(EnGe3* this, PlayState* play) { } } else if ((this->picto.actor.xzDistToPlayer < 700.0f) && (fabsf(this->picto.actor.playerHeightRel) < 100.0f) && !Play_InCsMode(play)) { - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_26); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_26); Lib_PlaySfx(NA_SE_SY_FOUND); if (Player_GetMask(play) == PLAYER_MASK_STONE) { // Not fooled by Stone Mask diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index 5d47d222c..501a3ba2d 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -390,7 +390,7 @@ void func_809984F4(EnGs* this, PlayState* play) { } } while (gossipStone != NULL); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->actionFunc = func_809985B8; } diff --git a/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c b/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c index 5dbb270a9..ea3669a0c 100644 --- a/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c +++ b/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c @@ -257,7 +257,7 @@ void EnHonotrap_InitFlameGroup(EnHonotrap* this, PlayState* play) { for (i = 0; i < ARRAY_COUNT(flameGroup->flameList); i++) { flameGroup->flameList[i].flameScroll = flameScroll; flameScroll += (s32)Rand_ZeroFloat(300.0f) + 100; - flameScroll &= 0x1FF; + flameScroll %= 0x200U; } Actor_PlaySfx(&this->actor, NA_SE_EV_FLAME_IGNITION); @@ -649,7 +649,7 @@ void EnHonotrap_FlameGroup(EnHonotrap* this, PlayState* play) { var_fs0 += 1.0f / 6; flameElem->unkC *= (0.006f * (((1.0f - flameGroup->unk4) * 0.8f) + 0.2f)); flameElem->flameScroll += flameScrollDisplacement; - flameElem->flameScroll %= 0x200u; + flameElem->flameScroll %= 0x200U; } if (sp78 || (this->timer <= 0)) { @@ -723,7 +723,7 @@ void EnHonotrap_UpdateFlame(Actor* thisx, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EV_BURN_OUT - SFX_FLAG); this->actionFunc(this, play); this->flameScroll -= 20; - this->flameScroll %= 0x200u; + this->flameScroll %= 0x200U; } void EnHonotrap_UpdateFlameGroup(Actor* thisx, PlayState* play) { @@ -774,7 +774,7 @@ void EnHonotrap_DrawFlame(Actor* thisx, PlayState* play) { void EnHonotrap_DrawFlameGroup(Actor* thisx, PlayState* play) { s32 pad; - EnHonotrap* this = ((EnHonotrap*)thisx); + EnHonotrap* this = (EnHonotrap*)thisx; EnHonotrapFlameElement* flameElem; EnHonotrapFlameGroup* flameGroup = &this->flameGroup; s32 i; @@ -786,15 +786,14 @@ void EnHonotrap_DrawFlameGroup(Actor* thisx, PlayState* play) { Gfx_SetupDL25_Xlu(play->state.gfxCtx); gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 200, 0, 255); gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 0); - Camera_GetCamDir(&camDir, GET_ACTIVE_CAM(play)); + camDir = Camera_GetCamDir(GET_ACTIVE_CAM(play)); camDir.y += 0x8000; for (i = 0; i < ARRAY_COUNT(flameGroup->flameList); i++) { flameElem = &flameGroup->flameList[i]; if (flameElem->isDrawn) { - gSPSegment( - POLY_XLU_DISP++, 0x08, - Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, 0, 0x20, 0x40, 1, 0, flameElem->flameScroll, 0x20, 0x80)); + gSPSegment(POLY_XLU_DISP++, 0x08, + Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, 0, 32, 64, 1, 0, flameElem->flameScroll, 32, 128)); Matrix_SetTranslateRotateYXZ(flameElem->pos.x, flameElem->pos.y - (4000.0f * flameElem->unkC), flameElem->pos.z, &camDir); Matrix_Scale(((fabsf(Math_SinS((s16)(camDir.y - thisx->shape.rot.y) >> 1)) * 0.2f) + 1.7f) * diff --git a/src/overlays/actors/ovl_En_Hs/z_en_hs.c b/src/overlays/actors/ovl_En_Hs/z_en_hs.c index c171ec958..95e4abf84 100644 --- a/src/overlays/actors/ovl_En_Hs/z_en_hs.c +++ b/src/overlays/actors/ovl_En_Hs/z_en_hs.c @@ -225,7 +225,7 @@ void EnHs_SceneTransitToBunnyHoodDialogue(EnHs* this, PlayState* play) { void func_80953354(EnHs* this, PlayState* play) { if (!Play_InCsMode(play)) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->actionFunc = EnHs_SceneTransitToBunnyHoodDialogue; } } diff --git a/src/overlays/actors/ovl_En_Ja/z_en_ja.c b/src/overlays/actors/ovl_En_Ja/z_en_ja.c index a0bf8b397..f5ccbb636 100644 --- a/src/overlays/actors/ovl_En_Ja/z_en_ja.c +++ b/src/overlays/actors/ovl_En_Ja/z_en_ja.c @@ -219,7 +219,7 @@ void func_80BC1A68(EnJa* this) { } } -s32 func_80BC1AE0(EnJa* this, PlayState* play) { +Actor* func_80BC1AE0(EnJa* this, PlayState* play) { Actor* ja = SubS_FindNearestActor(&this->actor, play, ACTORCAT_NPC, ACTOR_EN_JA); Vec3f sp30; Vec3f sp24; @@ -320,7 +320,7 @@ void func_80BC1E40(EnJa* this, PlayState* play) { s32 func_80BC1FC8(EnJa* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 ret = false; - if (func_80BC1AE0(this, play)) { + if (func_80BC1AE0(this, play) != NULL) { SubS_SetOfferMode(&this->unk_340, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_340 |= 0x10; EnJa_ChangeAnim(this, ENJA_ANIM_5); @@ -333,7 +333,7 @@ s32 func_80BC1FC8(EnJa* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 func_80BC203C(EnJa* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 ret = false; - if (func_80BC1AE0(this, play)) { + if (func_80BC1AE0(this, play) != NULL) { if (ENJA_GET_3(&this->actor) == 0) { EnJa_ChangeAnim(this, ENJA_ANIM_1); } else { diff --git a/src/overlays/actors/ovl_En_Jso/z_en_jso.c b/src/overlays/actors/ovl_En_Jso/z_en_jso.c index 48b9e0b40..0efa7799e 100644 --- a/src/overlays/actors/ovl_En_Jso/z_en_jso.c +++ b/src/overlays/actors/ovl_En_Jso/z_en_jso.c @@ -18,8 +18,8 @@ void EnJso_Destroy(Actor* thisx, PlayState* play); void EnJso_Update(Actor* thisx, PlayState* play); void EnJso_Draw(Actor* thisx, PlayState* play); -void EnJso_SetupHandleIntroCutscene(EnJso* this); -void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play); +void EnJso_SetupIntroCutscene(EnJso* this); +void EnJso_IntroCutscene(EnJso* this, PlayState* play); void EnJso_Reappear(EnJso* this, PlayState* play); void EnJso_SetupCirclePlayer(EnJso* this, PlayState* play); void EnJso_CirclePlayer(EnJso* this, PlayState* play); @@ -46,8 +46,8 @@ void EnJso_FallDownAndTalk(EnJso* this, PlayState* play); void EnJso_TellHint(EnJso* this, PlayState* play); void EnJso_BurstIntoFlames(EnJso* this, PlayState* play); -typedef enum { - /* 0 */ EN_JSO_ACTION_HANDLE_INTRO_CUTSCENE, +typedef enum EnJsoAction { + /* 0 */ EN_JSO_ACTION_INTRO_CUTSCENE, /* 1 */ EN_JSO_ACTION_REAPPEAR, /* 2 */ EN_JSO_ACTION_CIRCLE_PLAYER, /* 3 */ EN_JSO_ACTION_GUARD, @@ -65,30 +65,35 @@ typedef enum { /* 15 */ EN_JSO_ACTION_UNK_15 // Checked in EnJso_Update, but never actually used } EnJsoAction; -typedef enum { +typedef enum EnJsoIntroType { /* 0 */ EN_JSO_INTRO_SPIN_UP_FROM_GROUND, /* 1 */ EN_JSO_INTRO_JUMP_OUT_FROM_GROUND, /* 2 */ EN_JSO_INTRO_LAND_FROM_ABOVE, /* 3 */ EN_JSO_INTRO_SCALE_UP } EnJsoIntroType; -typedef enum { +typedef enum EnJsoIntroCsState { // Either the cutscene started (in which case, we'll transition to the next state on the next frame) or it's done. /* 0 */ EN_JSO_INTRO_CS_STATE_DONE_OR_STARTED, + // Waits for the Garo to finish their intro animation and open the first textbox. /* 1 */ EN_JSO_INTRO_CS_STATE_WAITING_FOR_TEXTBOX_TO_APPEAR, + // Waits for the player to press a button to continue on from the Garo's first textbox. /* 2 */ EN_JSO_INTRO_CS_STATE_WAITING_FOR_TEXTBOX_TO_CONTINUE, + // Lifts the Garo's right arm such that, when they draw their sword, it's pointed at the player. Waits until the // player has finished reading all of the Garo's dialogue before continuing. /* 3 */ EN_JSO_INTRO_CS_STATE_RAISE_ARM_AND_DRAW_RIGHT_SWORD, + // Waits 10 frames, then the Garo draws its left sword and continues to the next state. /* 4 */ EN_JSO_INTRO_CS_STATE_DRAW_LEFT_SWORD, + // Waits 10 frames, then the Garo jumps back and the cutscene ends. /* 5 */ EN_JSO_INTRO_CS_STATE_ENDING } EnJsoIntroCsState; -typedef enum { +typedef enum EnJsoSwordState { /* 0 */ EN_JSO_SWORD_STATE_BOTH_DRAWN, /* 1 */ EN_JSO_SWORD_STATE_KNOCKED_OUT_OF_HANDS, /* 2 */ EN_JSO_SWORD_STATE_RIGHT_DRAWN, @@ -102,7 +107,7 @@ static s32 sIsAttacking = false; // Seemingly a duplicate of the isPlayerLockedOn instance variable. Its purpose is unknown. static s32 sIsPlayerLockedOn = false; -typedef enum { +typedef enum EnJsoDamageEffect { /* 0x0 */ EN_JSO_DMGEFF_IMMUNE, // Deals no damage and has no special effect /* 0x1 */ EN_JSO_DMGEFF_STUN, // Deals no damage but stuns the Garo /* 0x2 */ EN_JSO_DMGEFF_FIRE, // Damages and sets the Garo on fire @@ -208,7 +213,7 @@ static u16 sTextIds[] = { 0x1399, }; -typedef enum { +typedef enum EnJsoAnimation { /* 0 */ EN_JSO_ANIM_APPEAR, /* 1 */ EN_JSO_ANIM_IDLE, /* 2 */ EN_JSO_ANIM_BOUNCE, @@ -301,7 +306,7 @@ void EnJso_Init(Actor* thisx, PlayState* play) { this->actor.flags |= ACTOR_FLAG_CANT_LOCK_ON; this->hintType = EN_JSO_GET_HINT_TYPE(&this->actor); this->introCsType = this->hintType & EN_JSO_INTRO_SCALE_UP; - EnJso_SetupHandleIntroCutscene(this); + EnJso_SetupIntroCutscene(this); } void EnJso_Destroy(Actor* thisx, PlayState* play) { @@ -338,14 +343,14 @@ void EnJso_ChangeAnim(EnJso* this, s32 animIndex) { sAnimationModes[animIndex], morphFrames); } -void EnJso_SetupHandleIntroCutscene(EnJso* this) { +void EnJso_SetupIntroCutscene(EnJso* this) { EnEncount3* parent = (EnEncount3*)this->actor.parent; this->csId = parent->csId; this->swordState = EN_JSO_SWORD_STATE_NONE_DRAWN; - this->action = EN_JSO_ACTION_HANDLE_INTRO_CUTSCENE; + this->action = EN_JSO_ACTION_INTRO_CUTSCENE; this->actor.flags |= ACTOR_FLAG_100000; - this->actionFunc = EnJso_HandleIntroCutscene; + this->actionFunc = EnJso_IntroCutscene; } /** @@ -353,13 +358,13 @@ void EnJso_SetupHandleIntroCutscene(EnJso* this) { * appear in one of four different ways, activating the ring of fire, etc. When the cutscene is over, the Garo will * jump back to start the fight. */ -void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { +void EnJso_IntroCutscene(EnJso* this, PlayState* play) { Player* player = GET_PLAYER(play); f32 curFrame = this->skelAnime.curFrame; s16 showTextbox; s16 diffToTargetRobeRightRot; - switch (this->introCsState) { + switch (this->cutsceneState) { case EN_JSO_INTRO_CS_STATE_DONE_OR_STARTED: if (!CutsceneManager_IsNext(this->csId)) { CutsceneManager_Queue(this->csId); @@ -367,7 +372,7 @@ void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { } CutsceneManager_StartWithPlayerCs(this->csId, &this->actor); - func_800B7298(play, &this->actor, PLAYER_CSACTION_21); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_21); this->subCamId = CutsceneManager_GetCurrentSubCamId(this->actor.csId); player->actor.world.pos.x = this->actor.home.pos.x + 30.0f; player->actor.world.pos.z = this->actor.home.pos.z + 30.0f; @@ -412,8 +417,8 @@ void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { break; } - this->introCsTimer = 0; - this->introCsState++; + this->cutsceneTimer = 0; + this->cutsceneState++; break; case EN_JSO_INTRO_CS_STATE_WAITING_FOR_TEXTBOX_TO_APPEAR: @@ -472,12 +477,12 @@ void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { } if (showTextbox) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_4); Message_StartTextbox(play, sTextIds[this->textIndex], &this->actor); this->textIndex++; this->actor.shape.yOffset = 970.0f; - this->introCsTimer = 0; - this->introCsState++; + this->cutsceneTimer = 0; + this->cutsceneState++; } break; @@ -493,9 +498,9 @@ void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { Message_CloseTextbox(play); Message_ContinueTextbox(play, sTextIds[this->textIndex]); - this->introCsTimer = 0; + this->cutsceneTimer = 0; this->textIndex++; - this->introCsState++; + this->cutsceneState++; } break; @@ -531,8 +536,8 @@ void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { Message_CloseTextbox(play); this->targetRightArmRot.x = this->targetRightArmRot.y = this->targetRightArmRot.z = this->targetRobeRightRot.x = this->targetRobeRightRot.y = this->targetRobeRightRot.z = 0; - this->introCsTimer = 0; - this->introCsState++; + this->cutsceneTimer = 0; + this->cutsceneState++; } break; @@ -543,9 +548,9 @@ void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { this->subCamAtNext.x = player->actor.world.pos.x - 30.0f; this->subCamAtNext.y = player->actor.world.pos.y + 40.0f; this->subCamAtNext.z = player->actor.world.pos.z - 130.0f; - this->introCsTimer++; + this->cutsceneTimer++; - if (this->introCsTimer >= 10) { + if (this->cutsceneTimer >= 10) { this->swordState = EN_JSO_SWORD_STATE_BOTH_DRAWN; Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_SWORD); if ((this->actor.parent != NULL) && (this->actor.parent->update != NULL)) { @@ -558,8 +563,8 @@ void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { } EnJso_ChangeAnim(this, EN_JSO_ANIM_IDLE); - this->introCsTimer = 0; - this->introCsState++; + this->cutsceneTimer = 0; + this->cutsceneState++; } break; @@ -570,14 +575,14 @@ void EnJso_HandleIntroCutscene(EnJso* this, PlayState* play) { this->subCamAtNext.x = player->actor.world.pos.x - 30.0f; this->subCamAtNext.y = player->actor.world.pos.y + 40.0f; this->subCamAtNext.z = player->actor.world.pos.z - 130.0f; - this->introCsTimer++; + this->cutsceneTimer++; - if (this->introCsTimer >= 10) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + if (this->cutsceneTimer >= 10) { + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); CutsceneManager_Stop(this->csId); this->rightArmRot.x = this->rightArmRot.y = this->rightArmRot.z = this->robeRightRot.x = this->robeRightRot.y = this->robeRightRot.z = 0; - this->introCsState = EN_JSO_INTRO_CS_STATE_DONE_OR_STARTED; + this->cutsceneState = EN_JSO_INTRO_CS_STATE_DONE_OR_STARTED; this->subCamId = SUB_CAM_ID_DONE; this->actor.flags &= ~ACTOR_FLAG_100000; this->actor.flags &= ~ACTOR_FLAG_CANT_LOCK_ON; @@ -683,7 +688,7 @@ void EnJso_SetupCirclePlayer(EnJso* this, PlayState* play) { /** * Makes the Garo bounce in a circle around the player, sometimes randomly switching the direction it's traveling, until - * the attack wait timer reaches 0. Once it does, then the Garo will prepare to attack. + * the attack timer reaches 0. Once it does, then the Garo will prepare to attack. */ void EnJso_CirclePlayer(EnJso* this, PlayState* play) { f32 curFrame = this->skelAnime.curFrame; @@ -692,7 +697,8 @@ void EnJso_CirclePlayer(EnJso* this, PlayState* play) { s32 pad; Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_MOVING - SFX_FLAG); - if ((this->action != EN_JSO_ACTION_REAPPEAR) && (this->action != EN_JSO_ACTION_HANDLE_INTRO_CUTSCENE) && + + if ((this->action != EN_JSO_ACTION_REAPPEAR) && (this->action != EN_JSO_ACTION_INTRO_CUTSCENE) && (fabsf(player->actor.world.pos.y - this->actor.world.pos.y) > 60.0f)) { EnJso_SetupReappear(this, play); return; @@ -722,7 +728,7 @@ void EnJso_CirclePlayer(EnJso* this, PlayState* play) { //! @note: Since sIsPlayerLockedOn always mirrors the value of this->isPlayerLockedOn, the last part of this //! if-statement is always true and has no impact on the logic. In other words, the Garo doesn't care whether or not //! the player is locked on; it will attack regardless as long as the other conditions are met. - if ((this->attackWaitTimer == 0) && !sIsAttacking && (!sIsPlayerLockedOn || this->isPlayerLockedOn)) { + if ((this->attackTimer == 0) && !sIsAttacking && (!sIsPlayerLockedOn || this->isPlayerLockedOn)) { sIsAttacking = true; this->isAttacking = true; this->action = EN_JSO_ACTION_SPIN_BEFORE_ATTACK; @@ -797,7 +803,7 @@ void EnJso_SpinBeforeAttack(EnJso* this, PlayState* play) { void EnJso_SetupDashAttack(EnJso* this) { this->action = EN_JSO_ACTION_DASH_ATTACK; - this->dashAttackTimer = 40; + this->attackMovementTimer = 40; this->bodyCollider.base.colType = COLTYPE_HIT2; this->bodyCollider.base.acFlags &= ~AC_HARD; this->actor.speed = 15.0f; @@ -829,7 +835,7 @@ void EnJso_DashAttack(EnJso* this, PlayState* play) { knockbackVelocity.z = -10.0f; Matrix_MultVec3f(&knockbackVelocity, &this->knockbackVelocity); this->swordState = EN_JSO_SWORD_STATE_KNOCKED_OUT_OF_HANDS; - this->dashAttackTimer = 0; + this->attackMovementTimer = 0; this->disableBlure = true; AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); EnJso_SetupKnockedBack(this); @@ -848,7 +854,7 @@ void EnJso_DashAttack(EnJso* this, PlayState* play) { yawDiff = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; absYawDiff = ABS_ALT(yawDiff); - if ((this->dashAttackTimer == 0) || (this->actor.xzDistToPlayer < 100.0f) || (absYawDiff > 0x4300)) { + if ((this->attackMovementTimer == 0) || (this->actor.xzDistToPlayer < 100.0f) || (absYawDiff > 0x4300)) { AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); Math_ApproachZeroF(&this->actor.speed, 0.3f, 3.0f); EnJso_SetupSlash(this, play); @@ -861,7 +867,7 @@ void EnJso_SetupSlash(EnJso* this, PlayState* play) { Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale, 1, 8.0f, 500, 10, true); Math_ApproachZeroF(&this->actor.speed, 0.3f, 3.0f); - this->swordHitSomething = false; + this->slashHitSomething = false; Actor_PlaySfx(&this->actor, NA_SE_IT_SWORD_SWING_HARD); this->actionFunc = EnJso_Slash; } @@ -881,7 +887,7 @@ void EnJso_Slash(EnJso* this, PlayState* play) { } if ((this->rightSwordCollider.base.atFlags & AT_HIT) || (this->leftSwordCollider.base.atFlags & AT_HIT)) { - this->swordHitSomething = true; + this->slashHitSomething = true; this->rightSwordCollider.base.atFlags &= ~AT_HIT; this->leftSwordCollider.base.atFlags &= ~AT_HIT; } @@ -913,7 +919,7 @@ void EnJso_Slash(EnJso* this, PlayState* play) { } void EnJso_SetupWaitAfterSlash(EnJso* this) { - if (this->swordHitSomething) { + if (this->slashHitSomething) { EnJso_ChangeAnim(this, EN_JSO_ANIM_SLASH_LOOP); this->timer = 20; } else { @@ -931,10 +937,10 @@ void EnJso_SetupWaitAfterSlash(EnJso* this) { */ void EnJso_WaitAfterSlash(EnJso* this, PlayState* play) { if (this->timer == 0) { - this->attackWaitTimer = Rand_S16Offset(30, 30); + this->attackTimer = Rand_S16Offset(30, 30); this->bodyCollider.base.colType = COLTYPE_NONE; this->bodyCollider.base.acFlags |= AC_HARD; - this->swordHitSomething = false; + this->slashHitSomething = false; sIsAttacking = false; this->isAttacking = false; EnJso_SetupCirclePlayer(this, play); @@ -986,9 +992,12 @@ void EnJso_SetupStunned(EnJso* this) { AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); EnJso_ChangeAnim(this, EN_JSO_ANIM_DAMAGED); - // This assignment is immediately overriden below. + //! @note: This assignment is immediately overriden below. This is probably a leftover from EnJso2's version of this + //! function, where the Garo Master is stunned for longer if it's frozen. Garos just use the longer stun + //! unconditionally, resulting in this useless assignment here. this->timer = 30; this->actor.speed = 0.0f; + if (((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) && (this->drawDmgEffAlpha == 0)) { @@ -1032,7 +1041,7 @@ void EnJso_SetupDamaged(EnJso* this, PlayState* play) { AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); EnJso_ChangeAnim(this, EN_JSO_ANIM_DAMAGED); - this->swordHitSomething = false; + this->slashHitSomething = false; this->actor.velocity.y = 10.0f; this->actor.speed = 0.0f; Matrix_RotateYS(this->actor.yawTowardsPlayer, MTXMODE_NEW); @@ -1104,7 +1113,7 @@ void EnJso_JumpBack(EnJso* this, PlayState* play) { sIsAttacking = false; this->isAttacking = false; this->actor.world.rot.y = this->actor.shape.rot.y; - this->attackWaitTimer = Rand_S16Offset(10, 10); + this->attackTimer = Rand_S16Offset(10, 10); EnJso_SetupCirclePlayer(this, play); } } @@ -1449,8 +1458,8 @@ void EnJso_Update(Actor* thisx, PlayState* play) { } this->actionFunc(this, play); - DECR(this->dashAttackTimer); - DECR(this->attackWaitTimer); + DECR(this->attackMovementTimer); + DECR(this->attackTimer); DECR(this->timer); DECR(this->drawDmgEffAlpha); @@ -1501,7 +1510,7 @@ void EnJso_Update(Actor* thisx, PlayState* play) { this->afterimageCount = 0; } - if ((this->action != EN_JSO_ACTION_HANDLE_INTRO_CUTSCENE) && (this->action != EN_JSO_ACTION_CIRCLE_PLAYER) && + if ((this->action != EN_JSO_ACTION_INTRO_CUTSCENE) && (this->action != EN_JSO_ACTION_CIRCLE_PLAYER) && (this->action != EN_JSO_ACTION_SPIN_BEFORE_ATTACK) && (this->action != EN_JSO_ACTION_DAMAGED) && (this->action != EN_JSO_ACTION_JUMP_BACK)) { this->actor.shape.rot.y = this->actor.world.rot.y; @@ -1510,14 +1519,14 @@ void EnJso_Update(Actor* thisx, PlayState* play) { this->actor.shape.rot.x = this->actor.world.rot.x; Collider_UpdateCylinder(&this->actor, &this->bodyCollider); - if ((this->action != EN_JSO_ACTION_HANDLE_INTRO_CUTSCENE) && (this->action != EN_JSO_ACTION_REAPPEAR) && + if ((this->action != EN_JSO_ACTION_INTRO_CUTSCENE) && (this->action != EN_JSO_ACTION_REAPPEAR) && (this->action != EN_JSO_ACTION_DAMAGED) && (this->action != EN_JSO_ACTION_SPIN_BEFORE_ATTACK) && (this->action != EN_JSO_ACTION_DEAD) && (this->action != EN_JSO_ACTION_FALL_DOWN_AND_TALK) && (this->action != EN_JSO_ACTION_UNK_15)) { CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); - if ((this->action == EN_JSO_ACTION_SLASH) && !this->swordHitSomething && + if ((this->action == EN_JSO_ACTION_SLASH) && !this->slashHitSomething && (this->swordState == EN_JSO_SWORD_STATE_BOTH_DRAWN)) { CollisionCheck_SetAT(play, &play->colChkCtx, &this->rightSwordCollider.base); CollisionCheck_SetAT(play, &play->colChkCtx, &this->leftSwordCollider.base); diff --git a/src/overlays/actors/ovl_En_Jso/z_en_jso.h b/src/overlays/actors/ovl_En_Jso/z_en_jso.h index 7f97e5008..1f68cffc5 100644 --- a/src/overlays/actors/ovl_En_Jso/z_en_jso.h +++ b/src/overlays/actors/ovl_En_Jso/z_en_jso.h @@ -15,7 +15,7 @@ typedef void (*EnJsoActionFunc)(struct EnJso*, PlayState*); // For the four `VARIABLE` hint types, the former hint is used if the player hasn't restored the river in // Ikana Canyon yet, and the latter hint is used if the player has. If the player has the Elegy of Emptiness, // then all hints will be replaced with a hint telling the player to use the song to climb Stone Tower. -typedef enum { +typedef enum EnJsoHintType { /* 0 */ EN_JSO_HINT_FREEZE_OCTOROKS, /* 1 */ EN_JSO_HINT_FLATS_LOCATION, /* 2 */ EN_JSO_HINT_VARIABLE_1, // Hints that Pamela's family is in the house or that the Song of Healing can heal Pamela's father @@ -28,7 +28,7 @@ typedef enum { /* 9 */ EN_JSO_HINT_KING_WEAK_TO_MIRROR_SHIELD } EnJsoHintType; -typedef enum { +typedef enum EnJsoBodyPart { /* 0 */ EN_JSO_BODYPART_LEFT_SWORD, /* 1 */ EN_JSO_BODYPART_RIGHT_SWORD, /* 2 */ EN_JSO_BODYPART_ROBE_TOP, @@ -44,7 +44,6 @@ typedef enum { /* 12 */ EN_JSO_BODYPART_MAX } EnJsoBodyPart; - typedef struct EnJso { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; @@ -54,9 +53,9 @@ typedef struct EnJso { /* 0x27C */ s16 action; /* 0x27E */ s16 circlingAngle; /* 0x280 */ s16 circlingAngularVelocity; - /* 0x282 */ s16 dashAttackTimer; + /* 0x282 */ s16 attackMovementTimer; /* 0x284 */ UNK_TYPE1 unk_284[0x2]; - /* 0x286 */ s16 attackWaitTimer; // while bouncing, the Garo cannot start an attack until this reaches 0 + /* 0x286 */ s16 attackTimer; // while bouncing, the Garo cannot start an attack until this reaches 0 /* 0x288 */ s16 timer; /* 0x28A */ s16 isGuarding; // Set to false when the guard animation ends, never checked or set otherwise. Name is inferred based on how it's being set. /* 0x28C */ s16 isPlayerLockedOn; @@ -76,7 +75,7 @@ typedef struct EnJso { /* 0x34A */ s16 hintType; /* 0x34C */ u8 disableBlure; /* 0x34D */ u8 swordState; - /* 0x34E */ u8 swordHitSomething; + /* 0x34E */ u8 slashHitSomething; /* 0x350 */ f32 animEndFrame; /* 0x354 */ f32 scale; /* 0x358 */ UNK_TYPE1 unk_358[0x4]; @@ -88,8 +87,8 @@ typedef struct EnJso { /* 0x4B0 */ s16 afterimageIndex; /* 0x4B4 */ s32 afterimageCount; /* 0x4B8 */ s16 csId; - /* 0x4BC */ u32 introCsTimer; - /* 0x4C0 */ s16 introCsState; + /* 0x4BC */ u32 cutsceneTimer; + /* 0x4C0 */ s16 cutsceneState; /* 0x4C2 */ s16 subCamId; /* 0x4C4 */ UNK_TYPE1 unk_4C4[0x4]; /* 0x4C8 */ Vec3f subCamEye; diff --git a/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c b/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c index 40d451e71..6a5cc38e1 100644 --- a/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c +++ b/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c @@ -5,8 +5,9 @@ */ #include "z_en_jso2.h" -#include "objects/object_jso/object_jso.h" -#include "objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.h" +#include "overlays/actors/ovl_En_Col_Man/z_en_col_man.h" #define FLAGS \ (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_UNFRIENDLY | ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_100000 | \ @@ -19,94 +20,196 @@ void EnJso2_Destroy(Actor* thisx, PlayState* play); void EnJso2_Update(Actor* thisx, PlayState* play); void EnJso2_Draw(Actor* thisx, PlayState* play2); -void func_80A776E0(EnJso2* this, s32 animIndex); -void func_80A778D8(EnJso2* this); -void func_80A778F8(EnJso2* this, PlayState* play); -void func_80A78588(EnJso2* this); -void func_80A785E4(EnJso2* this, PlayState* play); -void func_80A787FC(EnJso2* this, PlayState* play); -void func_80A78868(EnJso2* this, PlayState* play); -void func_80A78ACC(EnJso2* this, PlayState* play); -void func_80A78B04(EnJso2* this); -void func_80A78B70(EnJso2* this, PlayState* play); -void func_80A78C08(EnJso2* this); -void func_80A78C7C(EnJso2* this, PlayState* play); -void func_80A78E8C(EnJso2* this); -void func_80A78F04(EnJso2* this, PlayState* play); -void func_80A78F80(EnJso2* this, PlayState* play); -void func_80A79038(EnJso2* this, PlayState* play); -void func_80A790E4(EnJso2* this, PlayState* play); -void func_80A7919C(EnJso2* this, PlayState* play); -void func_80A79300(EnJso2* this); -void func_80A79364(EnJso2* this, PlayState* play); -void func_80A79450(EnJso2* this); -void func_80A794C8(EnJso2* this, PlayState* play); -void func_80A79600(EnJso2* this, PlayState* play); -void func_80A7980C(EnJso2* this, PlayState* play); -void func_80A798C8(EnJso2* this, PlayState* play); -void func_80A79A84(EnJso2* this, PlayState* play); -void func_80A79BA0(EnJso2* this, PlayState* play); -void func_80A79864(EnJso2* this); -void func_80A79B60(EnJso2* this); -void func_80A7A0D0(EnJso2* this); -void func_80A7A124(EnJso2* this, PlayState* play); -void func_80A7A2EC(EnJso2* this, PlayState* play); -s32 func_80A7AA48(PlayState* play, s32 arg1, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx); -void func_80A7AA9C(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx); +void EnJso2_SetupIntroCutscene(EnJso2* this); +void EnJso2_IntroCutscene(EnJso2* this, PlayState* play); +void EnJso2_SetupAppear(EnJso2* this); +void EnJso2_Appear(EnJso2* this, PlayState* play); +void EnJso2_SetupCirclePlayer(EnJso2* this, PlayState* play); +void EnJso2_CirclePlayer(EnJso2* this, PlayState* play); +void EnJso2_Guard(EnJso2* this, PlayState* play); +void EnJso2_SetupSpinBeforeAttack(EnJso2* this); +void EnJso2_SpinBeforeAttack(EnJso2* this, PlayState* play); +void EnJso2_SetupDashAttack(EnJso2* this); +void EnJso2_DashAttack(EnJso2* this, PlayState* play); +void EnJso2_SetupTeleport(EnJso2* this); +void EnJso2_Teleport(EnJso2* this, PlayState* play); +void EnJso2_SetupFallFromTeleport(EnJso2* this, PlayState* play); +void EnJso2_FallFromTeleport(EnJso2* this, PlayState* play); +void EnJso2_SetupSlash(EnJso2* this, PlayState* play); +void EnJso2_Slash(EnJso2* this, PlayState* play); +void EnJso2_SpinAttack(EnJso2* this, PlayState* play); +void EnJso2_SetupWaitAfterSlash(EnJso2* this); +void EnJso2_WaitAfterSlash(EnJso2* this, PlayState* play); +void EnJso2_Stunned(EnJso2* this, PlayState* play); +void EnJso2_Damaged(EnJso2* this, PlayState* play); +void EnJso2_SetupJumpBack(EnJso2* this); +void EnJso2_JumpBack(EnJso2* this, PlayState* play); +void EnJso2_Dead(EnJso2* this, PlayState* play); +void EnJso2_SetupDeathCutscene(EnJso2* this); +void EnJso2_DeathCutscene(EnJso2* this, PlayState* play); +void EnJso2_SetupBlowUp(EnJso2* this); +void EnJso2_BlowUp(EnJso2* this, PlayState* play); +void EnJso2_FadeAway(EnJso2* this, PlayState* play); -// static DamageTable sDamageTable = { -static DamageTable D_80A7B4F0 = { - /* Deku Nut */ DMG_ENTRY(0, 0x1), - /* Deku Stick */ DMG_ENTRY(1, 0xF), - /* Horse trample */ DMG_ENTRY(0, 0x0), - /* Explosives */ DMG_ENTRY(1, 0xF), - /* Zora boomerang */ DMG_ENTRY(1, 0xF), - /* Normal arrow */ DMG_ENTRY(1, 0xF), - /* UNK_DMG_0x06 */ DMG_ENTRY(0, 0x0), - /* Hookshot */ DMG_ENTRY(0, 0x1), - /* Goron punch */ DMG_ENTRY(1, 0xF), - /* Sword */ DMG_ENTRY(1, 0xF), - /* Goron pound */ DMG_ENTRY(1, 0xF), - /* Fire arrow */ DMG_ENTRY(2, 0x2), - /* Ice arrow */ DMG_ENTRY(2, 0x3), - /* Light arrow */ DMG_ENTRY(2, 0x4), - /* Goron spikes */ DMG_ENTRY(1, 0xF), - /* Deku spin */ DMG_ENTRY(0, 0x1), - /* Deku bubble */ DMG_ENTRY(1, 0xF), - /* Deku launch */ DMG_ENTRY(2, 0xF), - /* UNK_DMG_0x12 */ DMG_ENTRY(0, 0x1), - /* Zora barrier */ DMG_ENTRY(0, 0x5), - /* Normal shield */ DMG_ENTRY(0, 0x0), - /* Light ray */ DMG_ENTRY(0, 0x0), - /* Thrown object */ DMG_ENTRY(1, 0xF), - /* Zora punch */ DMG_ENTRY(1, 0xF), - /* Spin attack */ DMG_ENTRY(1, 0xF), - /* Sword beam */ DMG_ENTRY(0, 0x0), - /* Normal Roll */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1B */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1C */ DMG_ENTRY(0, 0x0), - /* Unblockable */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1E */ DMG_ENTRY(0, 0x0), - /* Powder Keg */ DMG_ENTRY(1, 0xF), +typedef enum EnJso2Action { + /* 0 */ EN_JSO2_ACTION_INTRO_CUTSCENE, + /* 1 */ EN_JSO2_ACTION_UNK_1, // Checked in EnJso2_Update, but never actually used + /* 2 */ EN_JSO2_ACTION_UNK_2, // Checked in EnJso2_UpdateDamage, but never actually used + /* 3 */ EN_JSO2_ACTION_CIRCLE_PLAYER, + /* 4 */ EN_JSO2_ACTION_GUARD, + /* 5 */ EN_JSO2_ACTION_SPIN_BEFORE_ATTACK, + /* 6 */ EN_JSO2_ACTION_DASH_ATTACK, + /* 7 */ EN_JSO2_ACTION_SLASH, + /* 8 */ EN_JSO2_ACTION_SPIN_ATTACK, + /* 9 */ EN_JSO2_ACTION_WAIT_AFTER_SLASH, + /* 10 */ EN_JSO2_ACTION_STUNNED, + /* 11 */ EN_JSO2_ACTION_DAMAGED, + /* 12 */ EN_JSO2_ACTION_JUMP_BACK, + /* 13 */ EN_JSO2_ACTION_DEAD, + /* 14 */ EN_JSO2_ACTION_BLOW_UP, + /* 15 */ EN_JSO2_ACTION_TELEPORT, + /* 16 */ EN_JSO2_ACTION_FALL_FROM_TELEPORT +} EnJso2Action; + +typedef enum EnJso2IntroCsState { + // Waits for the player to walk toward the Garo Master, then starts the cutscene and transitions to the next state. + /* 0 */ EN_JSO2_INTRO_CS_STATE_WAITING_FOR_PLAYER_TO_APPROACH, + + // Positions the Garo Master, player, and sub camera variables appropriately, then transitions to the next state. + /* 1 */ EN_JSO2_INTRO_CS_STATE_STARTED, + + // Automatically moves the player forward a little bit to get closer to the center of the room. + /* 2 */ EN_JSO2_INTRO_CS_STATE_MOVE_PLAYER_FORWARD, + + // Waits 9 frames, then spawns some rocks to fall from the ceiling. + /* 3 */ EN_JSO2_INTRO_CS_STATE_SPAWN_FALLING_ROCKS, + + // Waits 25 frames for the rocks that were spawned in the previous state to fall down and hit the ground. + /* 4 */ EN_JSO2_INTRO_CS_STATE_WAIT_FOR_ROCKS_TO_FALL, + + // Makes the player perform their "surprised" animation, and waits 20 frames. + /* 5 */ EN_JSO2_INTRO_CS_STATE_PLAYER_SURPRISED, + + // Slowly pans the camera upwards to look at the Garo Master standing above the hole in the ceiling. + /* 6 */ EN_JSO2_INTRO_CS_STATE_PAN_CAMERA_UPWARDS, + + // Waits for 5 frames, doing nothing, before the Garo Master laughs. + /* 7 */ EN_JSO2_INTRO_CS_STATE_WAIT_BEFORE_LAUGH, + + // Waits for 45 frames to let the Garo Master's laugh play out. + /* 8 */ EN_JSO2_INTRO_CS_STATE_LAUGH, + + // Makes the Garo Master jump down from the hole in the ceiling, drawing afterimages as it falls, until it lands. + /* 9 */ EN_JSO2_INTRO_CS_STATE_JUMP_DOWN, + + // Spawns a ring of dust, draws afterimages, and plays the landing animation to completion. + /* 10 */ EN_JSO2_INTRO_CS_STATE_LAND, + + // Makes the Garo Master draw its swords, and gradually scales up the flames on the swords. This state also ends the + // cutscene once the animation for drawing the swords completes. + /* 11 */ EN_JSO2_INTRO_CS_STATE_DRAW_SWORDS +} EnJso2IntroCsState; + +typedef enum EnJso2AppearState { + // Spawns a dust ring, disables the current BGM, plays the "appearance" SFX, and transitions to the next state. + /* 0 */ EN_JSO2_APPEAR_STATE_STARTED, + + // This state handles all other aspects of the Garo Master's appearance (starting the mini-boss BGM, scaling up the + // flames on the swords, etc.) + /* 1 */ EN_JSO2_APPEAR_STATE_APPEARING +} EnJso2AppearState; + +typedef enum EnJso2DeathCsState { + // Starts the cutscene and immediately transitions to the next state. + /* 0 */ EN_JSO2_DEATH_CS_STATE_STARTED, + + // Plays the animation of the Garo Master collapsing down onto one knee. + /* 1 */ EN_JSO2_DEATH_CS_STATE_COLLAPSE, + + // Plays one loop of the animation where the Garo Master is trembling. + /* 2 */ EN_JSO2_DEATH_CS_STATE_TREMBLE, + + // Tells the player a hint about using the Light Arrow. The Garo Master also takes its bomb out in this state. + /* 3 */ EN_JSO2_DEATH_CS_STATE_TELL_HINT, + + // Detonates the Garo Master's bomb and slowly reduces its alpha until it completely fades away. + /* 4 */ EN_JSO2_DEATH_CS_STATE_BLOW_UP_AND_FADE_AWAY, + + // Waits for 50 frames to let the Garo Master's laugh play out, then ends the cutscene. + /* 5 */ EN_JSO2_DEATH_CS_STATE_WAIT_AND_END +} EnJso2DeathCsState; + +typedef enum EnJso2SwordState { + /* 0 */ EN_JSO2_SWORD_STATE_BOTH_DRAWN, + + // If the Garo Master is about to blow itself up, it will use this sword state, but EnJso2_OverrideLimbDraw will + // draw the left sword anyway. When the Garo Master is defeated, the animations for its "weakened" state has it + // support itself with its left sword, so it wouldn't look right if the sword wasn't drawn. + /* 2 */ EN_JSO2_SWORD_STATE_NONE_DRAWN = 2 +} EnJso2SwordState; + +typedef enum EnJso2DamageEffect { + /* 0x0 */ EN_JSO2_DMGEFF_IMMUNE, // Deals no damage and has no special effect + /* 0x1 */ EN_JSO2_DMGEFF_STUN, // Deals no damage but stuns the Garo Master + /* 0x2 */ EN_JSO2_DMGEFF_FIRE, // Damages and sets the Garo Master on fire + /* 0x3 */ EN_JSO2_DMGEFF_FREEZE, // Damages and surrounds the Garo Master with ice + /* 0x4 */ EN_JSO2_DMGEFF_LIGHT_ORB, // Damages and surrounds the Garo Master with light orbs + /* 0x5 */ EN_JSO2_DMGEFF_ELECTRIC_STUN, // Behaves like EN_JSO2_DMGEFF_STUN, but also applies an electric effect + /* 0xF */ EN_JSO2_DMGEFF_NONE = 0xF // Damages the Garo Master and has no special effect +} EnJso2DamageEffect; + +static DamageTable sDamageTable = { + /* Deku Nut */ DMG_ENTRY(0, EN_JSO2_DMGEFF_STUN), + /* Deku Stick */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Horse trample */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* Explosives */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Zora boomerang */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Normal arrow */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* UNK_DMG_0x06 */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* Hookshot */ DMG_ENTRY(0, EN_JSO2_DMGEFF_STUN), + /* Goron punch */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Sword */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Goron pound */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Fire arrow */ DMG_ENTRY(2, EN_JSO2_DMGEFF_FIRE), + /* Ice arrow */ DMG_ENTRY(2, EN_JSO2_DMGEFF_FREEZE), + /* Light arrow */ DMG_ENTRY(2, EN_JSO2_DMGEFF_LIGHT_ORB), + /* Goron spikes */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Deku spin */ DMG_ENTRY(0, EN_JSO2_DMGEFF_STUN), + /* Deku bubble */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Deku launch */ DMG_ENTRY(2, EN_JSO2_DMGEFF_NONE), + /* UNK_DMG_0x12 */ DMG_ENTRY(0, EN_JSO2_DMGEFF_STUN), + /* Zora barrier */ DMG_ENTRY(0, EN_JSO2_DMGEFF_ELECTRIC_STUN), + /* Normal shield */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* Light ray */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* Thrown object */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Zora punch */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Spin attack */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), + /* Sword beam */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* Normal Roll */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* UNK_DMG_0x1B */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* UNK_DMG_0x1C */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* Unblockable */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* UNK_DMG_0x1E */ DMG_ENTRY(0, EN_JSO2_DMGEFF_IMMUNE), + /* Powder Keg */ DMG_ENTRY(1, EN_JSO2_DMGEFF_NONE), }; -Vec3f D_80A7B510[] = { +/** + * When the Garo Master draws its swords, the flames on the swords will gradually scale up to match these scales. + */ +static Vec3f sTargetFlameScales[] = { { 0.003f, 0.003f, 0.003f }, { 0.002f, 0.002f, 0.002f }, { 0.001f, 0.001f, 0.001f }, { 0.003f, 0.003f, 0.003f }, { 0.002f, 0.002f, 0.002f }, { 0.001f, 0.001f, 0.001f }, }; -static Vec3f D_80A7B558 = { 800.0f, -20.0f, -50.0f }; -static Vec3f D_80A7B564 = { 500.0f, -20.0f, -70.0f }; -static Vec3f D_80A7B570 = { 300.0f, -20.0f, -90.0f }; -static Vec3f D_80A7B57C = { 800.0f, -20.0f, 50.0f }; -static Vec3f D_80A7B588 = { 500.0f, -20.0f, 70.0f }; -static Vec3f D_80A7B594 = { 300.0f, -20.0f, 90.0f }; -static Vec3f D_80A7B5A0 = { 600.0f, -100.0f, 100.0f }; -static Vec3f D_80A7B5AC = { 300.0f, -100.0f, 80.0f }; -static Vec3f D_80A7B5B8 = { 100.0f, -100.0f, 60.0f }; -static Vec3f D_80A7B5C4 = { 600.0f, -100.0f, -100.0f }; -static Vec3f D_80A7B5D0 = { 300.0f, -100.0f, -80.0f }; -static Vec3f D_80A7B5DC = { 100.0f, -100.0f, -60.0f }; +static Vec3f sFlameOffsets[] = { + { 800.0f, -20.0f, -50.0f }, { 500.0f, -20.0f, -70.0f }, { 300.0f, -20.0f, -90.0f }, + { 800.0f, -20.0f, 50.0f }, { 500.0f, -20.0f, 70.0f }, { 300.0f, -20.0f, 90.0f }, +}; + +static Vec3f sSlashFlameOffsets[] = { + { 600.0f, -100.0f, 100.0f }, { 300.0f, -100.0f, 80.0f }, { 100.0f, -100.0f, 60.0f }, + { 600.0f, -100.0f, -100.0f }, { 300.0f, -100.0f, -80.0f }, { 100.0f, -100.0f, -60.0f }, +}; ActorInit En_Jso2_InitVars = { /**/ ACTOR_EN_JSO2, @@ -120,8 +223,7 @@ ActorInit En_Jso2_InitVars = { /**/ EnJso2_Draw, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80A7B608 = { +static ColliderCylinderInit sCylinderInit = { { COLTYPE_NONE, AT_ON | AT_TYPE_ENEMY, @@ -141,8 +243,7 @@ static ColliderCylinderInit D_80A7B608 = { { 22, 70, 0, { 0, 0, 0 } }, }; -// static ColliderQuadInit sQuadInit = { -static ColliderQuadInit D_80A7B634 = { +static ColliderQuadInit sQuadInit = { { COLTYPE_NONE, AT_ON | AT_TYPE_ENEMY, @@ -162,35 +263,81 @@ static ColliderQuadInit D_80A7B634 = { { { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } }, }; -static AnimationHeader* D_80A7B684[0x16] = { - &gGaroDashAttackAnim, &gGaroSlashStartAnim, - &gGaroSlashLoopAnim, &gGaroJumpBackAnim, - &gGaroDamagedAnim, &gGaroGuardAnim, - &gGaroAppearAnim, &gGaroIdleAnim, - &gGaroBounceAnim, &gGaroFallDownAnim, - &gGaroKnockedBackAnim, &gGaroCowerAnim, - &gGaroLookAroundAnim, &gGaroAppearAndDrawSwordsAnim, - &gGaroSpinAttackAnim, &gGaroLandAnim, - &gGaroJumpDownAnim, &gGaroLaughAnim, - &gGaroDrawSwordsAnim, &gGaroCollapseAnim, - &gGaroTrembleAnim, &gGaroTakeOutBombAnim, +typedef enum EnJso2Animation { + /* 0 */ EN_JSO2_ANIM_DASH_ATTACK, + /* 1 */ EN_JSO2_ANIM_SLASH_START, + /* 2 */ EN_JSO2_ANIM_SLASH_LOOP, + /* 3 */ EN_JSO2_ANIM_JUMP_BACK, + /* 4 */ EN_JSO2_ANIM_DAMAGED, + /* 5 */ EN_JSO2_ANIM_GUARD, + /* 6 */ EN_JSO2_ANIM_APPEAR, // unused + /* 7 */ EN_JSO2_ANIM_IDLE, // unused + /* 8 */ EN_JSO2_ANIM_BOUNCE, + /* 9 */ EN_JSO2_ANIM_FALL_DOWN, // unused + /* 10 */ EN_JSO2_ANIM_KNOCKED_BACK, // unused + /* 11 */ EN_JSO2_ANIM_COWER, // unused + /* 12 */ EN_JSO2_ANIM_LOOK_AROUND, + /* 13 */ EN_JSO2_ANIM_APPEAR_AND_DRAW_SWORDS, + /* 14 */ EN_JSO2_ANIM_SPIN_ATTACK, + /* 15 */ EN_JSO2_ANIM_LAND, + /* 16 */ EN_JSO2_ANIM_JUMP_DOWN, + /* 17 */ EN_JSO2_ANIM_LAUGH, + /* 18 */ EN_JSO2_DRAW_SWORDS, + /* 19 */ EN_JSO2_COLLAPSE, + /* 20 */ EN_JSO2_TREMBLE, + /* 21 */ EN_JSO2_TAKE_OUT_BOMB, + /* 22 */ EN_JSO2_ANIM_MAX +} EnJso2Animation; + +static AnimationHeader* sAnimations[EN_JSO2_ANIM_MAX] = { + &gGaroDashAttackAnim, // EN_JSO2_ANIM_DASH_ATTACK + &gGaroSlashStartAnim, // EN_JSO2_ANIM_SLASH_START + &gGaroSlashLoopAnim, // EN_JSO2_ANIM_SLASH_LOOP + &gGaroJumpBackAnim, // EN_JSO2_ANIM_JUMP_BACK + &gGaroDamagedAnim, // EN_JSO2_ANIM_DAMAGED + &gGaroGuardAnim, // EN_JSO2_ANIM_GUARD + &gGaroAppearAnim, // EN_JSO2_ANIM_APPEAR + &gGaroIdleAnim, // EN_JSO2_ANIM_IDLE + &gGaroBounceAnim, // EN_JSO2_ANIM_BOUNCE + &gGaroFallDownAnim, // EN_JSO2_ANIM_FALL_DOWN + &gGaroKnockedBackAnim, // EN_JSO2_ANIM_KNOCKED_BACK + &gGaroCowerAnim, // EN_JSO2_ANIM_COWER + &gGaroLookAroundAnim, // EN_JSO2_ANIM_LOOK_AROUND + &gGaroAppearAndDrawSwordsAnim, // EN_JSO2_ANIM_APPEAR_AND_DRAW_SWORDS + &gGaroSpinAttackAnim, // EN_JSO2_ANIM_SPIN_ATTACK + &gGaroLandAnim, // EN_JSO2_ANIM_LAND + &gGaroJumpDownAnim, // EN_JSO2_ANIM_JUMP_DOWN + &gGaroLaughAnim, // EN_JSO2_ANIM_LAUGH + &gGaroDrawSwordsAnim, // EN_JSO2_DRAW_SWORDS + &gGaroCollapseAnim, // EN_JSO2_COLLAPSE + &gGaroTrembleAnim, // EN_JSO2_TREMBLE + &gGaroTakeOutBombAnim, // EN_JSO2_TAKE_OUT_BOMB }; -static u8 D_80A7B6DC[] = { 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0, 2, 2, 0, 2 }; - -static Vec3s D_80A7B6F4 = { 350, -20, -3430 }; - -static Vec3f D_80A7B6FC = { 0.0f, 0.0f, 0.0f }; - -static Vec3f D_80A7B708 = { 1600.0f, 0.0f, 0.0f }; - -static Vec3f D_80A7B714 = { 0.0f, 0.0f, 0.0f }; - -static Vec3f D_80A7B720 = { 1700.0f, 0.0f, 0.0f }; - -static Vec3f D_80A7B72C = { 0.0f, 0.0f, 0.0f }; - -static s16 D_80A7B738[] = { 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 128 }; +static u8 sAnimationModes[EN_JSO2_ANIM_MAX] = { + ANIMMODE_ONCE, // EN_JSO2_ANIM_DASH_ATTACK + ANIMMODE_ONCE, // EN_JSO2_ANIM_SLASH_START + ANIMMODE_LOOP, // EN_JSO2_ANIM_SLASH_LOOP + ANIMMODE_ONCE, // EN_JSO2_ANIM_JUMP_BACK + ANIMMODE_LOOP, // EN_JSO2_ANIM_DAMAGED + ANIMMODE_ONCE, // EN_JSO2_ANIM_GUARD + ANIMMODE_LOOP, // EN_JSO2_ANIM_APPEAR + ANIMMODE_LOOP, // EN_JSO2_ANIM_IDLE + ANIMMODE_LOOP, // EN_JSO2_ANIM_BOUNCE + ANIMMODE_ONCE, // EN_JSO2_ANIM_FALL_DOWN + ANIMMODE_ONCE, // EN_JSO2_ANIM_KNOCKED_BACK + ANIMMODE_LOOP, // EN_JSO2_ANIM_COWER + ANIMMODE_LOOP, // EN_JSO2_ANIM_LOOK_AROUND + ANIMMODE_ONCE, // EN_JSO2_ANIM_APPEAR_AND_DRAW_SWORDS + ANIMMODE_LOOP, // EN_JSO2_ANIM_SPIN_ATTACK + ANIMMODE_ONCE, // EN_JSO2_ANIM_LAND + ANIMMODE_ONCE, // EN_JSO2_ANIM_JUMP_DOWN + ANIMMODE_LOOP, // EN_JSO2_ANIM_LAUGH + ANIMMODE_ONCE, // EN_JSO2_DRAW_SWORDS + ANIMMODE_ONCE, // EN_JSO2_COLLAPSE + ANIMMODE_LOOP, // EN_JSO2_TREMBLE + ANIMMODE_ONCE, // EN_JSO2_TAKE_OUT_BOMB +}; void EnJso2_Init(Actor* thisx, PlayState* play) { EnJso2* this = THIS; @@ -199,16 +346,16 @@ void EnJso2_Init(Actor* thisx, PlayState* play) { this->actor.hintId = TATL_HINT_ID_GARO_MASTER; this->actor.targetMode = TARGET_MODE_5; - this->actor.colChkInfo.mass = 0x50; - this->actor.colChkInfo.health = 0xE; + this->actor.colChkInfo.mass = 80; + this->actor.colChkInfo.health = 14; ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 0.0f); - this->actor.colChkInfo.damageTable = &D_80A7B4F0; + this->actor.colChkInfo.damageTable = &sDamageTable; this->actor.shape.shadowScale = 0.0f; SkelAnime_InitFlex(play, &this->skelAnime, &gGaroMasterSkel, &gGaroAppearAnim, this->jointTable, this->morphTable, - 20); - Collider_InitAndSetCylinder(play, &this->unkEF4, &this->actor, &D_80A7B608); - Collider_InitAndSetQuad(play, &this->unkF40, &this->actor, &D_80A7B634); - Collider_InitAndSetQuad(play, &this->unkFC0, &this->actor, &D_80A7B634); + GARO_MASTER_LIMB_MAX); + Collider_InitAndSetCylinder(play, &this->bodyCollider, &this->actor, &sCylinderInit); + Collider_InitAndSetQuad(play, &this->rightSwordCollider, &this->actor, &sQuadInit); + Collider_InitAndSetQuad(play, &this->leftSwordCollider, &this->actor, &sQuadInit); rightSwordBlureInit.p1StartColor[0] = leftSwordBlureInit.p1StartColor[0] = 255; rightSwordBlureInit.p1StartColor[1] = leftSwordBlureInit.p1StartColor[1] = 0; @@ -227,976 +374,1042 @@ void EnJso2_Init(Actor* thisx, PlayState* play) { rightSwordBlureInit.p2EndColor[1] = leftSwordBlureInit.p2EndColor[1] = 0; rightSwordBlureInit.p2EndColor[2] = leftSwordBlureInit.p2EndColor[2] = 255; - // clang-format off rightSwordBlureInit.p2StartColor[3] = leftSwordBlureInit.p2StartColor[3] = 64; - rightSwordBlureInit.p1EndColor[3] = leftSwordBlureInit.p1EndColor[3] = - rightSwordBlureInit.p2EndColor[3] = leftSwordBlureInit.p2EndColor[3] = 0; - // clang-format on + rightSwordBlureInit.p1EndColor[3] = leftSwordBlureInit.p1EndColor[3] = rightSwordBlureInit.p2EndColor[3] = + leftSwordBlureInit.p2EndColor[3] = 0; rightSwordBlureInit.elemDuration = leftSwordBlureInit.elemDuration = 8; - rightSwordBlureInit.unkFlag = leftSwordBlureInit.unkFlag = 0; - rightSwordBlureInit.calcMode = leftSwordBlureInit.calcMode = 2; - Effect_Add(play, &this->unk_380, 1, 0, 0, &rightSwordBlureInit); - Effect_Add(play, &this->unk_384, 1, 0, 0, &leftSwordBlureInit); + Effect_Add(play, &this->rightSwordBlureIndex, EFFECT_BLURE1, 0, 0, &rightSwordBlureInit); + Effect_Add(play, &this->leftSwordBlureIndex, EFFECT_BLURE1, 0, 0, &leftSwordBlureInit); - this->unk378 = 0.042f; - this->unk29C = this->actor.params; - this->unk_38E = Rand_S16Offset(0, 7); - this->unk_2B0 = 0xC; - this->unk366 = 0xFF; + this->scale = 0.042f; + this->type = EN_JSO2_GET_TYPE(&this->actor); + this->flameScroll = Rand_S16Offset(0, 7); + this->bodyPartsCount = EN_JSO2_BODYPART_MAX; + this->alpha = 255; - if (this->unk29C == 0) { + if (this->type == EN_JSO2_TYPE_LIGHT_ARROW_ROOM) { this->actor.draw = NULL; - this->actor.flags |= 0x08000000; - this->actor.flags &= ~1; + this->actor.flags |= ACTOR_FLAG_CANT_LOCK_ON; + this->actor.flags &= ~ACTOR_FLAG_TARGETABLE; this->actor.shape.yOffset = 0.0f; - func_80A778D8(this); + EnJso2_SetupIntroCutscene(this); } else { this->actor.gravity = -3.0f; - this->actor.shape.rot.y = this->actor.yawTowardsPlayer; - this->actor.world.rot.y = this->actor.yawTowardsPlayer; + this->actor.world.rot.y = this->actor.shape.rot.y = this->actor.yawTowardsPlayer; this->actor.shape.yOffset = 960.0f; - func_80A78588(this); + EnJso2_SetupAppear(this); } } void EnJso2_Destroy(Actor* thisx, PlayState* play) { EnJso2* this = THIS; - Collider_DestroyCylinder(play, &this->unkEF4); - Collider_DestroyQuad(play, &this->unkF40); - Collider_DestroyQuad(play, &this->unkFC0); - Effect_Destroy(play, this->unk_380); - Effect_Destroy(play, this->unk_384); - Audio_SetMainBgmVolume(127, 0); + Collider_DestroyCylinder(play, &this->bodyCollider); + Collider_DestroyQuad(play, &this->rightSwordCollider); + Collider_DestroyQuad(play, &this->leftSwordCollider); + Effect_Destroy(play, this->rightSwordBlureIndex); + Effect_Destroy(play, this->leftSwordBlureIndex); + Audio_SetMainBgmVolume(0x7F, 0); Audio_RestorePrevBgm(); } -void func_80A776E0(EnJso2* this, s32 animIndex) { - f32 morphFrames; +void EnJso2_ChangeAnim(EnJso2* this, s32 animIndex) { + f32 playSpeed; - this->unk374 = Animation_GetLastFrame(D_80A7B684[animIndex]); - this->unk1040 = animIndex; - morphFrames = 1.0f; + this->animEndFrame = Animation_GetLastFrame(sAnimations[animIndex]); + this->animIndex = animIndex; - if (animIndex == 8) { - morphFrames = 2.0f; + playSpeed = 1.0f; + if (animIndex == EN_JSO2_ANIM_BOUNCE) { + playSpeed = 2.0f; } - Animation_Change(&this->skelAnime, D_80A7B684[animIndex], morphFrames, 0.0f, this->unk374, D_80A7B6DC[animIndex], - -2.0f); + + Animation_Change(&this->skelAnime, sAnimations[animIndex], playSpeed, 0.0f, this->animEndFrame, + sAnimationModes[animIndex], -2.0f); } -void func_80A77790(EnJso2* this, PlayState* play) { - if (this->unk1048 != 0) { - Math_ApproachF(&this->unk1054.x, this->unk1078.x, this->unk294, this->unk298); - Math_ApproachF(&this->unk1054.y, this->unk1078.y, this->unk294, this->unk298); - Math_ApproachF(&this->unk1054.z, this->unk1078.z, this->unk294, this->unk298); - Math_ApproachF(&this->unk1060.x, this->unk1084.x, this->unk294, this->unk298); - Math_ApproachF(&this->unk1060.y, this->unk1084.y, this->unk294, this->unk298); - Math_ApproachF(&this->unk1060.z, this->unk1084.z, this->unk294, this->unk298); - Math_ApproachF(&this->unk104C, this->unk1050, 0.3f, 10.0f); - Play_SetCameraAtEye(play, this->unk1048, &this->unk1060, &this->unk1054); - Play_SetCameraFov(play, this->unk1048, this->unk104C); +/** + * Updates all of the various sub-camera variables to approach their "next" value, then updates the sub-camera. Used for + * the Garo Master's intro and death cutscenes. + */ +void EnJso2_UpdateSubCam(EnJso2* this, PlayState* play) { + if (this->subCamId != SUB_CAM_ID_DONE) { + Math_ApproachF(&this->subCamEye.x, this->subCamEyeNext.x, this->subCamMaxVelocityFrac, this->subCamVelocity); + Math_ApproachF(&this->subCamEye.y, this->subCamEyeNext.y, this->subCamMaxVelocityFrac, this->subCamVelocity); + Math_ApproachF(&this->subCamEye.z, this->subCamEyeNext.z, this->subCamMaxVelocityFrac, this->subCamVelocity); + Math_ApproachF(&this->subCamAt.x, this->subCamAtNext.x, this->subCamMaxVelocityFrac, this->subCamVelocity); + Math_ApproachF(&this->subCamAt.y, this->subCamAtNext.y, this->subCamMaxVelocityFrac, this->subCamVelocity); + Math_ApproachF(&this->subCamAt.z, this->subCamAtNext.z, this->subCamMaxVelocityFrac, this->subCamVelocity); + Math_ApproachF(&this->subCamFov, this->subCamFovNext, 0.3f, 10.0f); + Play_SetCameraAtEye(play, this->subCamId, &this->subCamAt, &this->subCamEye); + Play_SetCameraFov(play, this->subCamId, this->subCamFov); } } -s32 func_80A77880(PlayState* play) { - if ((Message_GetState(&play->msgCtx) == 5) && (Message_ShouldAdvance(play) != 0)) { +s32 EnJso2_ShouldAdvanceMessage(PlayState* play) { + if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { Message_CloseTextbox(play); - return 1; - } else { - return 0; + return true; } + + return false; } -void func_80A778D8(EnJso2* this) { - this->unk284 = 0; - this->unk36C = 2; - this->actionFunc = func_80A778F8; +void EnJso2_SetupIntroCutscene(EnJso2* this) { + this->action = EN_JSO2_ACTION_INTRO_CUTSCENE; + this->swordState = EN_JSO2_SWORD_STATE_NONE_DRAWN; + this->actionFunc = EnJso2_IntroCutscene; } -void func_80A778F8(EnJso2* this, PlayState* play) { +static Vec3s sPlayerOverrideInputPosList[] = { { 350, -20, -3430 } }; + +/** + * Responsible for handling all aspects of the intro cutscene, including manipulating the sub-camera, making the Garo + * Master jump down from the ceiling, spawning the falling rocks, igniting the Garo Master's swords, etc. When the + * cutscene is over, the Garo Master will start circling the player. + */ +void EnJso2_IntroCutscene(EnJso2* this, PlayState* play) { Player* player = GET_PLAYER(play); f32 curFrame = this->skelAnime.curFrame; - Vec3f spawnPos; + Vec3f pos; s32 i; + s32 pad; - switch (this->unk1046) { - case 0: + switch (this->cutsceneState) { + case EN_JSO2_INTRO_CS_STATE_WAITING_FOR_PLAYER_TO_APPROACH: if (this->actor.xzDistToPlayer < 400.0f) { Audio_SetMainBgmVolume(0, 10); - this->unk1046++; this->actor.gravity = 0.0f; + this->cutsceneState++; } break; - case 1: - if (CutsceneManager_IsNext(this->actor.csId) == 0) { + case EN_JSO2_INTRO_CS_STATE_STARTED: + if (!CutsceneManager_IsNext(this->actor.csId)) { CutsceneManager_Queue(this->actor.csId); } else { - f32 temp; - CutsceneManager_StartWithPlayerCs(this->actor.csId, &this->actor); - - this->unk1048 = CutsceneManager_GetCurrentSubCamId(this->actor.csId); - this->unk294 = 0.4f; - this->unk298 = 40.0f; - + this->subCamId = CutsceneManager_GetCurrentSubCamId(this->actor.csId); + this->subCamMaxVelocityFrac = 0.4f; + this->subCamVelocity = 40.0f; player->actor.world.pos.x = 420.0f; player->actor.world.pos.z = -3430.0f; - this->actor.draw = EnJso2_Draw; - - func_80A776E0(this, 17); - - spawnPos.x = D_80A7B6F4.x; - spawnPos.y = D_80A7B6F4.y; - spawnPos.z = D_80A7B6F4.z; - - this->actor.world.rot.y = Math_Vec3f_Yaw(&this->actor.world.pos, &spawnPos); - - this->unk1050 = 60.0f; - this->unk104C = 60.0f; - + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_LAUGH); + pos.x = sPlayerOverrideInputPosList[0].x; + pos.y = sPlayerOverrideInputPosList[0].y; + pos.z = sPlayerOverrideInputPosList[0].z; + this->actor.world.rot.y = Math_Vec3f_Yaw(&this->actor.world.pos, &pos); + this->subCamFov = this->subCamFovNext = 60.0f; this->actor.world.pos.x = -285.0f; this->actor.world.pos.y = 535.0f; this->actor.world.pos.z = -3425.0f; - - this->unk1078.x = 82.0f; - this->unk1078.z = 780.0f; - - temp = -586.0f; - this->unk1084.y = this->unk1078.y = temp + 500.0f; - - Math_Vec3f_Copy(&spawnPos, &this->unk1078); - - OLib_Vec3fAdd(&this->actor.world, &spawnPos, &this->unk1078, 1); - - this->unk1084.x = this->actor.world.pos.x - 90.0f; - this->unk1084.z = this->actor.world.pos.z + 100.0f; - - Math_Vec3f_Copy(&this->unk1054, &this->unk1078); - Math_Vec3f_Copy(&this->unk1060, &this->unk1084); - - func_800B7298(play, &this->actor, 6); - func_80122744(play, &this->unk_27C, 1, &D_80A7B6F4); - - this->unk1046++; - break; + this->subCamEyeNext.x = 82.0f; + this->subCamEyeNext.y = -586.0f; + this->subCamEyeNext.z = 780.0f; + this->subCamEyeNext.y += 500.0f; + this->subCamAtNext.y = this->subCamEyeNext.y; + Math_Vec3f_Copy(&pos, &this->subCamEyeNext); + OLib_Vec3fAdd(&this->actor.world, &pos, &this->subCamEyeNext, OLIB_ADD_OFFSET); + this->subCamAtNext.x = this->actor.world.pos.x - 90.0f; + this->subCamAtNext.z = this->actor.world.pos.z + 100.0f; + Math_Vec3f_Copy(&this->subCamEye, &this->subCamEyeNext); + Math_Vec3f_Copy(&this->subCamAt, &this->subCamAtNext); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); + func_80122744(play, &this->overrideInputEntry, ARRAY_COUNT(sPlayerOverrideInputPosList), + sPlayerOverrideInputPosList); + this->cutsceneState++; } break; - case 2: + case EN_JSO2_INTRO_CS_STATE_MOVE_PLAYER_FORWARD: this->actor.world.pos.x = -285.0f; this->actor.world.pos.y = 535.0f; this->actor.world.pos.z = -3425.0f; + this->subCamEyeNext.x = 82.0f; + this->subCamEyeNext.y = -516.0f; + this->subCamEyeNext.z = 800.0f; + Math_Vec3f_Copy(&pos, &this->subCamEyeNext); + OLib_Vec3fAdd(&this->actor.world, &pos, &this->subCamEyeNext, OLIB_ADD_OFFSET); + this->subCamAtNext.x = this->actor.world.pos.x - 90.0f; + this->subCamAtNext.y = this->actor.world.pos.y - 591.0f; + this->subCamAtNext.z = this->actor.world.pos.z + 100.0f; + Math_Vec3f_Copy(&this->subCamEye, &this->subCamEyeNext); + Math_Vec3f_Copy(&this->subCamAt, &this->subCamAtNext); - this->unk1078.x = 82.0f; - this->unk1078.y = -516.0f; - this->unk1078.z = 800.0f; - - Math_Vec3f_Copy(&spawnPos, &this->unk1078); - OLib_Vec3fAdd(&this->actor.world, &spawnPos, &this->unk1078, 1); - - this->unk1084.x = this->actor.world.pos.x - 90.0f; - this->unk1084.y = this->actor.world.pos.y - 591.0f; - this->unk1084.z = this->actor.world.pos.z + 100.0f; - - Math_Vec3f_Copy(&this->unk1054, &this->unk1078); - Math_Vec3f_Copy(&this->unk1060, &this->unk1084); - - if (func_80122760(play, &this->unk_27C, 60.0f) != 0) { - func_800B7298(play, NULL, 19); - this->unk1044 = 10; - this->unk1046++; + if (func_80122760(play, &this->overrideInputEntry, 60.0f)) { + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_19); + this->cutsceneTimer = 10; + this->cutsceneState++; } break; - case 3: { - Vec3f unk1078Copy; - s32 i; + case EN_JSO2_INTRO_CS_STATE_SPAWN_FALLING_ROCKS: + if (this->cutsceneTimer == 1) { + Vec3f rockPos; + s32 i; - if (this->unk1044 == 1) { for (i = 0; i < 2; i++) { - Math_Vec3f_Copy(&unk1078Copy, &this->actor.home.pos); - unk1078Copy.x += Rand_CenteredFloat(80.0f); - unk1078Copy.y = this->actor.world.pos.y + (i * 120.0f); - unk1078Copy.z += Rand_CenteredFloat(80.0f); - Actor_Spawn(&play->actorCtx, play, ACTOR_EN_COL_MAN, unk1078Copy.x, unk1078Copy.y, unk1078Copy.z, 0, - this->actor.world.rot.y, 0, 2); + Math_Vec3f_Copy(&rockPos, &this->actor.home.pos); + rockPos.x += Rand_CenteredFloat(80.0f); + rockPos.y = this->actor.world.pos.y + (i * 120.0f); + rockPos.z += Rand_CenteredFloat(80.0f); + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_COL_MAN, rockPos.x, rockPos.y, rockPos.z, 0, + this->actor.world.rot.y, 0, EN_COL_MAN_FALLING_ROCK); } - this->unk1044 = 25; - this->unk1046++; - } - } break; - case 4: - if (this->unk1044 == 0) { - func_800B7298(play, NULL, 4); - this->unk1044 = 20; - this->unk1046++; + this->cutsceneTimer = 25; + this->cutsceneState++; } break; - case 5: - if (this->unk1044 == 0) { - this->unk1044 = 20; - this->unk1046++; + case EN_JSO2_INTRO_CS_STATE_WAIT_FOR_ROCKS_TO_FALL: + if (this->cutsceneTimer == 0) { + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_4); + this->cutsceneTimer = 20; + this->cutsceneState++; } break; - case 6: - this->unk1078.x = 82.0f; - this->unk1078.y = -533.0f; - this->unk1078.z = 800.0f; - - Math_Vec3f_Copy(&spawnPos, &this->unk1078); - OLib_Vec3fAdd(&this->actor.world, &spawnPos, &this->unk1078, 1); - - this->unk1084.x = this->actor.focus.pos.x - 80.0f; - this->unk1084.y = this->actor.focus.pos.y - 360.0f; - this->unk1084.z = this->actor.focus.pos.z + 100.0f; - - if (this->unk1044 == 0) { - this->unk1044 = 5; - this->unk1046++; + case EN_JSO2_INTRO_CS_STATE_PLAYER_SURPRISED: + if (this->cutsceneTimer == 0) { + this->cutsceneTimer = 20; + this->cutsceneState++; } break; - case 7: - if (this->unk1044 == 0) { + case EN_JSO2_INTRO_CS_STATE_PAN_CAMERA_UPWARDS: + this->subCamEyeNext.x = 82.0f; + this->subCamEyeNext.y = -533.0f; + this->subCamEyeNext.z = 800.0f; + Math_Vec3f_Copy(&pos, &this->subCamEyeNext); + OLib_Vec3fAdd(&this->actor.world, &pos, &this->subCamEyeNext, OLIB_ADD_OFFSET); + this->subCamAtNext.x = this->actor.focus.pos.x - 80.0f; + this->subCamAtNext.y = this->actor.focus.pos.y - 360.0f; + this->subCamAtNext.z = this->actor.focus.pos.z + 100.0f; + + if (this->cutsceneTimer == 0) { + this->cutsceneTimer = 5; + this->cutsceneState++; + } + break; + + case EN_JSO2_INTRO_CS_STATE_WAIT_BEFORE_LAUGH: + if (this->cutsceneTimer == 0) { Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_LAUGH); - this->unk1044 = 0x2D; - this->unk1046++; + this->cutsceneTimer = 45; + this->cutsceneState++; } break; - case 8: - if (this->unk1044 == 0) { + case EN_JSO2_INTRO_CS_STATE_LAUGH: + if (this->cutsceneTimer == 0) { this->actor.speed = 3.0f; this->actor.velocity.y = 10.0f; this->actor.gravity = -1.0f; - - func_80A776E0(this, 16); - - this->unk294 = 0.4f; - this->unk298 = 40.0f; - + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_JUMP_DOWN); + this->subCamMaxVelocityFrac = 0.4f; + this->subCamVelocity = 40.0f; Actor_PlaySfx(&this->actor, NA_SE_EN_PO_ROLL); - Math_Vec3f_Copy(&this->unk_2B8, &this->unk1054); - - this->unk1044 = 25; - this->unk1046++; + Math_Vec3f_Copy(&this->baseSubCamEye, &this->subCamEye); + this->cutsceneTimer = 25; + this->cutsceneState++; } break; - case 9: { - this->unk_38C++; - - if (this->unk_38C >= 20) { - this->unk_38C = 0; - } - if (this->unk_388 < 19) { - this->unk_388++; + case EN_JSO2_INTRO_CS_STATE_JUMP_DOWN: + this->afterimageIndex++; + if (this->afterimageIndex >= EN_JSO2_AFTERIMAGE_COUNT) { + this->afterimageIndex = 0; } - Math_Vec3f_Copy(&this->unk_390[this->unk_38C], &this->actor.world.pos); - Math_Vec3s_Copy(&this->unk_480[this->unk_38C], &this->actor.world.rot); + if (this->afterimageCount < EN_JSO2_AFTERIMAGE_COUNT - 1) { + this->afterimageCount++; + } - this->unk_390[this->unk_38C].y += 40.0f; + Math_Vec3f_Copy(&this->afterimagePos[this->afterimageIndex], &this->actor.world.pos); + Math_Vec3s_Copy(&this->afterimageRot[this->afterimageIndex], &this->actor.world.rot); + this->afterimagePos[this->afterimageIndex].y += 40.0f; - for (i = 0; i < 20; i++) { - this->unk_4F8[this->unk_38C][i] = this->jointTable[i]; + for (i = 0; i < EN_JSO2_AFTERIMAGE_COUNT; i++) { + this->afterimageJointTable[this->afterimageIndex][i] = this->jointTable[i]; } Math_ApproachF(&this->actor.shape.shadowScale, 17.0f, 0.4f, 4.0f); - if (this->unk1044 == 0) { - this->unk1078.x = this->unk_2B8.x - 490.0f; - this->unk1078.y = this->unk_2B8.y; - this->unk1078.z = this->unk_2B8.z + 100.0f; + if (this->cutsceneTimer == 0) { + this->subCamEyeNext.x = this->baseSubCamEye.x - 490.0f; + this->subCamEyeNext.y = this->baseSubCamEye.y; + this->subCamEyeNext.z = this->baseSubCamEye.z + 100.0f; } - this->unk1084.x = this->actor.focus.pos.x - 80.0f; - this->unk1084.y = this->actor.focus.pos.y - 130.0f; - this->unk1084.z = this->actor.focus.pos.z; + this->subCamAtNext.x = this->actor.focus.pos.x - 80.0f; + this->subCamAtNext.y = this->actor.focus.pos.y - 130.0f; + this->subCamAtNext.z = this->actor.focus.pos.z; - if (this->actor.bgCheckFlags & 1) { + if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_ONGND); this->actor.gravity = 0.0f; this->actor.velocity.y = 0.0f; this->actor.speed = 0.0f; - func_80A776E0(this, 15); - Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale, 0xA, - 4.0f, 500, 50, 1); - this->unk1044 = 1; + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_LAND); + Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale, 10, + 4.0f, 500, 50, true); + this->cutsceneTimer = 1; Actor_PlaySfx(&this->actor, NA_SE_EN_EYEGOLE_ATTACK); - this->unk1046++; - } - } break; - - case 10: - this->unk_38C++; - if (this->unk_38C >= 0x14) { - this->unk_38C = 0; - } - if (this->unk_388 < 0x13) { - this->unk_388++; - } - - Math_Vec3f_Copy(&this->unk_390[this->unk_38C], &this->actor.world.pos); - Math_Vec3s_Copy(&this->unk_480[this->unk_38C], &this->actor.world.rot); - - this->unk_390[this->unk_38C].y += 40.0f; - - for (i = 0; i < 20; i++) { - this->unk_4F8[this->unk_38C][i] = this->jointTable[i]; - } - - if (this->unk1044 == 0) { - this->unk1078.x = this->unk_2B8.x - 518.0f; - this->unk1078.y = this->unk_2B8.y - 11.0f; - this->unk1078.z = this->unk_2B8.z + 100.0f; - } - - this->unk1084.x = this->actor.focus.pos.x + 20.0f; - this->unk1084.y = this->actor.focus.pos.y - 50.0f; - this->unk1084.z = this->actor.focus.pos.z; - - if (this->unk374 <= curFrame) { - this->unk_388 = 0; - this->unk_38C = 0; - this->unk1044 = 0x14; - func_80A776E0(this, 0x12); - this->unk1046++; + this->cutsceneState++; } break; - case 11: - if (Animation_OnFrame(&this->skelAnime, 17.0f) != 0) { - Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_SWORD); - Actor_PlaySfx(&this->actor, NA_SE_EV_FLAME_IGNITION); - this->unk36C = 0; - Audio_SetMainBgmVolume(127, 0); - Audio_PlayBgm_StorePrevBgm(0x38); + case EN_JSO2_INTRO_CS_STATE_LAND: + this->afterimageIndex++; + if (this->afterimageIndex >= EN_JSO2_AFTERIMAGE_COUNT) { + this->afterimageIndex = 0; } - if (this->unk1044 == 0) { - this->unk1078.x = this->unk_2B8.x - 470.0f; - this->unk1078.y = this->unk_2B8.y - 10.0f; - this->unk1078.z = this->unk_2B8.z + 100.0f; - this->unk1084.x = this->actor.focus.pos.x - 80.0f; - this->unk1084.y = this->actor.focus.pos.y - 30.0f; - this->unk1084.z = this->actor.focus.pos.z; + if (this->afterimageCount < EN_JSO2_AFTERIMAGE_COUNT - 1) { + this->afterimageCount++; + } - if (this->unk36C == 0) { - for (i = 0; i < ARRAY_COUNT(D_80A7B510); i++) { - Math_ApproachF(&this->unk_EAC[i].x, D_80A7B510[i].x, 0.3f, 0.0005f); - this->unk_EAC[i].y = this->unk_EAC[i].x; - this->unk_EAC[i].z = this->unk_EAC[i].x; + Math_Vec3f_Copy(&this->afterimagePos[this->afterimageIndex], &this->actor.world.pos); + Math_Vec3s_Copy(&this->afterimageRot[this->afterimageIndex], &this->actor.world.rot); + this->afterimagePos[this->afterimageIndex].y += 40.0f; + + for (i = 0; i < EN_JSO2_AFTERIMAGE_COUNT; i++) { + this->afterimageJointTable[this->afterimageIndex][i] = this->jointTable[i]; + } + + if (this->cutsceneTimer == 0) { + this->subCamEyeNext.x = this->baseSubCamEye.x - 518.0f; + this->subCamEyeNext.y = this->baseSubCamEye.y - 11.0f; + this->subCamEyeNext.z = this->baseSubCamEye.z + 100.0f; + } + + this->subCamAtNext.x = this->actor.focus.pos.x + 20.0f; + this->subCamAtNext.y = this->actor.focus.pos.y - 50.0f; + this->subCamAtNext.z = this->actor.focus.pos.z; + + if (curFrame >= this->animEndFrame) { + this->afterimageCount = 0; + this->afterimageIndex = 0; + this->cutsceneTimer = 20; + EnJso2_ChangeAnim(this, EN_JSO2_DRAW_SWORDS); + this->cutsceneState++; + } + break; + + case EN_JSO2_INTRO_CS_STATE_DRAW_SWORDS: + if (Animation_OnFrame(&this->skelAnime, 17.0f)) { + Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_SWORD); + Actor_PlaySfx(&this->actor, NA_SE_EV_FLAME_IGNITION); + this->swordState = EN_JSO2_SWORD_STATE_BOTH_DRAWN; + Audio_SetMainBgmVolume(0x7F, 0); + Audio_PlayBgm_StorePrevBgm(NA_BGM_MINI_BOSS); + } + + if (this->cutsceneTimer == 0) { + this->subCamEyeNext.x = this->baseSubCamEye.x - 470.0f; + this->subCamEyeNext.y = this->baseSubCamEye.y - 10.0f; + this->subCamEyeNext.z = this->baseSubCamEye.z + 100.0f; + this->subCamAtNext.x = this->actor.focus.pos.x - 80.0f; + this->subCamAtNext.y = this->actor.focus.pos.y - 30.0f; + this->subCamAtNext.z = this->actor.focus.pos.z; + + if (this->swordState == EN_JSO2_SWORD_STATE_BOTH_DRAWN) { + for (i = 0; i < EN_JSO2_FLAME_COUNT; i++) { + Math_ApproachF(&this->flameScale[i].x, sTargetFlameScales[i].x, 0.3f, 0.0005f); + this->flameScale[i].y = this->flameScale[i].x; + this->flameScale[i].z = this->flameScale[i].x; } } } - if (this->unk374 <= curFrame) { + if (curFrame >= this->animEndFrame) { CutsceneManager_Stop(this->actor.csId); - this->unk1048 = 0; + this->subCamId = SUB_CAM_ID_DONE; this->actor.flags &= ~ACTOR_FLAG_100000; this->actor.gravity = -3.0f; this->actor.flags &= ~ACTOR_FLAG_CANT_LOCK_ON; this->actor.flags |= ACTOR_FLAG_TARGETABLE; - func_80A787FC(this, play); + EnJso2_SetupCirclePlayer(this, play); } break; + + default: + break; } + this->actor.shape.yOffset = 960.0f; - func_80A77790(this, play); + EnJso2_UpdateSubCam(this, play); } -void func_80A78588(EnJso2* this) { - this->unk36C = 2; - this->unkEF4.base.acFlags |= AC_HARD; - this->actor.flags &= ~(ACTOR_FLAG_100000); - func_80A776E0(this, 13); - this->actionFunc = func_80A785E4; +void EnJso2_SetupAppear(EnJso2* this) { + this->swordState = EN_JSO2_SWORD_STATE_NONE_DRAWN; + this->bodyCollider.base.acFlags |= AC_HARD; + this->actor.flags &= ~ACTOR_FLAG_100000; + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_APPEAR_AND_DRAW_SWORDS); + this->actionFunc = EnJso2_Appear; } -void func_80A785E4(EnJso2* this, PlayState* play) { +/** + * Makes the Garo Master jump out of the ground, draw its sword, and start the fight. This function is roughly analogous + * to the function for handling the intro cutscene, however this function does not actually start a cutscene, and all of + * the Garo Master's actions happen during gameplay. + */ +void EnJso2_Appear(EnJso2* this, PlayState* play) { f32 curFrame = this->skelAnime.curFrame; s32 i; this->actor.world.rot.y = this->actor.shape.rot.y = this->actor.yawTowardsPlayer; - switch (this->unk1046) { - case 0: + switch (this->appearState) { + case EN_JSO2_APPEAR_STATE_STARTED: Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale, 1, 8.0f, - 500, 10, 1); + 500, 10, true); Audio_SetMainBgmVolume(0, 10); Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_ENTRY); - this->unk1046++; + this->appearState++; break; - case 1: - if (Animation_OnFrame(&this->skelAnime, 18.0f) != 0) { + case EN_JSO2_APPEAR_STATE_APPEARING: + if (Animation_OnFrame(&this->skelAnime, 18.0f)) { Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale, 1, - 8.0f, 500, 10, 1); + 8.0f, 500, 10, true); } Math_ApproachF(&this->actor.shape.shadowScale, 17.0f, 0.4f, 4.0f); if (Animation_OnFrame(&this->skelAnime, 45.0f)) { - Audio_SetMainBgmVolume(127, 0); - Audio_PlayBgm_StorePrevBgm(56); + Audio_SetMainBgmVolume(0x7F, 0); + Audio_PlayBgm_StorePrevBgm(NA_BGM_MINI_BOSS); Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_SWORD); Actor_PlaySfx(&this->actor, NA_SE_EV_FLAME_IGNITION); - this->unk36C = 0; + this->swordState = EN_JSO2_SWORD_STATE_BOTH_DRAWN; } - if (this->unk36C == 0) { - for (i = 0; i < ARRAY_COUNT(D_80A7B510); i++) { - Math_ApproachF(&this->unk_EAC[i].x, D_80A7B510[i].x, 0.3f, 0.0005f); - this->unk_EAC[i].y = this->unk_EAC[i].x; - this->unk_EAC[i].z = this->unk_EAC[i].x; + if (this->swordState == EN_JSO2_SWORD_STATE_BOTH_DRAWN) { + for (i = 0; i < EN_JSO2_FLAME_COUNT; i++) { + Math_ApproachF(&this->flameScale[i].x, sTargetFlameScales[i].x, 0.3f, 0.0005f); + this->flameScale[i].y = this->flameScale[i].x; + this->flameScale[i].z = this->flameScale[i].x; } } - if (curFrame >= this->unk374) { - func_80A787FC(this, play); + if (curFrame >= this->animEndFrame) { + EnJso2_SetupCirclePlayer(this, play); } break; + + default: + break; } } -void func_80A787FC(EnJso2* this, PlayState* play) { +void EnJso2_SetupCirclePlayer(EnJso2* this, PlayState* play) { Player* player = GET_PLAYER(play); - func_80A776E0(this, 8); - - this->unk286 = player->actor.shape.rot.y; - this->unk288 = 0x258; - this->unk284 = 3; - this->unk370 = 0; - this->unkEF4.base.acFlags |= AC_HARD; - this->actionFunc = func_80A78868; + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_BOUNCE); + this->circlingAngle = player->actor.shape.rot.y; + this->circlingAngularVelocity = 0x258; + this->action = EN_JSO2_ACTION_CIRCLE_PLAYER; + this->isTeleporting = false; + this->bodyCollider.base.acFlags |= AC_HARD; + this->actionFunc = EnJso2_CirclePlayer; } -void func_80A78868(EnJso2* this, PlayState* play) { - f32 sp44 = this->skelAnime.curFrame; +/** + * Makes the Garo Master bounce in a circle around the player, sometimes randomly switching the direction it's + * traveling, until the attack timer reaches 0. Once it does, then the Garo Master will prepare to attack. + */ +void EnJso2_CirclePlayer(EnJso2* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; Player* player = GET_PLAYER(play); - Vec3f sp34; - SkelAnime* sp28 = &this->skelAnime; + Vec3f targetPos; + s32 pad; Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_MOVING - SFX_FLAG); - if (sp44 < this->unk374) { + if (curFrame < this->animEndFrame) { SkelAnime_Update(&this->skelAnime); - } else if (this->actor.bgCheckFlags & 1) { + } else if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { SkelAnime_Update(&this->skelAnime); } - if (Animation_OnFrame(&this->skelAnime, 6.0f) != 0) { + if (Animation_OnFrame(&this->skelAnime, 6.0f)) { this->actor.velocity.y = 10.0f; - if (!(play->gameplayFrames & 1)) { + if ((play->gameplayFrames % 2) == 0) { Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_CRYING); } } - if (Animation_OnFrame(sp28, 12.0f) != 0) { + if (Animation_OnFrame(&this->skelAnime, 12.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_SKIP); this->actor.speed = 0.0f; if (Rand_ZeroFloat(1.0f) < 0.5f) { - this->unk288 = -this->unk288; + this->circlingAngularVelocity = -this->circlingAngularVelocity; } } - if (this->unk28E == 0) { + if (this->attackTimer == 0) { this->actor.speed = 0.0f; - func_80A78B04(this); + EnJso2_SetupSpinBeforeAttack(this); return; } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xA, 0xFA0, 0x14); Math_ApproachF(&this->actor.speed, 5.0f, 0.3f, 2.0f); - - this->unk286 += this->unk288; - - sp34.x = (Math_SinS(this->unk286) * 200.0f) + player->actor.world.pos.x; - sp34.y = this->actor.world.pos.y; - sp34.z = (Math_CosS(this->unk286) * 200.0f) + player->actor.world.pos.z; - - Math_SmoothStepToS(&this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &sp34), 0xA, 0xFA0, (s16)0x14); + this->circlingAngle += this->circlingAngularVelocity; + targetPos.x = (Math_SinS(this->circlingAngle) * 200.0f) + player->actor.world.pos.x; + targetPos.y = this->actor.world.pos.y; + targetPos.z = (Math_CosS(this->circlingAngle) * 200.0f) + player->actor.world.pos.z; + Math_SmoothStepToS(&this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &targetPos), 0xA, 0xFA0, 0x14); } -void func_80A78A70(EnJso2* this) { - func_80A776E0(this, 5); +void EnJso2_SetupGuard(EnJso2* this) { + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_GUARD); this->actor.world.rot.y = this->actor.yawTowardsPlayer; Actor_PlaySfx(&this->actor, NA_SE_IT_SHIELD_BOUND); - this->unkEF4.base.acFlags |= AC_HARD; - this->unk284 = 4; - this->actionFunc = func_80A78ACC; + this->bodyCollider.base.acFlags |= AC_HARD; + this->action = EN_JSO2_ACTION_GUARD; + this->actionFunc = EnJso2_Guard; } -void func_80A78ACC(EnJso2* this, PlayState* play) { - f32 temp = this->skelAnime.curFrame; +/** + * Plays the guard animation to completion, then goes back to circling the player. + */ +void EnJso2_Guard(EnJso2* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; - if (temp >= this->unk374) { - func_80A787FC(this, play); + if (curFrame >= this->animEndFrame) { + EnJso2_SetupCirclePlayer(this, play); } } -void func_80A78B04(EnJso2* this) { - func_80A776E0(this, 0); +void EnJso2_SetupSpinBeforeAttack(EnJso2* this) { + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_DASH_ATTACK); this->actor.world.rot.y = -this->actor.yawTowardsPlayer; - this->unkEF4.base.acFlags |= AC_HARD; - this->unk284 = 5; - this->actionFunc = func_80A78B70; + this->bodyCollider.base.acFlags |= AC_HARD; + this->action = EN_JSO2_ACTION_SPIN_BEFORE_ATTACK; this->actor.speed = 10.0f; this->actor.velocity.y = 20.0f; + this->actionFunc = EnJso2_SpinBeforeAttack; } -void func_80A78B70(EnJso2* this, PlayState* play) { +/** + * Leaps into the air while spinning forward. Once the Garo Master touches the ground, it will begin a dash attack. + */ +void EnJso2_SpinBeforeAttack(EnJso2* this, PlayState* play) { this->actor.world.rot.x += 0x1770; - Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 10, 4000, 20); - if (!(this->actor.velocity.y > 0.0f) && (this->actor.bgCheckFlags & 1)) { + Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xA, 0xFA0, 0x14); + + if (this->actor.velocity.y > 0.0f) { + return; + } + + if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { this->actor.world.rot.x = 0; this->actor.velocity.y = 0.0f; this->actor.speed = 0.0f; - this->actor.shape.rot.y = this->actor.yawTowardsPlayer; - this->actor.world.rot.y = this->actor.yawTowardsPlayer; - func_80A78C08(this); + this->actor.world.rot.y = this->actor.shape.rot.y = this->actor.yawTowardsPlayer; + EnJso2_SetupDashAttack(this); } } -void func_80A78C08(EnJso2* this) { - this->unk28A = 40; - this->unkEF4.base.acFlags |= AC_HARD; +void EnJso2_SetupDashAttack(EnJso2* this) { + this->attackMovementTimer = 40; + this->bodyCollider.base.acFlags |= AC_HARD; this->actor.speed = 15.0f; this->actor.velocity.y = 13.0f; Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_ENTRY); Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_DASH_2); - this->unk284 = 6; - this->actionFunc = func_80A78C7C; + this->action = EN_JSO2_ACTION_DASH_ATTACK; + this->actionFunc = EnJso2_DashAttack; } -void func_80A78C7C(EnJso2* this, PlayState* play) { - f32 temp_fv1 = this->skelAnime.curFrame; - s16 temp_v0_2; - Vec3f sp2C; - s32 temp = 1; +/** + * Dashes toward the player with its swords out. If the player shields the attack, the Garo Master will jump backwards a + * small amount. The Garo Master also has a random chance of teleporting every time it touches the ground. Assuming it + * does not teleport, the Garo Master will stop dashing and perform a slash if it's close enough to the player, if the + * difference between its y-rotation and the yaw towards the player is large enough (usually indicating that it has + * dashed past the player), or if 40 frames have passed, whichever comes first. + */ +void EnJso2_DashAttack(EnJso2* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + s16 yawDiff; + s16 absYawDiff; + Vec3f knockbackVelocity; - if ((this->unkF40.base.atFlags & AT_BOUNCED) || (this->unkFC0.base.atFlags & AT_BOUNCED)) { - this->unkF40.base.atFlags &= ~(AT_HIT | AT_BOUNCED); - this->unkFC0.base.atFlags &= ~(AT_HIT | AT_BOUNCED); + if ((this->rightSwordCollider.base.atFlags & AT_BOUNCED) || (this->leftSwordCollider.base.atFlags & AT_BOUNCED)) { + this->rightSwordCollider.base.atFlags &= ~(AT_HIT | AT_BOUNCED); + this->leftSwordCollider.base.atFlags &= ~(AT_HIT | AT_BOUNCED); Matrix_RotateYS(this->actor.yawTowardsPlayer, MTXMODE_NEW); - Matrix_MultVecZ(-10.0f, &sp2C); - Math_Vec3f_Copy(&this->unkE58, &sp2C); - this->unk368 = temp; - this->unk28A = 0; + Matrix_MultVecZ(-10.0f, &knockbackVelocity); + Math_Vec3f_Copy(&this->knockbackVelocity, &knockbackVelocity); + this->disableBlure = true; + this->attackMovementTimer = 0; AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); - func_80A79864(this); + EnJso2_SetupJumpBack(this); return; } - if ((this->actor.velocity.y < 0.0f) && (this->actor.bgCheckFlags & 1)) { - if (Rand_ZeroOne() < ((gRegEditor->data[0x976] * 0.1f) + 0.7f)) { + if ((this->actor.velocity.y < 0.0f) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { + if (Rand_ZeroOne() < ((BREG(22) * 0.1f) + 0.7f)) { this->actor.velocity.y = 13.0f; } else { AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); - this->unk368 = temp; - this->unk370 = 1; + this->disableBlure = true; + this->isTeleporting = true; this->actor.speed = 0.0f; - func_80A78E8C(this); + EnJso2_SetupTeleport(this); return; } } - if (!(temp_fv1 < this->unk374)) { - temp_v0_2 = ABS_ALT((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)); + if (curFrame < this->animEndFrame) { + return; + } - if (((this->unk28A == 0) || (this->actor.xzDistToPlayer < 120.0f)) || (temp_v0_2 > 0x4300)) { - AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); - Math_ApproachZeroF(&this->actor.speed, 0.3f, 3.0f); - func_80A790E4(this, play); - } + yawDiff = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; + absYawDiff = ABS_ALT(yawDiff); + + if ((this->attackMovementTimer == 0) || (this->actor.xzDistToPlayer < 120.0f) || (absYawDiff > 0x4300)) { + AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); + Math_ApproachZeroF(&this->actor.speed, 0.3f, 3.0f); + EnJso2_SetupSlash(this, play); } } -void func_80A78E8C(EnJso2* this) { - func_80A776E0(this, 0); - this->unk28A = 20; +void EnJso2_SetupTeleport(EnJso2* this) { + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_DASH_ATTACK); + this->attackMovementTimer = 20; this->actor.speed = 0.0f; this->actor.gravity = 0.0f; this->actor.velocity.y = 10.0f; Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_JUMP); this->actor.flags |= ACTOR_FLAG_CANT_LOCK_ON; - this->unk284 = 0xF; - this->actionFunc = func_80A78F04; + this->action = EN_JSO2_ACTION_TELEPORT; + this->actionFunc = EnJso2_Teleport; } -void func_80A78F04(EnJso2* this, PlayState* play) { +/** + * Jump into the air while spinning around and shrinking. After 20 frames, this function will move the Garo Master to be + * directly above the player's current location. + */ +void EnJso2_Teleport(EnJso2* this, PlayState* play) { this->actor.shape.rot.y -= 0x1D4C; - Math_ApproachZeroF(&this->unk378, 0.3f, 0.01f); + Math_ApproachZeroF(&this->scale, 0.3f, 0.01f); Math_ApproachZeroF(&this->actor.shape.shadowScale, 0.3f, 3.0f); - if (this->unk28A == 0) { - func_80A78F80(this, play); + + if (this->attackMovementTimer == 0) { + EnJso2_SetupFallFromTeleport(this, play); } } -void func_80A78F80(EnJso2* this, PlayState* play) { +void EnJso2_SetupFallFromTeleport(EnJso2* this, PlayState* play) { Player* player = GET_PLAYER(play); Math_Vec3f_Copy(&this->actor.world.pos, &player->actor.world.pos); - this->actor.world.pos.y += 300.0f + BREG(0x34); + this->actor.world.pos.y += 300.0f + BREG(52); this->actor.velocity.y = 0.0f; - this->actor.gravity = BREG(0x35) + -3.0f; + this->actor.gravity = BREG(53) + -3.0f; Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_FALL); - this->unk284 = 16; - this->actionFunc = func_80A79038; + this->action = EN_JSO2_ACTION_FALL_FROM_TELEPORT; + this->actionFunc = EnJso2_FallFromTeleport; } -void func_80A79038(EnJso2* this, PlayState* play) { - Math_ApproachF(&this->unk378, 0.042f, 0.3f, 0.03f); +/** + * Makes the Garo Master grow back to its original size and fall down onto where the player was standing when + * EnJso2_SetupFallFromTeleport was called. When it touches the ground, it will perform a slash. + */ +void EnJso2_FallFromTeleport(EnJso2* this, PlayState* play) { + Math_ApproachF(&this->scale, 0.042f, 0.3f, 0.03f); Math_ApproachF(&this->actor.shape.shadowScale, 17.0f, 0.4f, 4.0f); - if (this->actor.bgCheckFlags & 1) { - this->unk370 = 0; - this->unk378 = 0.042f; + + if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { + this->isTeleporting = false; + this->scale = 0.042f; this->actor.shape.shadowScale = 17.0f; - this->actor.flags &= ~(ACTOR_FLAG_CANT_LOCK_ON); - func_80A790E4(this, play); + this->actor.flags &= ~ACTOR_FLAG_CANT_LOCK_ON; + EnJso2_SetupSlash(this, play); } } -void func_80A790E4(EnJso2* this, PlayState* play) { - func_80A776E0(this, 1); +void EnJso2_SetupSlash(EnJso2* this, PlayState* play) { + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_SLASH_START); Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale, 1, 8.0f, 500, - 10, 1); + 10, true); Math_ApproachZeroF(&this->actor.speed, 0.3f, 3.0f); - this->unk371 = 0; + this->slashHitSomething = false; Actor_PlaySfx(&this->actor, NA_SE_IT_SWORD_SWING_HARD); - this->unk284 = 7; - this->unkEF4.base.acFlags &= ~(AC_HARD); - this->actionFunc = func_80A7919C; + this->action = EN_JSO2_ACTION_SLASH; + this->bodyCollider.base.acFlags &= ~AC_HARD; + this->actionFunc = EnJso2_Slash; } -void func_80A7919C(EnJso2* this, PlayState* play) { - Vec3f sp44; - f32 sp40 = this->skelAnime.curFrame; +/** + * Slash in place with both swords. If the player shields the attack, the Garo Master will jump backwards. + * Once the slash animation ends, this function will transition the Garo Master to a waiting state. + */ +void EnJso2_Slash(EnJso2* this, PlayState* play) { + Vec3f knockbackVelocity; + f32 curFrame = this->skelAnime.curFrame; Math_ApproachZeroF(&this->actor.speed, 0.5f, 5.0f); - if (!(play->gameplayFrames % 8)) { + if ((play->gameplayFrames % 8) == 0) { Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale, 1, 8.0f, - 500, 10, 1); + 500, 10, true); } - if ((this->unkF40.base.atFlags & AT_HIT) || (this->unkFC0.base.atFlags & AT_HIT) != 0) { - this->unk371 = 1; - this->unkF40.base.atFlags &= ~(AT_HIT); - this->unkFC0.base.atFlags &= ~(AT_HIT); + if ((this->rightSwordCollider.base.atFlags & AT_HIT) || (this->leftSwordCollider.base.atFlags & AT_HIT)) { + this->slashHitSomething = true; + this->rightSwordCollider.base.atFlags &= ~AT_HIT; + this->leftSwordCollider.base.atFlags &= ~AT_HIT; } - if ((this->unkF40.base.atFlags & AT_BOUNCED) || (this->unkFC0.base.atFlags & 4)) { - this->unkF40.base.atFlags &= ~(AT_HIT | AT_BOUNCED); - this->unkFC0.base.atFlags &= ~(AT_HIT | AT_BOUNCED); + if ((this->rightSwordCollider.base.atFlags & AT_BOUNCED) || (this->leftSwordCollider.base.atFlags & AT_BOUNCED)) { + this->rightSwordCollider.base.atFlags &= ~(AT_HIT | AT_BOUNCED); + this->leftSwordCollider.base.atFlags &= ~(AT_HIT | AT_BOUNCED); Matrix_RotateYS(this->actor.yawTowardsPlayer, MTXMODE_NEW); - Matrix_MultVecZ(-10.0f, &sp44); - Math_Vec3f_Copy(&this->unkE58, &sp44); - this->unk368 = 1; - func_80A79864(this); - } else if (this->unk374 <= sp40) { - this->unk368 = 1; + Matrix_MultVecZ(-10.0f, &knockbackVelocity); + Math_Vec3f_Copy(&this->knockbackVelocity, &knockbackVelocity); + this->disableBlure = true; + EnJso2_SetupJumpBack(this); + return; + } + + if (curFrame >= this->animEndFrame) { this->actor.speed = 0.0f; - func_80A79450(this); + this->disableBlure = true; + EnJso2_SetupWaitAfterSlash(this); } } -void func_80A79300(EnJso2* this) { - func_80A776E0(this, 14); - this->unk371 = 0; +void EnJso2_SetupSpinAttack(EnJso2* this) { + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_SPIN_ATTACK); + this->slashHitSomething = false; Actor_PlaySfx(&this->actor, NA_SE_IT_SWORD_SWING_HARD); - this->unk368 = 0; - this->unk28E = 0xF; - this->unk284 = 8; - this->actionFunc = func_80A79364; + this->disableBlure = false; + this->attackTimer = 15; + this->action = EN_JSO2_ACTION_SPIN_ATTACK; this->actor.speed = 12.0f; + this->actionFunc = EnJso2_SpinAttack; } -void func_80A79364(EnJso2* this, PlayState* play) { +/** + * Spins around rapidly with its swords out. If 15 frames pass, the Garo Master hits the player, or the Garo Master + * bounces off the player's shield, it will end the spin attack and jump backwards. + */ +void EnJso2_SpinAttack(EnJso2* this, PlayState* play) { this->actor.shape.rot.y -= 0x1770; Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, this->actor.shape.shadowScale, 1, 4.0f, 300, 5, - 1); - Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 1, 4000, 20); + true); + Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 1, 0xFA0, 0x14); - if ((this->unk28E == 0) || ((this->unkF40.base.atFlags & AT_HIT) != 0) || - (this->unkF40.base.atFlags & AT_BOUNCED) || ((this->unkFC0.base.atFlags & AT_HIT) != 0) || - (this->unkFC0.base.atFlags & AT_BOUNCED)) { - this->unkF40.base.atFlags &= ~(AT_BOUNCED | AT_HIT); - this->unkFC0.base.atFlags &= ~(AT_BOUNCED | AT_HIT); - func_80A79864(this); + if ((this->attackTimer == 0) || (this->rightSwordCollider.base.atFlags & AT_HIT) || + (this->rightSwordCollider.base.atFlags & AT_BOUNCED) || (this->leftSwordCollider.base.atFlags & AT_HIT) || + (this->leftSwordCollider.base.atFlags & AT_BOUNCED)) { + this->rightSwordCollider.base.atFlags &= ~(AT_HIT | AT_BOUNCED); + this->leftSwordCollider.base.atFlags &= ~(AT_HIT | AT_BOUNCED); + EnJso2_SetupJumpBack(this); } } -void func_80A79450(EnJso2* this) { - if (this->unk371 != 0) { - func_80A776E0(this, 2); - this->unk290 = 20; +void EnJso2_SetupWaitAfterSlash(EnJso2* this) { + if (this->slashHitSomething) { + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_SLASH_LOOP); + this->timer = 20; } else { - func_80A776E0(this, 12); - this->unk290 = 40; + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_LOOK_AROUND); + this->timer = 40; } - this->unkEF4.base.acFlags &= ~(AC_HARD); - this->unk284 = 9; - this->actionFunc = func_80A794C8; + + this->bodyCollider.base.acFlags &= ~AC_HARD; + this->action = EN_JSO2_ACTION_WAIT_AFTER_SLASH; + this->actionFunc = EnJso2_WaitAfterSlash; } -void func_80A794C8(EnJso2* this, PlayState* play) { - if (this->unk290 == 0) { - this->unk28E = Rand_S16Offset(30, 30); - this->unk371 = 0; - this->unkEF4.base.acFlags |= AC_HARD; - func_80A787FC(this, play); +/** + * Waits either 20 or 40 frames, depending on whether or not the Garo Master hit the player with its slash attack. If + * the slash didn't hit anything, the Garo Master will play its looking around animation; otherwise, it will just hold + * its swords out. Once this waiting period ends, the Garo Master starts circling the player again. + */ +void EnJso2_WaitAfterSlash(EnJso2* this, PlayState* play) { + if (this->timer == 0) { + this->attackTimer = Rand_S16Offset(30, 30); + this->slashHitSomething = false; + this->bodyCollider.base.acFlags |= AC_HARD; + EnJso2_SetupCirclePlayer(this, play); } } -void func_80A79524(EnJso2* this) { - Vec3f vec; +/** + * Unlike most enemies, this will make the Garo Master play its damaged animation rather than stopping all animations. + */ +void EnJso2_SetupStunned(EnJso2* this) { + Vec3f knockbackVelocity; AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); - func_80A776E0(this, 4); - - this->unk290 = 0x1E; - this->unkEF4.base.acFlags &= ~(AC_HARD); + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_DAMAGED); + this->timer = 30; + this->bodyCollider.base.acFlags &= ~AC_HARD; this->actor.speed = 0.0f; - Matrix_RotateYS(this->actor.yawTowardsPlayer, MTXMODE_NEW); - Matrix_MultVecZ(-10.0f, &vec); - Math_Vec3f_Copy(&this->unkE58, &vec); + Matrix_MultVecZ(-10.0f, &knockbackVelocity); + Math_Vec3f_Copy(&this->knockbackVelocity, &knockbackVelocity); - if (((this->unk2A2 == 11) || (this->unk2A2 == 10)) && (this->unk2A0 == 0)) { - this->unk2A0 = 0; - this->unk2A2 = 0; + if (((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) && + (this->drawDmgEffAlpha == 0)) { + this->drawDmgEffAlpha = 0; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; } - if ((this->unk2A2 != 11) && (this->unk2A2 != 10)) { - this->unk290 = 40; + if ((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) { + this->timer = 40; } - this->unk284 = 10; - this->actionFunc = func_80A79600; + this->action = EN_JSO2_ACTION_STUNNED; + this->actionFunc = EnJso2_Stunned; } -void func_80A79600(EnJso2* this, PlayState* play) { - if (this->unk2A2 == 11) { - if ((this->unk2A0 != 0) && (this->unk2A0 < 0x3C)) { - this->unk2A2 = 0xA; +/** + * Makes the Garo Master play its damaged animation and stop moving until 40 frames have passed, then it jumps back. + */ +void EnJso2_Stunned(EnJso2* this, PlayState* play) { + if (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) { + if ((this->drawDmgEffAlpha != 0) && (this->drawDmgEffAlpha < 60)) { + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX; } } - if ((this->unk290 == 0) && (this->unk2A0 == 0)) { - if ((this->unk2A2 == 11) || (this->unk2A2 == 10)) { - Actor_SpawnIceEffects(play, &this->actor, this->unk2D4, 0xC, 2, 0.7f, 0.4f); - this->unk2A0 = 0; - this->unk2A2 = 0; + if ((this->timer == 0) && (this->drawDmgEffAlpha == 0)) { + if ((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) { + Actor_SpawnIceEffects(play, &this->actor, this->bodyPartsPos, EN_JSO2_BODYPART_MAX, 2, 0.7f, 0.4f); + this->drawDmgEffAlpha = 0; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; } - func_80A79864(this); + + EnJso2_SetupJumpBack(this); } } -void func_80A796BC(EnJso2* this, PlayState* play) { - Vec3f vec; +void EnJso2_SetupDamaged(EnJso2* this, PlayState* play) { + Vec3f knockbackVelocity; AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); - func_80A776E0(this, 4); - - this->unk371 = 0; + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_DAMAGED); + this->slashHitSomething = false; this->actor.velocity.y = 10.0f; this->actor.speed = 0.0f; - Matrix_RotateYS(this->actor.yawTowardsPlayer, MTXMODE_NEW); - Matrix_MultVecZ(-20.0f, &vec); - Math_Vec3f_Copy(&this->unkE58, &vec); + Matrix_MultVecZ(-20.0f, &knockbackVelocity); + Math_Vec3f_Copy(&this->knockbackVelocity, &knockbackVelocity); - if (((this->unk2A2 == 11) || (this->unk2A2 == 10)) && (this->unk2A0 != 0)) { - Actor_SpawnIceEffects(play, &this->actor, this->unk2D4, 0xC, 2, 0.7f, 0.4f); - this->unk2A0 = 0; - this->unk2A2 = 0; + if (((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) && + (this->drawDmgEffAlpha != 0)) { + Actor_SpawnIceEffects(play, &this->actor, this->bodyPartsPos, EN_JSO2_BODYPART_MAX, 2, 0.7f, 0.4f); + this->drawDmgEffAlpha = 0; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; } CollisionCheck_GreenBlood(play, NULL, &this->actor.focus.pos); CollisionCheck_GreenBlood(play, NULL, &this->actor.focus.pos); CollisionCheck_GreenBlood(play, NULL, &this->actor.focus.pos); - - Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 0xFF, 0, 8); + Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 8); Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_DAMAGE); - this->unk284 = 0xB; - this->actionFunc = func_80A7980C; + this->action = EN_JSO2_ACTION_DAMAGED; + this->actionFunc = EnJso2_Damaged; } -void func_80A7980C(EnJso2* this, PlayState* play) { - if (!(this->actor.velocity.y > 0.0f) && (this->actor.colorFilterTimer == 0) && (this->actor.bgCheckFlags & 1)) { - func_80A79300(this); +/** + * Plays the damaged animation until the Garo Master is touching the ground and no longer has its red color filter, at + * which point it will perform a spin attack. + */ +void EnJso2_Damaged(EnJso2* this, PlayState* play) { + if (this->actor.velocity.y > 0.0f) { + return; + } + + if ((this->actor.colorFilterTimer == 0) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { + EnJso2_SetupSpinAttack(this); } } -void func_80A79864(EnJso2* this) { - func_80A776E0(this, 3); - this->actor.world.rot.y *= -1; - this->unk370 = 0; - this->unk284 = 0xC; - this->actionFunc = func_80A798C8; +void EnJso2_SetupJumpBack(EnJso2* this) { + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_JUMP_BACK); + this->actor.world.rot.y = -this->actor.world.rot.y; + this->isTeleporting = false; + this->action = EN_JSO2_ACTION_JUMP_BACK; this->actor.speed = 7.0f; this->actor.velocity.y = 20.0f; + this->actionFunc = EnJso2_JumpBack; } -void func_80A798C8(EnJso2* this, PlayState* play) { +/** + * Jump backwards away from the player. After the Garo Master touches the ground and the jump back animation completes, + * the Garo Master will transition to circling the player. + */ +void EnJso2_JumpBack(EnJso2* this, PlayState* play) { f32 curFrame = this->skelAnime.curFrame; - Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 10, 3000, 20); + Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xA, 0xBB8, 0x14); - if (this->actor.bgCheckFlags & 1) { + if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { this->actor.speed = 0.0f; } - if ((this->unk374 <= curFrame) && (this->actor.bgCheckFlags & 1)) { + if ((curFrame >= this->animEndFrame) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { this->actor.world.rot.x = 0; this->actor.velocity.y = 0.0f; this->actor.speed = 0.0f; this->actor.world.rot.y = this->actor.shape.rot.y; - this->unk28E = Rand_S16Offset(10, 10); - func_80A787FC(this, play); + this->attackTimer = Rand_S16Offset(10, 10); + EnJso2_SetupCirclePlayer(this, play); } } -void func_80A7998C(EnJso2* this, PlayState* play) { +void EnJso2_SetupDead(EnJso2* this, PlayState* play) { AudioSfx_SetChannelIO(&this->actor.projectedPos, NA_SE_EN_ANSATSUSYA_DASH_2, 0); - func_80A776E0(this, 4); + EnJso2_ChangeAnim(this, EN_JSO2_ANIM_DAMAGED); - if (((this->unk2A2 == 0xB) || (this->unk2A2 == 0xA)) && (this->unk2A0 == 0)) { - this->unk2A2 = 0; + if (((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) && + (this->drawDmgEffAlpha == 0)) { + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; } - this->actor.shape.rot.z = 0; this->actor.flags |= ACTOR_FLAG_CANT_LOCK_ON; this->actor.flags &= ~(ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_UNFRIENDLY); this->actor.speed = 0.0f; - this->unk368 = 1; - this->unk290 = 0x1E; - this->unk36C = 2; - this->actor.world.rot.z = this->actor.shape.rot.z; - this->actor.shape.rot.x = this->actor.shape.rot.z; - this->actor.world.rot.x = this->actor.shape.rot.z; - + this->disableBlure = true; + this->timer = 30; + this->swordState = EN_JSO2_SWORD_STATE_NONE_DRAWN; + this->actor.world.rot.x = this->actor.shape.rot.x = this->actor.world.rot.z = this->actor.shape.rot.z = 0; Enemy_StartFinishingBlow(play, &this->actor); Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_DEAD); - Math_Vec3f_Copy(&this->unkE58, &gZeroVec3f); - - this->unk284 = 0xD; - this->actionFunc = func_80A79A84; + Math_Vec3f_Copy(&this->knockbackVelocity, &gZeroVec3f); + this->action = EN_JSO2_ACTION_DEAD; + this->actionFunc = EnJso2_Dead; } -void func_80A79A84(EnJso2* this, PlayState* play) { - Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 10, 4000, 20); +/** + * Plays the damaged animation for 30 frames, then transitions the Garo Master to collapsing onto one knee and blowing + * itself up. Whether or not this happens in a cutscene or in gameplay depends on the Garo Master's type. + */ +void EnJso2_Dead(EnJso2* this, PlayState* play) { + Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 0xA, 0xFA0, 0x14); - if ((this->unk2A2 == 0xB) || (this->unk2A2 == 0xA)) { - if (this->unk2A0 != 0) { - Actor_SpawnIceEffects(play, &this->actor, this->unk2D4, 0xC, 2, 0.7f, 0.4f); - this->unk2A0 = 0; - this->unk2A2 = 0; + if ((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) { + if (this->drawDmgEffAlpha != 0) { + Actor_SpawnIceEffects(play, &this->actor, this->bodyPartsPos, EN_JSO2_BODYPART_MAX, 2, 0.7f, 0.4f); + this->drawDmgEffAlpha = 0; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; } else { return; } } - if (this->unk290 == 0) { - this->unk1050 = 60.0f; - this->unk104C = 60.0f; - if (this->unk29C == 0) { - func_80A79B60(this); - return; + if (this->timer == 0) { + this->subCamFov = this->subCamFovNext = 60.0f; + if (this->type == EN_JSO2_TYPE_LIGHT_ARROW_ROOM) { + EnJso2_SetupDeathCutscene(this); + } else { + EnJso2_SetupBlowUp(this); } - func_80A7A0D0(this); } } -void func_80A79B60(EnJso2* this) { - this->unk1046 = 0; - this->unk1044 = 0; - this->unk1048 = 0; +void EnJso2_SetupDeathCutscene(EnJso2* this) { + this->cutsceneState = EN_JSO2_DEATH_CS_STATE_STARTED; + this->cutsceneTimer = 0; + this->subCamId = SUB_CAM_ID_DONE; this->actor.flags |= ACTOR_FLAG_100000; - this->unk290 = 0x1E; - this->unk284 = 0xE; - this->actionFunc = func_80A79BA0; + this->timer = 30; + this->action = EN_JSO2_ACTION_BLOW_UP; + this->actionFunc = EnJso2_DeathCutscene; } -void func_80A79BA0(EnJso2* this, PlayState* play) { +/** + * Responsible for handling all aspects of the intro cutscene, including making the Garo Master take out a bomb, + * displaying the messages that give the player a hint on how to use the Light Arrow, detonating the bomb and making the + * Garo Master fade away, etc. + */ +void EnJso2_DeathCutscene(EnJso2* this, PlayState* play) { Player* player = GET_PLAYER(play); - f32 curframe = this->skelAnime.curFrame; - Vec3f sp4C; + f32 curFrame = this->skelAnime.curFrame; + Vec3f subCamEyeNextOffset; - if ((this->unk1040 == 0x15) && (curframe >= this->unk374) && !this->unk2D0) { - this->unk2D0 = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_COL_MAN, this->unk2C4.x, - this->unk2C4.y, this->unk2C4.z, 0, 0, 0, 3); + if ((this->animIndex == EN_JSO2_TAKE_OUT_BOMB) && (curFrame >= this->animEndFrame) && (this->bomb == NULL)) { + this->bomb = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_COL_MAN, this->bombPos.x, + this->bombPos.y, this->bombPos.z, 0, 0, 0, EN_COL_MAN_CUTSCENE_BOMB); } - if (this->unk2D0) { - this->unk2D0->world.pos.x = this->unk2C4.x; - this->unk2D0->world.pos.y = this->unk2C4.y; - this->unk2D0->world.pos.z = this->unk2C4.z; + if (this->bomb != NULL) { + this->bomb->world.pos.x = this->bombPos.x; + this->bomb->world.pos.y = this->bombPos.y; + this->bomb->world.pos.z = this->bombPos.z; } - switch (this->unk1046) { - case 0: + switch (this->cutsceneState) { + case EN_JSO2_DEATH_CS_STATE_STARTED: if (!CutsceneManager_IsNext(this->actor.csId)) { CutsceneManager_Queue(this->actor.csId); } else { CutsceneManager_StartWithPlayerCs(this->actor.csId, &this->actor); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->actor.world.rot.y = this->actor.shape.rot.y = Math_Vec3f_Yaw(&this->actor.world.pos, &this->actor.home.pos); Audio_SetMainBgmVolume(0, 10); - func_80A776E0(this, 0x13); - this->unk1048 = CutsceneManager_GetCurrentSubCamId(this->actor.csId); - func_800B7298(play, &this->actor, 7); - this->unk294 = 0.4f; - this->unk1046++; - this->unk298 = 40.0f; + EnJso2_ChangeAnim(this, EN_JSO2_COLLAPSE); + this->subCamId = CutsceneManager_GetCurrentSubCamId(this->actor.csId); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); + this->subCamMaxVelocityFrac = 0.4f; + this->subCamVelocity = 40.0f; + this->cutsceneState++; } break; - case 1: - if (curframe >= this->unk374) { - func_80A776E0(this, 0x14); - this->unk1046++; + case EN_JSO2_DEATH_CS_STATE_COLLAPSE: + if (curFrame >= this->animEndFrame) { + EnJso2_ChangeAnim(this, EN_JSO2_TREMBLE); + this->cutsceneState++; } break; - case 2: - if (curframe >= this->unk374) { + case EN_JSO2_DEATH_CS_STATE_TREMBLE: + if (curFrame >= this->animEndFrame) { this->actor.textId = 0x13AE; Message_StartTextbox(play, this->actor.textId, &this->actor); - this->unk1046++; + this->cutsceneState++; } break; - case 3: - if (func_80A77880(play) != 0) { + case EN_JSO2_DEATH_CS_STATE_TELL_HINT: + if (EnJso2_ShouldAdvanceMessage(play)) { if (this->actor.textId == 0x13AE) { this->actor.textId = 0x13AF; } else if (this->actor.textId == 0x13AF) { this->actor.textId = 0x13B0; - func_80A776E0(this, 0x15); + EnJso2_ChangeAnim(this, EN_JSO2_TAKE_OUT_BOMB); } else if (this->actor.textId == 0x13B0) { play->msgCtx.msgLength = 0; - if (this->unk2D0) { - this->unk2D0->world.rot.z = 1; - func_800B7298(play, &this->actor, 0x2F); - this->unk2B4 = 1; + if (this->bomb != NULL) { + this->bomb->world.rot.z = 1; + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_47); + this->isFadingAway = true; } - this->unk1044 = 0x1E; - this->unk1046++; + + this->cutsceneTimer = 30; + this->cutsceneState++; break; } @@ -1204,23 +1417,23 @@ void func_80A79BA0(EnJso2* this, PlayState* play) { } break; - case 4: - Math_SmoothStepToS(&this->unk366, 0, 1, 0xF, 0x32); + case EN_JSO2_DEATH_CS_STATE_BLOW_UP_AND_FADE_AWAY: + Math_SmoothStepToS(&this->alpha, 0, 1, 15, 50); Math_ApproachZeroF(&this->actor.shape.shadowScale, 0.3f, 3.0f); - if (this->unk1044 == 0) { + if (this->cutsceneTimer == 0) { this->actor.textId = 0x13B1; Message_StartTextbox(play, this->actor.textId, &this->actor); Actor_PlaySfx(&this->actor, NA_SE_EN_ANSATSUSYA_LAUGH); - this->unk290 = 0x32; - this->unk1046++; + this->timer = 50; + this->cutsceneState++; } break; - case 5: - func_800B7298(play, &this->actor, 7); - if (this->unk290 == 0) { + case EN_JSO2_DEATH_CS_STATE_WAIT_AND_END: + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); + if (this->timer == 0) { CutsceneManager_Stop(this->actor.csId); - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); Actor_Kill(&this->actor); } break; @@ -1229,158 +1442,188 @@ void func_80A79BA0(EnJso2* this, PlayState* play) { break; } - if (this->unk1048 != 0) { + if (this->subCamId != SUB_CAM_ID_DONE) { player->actor.world.pos.x = (Math_SinS(this->actor.world.rot.y) * 170.0f) + this->actor.world.pos.x; player->actor.world.pos.z = (Math_CosS(this->actor.world.rot.y) * 170.0f) + this->actor.world.pos.z; player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y + 0x8000; - - Matrix_RotateYS((BREG(49) << 8) + this->actor.shape.rot.y + 0x1000, MTXMODE_NEW); - Matrix_MultVecZ(BREG(48) + 230.0f, &sp4C); - this->unk1078.x = this->actor.world.pos.x + sp4C.x; - this->unk1078.y = BREG(50) + -43.0f + this->actor.world.pos.y + 50.0f; - this->unk1078.z = this->actor.world.pos.z + sp4C.z; - this->unk1084.x = player->actor.world.pos.x + ((this->actor.world.pos.x - player->actor.world.pos.x) * 0.5f); - this->unk1084.y = BREG(51) + 6.0f + player->actor.world.pos.y + 5.0f; - this->unk1084.z = player->actor.world.pos.z + ((this->actor.world.pos.z - player->actor.world.pos.z) * 0.5f); + Matrix_RotateYS(((BREG(49) * 0x100) + this->actor.shape.rot.y + 0x1000), MTXMODE_NEW); + Matrix_MultVecZ(BREG(48) + 230.0f, &subCamEyeNextOffset); + this->subCamEyeNext.x = this->actor.world.pos.x + subCamEyeNextOffset.x; + this->subCamEyeNext.y = BREG(50) + -43.0f + this->actor.world.pos.y + 50.0f; + this->subCamEyeNext.z = this->actor.world.pos.z + subCamEyeNextOffset.z; + this->subCamAtNext.x = F32_LERPIMP(player->actor.world.pos.x, this->actor.world.pos.x, 0.5f); + this->subCamAtNext.y = BREG(51) + 6.0f + player->actor.world.pos.y + 5.0f; + this->subCamAtNext.z = F32_LERPIMP(player->actor.world.pos.z, this->actor.world.pos.z, 0.5f); } - func_80A77790(this, play); + + EnJso2_UpdateSubCam(this, play); } -void func_80A7A0D0(EnJso2* this) { - this->unk1044 = 0; +void EnJso2_SetupBlowUp(EnJso2* this) { + this->cutsceneTimer = 0; Audio_SetMainBgmVolume(0, 10); - func_80A776E0(this, 19); - this->unk284 = 14; - this->actionFunc = func_80A7A124; + EnJso2_ChangeAnim(this, EN_JSO2_COLLAPSE); + this->action = EN_JSO2_ACTION_BLOW_UP; + this->actionFunc = EnJso2_BlowUp; } -void func_80A7A124(EnJso2* this, PlayState* play) { +/** + * This function makes the Garo Master collapse onto one knee, take out a bomb, and blow itself up. It is roughly + * analogous to part of the death cutscene, however all of the Garo Master's actions happen during regular gameplay, and + * the bomb can even damage the player if they're too close when it detonates. After the Garo Master blows up, this + * function will make it start fading away. + */ +void EnJso2_BlowUp(EnJso2* this, PlayState* play) { f32 curFrame = this->skelAnime.curFrame; Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xA, 0xFA0, 0x14); - if ((this->unk1040 == 19) && (this->unk374 <= curFrame)) { - this->unk104A = 0; - func_80A776E0(this, 20); + if ((this->animIndex == EN_JSO2_COLLAPSE) && (curFrame >= this->animEndFrame)) { + this->blowUpFrameCounter = 0; + EnJso2_ChangeAnim(this, EN_JSO2_TREMBLE); } - if ((this->unk1040 == 20) && (this->unk374 <= curFrame)) { - this->unk104A++; - if (this->unk104A >= 2) { - this->unk104A = 0; - func_80A776E0(this, 21); + if ((this->animIndex == EN_JSO2_TREMBLE) && (curFrame >= this->animEndFrame)) { + this->blowUpFrameCounter++; + if (this->blowUpFrameCounter >= 2) { + this->blowUpFrameCounter = 0; + EnJso2_ChangeAnim(this, EN_JSO2_TAKE_OUT_BOMB); } } - if ((this->unk1040 == 0x15) && (this->unk374 <= curFrame)) { - if (this->unk2D0 == NULL) { - this->unk2D0 = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_COL_MAN, this->unk2C4.x, - this->unk2C4.y, this->unk2C4.z, 0, 0, 0, 4); - } else if (this->unk104A >= 10) { - if (this->unk2D0 != NULL) { - this->unk2D0->world.rot.z = 1; - this->unk2B4 = 1; - this->actionFunc = func_80A7A2EC; + if ((this->animIndex == EN_JSO2_TAKE_OUT_BOMB) && (curFrame >= this->animEndFrame)) { + if (this->bomb == NULL) { + this->bomb = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_COL_MAN, this->bombPos.x, + this->bombPos.y, this->bombPos.z, 0, 0, 0, EN_COL_MAN_GAMEPLAY_BOMB); + } else if (this->blowUpFrameCounter >= 10) { + if (this->bomb != NULL) { + this->bomb->world.rot.z = 1; + this->isFadingAway = true; + this->actionFunc = EnJso2_FadeAway; return; } } else { - this->unk104A++; + this->blowUpFrameCounter++; } } - if (this->unk2D0 != NULL) { - this->unk2D0->world.pos.x = this->unk2C4.x; - this->unk2D0->world.pos.y = this->unk2C4.y; - this->unk2D0->world.pos.z = this->unk2C4.z; + if (this->bomb != NULL) { + this->bomb->world.pos.x = this->bombPos.x; + this->bomb->world.pos.y = this->bombPos.y; + this->bomb->world.pos.z = this->bombPos.z; } - CollisionCheck_SetOC(play, &play->colChkCtx, &this->unkEF4.base); + + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); } -void func_80A7A2EC(EnJso2* this, PlayState* play) { - Math_SmoothStepToS(&this->unk366, 0, 1, 0xF, 0x32); +/** + * Slowly reduces the Garo Master's alpha until it almost reaches zero, then kills the Garo Master actor. + */ +void EnJso2_FadeAway(EnJso2* this, PlayState* play) { + Math_SmoothStepToS(&this->alpha, 0, 1, 15, 50); Math_ApproachZeroF(&this->actor.shape.shadowScale, 0.3f, 3.0f); - if (this->unk366 < 2) { + + if (this->alpha < 2) { Actor_Kill(&this->actor); } } -void func_80A7A360(EnJso2* this, PlayState* play) { - s32 var_a3 = false; +void EnJso2_UpdateDamage(EnJso2* this, PlayState* play) { + s32 attackDealsDamage = false; - if ((this->unk284 != 11) && (this->unk284 != 12) && (this->unk284 != 13) && (this->unk284 != 14) && - this->unkEF4.base.acFlags & AT_HIT) { - this->unkEF4.base.acFlags &= ~(AT_HIT); - if ((this->actor.colChkInfo.damageEffect == 1) || (this->actor.colChkInfo.damageEffect == 5)) { + if ((this->action != EN_JSO2_ACTION_DAMAGED) && (this->action != EN_JSO2_ACTION_JUMP_BACK) && + (this->action != EN_JSO2_ACTION_DEAD) && (this->action != EN_JSO2_ACTION_BLOW_UP) && + (this->bodyCollider.base.acFlags & AC_HIT)) { + this->bodyCollider.base.acFlags &= ~AC_HIT; + if ((this->actor.colChkInfo.damageEffect == EN_JSO2_DMGEFF_STUN) || + (this->actor.colChkInfo.damageEffect == EN_JSO2_DMGEFF_ELECTRIC_STUN)) { this->actor.world.rot.x = this->actor.shape.rot.x = 0; - if (((this->unk2A2 != 0xB) && (this->unk2A2 != 0xA)) || (this->unk2A0 == 0)) { + + if (((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) || + (this->drawDmgEffAlpha == 0)) { Actor_PlaySfx(&this->actor, NA_SE_EN_COMMON_FREEZE); - if (this->actor.colChkInfo.damageEffect == 5) { - this->unk2A0 = 40; - this->unk2A2 = 32; + if (this->actor.colChkInfo.damageEffect == EN_JSO2_DMGEFF_ELECTRIC_STUN) { + this->drawDmgEffAlpha = 40; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_ELECTRIC_SPARKS_LARGE; } - Actor_SetColorFilter(&this->actor, 0, 255, 0, 40); - func_80A79524(this); + + Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 40); + EnJso2_SetupStunned(this); } } else { - switch (this->unk284) { - case 2: - case 3: - case 4: + switch (this->action) { + case EN_JSO2_ACTION_UNK_2: + case EN_JSO2_ACTION_CIRCLE_PLAYER: + case EN_JSO2_ACTION_GUARD: this->actor.speed = 0.0f; - func_80A78A70(this); + EnJso2_SetupGuard(this); + attackDealsDamage = false; break; - case 7: - case 9: - case 10: + + case EN_JSO2_ACTION_SLASH: + case EN_JSO2_ACTION_WAIT_AFTER_SLASH: + case EN_JSO2_ACTION_STUNNED: switch (this->actor.colChkInfo.damageEffect) { - case 15: - var_a3 = true; - break; - case 2: - this->unk2A0 = 40; - this->unk2A2 = 0; - var_a3 = true; + case EN_JSO2_DMGEFF_NONE: + attackDealsDamage = true; break; - case 4: - if (((this->unk2A2 != 11) && (this->unk2A2 != 10)) || (this->unk2A0 == 0)) { + case EN_JSO2_DMGEFF_FIRE: + this->drawDmgEffAlpha = 40; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; + attackDealsDamage = true; + break; + + case EN_JSO2_DMGEFF_LIGHT_ORB: + if (((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) || + (this->drawDmgEffAlpha == 0)) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->actor.focus.pos.x, - this->actor.focus.pos.y, this->actor.focus.pos.z, 0, 0, 0, 4); - this->unk2A0 = 20; - this->unk2A2 = 20; - var_a3 = true; + this->actor.focus.pos.y, this->actor.focus.pos.z, 0, 0, 0, + CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS)); + this->drawDmgEffAlpha = 20; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS; + attackDealsDamage = true; } break; - case 3: - if (((this->unk2A2 != 0xB) && (this->unk2A2 != 0xA)) || (this->unk2A0 == 0)) { + case EN_JSO2_DMGEFF_FREEZE: + if (((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) || + (this->drawDmgEffAlpha == 0)) { + attackDealsDamage = false; Actor_ApplyDamage(&this->actor); - this->unk2A0 = 0x50; - this->unk2A2 = 0xB; - this->unk2A4 = 0.0f; - this->unk2A8 = 1.5f; + this->drawDmgEffAlpha = 80; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_SFX; + this->drawDmgEffScale = 0.0f; + this->drawDmgEffFrozenSteamScale = 1.5f; } if (this->actor.colChkInfo.health <= 0) { - func_80A7998C(this, play); + EnJso2_SetupDead(this, play); + attackDealsDamage = false; } else { - func_80A79524(this); + EnJso2_SetupStunned(this); + attackDealsDamage = false; } break; default: break; } + break; + default: break; } - if (var_a3) { + if (attackDealsDamage) { Actor_ApplyDamage(&this->actor); if (this->actor.colChkInfo.health > 0) { - func_80A796BC(this, play); + EnJso2_SetupDamaged(this, play); } else { - func_80A7998C(this, play); + EnJso2_SetupDead(this, play); } } } @@ -1388,278 +1631,302 @@ void func_80A7A360(EnJso2* this, PlayState* play) { } void EnJso2_Update(Actor* thisx, PlayState* play) { + EnJso2* this = THIS; s32 pad; s32 i; - EnJso2* this = (EnJso2*)thisx; - if (this->unk284 != 3) { + if (this->action != EN_JSO2_ACTION_CIRCLE_PLAYER) { SkelAnime_Update(&this->skelAnime); } - DECR(this->unk28A); - DECR(this->unk28E); - DECR(this->unk290); - DECR(this->unk1044); - DECR(this->unk2A0); + DECR(this->attackMovementTimer); + DECR(this->attackTimer); + DECR(this->timer); + DECR(this->cutsceneTimer); + DECR(this->drawDmgEffAlpha); - func_80A7A360(this, play); - Actor_SetScale(&this->actor, this->unk378); + EnJso2_UpdateDamage(this, play); + Actor_SetScale(&this->actor, this->scale); this->actionFunc(this, play); Actor_SetFocus(&this->actor, 80.0f); Actor_MoveWithGravity(&this->actor); - if (this->actor.bgCheckFlags & 1) { - this->actor.world.pos.x += this->unkE58.x; - this->actor.world.pos.z += this->unkE58.z; - Math_ApproachZeroF(&this->unkE58.x, 1.0f, 2.0f); - Math_ApproachZeroF(&this->unkE58.z, 1.0f, 2.0f); + if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { + this->actor.world.pos.x += this->knockbackVelocity.x; + this->actor.world.pos.z += this->knockbackVelocity.z; + Math_ApproachZeroF(&this->knockbackVelocity.x, 1.0f, 2.0f); + Math_ApproachZeroF(&this->knockbackVelocity.z, 1.0f, 2.0f); } - Actor_UpdateBgCheckInfo(play, &this->actor, 35.0f, 60.0f, 60.0f, 0x1D); + Actor_UpdateBgCheckInfo(play, &this->actor, 35.0f, 60.0f, 60.0f, + UPDBGCHECKINFO_FLAG_1 | UPDBGCHECKINFO_FLAG_4 | UPDBGCHECKINFO_FLAG_8 | + UPDBGCHECKINFO_FLAG_10); - if ((this->unk284 == 5) || (this->unk284 == 6) || (this->unk284 == 15) || (this->unk284 == 16)) { - this->unk_38C++; - if (this->unk_38C >= 20) { - this->unk_38C = 0; + if ((this->action == EN_JSO2_ACTION_SPIN_BEFORE_ATTACK) || (this->action == EN_JSO2_ACTION_DASH_ATTACK) || + (this->action == EN_JSO2_ACTION_TELEPORT) || (this->action == EN_JSO2_ACTION_FALL_FROM_TELEPORT)) { + this->afterimageIndex++; + if (this->afterimageIndex >= EN_JSO2_AFTERIMAGE_COUNT) { + this->afterimageIndex = 0; } - if (this->unk_388 < 19) { - this->unk_388++; + if (this->afterimageCount < EN_JSO2_AFTERIMAGE_COUNT - 1) { + this->afterimageCount++; } - Math_Vec3f_Copy(&this->unk_390[this->unk_38C], &this->actor.world.pos); - Math_Vec3s_Copy(&this->unk_480[this->unk_38C], &this->actor.world.rot); - this->unk_390[this->unk_38C].y += 40.0f; + Math_Vec3f_Copy(&this->afterimagePos[this->afterimageIndex], &this->actor.world.pos); + Math_Vec3s_Copy(&this->afterimageRot[this->afterimageIndex], &this->actor.world.rot); + this->afterimagePos[this->afterimageIndex].y += 40.0f; - for (i = 0; i < 20; i++) { - this->unk_4F8[this->unk_38C][i] = this->jointTable[i]; + for (i = 0; i < EN_JSO2_AFTERIMAGE_COUNT; i++) { + this->afterimageJointTable[this->afterimageIndex][i] = this->jointTable[i]; } - } else if (this->unk284 != 0) { - this->unk_388 = 0; + } else if (this->action != EN_JSO2_ACTION_INTRO_CUTSCENE) { + this->afterimageCount = 0; } - if ((this->unk284 != 3) && (this->unk284 != 5) && (this->unk284 != 0xB) && (this->unk284 != 8) && - (this->unk284 != 0xF) && (this->unk284 != 0xC)) { + if ((this->action != EN_JSO2_ACTION_CIRCLE_PLAYER) && (this->action != EN_JSO2_ACTION_SPIN_BEFORE_ATTACK) && + (this->action != EN_JSO2_ACTION_DAMAGED) && (this->action != EN_JSO2_ACTION_SPIN_ATTACK) && + (this->action != EN_JSO2_ACTION_TELEPORT) && (this->action != EN_JSO2_ACTION_JUMP_BACK)) { this->actor.shape.rot.y = this->actor.world.rot.y; } this->actor.shape.rot.x = this->actor.world.rot.x; + Collider_UpdateCylinder(&this->actor, &this->bodyCollider); - Collider_UpdateCylinder(&this->actor, &this->unkEF4); - - if ((this->unk284 != 0) && (this->unk284 != 8) && (this->unk284 != 0xF)) { - CollisionCheck_SetOC(play, &play->colChkCtx, &this->unkEF4.base); - - if ((this->unk284 != 1) && (this->unk284 != 8)) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->unkEF4.base); + if ((this->action != EN_JSO2_ACTION_INTRO_CUTSCENE) && (this->action != EN_JSO2_ACTION_SPIN_ATTACK) && + (this->action != EN_JSO2_ACTION_TELEPORT)) { + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); + if ((this->action != EN_JSO2_ACTION_UNK_1) && (this->action != EN_JSO2_ACTION_SPIN_ATTACK)) { + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); } } - if (((this->unk284 == 7) || (this->unk284 == 16) || (this->unk284 == 6) || (this->unk284 == 8)) && - (this->unk371 == 0) && (this->unk36C == 0)) { - CollisionCheck_SetAT(play, &play->colChkCtx, &this->unkF40.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->unkFC0.base); + + if (((this->action == EN_JSO2_ACTION_SLASH) || (this->action == EN_JSO2_ACTION_FALL_FROM_TELEPORT) || + (this->action == EN_JSO2_ACTION_DASH_ATTACK) || (this->action == EN_JSO2_ACTION_SPIN_ATTACK)) && + !this->slashHitSomething && (this->swordState == EN_JSO2_SWORD_STATE_BOTH_DRAWN)) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->rightSwordCollider.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->leftSwordCollider.base); } } -s32 func_80A7AA48(PlayState* play, s32 arg1, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { +s32 EnJso2_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { EnJso2* this = THIS; - if (this->unk36C == 2) { - if ((arg1 == 4) && (this->unk284 != 14)) { + if (this->swordState == EN_JSO2_SWORD_STATE_NONE_DRAWN) { + if ((limbIndex == GARO_MASTER_LIMB_LEFT_SWORD) && (this->action != EN_JSO2_ACTION_BLOW_UP)) { *dList = NULL; } - if (arg1 == 6) { + + if (limbIndex == GARO_MASTER_LIMB_RIGHT_SWORD) { *dList = NULL; } } - return 0; + + return false; } -void func_80A7AA9C(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { +void EnJso2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + static Vec3f sSwordTipOffset = { 1600.0f, 0.0f, 0.0f }; + static Vec3f sSwordBaseOffset = { 0.0f, 0.0f, 0.0f }; + static Vec3f sSwordTipQuadOffset = { 1700.0f, 0.0f, 0.0f }; + static Vec3f sSwordBaseQuadOffset = { 0.0f, 0.0f, 0.0f }; EnJso2* this = THIS; - Vec3f sp68; - Vec3f sp5C; - Vec3f sp50 = D_80A7B6FC; + Vec3f swordTipPos; + Vec3f swordBasePos; + Vec3f bombOffset = { 0.0f, 0.0f, 0.0f }; - if (limbIndex == 4) { + if (limbIndex == GARO_MASTER_LIMB_LEFT_SWORD) { Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY); - Math_Vec3f_Copy(&this->unkFC0.dim.quad[3], &this->unkFC0.dim.quad[1]); - Math_Vec3f_Copy(&this->unkFC0.dim.quad[2], this->unkFC0.dim.quad); - Matrix_MultVec3f(&D_80A7B720, &this->unkFC0.dim.quad[1]); - Matrix_MultVec3f(&D_80A7B72C, this->unkFC0.dim.quad); - Collider_SetQuadVertices(&this->unkFC0, this->unkFC0.dim.quad, &this->unkFC0.dim.quad[1], - &this->unkFC0.dim.quad[2], &this->unkFC0.dim.quad[3]); - Matrix_MultVec3f(&D_80A7B708, &sp68); - Matrix_MultVec3f(&D_80A7B714, &sp5C); + Math_Vec3f_Copy(&this->leftSwordCollider.dim.quad[3], &this->leftSwordCollider.dim.quad[1]); + Math_Vec3f_Copy(&this->leftSwordCollider.dim.quad[2], &this->leftSwordCollider.dim.quad[0]); + Matrix_MultVec3f(&sSwordTipQuadOffset, &this->leftSwordCollider.dim.quad[1]); + Matrix_MultVec3f(&sSwordBaseQuadOffset, &this->leftSwordCollider.dim.quad[0]); + Collider_SetQuadVertices(&this->leftSwordCollider, &this->leftSwordCollider.dim.quad[0], + &this->leftSwordCollider.dim.quad[1], &this->leftSwordCollider.dim.quad[2], + &this->leftSwordCollider.dim.quad[3]); + Matrix_MultVec3f(&sSwordTipOffset, &swordTipPos); + Matrix_MultVec3f(&sSwordBaseOffset, &swordBasePos); - if ((this->unk284 == 7) || (this->unk284 == 9)) { - Matrix_MultVec3f(&D_80A7B5A0, &this->unk_E64[0]); - Matrix_MultVec3f(&D_80A7B5AC, &this->unk_E64[1]); - Matrix_MultVec3f(&D_80A7B5B8, &this->unk_E64[2]); + if ((this->action == EN_JSO2_ACTION_SLASH) || (this->action == EN_JSO2_ACTION_WAIT_AFTER_SLASH)) { + Matrix_MultVec3f(&sSlashFlameOffsets[0], &this->flamePos[0]); + Matrix_MultVec3f(&sSlashFlameOffsets[1], &this->flamePos[1]); + Matrix_MultVec3f(&sSlashFlameOffsets[2], &this->flamePos[2]); } else { - Matrix_MultVec3f(&D_80A7B558, &this->unk_E64[0]); - Matrix_MultVec3f(&D_80A7B564, &this->unk_E64[1]); - Matrix_MultVec3f(&D_80A7B570, &this->unk_E64[2]); + Matrix_MultVec3f(&sFlameOffsets[0], &this->flamePos[0]); + Matrix_MultVec3f(&sFlameOffsets[1], &this->flamePos[1]); + Matrix_MultVec3f(&sFlameOffsets[2], &this->flamePos[2]); } - if (((this->unk284 == 7) || (this->unk284 == 8) || (this->unk284 == 6) || (this->unk284 == 16)) && - (this->unk368 == 0)) { - EffectBlure_AddVertex(Effect_GetByIndex(this->unk_384), &sp68, &sp5C); - } else if (this->unk368 == 1) { - EffectBlure_AddSpace(Effect_GetByIndex(this->unk_384)); + if (((this->action == EN_JSO2_ACTION_SLASH) || (this->action == EN_JSO2_ACTION_SPIN_ATTACK) || + (this->action == EN_JSO2_ACTION_DASH_ATTACK) || (this->action == EN_JSO2_ACTION_FALL_FROM_TELEPORT)) && + !this->disableBlure) { + EffectBlure_AddVertex(Effect_GetByIndex(this->leftSwordBlureIndex), &swordTipPos, &swordBasePos); + } else if (this->disableBlure == true) { + EffectBlure_AddSpace(Effect_GetByIndex(this->leftSwordBlureIndex)); } } - if (limbIndex == 6) { + if (limbIndex == GARO_MASTER_LIMB_RIGHT_SWORD) { Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY); - Math_Vec3f_Copy(&this->unkF40.dim.quad[3], &this->unkF40.dim.quad[1]); - Math_Vec3f_Copy(&this->unkF40.dim.quad[2], this->unkF40.dim.quad); - Matrix_MultVec3f(&D_80A7B720, &this->unkF40.dim.quad[1]); - Matrix_MultVec3f(&D_80A7B72C, this->unkF40.dim.quad); - Collider_SetQuadVertices(&this->unkF40, this->unkF40.dim.quad, &this->unkF40.dim.quad[1], - &this->unkF40.dim.quad[2], &this->unkF40.dim.quad[3]); - Matrix_MultVec3f(&D_80A7B708, &sp68); - Matrix_MultVec3f(&D_80A7B714, &sp5C); + Math_Vec3f_Copy(&this->rightSwordCollider.dim.quad[3], &this->rightSwordCollider.dim.quad[1]); + Math_Vec3f_Copy(&this->rightSwordCollider.dim.quad[2], &this->rightSwordCollider.dim.quad[0]); + Matrix_MultVec3f(&sSwordTipQuadOffset, &this->rightSwordCollider.dim.quad[1]); + Matrix_MultVec3f(&sSwordBaseQuadOffset, &this->rightSwordCollider.dim.quad[0]); + Collider_SetQuadVertices(&this->rightSwordCollider, &this->rightSwordCollider.dim.quad[0], + &this->rightSwordCollider.dim.quad[1], &this->rightSwordCollider.dim.quad[2], + &this->rightSwordCollider.dim.quad[3]); + Matrix_MultVec3f(&sSwordTipOffset, &swordTipPos); + Matrix_MultVec3f(&sSwordBaseOffset, &swordBasePos); - if ((this->unk284 == 7) || (this->unk284 == 9)) { - Matrix_MultVec3f(&D_80A7B5C4, &this->unk_E64[3]); - Matrix_MultVec3f(&D_80A7B5D0, &this->unk_E64[4]); - Matrix_MultVec3f(&D_80A7B5DC, &this->unk_E64[5]); + if ((this->action == EN_JSO2_ACTION_SLASH) || (this->action == EN_JSO2_ACTION_WAIT_AFTER_SLASH)) { + Matrix_MultVec3f(&sSlashFlameOffsets[3], &this->flamePos[3]); + Matrix_MultVec3f(&sSlashFlameOffsets[4], &this->flamePos[4]); + Matrix_MultVec3f(&sSlashFlameOffsets[5], &this->flamePos[5]); } else { - Matrix_MultVec3f(&D_80A7B57C, &this->unk_E64[3]); - Matrix_MultVec3f(&D_80A7B588, &this->unk_E64[4]); - Matrix_MultVec3f(&D_80A7B594, &this->unk_E64[5]); + Matrix_MultVec3f(&sFlameOffsets[3], &this->flamePos[3]); + Matrix_MultVec3f(&sFlameOffsets[4], &this->flamePos[4]); + Matrix_MultVec3f(&sFlameOffsets[5], &this->flamePos[5]); } - if (((this->unk284 == 7) || (this->unk284 == 8) || (this->unk284 == 6) || (this->unk284 == 16)) && - (this->unk368 == 0)) { - EffectBlure_AddVertex(Effect_GetByIndex(this->unk_380), &sp68, &sp5C); - } else if (this->unk368 == 1) { - EffectBlure_AddSpace(Effect_GetByIndex(this->unk_380)); - this->unk368 = 0; + if (((this->action == EN_JSO2_ACTION_SLASH) || (this->action == EN_JSO2_ACTION_SPIN_ATTACK) || + (this->action == EN_JSO2_ACTION_DASH_ATTACK) || (this->action == EN_JSO2_ACTION_FALL_FROM_TELEPORT)) && + !this->disableBlure) { + EffectBlure_AddVertex(Effect_GetByIndex(this->rightSwordBlureIndex), &swordTipPos, &swordBasePos); + } else if (this->disableBlure == true) { + EffectBlure_AddSpace(Effect_GetByIndex(this->rightSwordBlureIndex)); + this->disableBlure = false; } } - if (limbIndex == 10) { - sp50.x = 900.0f; - sp50.y = 50.0f; - sp50.z = -330.0f; - Matrix_MultVec3f(&sp50, &this->unk2C4); + if (limbIndex == GARO_MASTER_LIMB_ROBE_RIGHT) { + bombOffset.x = 900.0f; + bombOffset.y = 50.0f; + bombOffset.z = -330.0f; + Matrix_MultVec3f(&bombOffset, &this->bombPos); } - if ((this->unk284 != 14) && ((limbIndex == 4) || (limbIndex == 6) || (limbIndex == 7) || (limbIndex == 8) || - (limbIndex == 9) || (limbIndex == 10) || (limbIndex == 11) || (limbIndex == 12) || - (limbIndex == 14) || (limbIndex == 16) || (limbIndex == 17) || (limbIndex == 19))) { - - Matrix_MultZero(&this->unk2D4[this->unk364]); - - if (++this->unk364 >= 12) { - this->unk364 = 0; + if ((this->action != EN_JSO2_ACTION_BLOW_UP) && + ((limbIndex == GARO_MASTER_LIMB_LEFT_SWORD) || (limbIndex == GARO_MASTER_LIMB_RIGHT_SWORD) || + (limbIndex == GARO_MASTER_LIMB_ROBE_TOP) || (limbIndex == GARO_MASTER_LIMB_ROBE_BACK) || + (limbIndex == GARO_MASTER_LIMB_ROBE_LEFT) || (limbIndex == GARO_MASTER_LIMB_ROBE_RIGHT) || + (limbIndex == GARO_MASTER_LIMB_ROBE_FRONT) || (limbIndex == GARO_MASTER_LIMB_HEAD) || + (limbIndex == GARO_MASTER_LIMB_RIGHT_THIGH) || (limbIndex == GARO_MASTER_LIMB_RIGHT_FOOT) || + (limbIndex == GARO_MASTER_LIMB_LEFT_THIGH) || (limbIndex == GARO_MASTER_LIMB_LEFT_FOOT))) { + Matrix_MultZero(&this->bodyPartsPos[this->bodyPartIndex]); + this->bodyPartIndex++; + if (this->bodyPartIndex >= EN_JSO2_BODYPART_MAX) { + this->bodyPartIndex = 0; } } - if (limbIndex == 12) { + if (limbIndex == GARO_MASTER_LIMB_HEAD) { Matrix_Push(); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); OPEN_DISPS(play->state.gfxCtx); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - //! FAKE: - if (1) {} - - gSPDisplayList(POLY_OPA_DISP++, &gGaroMasterEyesDL); - Matrix_Pop(); + gSPDisplayList(POLY_OPA_DISP++, gGaroMasterEyesDL); CLOSE_DISPS(play->state.gfxCtx); + + Matrix_Pop(); } } void EnJso2_Draw(Actor* thisx, PlayState* play2) { + static s16 sAfterimageAlpha[EN_JSO2_AFTERIMAGE_COUNT] = { + 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, + }; EnJso2* this = THIS; PlayState* play = play2; - s32 i; - s32 pad; OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx); Gfx_SetupDL25_Opa(play->state.gfxCtx); - if ((this->unk2B4) == 0) { + if (!this->isFadingAway) { Scene_SetRenderModeXlu(play, 0, 1); SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, - func_80A7AA48, func_80A7AA9C, &this->actor); + EnJso2_OverrideLimbDraw, EnJso2_PostLimbDraw, &this->actor); } else { gDPPipeSync(POLY_XLU_DISP++); - gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, this->unk366); + gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, this->alpha); Scene_SetRenderModeXlu(play, 1, 2); POLY_XLU_DISP = SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL, NULL, &this->actor, POLY_XLU_DISP); } - if (this->unk_388 > 0) { - s32 index = this->unk_38C; + if (this->afterimageCount > 0) { + s32 i; + s32 index = this->afterimageIndex; - for (i = 0; i < this->unk_388; i++) { - if (D_80A7B738[i] == 0) { + for (i = 0; i < this->afterimageCount; i++) { + if (sAfterimageAlpha[i] == 0) { continue; } - Matrix_Translate(this->unk_390[index].x, this->unk_390[index].y, this->unk_390[index].z, MTXMODE_NEW); - Matrix_Scale(this->unk378, this->unk378, this->unk378, MTXMODE_APPLY); - Matrix_RotateYS(this->unk_480[index].y, MTXMODE_APPLY); - Matrix_RotateXS(this->unk_480[index].x, MTXMODE_APPLY); - Matrix_RotateZS(this->unk_480[index].z, MTXMODE_APPLY); + + Matrix_Translate(this->afterimagePos[index].x, this->afterimagePos[index].y, this->afterimagePos[index].z, + MTXMODE_NEW); + Matrix_Scale(this->scale, this->scale, this->scale, MTXMODE_APPLY); + Matrix_RotateYS(this->afterimageRot[index].y, MTXMODE_APPLY); + Matrix_RotateXS(this->afterimageRot[index].x, MTXMODE_APPLY); + Matrix_RotateZS(this->afterimageRot[index].z, MTXMODE_APPLY); + gDPPipeSync(POLY_XLU_DISP++); - gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, D_80A7B738[i]); + gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, sAfterimageAlpha[i]); Scene_SetRenderModeXlu(play, 1, 2); - POLY_XLU_DISP = SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->unk_4F8[index], + POLY_XLU_DISP = SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->afterimageJointTable[index], this->skelAnime.dListCount, NULL, NULL, &this->actor, POLY_XLU_DISP); + index--; if (index < 0) { - index = 19; + index = EN_JSO2_AFTERIMAGE_COUNT - 1; } } } - if (((this->unk284 < 15) && (this->unk36C == 0)) && - (((this->unk2A2 != 11) && (this->unk2A2 != 10)) || - (((this->unk2A2 == 11) || (this->unk2A2 == 10)) && (this->unk2A0 == 0)))) { - for (i = 0; i < 6; i++) { + if ((this->action < EN_JSO2_ACTION_TELEPORT) && (this->swordState == EN_JSO2_SWORD_STATE_BOTH_DRAWN) && + (((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) || + (((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) && + (this->drawDmgEffAlpha == 0)))) { + s32 i; + + for (i = 0; i < EN_JSO2_FLAME_COUNT; i++) { Matrix_Push(); - Matrix_Translate(this->unk_E64[i].x, this->unk_E64[i].y, this->unk_E64[i].z, MTXMODE_NEW); - Matrix_Scale(this->unk_EAC[i].x, this->unk_EAC[i].y, this->unk_EAC[i].z, MTXMODE_APPLY); - + Matrix_Translate(this->flamePos[i].x, this->flamePos[i].y, this->flamePos[i].z, MTXMODE_NEW); + Matrix_Scale(this->flameScale[i].x, this->flameScale[i].y, this->flameScale[i].z, MTXMODE_APPLY); gSPSegment(POLY_XLU_DISP++, 0x08, - Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, 0, 32, 64, 1, 0, - ((this->unk_38E * 10) - (play->state.frames * 20)) & 0x1FF, 32, 128)); + Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, 0, 0, 32, 64, 1, 0, + ((this->flameScroll * 10) - (play->state.frames * 20)) & 0x1FF, 32, 128)); gDPPipeSync(POLY_XLU_DISP++); - gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 255, 170, 255); - gDPSetEnvColor(POLY_XLU_DISP++, 255, 50, 0, 255); - Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); - gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, gEffFire1DL); Matrix_Pop(); } } - if (this->unk2A0 != 0) { - f32 temp_fv1 = this->unk2A0 * 0.05f; + if (this->drawDmgEffAlpha != 0) { + f32 drawDmgEffAlpha = this->drawDmgEffAlpha * 0.05f; - if ((this->unk2A2 == 0xB) || (this->unk2A2 == 0xA)) { - this->unk2A4 += 0.3f; - if (this->unk2A4 > 0.5f) { - this->unk2A4 = 0.5f; + if ((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) { + this->drawDmgEffScale += 0.3f; + if (this->drawDmgEffScale > 0.5f) { + this->drawDmgEffScale = 0.5f; } - Math_ApproachF(&this->unk2A8, this->unk2A4, 0.1f, 0.04f); + + Math_ApproachF(&this->drawDmgEffFrozenSteamScale, this->drawDmgEffScale, 0.1f, 0.04f); } - Actor_DrawDamageEffects(play, &this->actor, this->unk2D4, this->unk_2B0, this->unk2A4, this->unk2A8, temp_fv1, - this->unk2A2); + + Actor_DrawDamageEffects(play, &this->actor, this->bodyPartsPos, this->bodyPartsCount, this->drawDmgEffScale, + this->drawDmgEffFrozenSteamScale, drawDmgEffAlpha, this->drawDmgEffType); } CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Jso2/z_en_jso2.h b/src/overlays/actors/ovl_En_Jso2/z_en_jso2.h index bfc385cbd..cac660add 100644 --- a/src/overlays/actors/ovl_En_Jso2/z_en_jso2.h +++ b/src/overlays/actors/ovl_En_Jso2/z_en_jso2.h @@ -2,78 +2,109 @@ #define Z_EN_JSO2_H #include "global.h" +#include "assets/objects/object_jso/object_jso.h" struct EnJso2; +#define EN_JSO2_GET_TYPE(thisx) ((thisx)->params) + +#define EN_JSO2_AFTERIMAGE_COUNT 20 +#define EN_JSO2_FLAME_COUNT 6 + typedef void (*EnJso2ActionFunc)(struct EnJso2*, PlayState*); +typedef enum EnJso2Type { + // This type is exclusively used by the Garo Master in Stone Tower Temple who guards the Light Arrow. + // It has an intro and death cutscene, and the intro cutscene uses many hardcoded coordinates which + // assume the Garo Master is in the Light Arrow room. + /* 0 */ EN_JSO2_TYPE_LIGHT_ARROW_ROOM, + + // This type is used everywhere outside of Stone Tower Temple, and it lacks an intro or death cutscene. + /* 1 */ EN_JSO2_TYPE_NORMAL +} EnJso2Type; + +typedef enum EnJso2BodyPart { + /* 0 */ EN_JSO2_BODYPART_LEFT_SWORD, + /* 1 */ EN_JSO2_BODYPART_RIGHT_SWORD, + /* 2 */ EN_JSO2_BODYPART_ROBE_TOP, + /* 3 */ EN_JSO2_BODYPART_ROBE_BACK, + /* 4 */ EN_JSO2_BODYPART_ROBE_LEFT, + /* 5 */ EN_JSO2_BODYPART_ROBE_RIGHT, + /* 6 */ EN_JSO2_BODYPART_ROBE_FRONT, + /* 7 */ EN_JSO2_BODYPART_HEAD, + /* 8 */ EN_JSO2_BODYPART_RIGHT_THIGH, + /* 9 */ EN_JSO2_BODYPART_RIGHT_FOOT, + /* 10 */ EN_JSO2_BODYPART_LEFT_THIGH, + /* 11 */ EN_JSO2_BODYPART_LEFT_FOOT, + /* 12 */ EN_JSO2_BODYPART_MAX +} EnJso2BodyPart; + typedef struct EnJso2 { /* 0x0000 */ Actor actor; /* 0x0144 */ SkelAnime skelAnime; - /* 0x0188 */ Vec3s jointTable[20]; - /* 0x0200 */ Vec3s morphTable[20]; + /* 0x0188 */ Vec3s jointTable[GARO_MASTER_LIMB_MAX]; + /* 0x0200 */ Vec3s morphTable[GARO_MASTER_LIMB_MAX]; /* 0x0278 */ EnJso2ActionFunc actionFunc; - /* 0x027C */ char unk_27C[0x8]; - /* 0x0284 */ s16 unk284; - /* 0x0286 */ s16 unk286; - /* 0x0288 */ s16 unk288; - /* 0x028A */ s16 unk28A; - /* 0x028C */ char unk_28C[0x2]; - /* 0x028E */ s16 unk28E; - /* 0x0290 */ s16 unk290; - /* 0x0292 */ char unk_292[0x2]; - /* 0x0294 */ f32 unk294; - /* 0x0298 */ f32 unk298; - /* 0x029C */ s32 unk29C; - /* 0x02A0 */ s16 unk2A0; - /* 0x02A2 */ s16 unk2A2; - /* 0x02A4 */ f32 unk2A4; - /* 0x02A8 */ f32 unk2A8; - /* 0x02AC */ f32 unk_2AC; - /* 0x02B0 */ s16 unk_2B0; - /* 0x02B2 */ char pad_2B2[0x2]; - /* 0x02B4 */ s32 unk2B4; - /* 0x02B6 */ Vec3f unk_2B8; - /* 0x02C4 */ Vec3f unk2C4; - /* 0x02D0 */ Actor* unk2D0; - /* 0x02D4 */ Vec3f unk2D4[12]; - /* 0x0364 */ s16 unk364; - /* 0x0366 */ s16 unk366; - /* 0x0368 */ u8 unk368; - /* 0x0369 */ char unk_369[0x3]; - /* 0x036C */ s32 unk36C; - /* 0x0370 */ s8 unk370; - /* 0x0371 */ u8 unk371; - /* 0x0372 */ char unk_372[0x2]; - /* 0x0374 */ f32 unk374; - /* 0x0378 */ f32 unk378; - /* 0x037C */ char unk_37C[0x4]; - /* 0x0380 */ s32 unk_380; - /* 0x0384 */ s32 unk_384; - /* 0x0388 */ s32 unk_388; - /* 0x38C */ s16 unk_38C; - /* 0x38E */ s16 unk_38E; - /* 0x390 */ Vec3f unk_390[20]; - /* 0x480 */ Vec3s unk_480[20]; - /* 0x4F8 */ Vec3s unk_4F8[20][20]; - /* 0x0E58 */ Vec3f unkE58; - /* 0x0E64 */ Vec3f unk_E64[6]; - /* 0x0EAC */ Vec3f unk_EAC[6]; - /* 0x0EF4 */ ColliderCylinder unkEF4; - /* 0x0F40 */ ColliderQuad unkF40; - /* 0x0FC0 */ ColliderQuad unkFC0; - /* 0x1040 */ s32 unk1040; - /* 0x1044 */ s16 unk1044; - /* 0x1046 */ s16 unk1046; - /* 0x1048 */ s16 unk1048; - /* 0x104A */ s16 unk104A; - /* 0x104C */ f32 unk104C; - /* 0x1050 */ f32 unk1050; - /* 0x1054 */ Vec3f unk1054; - /* 0x1060 */ Vec3f unk1060; - /* 0x106C */ Vec3f unk106C; - /* 0x1078 */ Vec3f unk1078; - /* 0x1084 */ Vec3f unk1084; + /* 0x027C */ struct_80122744_arg1 overrideInputEntry; + /* 0x0284 */ s16 action; + /* 0x0286 */ s16 circlingAngle; + /* 0x0288 */ s16 circlingAngularVelocity; + /* 0x028A */ s16 attackMovementTimer; + /* 0x028C */ UNK_TYPE1 unk_28C[2]; + /* 0x028E */ s16 attackTimer; + /* 0x0290 */ s16 timer; + /* 0x0294 */ f32 subCamMaxVelocityFrac; + /* 0x0298 */ f32 subCamVelocity; + /* 0x029C */ s32 type; + /* 0x02A0 */ s16 drawDmgEffAlpha; + /* 0x02A2 */ s16 drawDmgEffType; + /* 0x02A4 */ f32 drawDmgEffScale; + /* 0x02A8 */ f32 drawDmgEffFrozenSteamScale; + /* 0x02AC */ UNK_TYPE1 unk_2AC[4]; + /* 0x02B0 */ s16 bodyPartsCount; + /* 0x02B4 */ s32 isFadingAway; + /* 0x02B8 */ Vec3f baseSubCamEye; + /* 0x02C4 */ Vec3f bombPos; + /* 0x02D0 */ Actor* bomb; + /* 0x02D4 */ Vec3f bodyPartsPos[EN_JSO2_BODYPART_MAX]; + /* 0x0364 */ s16 bodyPartIndex; + /* 0x0366 */ s16 alpha; + /* 0x0368 */ u8 disableBlure; + /* 0x036C */ s32 swordState; + /* 0x0370 */ u8 isTeleporting; // set, but never checked + /* 0x0371 */ u8 slashHitSomething; + /* 0x0374 */ f32 animEndFrame; + /* 0x0378 */ f32 scale; + /* 0x037C */ UNK_TYPE1 unk_37C[4]; + /* 0x0380 */ s32 rightSwordBlureIndex; + /* 0x0384 */ s32 leftSwordBlureIndex; + /* 0x0388 */ s32 afterimageCount; + /* 0x038C */ s16 afterimageIndex; + /* 0x038E */ s16 flameScroll; + /* 0x0390 */ Vec3f afterimagePos[EN_JSO2_AFTERIMAGE_COUNT]; + /* 0x0480 */ Vec3s afterimageRot[EN_JSO2_AFTERIMAGE_COUNT]; + /* 0x04F8 */ Vec3s afterimageJointTable[EN_JSO2_AFTERIMAGE_COUNT][GARO_MASTER_LIMB_MAX]; + /* 0x0E58 */ Vec3f knockbackVelocity; // Adds a little push backwards when the Garo Master is bounced off the player's shield, damaged, or stunned + /* 0x0E64 */ Vec3f flamePos[EN_JSO2_FLAME_COUNT]; + /* 0x0EAC */ Vec3f flameScale[EN_JSO2_FLAME_COUNT]; + /* 0x0EF4 */ ColliderCylinder bodyCollider; + /* 0x0F40 */ ColliderQuad rightSwordCollider; + /* 0x0FC0 */ ColliderQuad leftSwordCollider; + /* 0x1040 */ s32 animIndex; + /* 0x1044 */ s16 cutsceneTimer; + /* 0x1046 */ union { + s16 cutsceneState; // exclusively used by the EN_JSO2_TYPE_LIGHT_ARROW_ROOM type + s16 appearState; // exclusively used by the EN_JSO2_TYPE_NORMAL type + }; + /* 0x1048 */ s16 subCamId; + /* 0x104A */ s16 blowUpFrameCounter; + /* 0x104C */ f32 subCamFov; + /* 0x1050 */ f32 subCamFovNext; + /* 0x1054 */ Vec3f subCamEye; + /* 0x1060 */ Vec3f subCamAt; + /* 0x106C */ Vec3f unk_106C; // unused, type inferred from surrounding members + /* 0x1078 */ Vec3f subCamEyeNext; + /* 0x1084 */ Vec3f subCamAtNext; } EnJso2; // size = 0x1090 #endif // Z_EN_JSO2_H diff --git a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c index 6dff9c532..febdaed83 100644 --- a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c +++ b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c @@ -481,7 +481,7 @@ void func_80B85FA8(EnKaizoku* this, PlayState* play) { } CutsceneManager_StartWithPlayerCs(this->csId, &this->picto.actor); - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_21); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_21); this->subCamId = CutsceneManager_GetCurrentSubCamId(this->picto.actor.csId); this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; @@ -538,7 +538,7 @@ void func_80B85FA8(EnKaizoku* this, PlayState* play) { this->unk_2D8 = 0; this->picto.actor.world.pos.y = this->picto.actor.floorHeight; this->picto.actor.velocity.y = 0.0f; - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_4); Actor_SpawnFloorDustRing(play, &this->picto.actor, &this->leftFootPos, 3.0f, 2, 2.0f, 0, 0, 0); Actor_SpawnFloorDustRing(play, &this->picto.actor, &this->rightFootPos, 3.0f, 2, 2.0f, 0, 0, 0); Actor_PlaySfx(&this->picto.actor, NA_SE_EN_PIRATE_ONGND); @@ -609,7 +609,7 @@ void func_80B85FA8(EnKaizoku* this, PlayState* play) { case 7: if (this->unk_598 == 0) { - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_END); CutsceneManager_Stop(this->csId); this->unk_59C = 0; this->subCamId = SUB_CAM_ID_DONE; @@ -674,7 +674,7 @@ void func_80B86804(EnKaizoku* this, PlayState* play) { CutsceneManager_StartWithPlayerCs(this->csId, &this->picto.actor); } - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_96); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_96); this->subCamId = CutsceneManager_GetCurrentSubCamId(this->picto.actor.csId); this->unk_2B2 = 30; this->picto.actor.flags &= ~ACTOR_FLAG_TARGETABLE; @@ -724,7 +724,7 @@ void func_80B868B8(EnKaizoku* this, PlayState* play) { case 2: if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { Message_CloseTextbox(play); - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_END); CutsceneManager_Stop(this->csId); this->subCamId = SUB_CAM_ID_DONE; play->nextEntrance = play->setupExitList[this->exitIndex]; @@ -799,7 +799,7 @@ void func_80B86B74(EnKaizoku* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { Message_CloseTextbox(play); EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_18); - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_133); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_133); this->unk_5A0 = 0; this->unk_598 = 0; this->unk_59C++; @@ -865,7 +865,7 @@ void func_80B86B74(EnKaizoku* this, PlayState* play) { play->envCtx.fillScreen = false; this->unk_59C = 0; this->subCamId = SUB_CAM_ID_DONE; - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_END); CutsceneManager_Stop(this->csId); if (this->switchFlag > SWITCH_FLAG_NONE) { Flags_SetSwitch(play, this->switchFlag); @@ -1681,7 +1681,7 @@ void func_80B8960C(EnKaizoku* this, PlayState* play) { } this->picto.actor.speed = 0.0f; this->unk_2D8 = 1; - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_123); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_123); Enemy_StartFinishingBlow(play, &this->picto.actor); Actor_PlaySfx(&this->picto.actor, NA_SE_EN_PIRATE_DEAD); this->picto.actor.flags |= ACTOR_FLAG_CANT_LOCK_ON; diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 2a0f05201..4e2e27cf6 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -425,7 +425,7 @@ void EnKakasi_RegularDialogue(EnKakasi* this, PlayState* play) { } if ((this->unkState1A8 == 2) && (this->unkState196 == 2)) { - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_73); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_73); this->unkState1A8 = 0; } @@ -434,7 +434,7 @@ void EnKakasi_RegularDialogue(EnKakasi* this, PlayState* play) { if (this->talkState == TEXT_STATE_5) { // bad song input if ((this->unkState196 == 2) && (this->picto.actor.textId == 0x1647)) { - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_END); } // after timeskip @@ -461,7 +461,7 @@ void EnKakasi_RegularDialogue(EnKakasi* this, PlayState* play) { } else if ((this->picto.actor.textId == 0x165D) || (this->picto.actor.textId == 0x165F) || (this->picto.actor.textId == 0x1660) || (this->picto.actor.textId == 0x1652)) { - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_4); if (CutsceneManager_GetCurrentCsId() == CS_ID_GLOBAL_TALK) { CutsceneManager_Stop(CS_ID_GLOBAL_TALK); CutsceneManager_Queue(this->csIdList[0]); @@ -690,7 +690,7 @@ void EnKakasi_PostSongLearnDialogue(EnKakasi* this, PlayState* play) { if (this->unk190 == 0) { Message_CloseTextbox(play); - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_86); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_86); this->picto.actor.textId = 0x1648; Message_StartTextbox(play, (this->picto.actor.textId), &this->picto.actor); this->unkState1A8 = 0; @@ -726,7 +726,7 @@ void EnKakasi_PostSongLearnDialogue(EnKakasi* this, PlayState* play) { Math_Vec3f_Copy(&this->unk22C, &this->picto.actor.home.pos); CutsceneManager_StartWithPlayerCs(this->csIdList[0], &this->picto.actor); this->subCamId = CutsceneManager_GetCurrentSubCamId(this->picto.actor.csId); - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_86); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_86); this->unkState1A8 = 1; } @@ -759,7 +759,7 @@ void EnKakasi_PostSongLearnDialogue(EnKakasi* this, PlayState* play) { } if (this->picto.actor.textId == 0x1648) { - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_WAIT); this->picto.actor.textId = 0x1649; if (this->animIndex != ENKAKASI_ANIM_ARMS_CROSSED_ROCKING) { EnKakasi_ChangeAnim(this, ENKAKASI_ANIM_ARMS_CROSSED_ROCKING); @@ -936,7 +936,7 @@ void EnKakasi_DancingNightAway(EnKakasi* this, PlayState* play) { this->unk190++; this->unk204 = 0xA; if (this->unk190 == 0xE) { - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_73); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_73); Play_DisableMotionBlur(); this->unk204 = 0x14; } @@ -1036,7 +1036,7 @@ void EnKakasi_DiggingAway(EnKakasi* this, PlayState* play) { Math_ApproachF(&this->picto.actor.shape.yOffset, -6000.0f, 0.5f, 200.0f); if (fabsf(this->picto.actor.shape.yOffset + 6000.0f) < 10.0f) { SET_WEEKEVENTREG(WEEKEVENTREG_79_08); - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_END); CutsceneManager_Stop(this->csIdList[0]); this->aboveGroundStatus = ENKAKASI_ABOVE_GROUND_TYPE; this->songSummonDist = 80.0f; diff --git a/src/overlays/actors/ovl_En_Knight/z_en_knight.c b/src/overlays/actors/ovl_En_Knight/z_en_knight.c index 639024a7c..80182b13c 100644 --- a/src/overlays/actors/ovl_En_Knight/z_en_knight.c +++ b/src/overlays/actors/ovl_En_Knight/z_en_knight.c @@ -2059,7 +2059,7 @@ void func_809B71DC(EnKnight* this, PlayState* play) { break; } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); this->unk_68A = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, 0, 1); Play_ChangeCameraStatus(play, this->unk_68A, 7); @@ -2128,7 +2128,7 @@ void func_809B71DC(EnKnight* this, PlayState* play) { func_80169AFC(play, this->unk_68A, 0); this->unk_68A = 0; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, 6); D_809BDB00 = 1; } break; @@ -2208,7 +2208,7 @@ void func_809B7950(EnKnight* this, PlayState* play) { case 0: if (CutsceneManager_GetCurrentCsId() == -1) { Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); this->unk_68A = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, 0, 1); Play_ChangeCameraStatus(play, this->unk_68A, 7); @@ -2336,7 +2336,7 @@ void func_809B7950(EnKnight* this, PlayState* play) { Animation_MorphToLoop(&this->unk194, &D_0600A88C, 0.0f); } if (this->unk684 == (u32)(BREG(18) + 0xAA)) { - func_800B7298(play, &this->actor, 4); + Player_SetCsActionWithHaltedActors(play, &this->actor, 4); } if ((this->unk684 >= 0x9D) && (this->unk684 < 0xDD)) { if (!(this->unk684 & 1)) { @@ -2385,7 +2385,7 @@ void func_809B7950(EnKnight* this, PlayState* play) { func_80169AFC(play, this->unk_68A, 0); this->unk_68A = 0; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, 6); D_809BDB00 = 5; } break; @@ -2421,7 +2421,7 @@ void func_809B8458(EnKnight* this, PlayState* play) { } Cutscene_StartManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 7); + Player_SetCsActionWithHaltedActors(play, &this->actor, 7); this->unk_68A = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, 0, 1); Play_ChangeCameraStatus(play, this->unk_68A, 7); @@ -2454,7 +2454,7 @@ void func_809B8458(EnKnight* this, PlayState* play) { } if (this->unk684 == (u32)(BREG(22) + 0x1E)) { - func_800B7298(play, &this->actor, 0x15); + Player_SetCsActionWithHaltedActors(play, &this->actor, 0x15); } if (this->unk684 == (u32)(BREG(22) + 0x32)) { @@ -2478,7 +2478,7 @@ void func_809B8458(EnKnight* this, PlayState* play) { this->unk_144 = 0x8000; if (this->unk684 == 10) { - func_800B7298(play, &this->actor, 4); + Player_SetCsActionWithHaltedActors(play, &this->actor, 4); } if (this->unk684 >= 10) { @@ -2518,7 +2518,7 @@ void func_809B8458(EnKnight* this, PlayState* play) { this->unk688 = 3; this->unk684 = 0; - func_800B7298(play, &this->actor, 0x85); + Player_SetCsActionWithHaltedActors(play, &this->actor, 0x85); /* Fallthrough */ case 3: Math_ApproachS(&this->unk6AC, 0x4000, 2, 0x1000); @@ -2734,7 +2734,7 @@ void func_809B8458(EnKnight* this, PlayState* play) { func_80169AFC(play, this->unk_68A, 0); this->unk_68A = 0; Cutscene_StopManual(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + Player_SetCsActionWithHaltedActors(play, &this->actor, 6); D_809BDB00 = 1; this->unk_153 = 2; Message_CloseTextbox(play); diff --git a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c index bc82301c5..88c259312 100644 --- a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c +++ b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c @@ -84,26 +84,27 @@ typedef enum { /* 19 */ ENLIFTNUTS_ANIM_MAX } EnLiftNutsAnimation; -static AnimationInfo sAnimations[ENLIFTNUTS_ANIM_MAX] = { - { &gBusinessScrubStandingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - { &gBusinessScrubWalkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - { &gBusinessScrubRiseUpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, - { &gBusinessScrubBurrowAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, - { &gBusinessScrubExcitedStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, - { &gBusinessScrubExcitedLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - { &gBusinessScrubExcitedEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, - { &gBusinessScrubTakeOffHatAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, - { &gBusinessScrubFlyStartAnim, 0.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, - { &gBusinessScrubFlyLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - { &gBusinessScrubShockedStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -2.0f }, +static AnimationInfo sAnimationInfo[ENLIFTNUTS_ANIM_MAX] = { + { &gBusinessScrubStandingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_STANDING + { &gBusinessScrubWalkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_WALK + { &gBusinessScrubRiseUpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_RISE_UP + { &gBusinessScrubBurrowAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_BURROW_LONG + { &gBusinessScrubExcitedStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // ENLIFTNUTS_ANIM_EXCITED_START + { &gBusinessScrubExcitedLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_EXCITED_LOOP + { &gBusinessScrubExcitedEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // ENLIFTNUTS_ANIM_EXCITED_END + { &gBusinessScrubTakeOffHatAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_TAKE_OFF_HAT + { &gBusinessScrubFlyStartAnim, 0.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_FLY_START + { &gBusinessScrubFlyLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_FLY_LOOP + { &gBusinessScrubShockedStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -2.0f }, // ENLIFTNUTS_ANIM_SHOCKED_START + // ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD { &gBusinessScrubShockedShakeHeadAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - { &gBusinessScrubShockedPoundAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, - { &gBusinessScrubShockedEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, - { &gBusinessScrubThinkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - { &gBusinessScrubBobAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - { &gBusinessScrubJumpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, - { &gBusinessScrubBurrowAnim, 1.0f, 4.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, - { &gBusinessScrubBurrowAnim, 1.0f, 8.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, + { &gBusinessScrubShockedPoundAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_SHOCKED_POUND + { &gBusinessScrubShockedEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // ENLIFTNUTS_ANIM_SHOCKED_END + { &gBusinessScrubThinkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_THINK + { &gBusinessScrubBobAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_BOB + { &gBusinessScrubJumpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_JUMP + { &gBusinessScrubBurrowAnim, 1.0f, 4.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_BURROW_HALF + { &gBusinessScrubBurrowAnim, 1.0f, 8.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, // ENLIFTNUTS_ANIM_BURROW_SHORT }; Gfx* sEyeTextures[] = { gBusinessScrubEyesDL, gBusinessScrubEyesWideDL, gBusinessScrubEyesSquintDL }; @@ -323,7 +324,7 @@ void EnLiftNuts_Destroy(Actor* thisx, PlayState* play) { } void EnLiftNuts_SetupIdleHidden(EnLiftNuts* this) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BURROW_SHORT); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BURROW_SHORT); this->actionFunc = EnLiftNuts_IdleHidden; this->timer = 0; } @@ -338,9 +339,9 @@ void EnLiftNuts_IdleHidden(EnLiftNuts* this, PlayState* play) { void EnLiftNuts_SetupBurrow(EnLiftNuts* this) { if (this->actionFunc == EnLiftNuts_Idle) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BURROW_HALF); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BURROW_HALF); } else { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BURROW_LONG); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BURROW_LONG); } Actor_PlaySfx(&this->actor, NA_SE_EN_AKINDONUTS_HIDE); @@ -359,7 +360,7 @@ void EnLiftNuts_SetupIdle(EnLiftNuts* this) { if (EnLiftNuts_MinigameState(ENLIFTNUTS_MINIGAME_STATE_MODE_CHECK, ENLIFTNUTS_MINIGAME_STATE_STARTING)) { this->actionFunc = EnLiftNuts_Idle; } else { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_RISE_UP); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_RISE_UP); Actor_PlaySfx(&this->actor, NA_SE_EN_AKINDONUTS_HIDE); this->actionFunc = EnLiftNuts_RiseUp; } @@ -367,7 +368,7 @@ void EnLiftNuts_SetupIdle(EnLiftNuts* this) { void EnLiftNuts_RiseUp(EnLiftNuts* this, PlayState* play) { if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BOB); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BOB); this->actionFunc = EnLiftNuts_Idle; } else if (Animation_OnFrame(&this->skelAnime, 8.0f)) { EnLiftNuts_SpawnDust(this, play); @@ -441,12 +442,15 @@ void EnLiftNuts_Idle(EnLiftNuts* this, PlayState* play) { this->textId = 0x27E1; } break; + + default: + break; } } else if (EnLiftNuts_MinigameState(ENLIFTNUTS_MINIGAME_STATE_MODE_CHECK, ENLIFTNUTS_MINIGAME_STATE_AFTER)) { if (Flags_GetSwitch(play, 0x40)) { Flags_UnsetSwitch(play, 0x40); - Inventory_SaveDekuPlaygroundHighScore(4); + Inventory_SaveDekuPlaygroundHighScore(TIMER_ID_MINIGAME_2); if (CHECK_WEEKEVENTREG(WEEKEVENTREG_WON_DEKU_PLAYGROUND_DAY_1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_WON_DEKU_PLAYGROUND_DAY_2) && (CURRENT_DAY == 3)) { this->timer = 0; @@ -527,13 +531,13 @@ void EnLiftNuts_HandleConversationChoice(EnLiftNuts* this, PlayState* play) { Rupees_ChangeBy(-10); } else { Audio_PlaySfx(NA_SE_SY_ERROR); - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK); Message_StartTextbox(play, 0x27E4, &this->actor); this->textId = 0x27E4; } } else { Audio_PlaySfx_MessageCancel(); - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK); Message_StartTextbox(play, 0x27E3, &this->actor); this->textId = 0x27E3; } @@ -586,7 +590,7 @@ void EnLiftNuts_HandleConversation5(EnLiftNuts* this, PlayState* play) { break; case 0x27E6: - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK); switch (CURRENT_DAY) { case 1: Message_StartTextbox(play, 0x27E7, &this->actor); @@ -622,7 +626,7 @@ void EnLiftNuts_HandleConversation5(EnLiftNuts* this, PlayState* play) { break; case 0x27EE: - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_JUMP); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_JUMP); Message_StartTextbox(play, 0x27EF, &this->actor); this->textId = 0x27EF; break; @@ -639,7 +643,7 @@ void EnLiftNuts_HandleConversation5(EnLiftNuts* this, PlayState* play) { break; case 0x27F2: - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK); Message_StartTextbox(play, 0x27F3, &this->actor); this->textId = 0x27F3; break; @@ -675,7 +679,7 @@ void EnLiftNuts_SetupStartConversation(EnLiftNuts* this) { if (EnLiftNuts_MinigameState(ENLIFTNUTS_MINIGAME_STATE_MODE_CHECK, ENLIFTNUTS_MINIGAME_STATE_NONE)) { Actor_PlaySfx(&this->actor, NA_SE_EN_AKINDONUTS_HIDE); } - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_JUMP); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_JUMP); } this->actionFunc = EnLiftNuts_StartConversation; } @@ -683,9 +687,9 @@ void EnLiftNuts_SetupStartConversation(EnLiftNuts* this) { void EnLiftNuts_StartConversation(EnLiftNuts* this, PlayState* play) { if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { if ((this->textId == 0x27EE) || (this->textId == 0x27F4) || (this->textId == 0x27F5)) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_START); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_START); } else { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_STANDING); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_STANDING); } this->actionFunc = EnLiftNuts_HandleConversation; } @@ -728,19 +732,19 @@ void EnLiftNuts_HandleConversation(EnLiftNuts* this, PlayState* play) { if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { switch (this->textId) { case 0x27EE: - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD); break; case 0x27EF: - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK); break; case 0x27F4: if (this->timer == 0) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD); this->timer++; } else if (this->timer == 4) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_POUND); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_POUND); this->timer = 0; } else { this->timer++; @@ -756,7 +760,7 @@ void EnLiftNuts_HandleConversation(EnLiftNuts* this, PlayState* play) { void EnLiftNuts_SetupMove(EnLiftNuts* this) { this->actor.speed = 2.0f; - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK); EnLiftNuts_Autotalk(this, ENLIFTNUTS_AUTOTALK_MODE_SET_ON); EnLiftNuts_MinigameState(ENLIFTNUTS_MINIGAME_STATE_MODE_SET, ENLIFTNUTS_MINIGAME_STATE_STARTING); this->actionFunc = EnLiftNuts_Move; @@ -943,11 +947,11 @@ void EnLiftNuts_ResumeConversation(EnLiftNuts* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_WON_DEKU_PLAYGROUND_DAY_1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_WON_DEKU_PLAYGROUND_DAY_2) && (CURRENT_DAY == 3)) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_END); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_END); Message_StartTextbox(play, 0x27F5, &this->actor); this->textId = 0x27F5; } else if (EnLiftNuts_GetNumDaysWon() > 0) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK); Message_StartTextbox(play, 0x27F0, &this->actor); this->textId = 0x27F0; } else { @@ -983,7 +987,7 @@ void EnLiftNuts_SetupStartHiding(EnLiftNuts* this) { this->isFirstTimeHiding = true; } if (this->actionFunc == EnLiftNuts_IdleHidden) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BOB); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BOB); } this->timer = 0; this->actionFunc = EnLiftNuts_StartHiding; @@ -995,7 +999,7 @@ void EnLiftNuts_StartHiding(EnLiftNuts* this, PlayState* play) { Message_StartTextbox(play, 0x27F6, &this->actor); this->textId = 0x27F6; } - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BURROW_HALF); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BURROW_HALF); this->actionFunc = EnLiftNuts_Hide; } this->timer++; diff --git a/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c b/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c index e06fff62b..68945dd24 100644 --- a/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c +++ b/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c @@ -219,12 +219,14 @@ void EnLookNuts_StandAndWait(EnLookNuts* this, PlayState* play) { this->waitTimer++; this->headRotTarget.y *= -1.0f; break; + case 5: this->headRotTarget.y = 0.0f; randOffset = Rand_S16Offset(1, 2); this->eventTimer = 0; this->waitTimer += randOffset; break; + case 6: if (fabsf(this->headRotTarget.y - this->headRotation.y) < 10.0f) { this->waitTimer = 10; @@ -232,27 +234,34 @@ void EnLookNuts_StandAndWait(EnLookNuts* this, PlayState* play) { this->eventTimer = 5; } break; + case 7: if (fabsf(this->headRotTarget.y - this->headRotation.y) < 10.0f) { this->headRotTarget.z = 4000.0f; this->waitTimer++; } break; + case 8: this->waitTimer = 10; this->eventTimer = 20; this->headRotTarget.z = -8000.0f; break; + case 10: Math_Vec3f_Copy(&this->headRotTarget, &gZeroVec3f); this->waitTimer = 11; break; + case 11: if ((fabsf(this->headRotation.x) < 30.0f) && (fabsf(this->headRotation.y) < 30.0f) && (fabsf(this->headRotation.z) < 30.0f)) { this->waitTimer = 12; } break; + + default: + break; } if (this->waitTimer == 12) { this->waitTimer = 0; @@ -359,7 +368,7 @@ void EnLookNuts_Update(Actor* thisx, PlayState* play) { Math_Vec3f_Copy(&this->headRotTarget, &gZeroVec3f); this->state = PALACE_GUARD_RUNNING_TO_PLAYER; Audio_PlaySfx(NA_SE_SY_FOUND); - func_800B7298(play, &this->actor, PLAYER_CSACTION_26); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_26); D_80A6862C = 1; this->actor.flags |= (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_10); this->actor.gravity = 0.0f; diff --git a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c index 3140ad744..766d832c0 100644 --- a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c +++ b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c @@ -66,7 +66,15 @@ static u8 sDamages[] = { 1, 2, 3, 4, // Great Spin }; -static u16 sChargingSfxIds[] = { +typedef enum { + /* 0 */ ENMTHUNDER_SUBTYPE_SPIN_GREAT, + /* 1 */ ENMTHUNDER_SUBTYPE_SPIN_REGULAR, + /* 2 */ ENMTHUNDER_SUBTYPE_SWORDBEAM_GREAT, + /* 3 */ ENMTHUNDER_SUBTYPE_SWORDBEAM_REGULAR, + /* 4 */ ENMTHUNDER_SUBTYPE_MAX +} EnMThunderSubType; + +static u16 sChargingSfxIds[ENMTHUNDER_SUBTYPE_MAX] = { NA_SE_IT_ROLLING_CUT_LV2, // ENMTHUNDER_SUBTYPE_SPIN_GREAT NA_SE_IT_ROLLING_CUT_LV1, // ENMTHUNDER_SUBTYPE_SPIN_REGULAR NA_SE_IT_ROLLING_CUT_LV2, // ENMTHUNDER_SUBTYPE_SWORDBEAM_GREAT @@ -75,13 +83,6 @@ static u16 sChargingSfxIds[] = { static f32 sScales[] = { 0.1f, 0.15f, 0.2f, 0.25f, 0.3f, 0.25f, 0.2f, 0.15f, 0.0f }; -typedef enum { - /* 0 */ ENMTHUNDER_SUBTYPE_SPIN_GREAT, - /* 1 */ ENMTHUNDER_SUBTYPE_SPIN_REGULAR, - /* 2 */ ENMTHUNDER_SUBTYPE_SWORDBEAM_GREAT, - /* 3 */ ENMTHUNDER_SUBTYPE_SWORDBEAM_REGULAR -} EnMThunderSubType; - void EnMThunder_UnkType_Setup(EnMThunder* this, PlayState* play) { Player* player = GET_PLAYER(play); diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index b14919a8e..0c54cf761 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -111,33 +111,58 @@ void EnMa4_UpdateEyes(EnMa4* this) { } } -static AnimationSpeedInfo sAnimationInfo[] = { - { &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, - { &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, - { &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniShootBowAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, - { &gRomaniShootBowAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, - { &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, +typedef enum EnMa4Animation { + /* -1 */ ENMA4_ANIM_NONE = -1, + /* 0 */ ENMA4_ANIM_0, + /* 1 */ ENMA4_ANIM_1, + /* 2 */ ENMA4_ANIM_2, + /* 3 */ ENMA4_ANIM_3, + /* 4 */ ENMA4_ANIM_4, + /* 5 */ ENMA4_ANIM_5, + /* 6 */ ENMA4_ANIM_6, + /* 7 */ ENMA4_ANIM_7, + /* 8 */ ENMA4_ANIM_8, + /* 9 */ ENMA4_ANIM_9, + /* 10 */ ENMA4_ANIM_10, + /* 11 */ ENMA4_ANIM_11, + /* 12 */ ENMA4_ANIM_12, + /* 13 */ ENMA4_ANIM_13, + /* 14 */ ENMA4_ANIM_14, + /* 15 */ ENMA4_ANIM_15, + /* 16 */ ENMA4_ANIM_16, + /* 17 */ ENMA4_ANIM_17, + /* 18 */ ENMA4_ANIM_18, + /* 19 */ ENMA4_ANIM_19, + /* 20 */ ENMA4_ANIM_MAX +} EnMa4Animation; + +static AnimationSpeedInfo sAnimationSpeedInfo[ENMA4_ANIM_MAX] = { + { &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_0 + { &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_1 + { &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_2 + { &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_3 + { &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // ENMA4_ANIM_4 + { &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // ENMA4_ANIM_5 + { &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_6 + { &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_7 + { &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_8 + { &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_9 + { &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_10 + { &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_11 + { &gRomaniShootBowAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // ENMA4_ANIM_12 + { &gRomaniShootBowAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // ENMA4_ANIM_13 + { &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_14 + { &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_15 + { &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_16 + { &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_17 + { &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_18 + { &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_19 }; void EnMa4_ChangeAnim(EnMa4* this, s32 animIndex) { - Animation_Change(&this->skelAnime, sAnimationInfo[animIndex].animation, 1.0f, 0.0f, - Animation_GetLastFrame(sAnimationInfo[animIndex].animation), sAnimationInfo[animIndex].mode, - sAnimationInfo[animIndex].morphFrames); + Animation_Change(&this->skelAnime, sAnimationSpeedInfo[animIndex].animation, 1.0f, 0.0f, + Animation_GetLastFrame(sAnimationSpeedInfo[animIndex].animation), + sAnimationSpeedInfo[animIndex].mode, sAnimationSpeedInfo[animIndex].morphFrames); } void func_80ABDD9C(EnMa4* this, PlayState* play) { @@ -210,24 +235,24 @@ void EnMa4_Init(Actor* thisx, PlayState* play) { } if (Cutscene_GetSceneLayer(play) != 0) { - EnMa4_ChangeAnim(this, 0); + EnMa4_ChangeAnim(this, ENMA4_ANIM_0); this->state = MA4_STATE_HORSEBACKGAME; EnMa4_InitHorsebackGame(this, play); } else { EnMa4_InitPath(this, play); if (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 1)) { - EnMa4_ChangeAnim(this, 0); + EnMa4_ChangeAnim(this, ENMA4_ANIM_0); this->state = MA4_STATE_AFTERHORSEBACKGAME; } else if (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 10)) { - EnMa4_ChangeAnim(this, 0); + EnMa4_ChangeAnim(this, ENMA4_ANIM_0); this->state = MA4_STATE_AFTERDESCRIBETHEMCS; } else { if (this->type == MA4_TYPE_ALIENS_WON) { - EnMa4_ChangeAnim(this, 14); + EnMa4_ChangeAnim(this, ENMA4_ANIM_14); this->actor.shape.shadowScale = 0.0f; } else { - EnMa4_ChangeAnim(this, 8); + EnMa4_ChangeAnim(this, ENMA4_ANIM_8); } this->state = MA4_STATE_DEFAULT; } @@ -245,30 +270,30 @@ void EnMa4_Destroy(Actor* thisx, PlayState* play) { // Running in circles in the ranch void EnMa4_RunInCircles(EnMa4* this, PlayState* play) { - static s32 sAnimIndex = 9; + static s32 sAnimIndex = ENMA4_ANIM_9; static s32 D_80AC0250 = 0; static s16 D_80AC0254 = 10; Vec3f sp34; s32 pad; s16 sp2E; - if ((sAnimIndex != 9) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - if (sAnimIndex == 3) { + if ((sAnimIndex != ENMA4_ANIM_9) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + if (sAnimIndex == ENMA4_ANIM_3) { if (D_80AC0250 < 3) { D_80AC0250++; } else { D_80AC0250 = 0; - EnMa4_ChangeAnim(this, 13); - sAnimIndex = 13; + EnMa4_ChangeAnim(this, ENMA4_ANIM_13); + sAnimIndex = ENMA4_ANIM_13; } } else { this->actor.speed = 2.7f; - EnMa4_ChangeAnim(this, 9); - sAnimIndex = 9; + EnMa4_ChangeAnim(this, ENMA4_ANIM_9); + sAnimIndex = ENMA4_ANIM_9; } } - if ((sAnimIndex == 13) && Animation_OnFrame(&this->skelAnime, 37.0f)) { + if ((sAnimIndex == ENMA4_ANIM_13) && Animation_OnFrame(&this->skelAnime, 37.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EV_ROMANI_BOW_FLICK); } @@ -283,8 +308,8 @@ void EnMa4_RunInCircles(EnMa4* this, PlayState* play) { if ((D_80AC0254 == 0) && ((Rand_Next() % 4) == 0)) { this->actor.speed = 0.0f; D_80AC0254 = 2; - EnMa4_ChangeAnim(this, 3); - sAnimIndex = 3; + EnMa4_ChangeAnim(this, ENMA4_ANIM_3); + sAnimIndex = ENMA4_ANIM_3; } else { if (D_80AC0254 > 0) { D_80AC0254--; @@ -310,14 +335,14 @@ void EnMa4_RunInCircles(EnMa4* this, PlayState* play) { void EnMa4_SetupWait(EnMa4* this) { if ((this->state != MA4_STATE_AFTERHORSEBACKGAME) && (this->state != MA4_STATE_AFTERDESCRIBETHEMCS)) { if (this->type != MA4_TYPE_ALIENS_WON) { - EnMa4_ChangeAnim(this, 9); + EnMa4_ChangeAnim(this, ENMA4_ANIM_9); this->actor.speed = 2.7f; } else { - EnMa4_ChangeAnim(this, 15); + EnMa4_ChangeAnim(this, ENMA4_ANIM_15); this->actor.speed = 0.0f; } } else { - EnMa4_ChangeAnim(this, 1); + EnMa4_ChangeAnim(this, ENMA4_ANIM_1); this->actor.speed = 0.0f; } @@ -338,10 +363,10 @@ void EnMa4_Wait(EnMa4* this, PlayState* play) { } else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->animTimer++; if (this->animTimer == 5) { - EnMa4_ChangeAnim(this, 17); // Traumatized anim + EnMa4_ChangeAnim(this, ENMA4_ANIM_17); // Traumatized anim } else if (this->animTimer == 8) { this->animTimer = 0; - EnMa4_ChangeAnim(this, 15); // Sitting anim + EnMa4_ChangeAnim(this, ENMA4_ANIM_15); // Sitting anim } } @@ -626,9 +651,9 @@ void EnMa4_ChooseNextDialogue(EnMa4* this, PlayState* play) { void EnMa4_SetupDialogueHandler(EnMa4* this) { if (this->type != MA4_TYPE_ALIENS_WON) { - EnMa4_ChangeAnim(this, 1); + EnMa4_ChangeAnim(this, ENMA4_ANIM_1); } else { - EnMa4_ChangeAnim(this, 15); + EnMa4_ChangeAnim(this, ENMA4_ANIM_15); } this->actionFunc = EnMa4_DialogueHandler; } @@ -720,7 +745,7 @@ void EnMa4_HorsebackGameWait(EnMa4* this, PlayState* play) { player->stateFlags3 |= PLAYER_STATE3_400; EnMa4_HorsebackGameCheckPlayerInteractions(this, play); - if (this->poppedBalloonCounter != D_80AC0258) { + if (D_80AC0258 != this->poppedBalloonCounter) { D_80AC0258 = this->poppedBalloonCounter; play->interfaceCtx.minigamePoints = 1; } @@ -805,6 +830,7 @@ void EnMa4_SetupEponasSongCs(EnMa4* this) { } static u16 sCueId = 99; + void EnMa4_EponasSongCs(EnMa4* this, PlayState* play) { if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_120)) { s32 cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_120); @@ -817,12 +843,12 @@ void EnMa4_EponasSongCs(EnMa4* this, PlayState* play) { switch (play->csCtx.actorCues[cueChannel]->id) { case 1: this->hasBow = true; - EnMa4_ChangeAnim(this, 1); + EnMa4_ChangeAnim(this, ENMA4_ANIM_1); break; case 2: this->hasBow = false; - EnMa4_ChangeAnim(this, 4); + EnMa4_ChangeAnim(this, ENMA4_ANIM_4); break; default: @@ -833,7 +859,7 @@ void EnMa4_EponasSongCs(EnMa4* this, PlayState* play) { Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel); if ((sCueId == 2) && (this->animTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - EnMa4_ChangeAnim(this, 7); + EnMa4_ChangeAnim(this, ENMA4_ANIM_7); } } else { Player* player = GET_PLAYER(play); diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c index a37405713..86c70ae69 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c @@ -105,31 +105,60 @@ static CollisionCheckInfoInit2 sColChkInfoInit2 = { 0, 0, 0, 0, MASS_IMMOVABLE, }; -static AnimationSpeedInfo sAnimationInfo[] = { - { &gCremiaIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gCremiaSpreadArmsStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, - { &gCremiaSpreadArmsStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, - { &gCremiaSpreadArmsLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaSpreadArmsLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gCremiaWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaWalkAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, - { &gCremiaThinkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaThinkAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, - { &gCremiaPetCowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaPetCowAnim, 1.0f, ANIMMODE_LOOP, -10.0f }, - { &gCremiaSittingPetCowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaSittingPetCowAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, - { &gCremiaSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaSittingAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, - { &gCremiaSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, - { &gCremiaHugStartAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaHugStartAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, - { &gCremiaHugLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaHugLoopAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, - { &gCremiaClapAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gCremiaClapAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, +typedef enum CremiaAnimation { + /* -1 */ CREMIA_ANIM_NONE = -1, + /* 0 */ CREMIA_ANIM_0, + /* 1 */ CREMIA_ANIM_1, + /* 2 */ CREMIA_ANIM_2, + /* 3 */ CREMIA_ANIM_3, + /* 4 */ CREMIA_ANIM_4, + /* 5 */ CREMIA_ANIM_5, + /* 6 */ CREMIA_ANIM_6, + /* 7 */ CREMIA_ANIM_7, + /* 8 */ CREMIA_ANIM_8, + /* 9 */ CREMIA_ANIM_9, + /* 10 */ CREMIA_ANIM_10, + /* 11 */ CREMIA_ANIM_11, + /* 12 */ CREMIA_ANIM_12, + /* 13 */ CREMIA_ANIM_13, + /* 14 */ CREMIA_ANIM_14, + /* 15 */ CREMIA_ANIM_15, + /* 16 */ CREMIA_ANIM_16, + /* 17 */ CREMIA_ANIM_17, + /* 18 */ CREMIA_ANIM_18, + /* 19 */ CREMIA_ANIM_19, + /* 20 */ CREMIA_ANIM_20, + /* 21 */ CREMIA_ANIM_21, + /* 22 */ CREMIA_ANIM_22, + /* 23 */ CREMIA_ANIM_23, + /* 24 */ CREMIA_ANIM_MAX +} CremiaAnimation; + +static AnimationSpeedInfo sAnimationSpeedInfo[CREMIA_ANIM_MAX] = { + { &gCremiaIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_0 + { &gCremiaIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // CREMIA_ANIM_1 + { &gCremiaSpreadArmsStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // CREMIA_ANIM_2 + { &gCremiaSpreadArmsStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // CREMIA_ANIM_3 + { &gCremiaSpreadArmsLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_4 + { &gCremiaSpreadArmsLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // CREMIA_ANIM_5 + { &gCremiaWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_6 + { &gCremiaWalkAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_7 + { &gCremiaThinkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_8 + { &gCremiaThinkAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_9 + { &gCremiaPetCowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_10 + { &gCremiaPetCowAnim, 1.0f, ANIMMODE_LOOP, -10.0f }, // CREMIA_ANIM_11 + { &gCremiaSittingPetCowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_12 + { &gCremiaSittingPetCowAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_13 + { &gCremiaSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_14 + { &gCremiaSittingAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_15 + { &gCremiaSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_16 + { &gCremiaSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_17 + { &gCremiaHugStartAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_18 + { &gCremiaHugStartAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_19 + { &gCremiaHugLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_20 + { &gCremiaHugLoopAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_21 + { &gCremiaClapAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_22 + { &gCremiaClapAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_23 }; static TexturePtr sMouthTextures[] = { @@ -228,35 +257,35 @@ s32 EnMaYto_CheckValidSpawn(EnMaYto* this, PlayState* play) { void EnMaYto_InitAnimation(EnMaYto* this, PlayState* play) { switch (this->type) { case MA_YTO_TYPE_DEFAULT: - EnMaYto_ChangeAnim(this, 10); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_10); break; case MA_YTO_TYPE_DINNER: if (CURRENT_DAY == 1) { - EnMaYto_ChangeAnim(this, 14); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_14); } else { - EnMaYto_ChangeAnim(this, 16); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_16); } break; case MA_YTO_TYPE_BARN: if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { - EnMaYto_ChangeAnim(this, 12); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_12); } else { - EnMaYto_ChangeAnim(this, 8); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_8); } break; case MA_YTO_TYPE_AFTERMILKRUN: - EnMaYto_ChangeAnim(this, 0); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_0); break; case MA_YTO_TYPE_4: - EnMaYto_ChangeAnim(this, 0); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_0); break; default: - EnMaYto_ChangeAnim(this, 0); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_0); break; } } @@ -310,10 +339,10 @@ s32 EnMaYto_SearchRomani(EnMaYto* this, PlayState* play) { this->actor.child = &romani->actor; romani->actor.parent = &this->actor; return true; - } else { - npcActor = npcActor->next; - continue; } + + npcActor = npcActor->next; + continue; } npcActor = npcActor->next; } @@ -355,9 +384,10 @@ s32 EnMaYto_TryFindRomani(EnMaYto* this, PlayState* play) { case MA_YTO_TYPE_4: return 0; - } - return 0; + default: + return 0; + } } void EnMaYto_Destroy(Actor* thisx, PlayState* play) { @@ -378,11 +408,11 @@ void EnMaYto_KeepLookingForRomani(EnMaYto* this, PlayState* play) { void EnMaYto_SetupDefaultWait(EnMaYto* this) { if (this->actor.shape.rot.y == this->actor.home.rot.y) { - this->animIndex = 11; - EnMaYto_ChangeAnim(this, 11); + this->animIndex = CREMIA_ANIM_11; + EnMaYto_ChangeAnim(this, CREMIA_ANIM_11); } else { - this->animIndex = 1; - EnMaYto_ChangeAnim(this, 1); + this->animIndex = CREMIA_ANIM_1; + EnMaYto_ChangeAnim(this, CREMIA_ANIM_1); } EnMaYto_InitFaceExpression(this); @@ -396,9 +426,9 @@ void EnMaYto_DefaultWait(EnMaYto* this, PlayState* play) { direction = rotY - this->actor.yawTowardsPlayer; if (!Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 5, 0x3000, 0x100) && - (this->animIndex == 1)) { - this->animIndex = 11; - EnMaYto_ChangeAnim(this, 11); + (this->animIndex == CREMIA_ANIM_1)) { + this->animIndex = CREMIA_ANIM_11; + EnMaYto_ChangeAnim(this, CREMIA_ANIM_11); } if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { @@ -410,7 +440,7 @@ void EnMaYto_DefaultWait(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupDefaultDialogueHandler(EnMaYto* this) { - EnMaYto_ChangeAnim(this, 1); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_1); this->unk31E = 2; this->actionFunc = EnMaYto_DefaultDialogueHandler; } @@ -436,13 +466,14 @@ void EnMaYto_DefaultDialogueHandler(EnMaYto* this, PlayState* play) { case TEXT_STATE_1: case TEXT_STATE_CLOSING: case TEXT_STATE_3: + default: break; } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 5, 0x3000, 0x100); if ((this->textId == 0x3395) && (this->skelAnime.animation == &gCremiaSpreadArmsStartAnim) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - EnMaYto_ChangeAnim(this, 4); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_4); } } @@ -451,12 +482,10 @@ void EnMaYto_DefaultHandlePlayerChoice(EnMaYto* this, PlayState* play) { if (play->msgCtx.choiceIndex == 0) { // Yes Audio_PlaySfx_MessageDecide(); EnMaYto_SetFaceExpression(this, 0, 3); - // "Milk Road is fixed!" Message_StartTextbox(play, 0x3392, &this->actor); this->textId = 0x3392; } else { // No Audio_PlaySfx_MessageCancel(); - // "Don't lie!" Message_StartTextbox(play, 0x3391, &this->actor); this->textId = 0x3391; } @@ -480,13 +509,13 @@ void EnMaYto_DefaultChooseNextDialogue(EnMaYto* this, PlayState* play) { break; case 0x3394: - EnMaYto_ChangeAnim(this, 2); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_2); Message_StartTextbox(play, 0x3395, &this->actor); this->textId = 0x3395; break; case 0x3395: - EnMaYto_ChangeAnim(this, 1); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_1); Message_StartTextbox(play, 0x3396, &this->actor); this->textId = 0x3396; Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); @@ -570,6 +599,7 @@ void EnMaYto_DinnerDialogueHandler(EnMaYto* this, PlayState* play) { case TEXT_STATE_1: case TEXT_STATE_CLOSING: case TEXT_STATE_3: + default: break; } } @@ -579,12 +609,10 @@ void EnMaYto_DinnerHandlePlayerChoice(EnMaYto* this, PlayState* play) { if (play->msgCtx.choiceIndex == 0) { // Yes Audio_PlaySfx_MessageDecide(); EnMaYto_SetFaceExpression(this, 0, 3); - // "Milk Road is fixed!" Message_StartTextbox(play, 0x3399, &this->actor); this->textId = 0x3399; } else { // No Audio_PlaySfx_MessageCancel(); - // "Don't lie!" Message_StartTextbox(play, 0x3398, &this->actor); this->textId = 0x3398; } @@ -695,12 +723,12 @@ void EnMaYto_DinnerChooseNextDialogue(EnMaYto* this, PlayState* play) { void EnMaYto_SetupBarnWait(EnMaYto* this) { if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { - EnMaYto_ChangeAnim(this, 13); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_13); func_80B90E50(this, 0); this->unk31E = 0; } else { this->unk320 = 0; - EnMaYto_ChangeAnim(this, 9); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_9); func_80B90E50(this, 2); this->unk31E = 2; } @@ -761,6 +789,7 @@ void EnMaYto_BarnDialogueHandler(EnMaYto* this, PlayState* play) { case TEXT_STATE_CLOSING: case TEXT_STATE_3: case TEXT_STATE_CHOICE: + default: break; } } @@ -821,7 +850,6 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, PlayState* play) { case 0x33B1: this->unk31E = 2; EnMaYto_SetFaceExpression(this, 5, 3); - // "I should had believed what Romani said" Message_StartTextbox(play, 0x33B2, &this->actor); this->textId = 0x33B2; Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); @@ -935,6 +963,9 @@ void EnMaYto_AfterMilkRunDialogueHandler(EnMaYto* this, PlayState* play) { case TEXT_STATE_5: EnMaYto_AfterMilkRunChooseNextDialogue(this, play); break; + + default: + break; } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 5, 0x71C, 0xB6); @@ -945,7 +976,6 @@ void EnMaYto_AfterMilkRunChooseNextDialogue(EnMaYto* this, PlayState* play) { switch (this->textId) { case 0x33C1: EnMaYto_SetFaceExpression(this, 3, 1); - // "Thank you. You were cool back there." Message_StartTextbox(play, 0x33C2, &this->actor); this->textId = 0x33C2; break; @@ -1040,22 +1070,23 @@ void EnMaYto_WarmFuzzyFeelingCs(EnMaYto* this, PlayState* play) { if (play->csCtx.curFrame == play->csCtx.actorCues[cueChannel]->startFrame) { u16 cueId = play->csCtx.actorCues[cueChannel]->id; + //! FAKE: if (1) {} if (cueId != sCueId) { sCueId = cueId; switch (cueId) { case 1: - EnMaYto_ChangeAnim(this, 0); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_0); break; case 2: SET_WEEKEVENTREG(WEEKEVENTREG_14_01); - EnMaYto_ChangeAnim(this, 18); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_18); break; case 3: - EnMaYto_ChangeAnim(this, 22); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_22); break; default: @@ -1067,7 +1098,7 @@ void EnMaYto_WarmFuzzyFeelingCs(EnMaYto* this, PlayState* play) { Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel); if ((sCueId == 2) && (this->skelAnime.animation == &gCremiaHugStartAnim) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - EnMaYto_ChangeAnim(this, 20); + EnMaYto_ChangeAnim(this, CREMIA_ANIM_20); } } else { sCueId = 99; @@ -1081,7 +1112,7 @@ void EnMaYto_SetupPostMilkRunWaitDialogueEnd(EnMaYto* this) { void EnMaYto_PostMilkRunWaitDialogueEnd(EnMaYto* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) || (Message_GetState(&play->msgCtx) == TEXT_STATE_5)) { if (Message_ShouldAdvance(play) && (Message_GetState(&play->msgCtx) == TEXT_STATE_5)) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); Message_CloseTextbox(play); } } @@ -1277,9 +1308,9 @@ void EnMaYto_BarnStartDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_ChangeAnim(EnMaYto* this, s32 animIndex) { - Animation_Change(&this->skelAnime, sAnimationInfo[animIndex].animation, 1.0f, 0.0f, - Animation_GetLastFrame(sAnimationInfo[animIndex].animation), sAnimationInfo[animIndex].mode, - sAnimationInfo[animIndex].morphFrames); + Animation_Change(&this->skelAnime, sAnimationSpeedInfo[animIndex].animation, 1.0f, 0.0f, + Animation_GetLastFrame(sAnimationSpeedInfo[animIndex].animation), + sAnimationSpeedInfo[animIndex].mode, sAnimationSpeedInfo[animIndex].morphFrames); } void func_80B90C78(EnMaYto* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c index d1e9c91f5..134d890ae 100644 --- a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c +++ b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c @@ -77,29 +77,56 @@ static CollisionCheckInfoInit2 sColChkInfoInit2 = { 0, 0, 0, 0, MASS_IMMOVABLE, }; -static AnimationSpeedInfo sAnimationInfo[] = { - { &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, - { &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, - { &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniShootBowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniShootBowAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, - { &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, - { &gRomaniTurnAroundAndFlickHairAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, - { &gRomaniTurnAroundAndFlickHairAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, +typedef enum EnMaYtsAnimation { + /* -1 */ ENMATYS_ANIM_NONE = -1, + /* 0 */ ENMATYS_ANIM_0, + /* 1 */ ENMATYS_ANIM_1, + /* 2 */ ENMATYS_ANIM_2, + /* 3 */ ENMATYS_ANIM_3, + /* 4 */ ENMATYS_ANIM_4, + /* 5 */ ENMATYS_ANIM_5, + /* 6 */ ENMATYS_ANIM_6, + /* 7 */ ENMATYS_ANIM_7, + /* 8 */ ENMATYS_ANIM_8, + /* 9 */ ENMATYS_ANIM_9, + /* 10 */ ENMATYS_ANIM_10, + /* 11 */ ENMATYS_ANIM_11, + /* 12 */ ENMATYS_ANIM_12, + /* 13 */ ENMATYS_ANIM_13, + /* 14 */ ENMATYS_ANIM_14, + /* 15 */ ENMATYS_ANIM_15, + /* 16 */ ENMATYS_ANIM_16, + /* 17 */ ENMATYS_ANIM_17, + /* 18 */ ENMATYS_ANIM_18, + /* 19 */ ENMATYS_ANIM_19, + /* 20 */ ENMATYS_ANIM_20, + /* 21 */ ENMATYS_ANIM_21, + /* 22 */ ENMATYS_ANIM_MAX +} EnMaYtsAnimation; + +static AnimationSpeedInfo sAnimationSpeedInfo[ENMATYS_ANIM_MAX] = { + { &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_0 + { &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_1 + { &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // ENMATYS_ANIM_2 + { &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // ENMATYS_ANIM_3 + { &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_4 + { &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_5 + { &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_6 + { &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_7 + { &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_8 + { &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_9 + { &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_10 + { &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_11 + { &gRomaniShootBowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_12 + { &gRomaniShootBowAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_13 + { &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_14 + { &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_15 + { &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_16 + { &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_17 + { &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_18 + { &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_19 + { &gRomaniTurnAroundAndFlickHairAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // ENMATYS_ANIM_20 + { &gRomaniTurnAroundAndFlickHairAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // ENMATYS_ANIM_21 }; static TexturePtr sMouthTextures[] = { @@ -114,9 +141,9 @@ static TexturePtr sEyeTextures[] = { }; void EnMaYts_ChangeAnim(EnMaYts* this, s32 animIndex) { - Animation_Change(&this->skelAnime, sAnimationInfo[animIndex].animation, 1.0f, 0.0f, - Animation_GetLastFrame(sAnimationInfo[animIndex].animation), sAnimationInfo[animIndex].mode, - sAnimationInfo[animIndex].morphFrames); + Animation_Change(&this->skelAnime, sAnimationSpeedInfo[animIndex].animation, 1.0f, 0.0f, + Animation_GetLastFrame(sAnimationSpeedInfo[animIndex].animation), + sAnimationSpeedInfo[animIndex].mode, sAnimationSpeedInfo[animIndex].morphFrames); } void func_80B8D12C(EnMaYts* this, PlayState* play) { @@ -138,32 +165,32 @@ void EnMaYts_InitAnimation(EnMaYts* this, PlayState* play) { switch (this->type) { case MA_YTS_TYPE_BARN: this->actor.targetMode = TARGET_MODE_0; - EnMaYts_ChangeAnim(this, 0); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0); break; case MA_YTS_TYPE_SITTING: this->actor.targetMode = TARGET_MODE_6; // Day 1 or "Winning" the alien invasion if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { - EnMaYts_ChangeAnim(this, 14); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_14); } else { - EnMaYts_ChangeAnim(this, 18); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_18); } break; case MA_YTS_TYPE_SLEEPING: this->actor.targetMode = TARGET_MODE_0; this->actor.draw = EnMaYts_DrawSleeping; - EnMaYts_ChangeAnim(this, 0); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0); break; case MA_YTS_TYPE_ENDCREDITS: this->actor.targetMode = TARGET_MODE_0; - EnMaYts_ChangeAnim(this, 0); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0); break; default: - EnMaYts_ChangeAnim(this, 0); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0); break; } } @@ -374,6 +401,7 @@ void EnMaYts_DialogueHandler(EnMaYts* this, PlayState* play) { case TEXT_STATE_CLOSING: case TEXT_STATE_3: case TEXT_STATE_CHOICE: + default: break; } } @@ -385,6 +413,7 @@ void EnMaYts_SetupEndCreditsHandler(EnMaYts* this) { } static u16 sCueId = 99; + void EnMaYts_EndCreditsHandler(EnMaYts* this, PlayState* play) { if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_120)) { s32 cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_120); @@ -396,22 +425,22 @@ void EnMaYts_EndCreditsHandler(EnMaYts* this, PlayState* play) { switch (play->csCtx.actorCues[cueChannel]->id) { case 1: this->hasBow = true; - EnMaYts_ChangeAnim(this, 0); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0); break; case 2: this->hasBow = false; - EnMaYts_ChangeAnim(this, 2); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_2); break; case 3: this->hasBow = true; - EnMaYts_ChangeAnim(this, 12); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_12); break; case 4: this->hasBow = true; - EnMaYts_ChangeAnim(this, 20); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_20); break; default: @@ -424,7 +453,7 @@ void EnMaYts_EndCreditsHandler(EnMaYts* this, PlayState* play) { if ((sCueId == 2) && (this->endCreditsFlag == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->endCreditsFlag++; - EnMaYts_ChangeAnim(this, 5); + EnMaYts_ChangeAnim(this, ENMATYS_ANIM_5); } } else { sCueId = 99; diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 4b94b1994..f048aec74 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -556,7 +556,7 @@ void EnMag_DrawImageRGBA32(Gfx** gfxp, s16 centerX, s16 centerY, TexturePtr sour Gfx_SetupDL56_Ptr(&gfx); - curTexture = source; + curTexture = (uintptr_t)source; rectLeft = centerX - (width / 2); rectTop = centerY - (height / 2); textureHeight = TMEM_SIZE / (width << 2); diff --git a/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c b/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c index 1eca74125..d4cea0be1 100644 --- a/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c +++ b/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c @@ -281,7 +281,7 @@ void func_80A4E2E8(EnMkk* this, PlayState* play) { func_80A4E190(this); } else if ((this->unk_149 == 0) && (!(player->stateFlags3 & PLAYER_STATE3_100)) && (Player_GetMask(play) != PLAYER_MASK_STONE) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && - (Actor_IsFacingPlayer(&this->actor, 0x1800)) && (this->actor.xzDistToPlayer < 120.0f) && + Actor_IsFacingPlayer(&this->actor, 0x1800) && (this->actor.xzDistToPlayer < 120.0f) && (fabsf(this->actor.playerHeightRel) < 100.0f)) { func_80A4E58C(this); } diff --git a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c index 4d956a954..bb8da5efe 100644 --- a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c +++ b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c @@ -68,7 +68,7 @@ void EnMm2_WaitForRead(EnMm2* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { Message_StartTextbox(play, 0x277B, &this->actor); this->actionFunc = EnMm2_Reading; - } else if ((this->actor.xzDistToPlayer < 60.0f) && (Player_IsFacingActor(&this->actor, 0x3000, play))) { + } else if ((this->actor.xzDistToPlayer < 60.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) { Actor_OfferTalk(&this->actor, play, 110.0f); } } diff --git a/src/overlays/actors/ovl_En_Mnk/z_en_mnk.c b/src/overlays/actors/ovl_En_Mnk/z_en_mnk.c index 3c4e9f3e5..a4356b66e 100644 --- a/src/overlays/actors/ovl_En_Mnk/z_en_mnk.c +++ b/src/overlays/actors/ovl_En_Mnk/z_en_mnk.c @@ -1620,7 +1620,7 @@ void EnMnk_MonkeyHanging_WaitForTextboxAfterDunk(EnMnk* this, PlayState* play) { } Message_CloseTextbox(play); this->actionFunc = EnMnk_MonkeyHanging_WaitAfterDunk; - func_800B7298(play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_END); CLEAR_WEEKEVENTREG(WEEKEVENTREG_83_08); } } @@ -1693,7 +1693,7 @@ void EnMnk_MonkeyHanging_Plead(EnMnk* this, PlayState* play) { case 0x8E9: this->actionFunc = EnMnk_MonkeyHanging_Dunk2; Message_CloseTextbox(play); - func_800B7298(play, &this->picto.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->picto.actor, PLAYER_CSACTION_WAIT); this->unk_3C8 = 60; break; diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index 7c5f9051f..d89e1cfb5 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -256,7 +256,7 @@ s32 EnMttag_ExitRace(PlayState* play, s32 transitionType, s32 nextTransitionType void EnMttag_ShowFalseStartMessage(EnMttag* this, PlayState* play) { gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; Message_StartTextbox(play, 0xE95, NULL); // An entrant made a false start - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 20); this->actionFunc = EnMttag_PotentiallyRestartRace; } @@ -267,7 +267,7 @@ void EnMttag_ShowFalseStartMessage(EnMttag* this, PlayState* play) { */ void EnMttag_ShowCantWinMessage(EnMttag* this, PlayState* play) { Message_StartTextbox(play, 0xE97, NULL); // You can't win now... - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->actionFunc = EnMttag_HandleCantWinChoice; } @@ -433,7 +433,7 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, PlayState* play) { play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; Message_CloseTextbox(play); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); Magic_Add(play, MAGIC_FILL_TO_CAPACITY); CLEAR_EVENTINF(EVENTINF_10); @@ -468,7 +468,7 @@ void EnMttag_HandleCantWinChoice(EnMttag* this, PlayState* play) { // Keep racing Audio_PlaySfx_MessageDecide(); Message_CloseTextbox(play); - func_800B7298(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); CLEAR_EVENTINF(EVENTINF_13); this->timer = 100; this->actionFunc = EnMttag_Race; diff --git a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c index a5276184e..2ac779d27 100644 --- a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c +++ b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c @@ -343,7 +343,7 @@ void EnPametfrog_StopCutscene(EnPametfrog* this, PlayState* play) { Play_SetCameraAtEye(play, CAM_ID_MAIN, &subCam->at, &subCam->eye); this->subCamId = SUB_CAM_ID_DONE; CutsceneManager_Stop(this->csId); - func_800B724C(play, &this->actor, PLAYER_CSACTION_END); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_END); } } @@ -1007,7 +1007,7 @@ void EnPametfrog_PlayCutscene(EnPametfrog* this, PlayState* play) { if (CutsceneManager_IsNext(this->csId)) { CutsceneManager_Start(this->csId, &this->actor); this->subCamId = CutsceneManager_GetCurrentSubCamId(this->csId); - func_800B724C(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_WAIT); if (this->actor.colChkInfo.health == 0) { if (this->actor.params == GEKKO_PRE_SNAPPER) { EnPametfrog_SetupCallSnapper(this, play); diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c index 6444eac45..c668b054c 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c @@ -152,7 +152,7 @@ static AnimationInfo sAnimationInfo[POE_COMPOSER_ANIM_MAX] = { /* 3 */ { &gPoeComposerRaiseArmsAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 4 */ { &gPoeComposerArmsRaisedAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 5 */ { &gPoeComposerLowerArmsAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 6 */ { &gPoeComposerLookingDownAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 6 */ { &gPoeComposerLookDownAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 7 */ { &gPoeComposerBeginPlayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 8 */ { &gPoeComposerPlayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 9 */ { &gPoeComposerBeginRollAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, @@ -311,7 +311,7 @@ void EnPoComposer_PlayCurse(EnPoComposer* this, PlayState* play) { } // Song check, check if player just played song of storms or song of healing - if (play->msgCtx.ocarinaMode == 3) { + if (play->msgCtx.ocarinaMode == OCARINA_MODE_EVENT) { switch (play->msgCtx.lastPlayedSong) { case OCARINA_SONG_STORMS: this->sharpCsNum = SHARP_CS_SONG_STORMS; diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h index d64fc2430..55d751839 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h @@ -4,8 +4,8 @@ #include "global.h" #include "objects/object_po_composer/object_po_composer.h" -#define POE_COMPOSER_IS_FLAT(actor) ((actor)->params & 0x8000) -#define POE_COMPOSER_4000(actor) ((actor)->params & 0x4000) +#define POE_COMPOSER_IS_FLAT(thisx) ((thisx)->params & 0x8000) +#define POE_COMPOSER_4000(thisx) ((thisx)->params & 0x4000) typedef enum { /* 1 */ POE_COMPOSER_CUEID_IDLE = 1, diff --git a/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c b/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c index 6eed95020..e4f6a6fad 100644 --- a/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c +++ b/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c @@ -99,7 +99,7 @@ static AnimationHeader* sAnimations[] = { &object_pr_Anim_003904, }; -u8 D_80A75C38[] = { ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_ONCE, ANIMMODE_LOOP }; +u8 D_80A75C38[] = { ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_ONCE }; s16 D_80A75C3C[] = { 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0, diff --git a/src/overlays/actors/ovl_En_Rz/z_en_rz.c b/src/overlays/actors/ovl_En_Rz/z_en_rz.c index 537c3f527..ebd8523ad 100644 --- a/src/overlays/actors/ovl_En_Rz/z_en_rz.c +++ b/src/overlays/actors/ovl_En_Rz/z_en_rz.c @@ -101,9 +101,10 @@ void EnRz_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.01f); ActorShape_Init(&this->actor.shape, 0.0f, EnRz_ActorShadowFunc, 20.0f); - // @bug this alignment is because of player animations, but should be using ALIGN16 + //! @bug this alignment is because of player animations, but should be using ALIGN16 SkelAnime_InitFlex(play, &this->skelAnime, &object_rz_Skel_00D8D8, &gRosaSistersStandingAnim, - (uintptr_t)this->jointTable & ~0xF, (uintptr_t)this->morphTable & ~0xF, OBJECT_RZ_LIMB_MAX); + (void*)((uintptr_t)this->jointTable & ~0xF), (void*)((uintptr_t)this->morphTable & ~0xF), + OBJECT_RZ_LIMB_MAX); Animation_PlayLoop(&this->skelAnime, &gRosaSistersStandingAnim); Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); diff --git a/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c b/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c index 099bc07c2..204d3892f 100644 --- a/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c +++ b/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c @@ -161,7 +161,7 @@ void func_80A44F40(EnSekihi* this, PlayState* play) { void func_80A450B0(EnSekihi* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state)) { this->actionFunc = func_80A44F40; - } else if ((this->dyna.actor.xzDistToPlayer < 100.0f) && (Player_IsFacingActor(&this->dyna.actor, 0x2600, play))) { + } else if ((this->dyna.actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->dyna.actor, 0x2600, play)) { Actor_OfferTalk(&this->dyna.actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c index 4c5b72e74..51e758135 100644 --- a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c +++ b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c @@ -473,7 +473,7 @@ void func_80ADBAB8(EnSellnuts* this, PlayState* play) { play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING; play->msgCtx.stateTimer = 4; this->actionFunc = func_80ADBBEC; - func_800B7298(play, NULL, PLAYER_CSACTION_19); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_19); } } diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c index ba956f8a3..40c0089c7 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -600,7 +600,7 @@ s32 func_80AE6704(Actor* thisx, PlayState* play) { case 6: CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); play->nextEntrance = ENTRANCE(SOUTHERN_SWAMP_POISONED, 6); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; diff --git a/src/overlays/actors/ovl_En_Slime/z_en_slime.c b/src/overlays/actors/ovl_En_Slime/z_en_slime.c index 79af2640e..d091ed925 100644 --- a/src/overlays/actors/ovl_En_Slime/z_en_slime.c +++ b/src/overlays/actors/ovl_En_Slime/z_en_slime.c @@ -407,7 +407,7 @@ void EnSlime_MoveInDirection(EnSlime* this, PlayState* play) { // If actor is too far from home, start return home cycle EnSlime_SetupMoveToHome(this); } else if ((Player_GetMask(play) != PLAYER_MASK_STONE) && (this->actor.xzDistToPlayer < 280.0f) && - (Actor_IsFacingPlayer(&this->actor, 0x5000))) { + Actor_IsFacingPlayer(&this->actor, 0x5000)) { // If player is close enough to chuchu while not wearing the stone mask, and the chuchu is facing player, // initialize attack cycle EnSlime_SetupTurnToPlayer(this); diff --git a/src/overlays/actors/ovl_En_Takaraya/z_en_takaraya.c b/src/overlays/actors/ovl_En_Takaraya/z_en_takaraya.c index 24cd5779c..4683173a4 100644 --- a/src/overlays/actors/ovl_En_Takaraya/z_en_takaraya.c +++ b/src/overlays/actors/ovl_En_Takaraya/z_en_takaraya.c @@ -323,7 +323,7 @@ void func_80ADF520(EnTakaraya* this, PlayState* play) { } void func_80ADF608(EnTakaraya* this, PlayState* play) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); this->unk2AD = true; this->actionFunc = func_80ADF654; } diff --git a/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c b/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c index c667753e6..3993a9c91 100644 --- a/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c +++ b/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c @@ -261,6 +261,8 @@ void func_80BB6BD8(EnTanron2* this, PlayState* play) { } break; } + + //! @bug: sp32 may be used uninitialized Matrix_RotateYS(sp32, MTXMODE_NEW); Matrix_MultVecZ(this->actor.speed, &this->actor.velocity); this->actor.velocity.y = Rand_ZeroFloat(5.0f) + 12.0f; diff --git a/src/overlays/actors/ovl_En_Test/z_en_test.c b/src/overlays/actors/ovl_En_Test/z_en_test.c index 12aba1abb..4c8f90b6d 100644 --- a/src/overlays/actors/ovl_En_Test/z_en_test.c +++ b/src/overlays/actors/ovl_En_Test/z_en_test.c @@ -186,9 +186,9 @@ void EnTest_Init(Actor* thisx, PlayState* play2) { this->surfaceMaterial = SurfaceType_GetMaterial(&play->colCtx, thisx->floorPoly, bgId); } - func_80183430(&this->skeletonInfo, &gameplay_keep_Blob_06EB70, &gameplay_keep_Blob_06BB0C, this->unk_178, + func_80183430(&this->skeletonInfo, (void*)gameplay_keep_Blob_06EB70, (void*)gameplay_keep_Blob_06BB0C, this->unk_178, this->unk_1C0, NULL); - func_801834A8(&this->skeletonInfo, &gameplay_keep_Blob_06BB0C); + func_801834A8(&this->skeletonInfo, (void*)gameplay_keep_Blob_06BB0C); this->skeletonInfo.frameCtrl.unk_10 = 9.0f; func_80862B70(this->unk_20C); } @@ -225,7 +225,7 @@ void EnTest_Update(Actor* thisx, PlayState* play) { } s32 EnTest_OverrideKeyframeDraw(PlayState* play, SkeletonInfo* skeletonInfo, s32 limbIndex, Gfx** dList, u8* flags, - Actor* thisx, Vec3f* scale, Vec3s* rot, Vec3f* pos) { + void* thisx, Vec3f* scale, Vec3s* rot, Vec3f* pos) { EnTest* this = THIS; OPEN_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Test3/z_en_test3.c b/src/overlays/actors/ovl_En_Test3/z_en_test3.c index 89ba11090..5386d415e 100644 --- a/src/overlays/actors/ovl_En_Test3/z_en_test3.c +++ b/src/overlays/actors/ovl_En_Test3/z_en_test3.c @@ -274,7 +274,7 @@ s32 D_80A41D5C; s32 D_80A41D60; s32 D_80A41D64; s32 D_80A41D68; -Vec3f* D_80A41D6C; +Vec3f* sKafeiCurBodyPartPos; s32 func_80A3E7E0(EnTest3* this, EnTest3ActionFunc actionFunc) { if (actionFunc == this->unk_D94) { @@ -528,7 +528,7 @@ void func_80A3F0B0(EnTest3* this, PlayState* play) { void func_80A3F114(EnTest3* this, PlayState* play) { if (this->player.csAction != PLAYER_CSACTION_NONE) { - play->startPlayerCutscene(play, &this->player, PLAYER_CSACTION_END); + play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_END); } } @@ -645,7 +645,7 @@ s32 func_80A3F62C(EnTest3* this, PlayState* play, struct_80A41828* arg2, Schedul this->player.actor.home.rot.y = this->player.actor.shape.rot.y + 0x8000; } this->player.stateFlags2 |= PLAYER_STATE2_40000; - play->startPlayerCutscene(play, &this->player, -1); + play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_NEG1); } this->unk_D78 = D_80A418A8[arg2->unk_1_4]; return true; @@ -668,7 +668,7 @@ s32 func_80A3F73C(EnTest3* this, PlayState* play) { func_800BC154(play, &play->actorCtx, &this->unk_D90->actor, 4); func_800BC154(play, &play->actorCtx, &this->player.actor, 2); CutsceneManager_SetReturnCamera(this->subCamId); - play->startPlayerCutscene(play, &this->player, PLAYER_CSACTION_WAIT); + play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_WAIT); } Actor_OfferTalkNearColChkInfoCylinder(&this->player.actor, play); if (this->unk_D88 == 3) { @@ -690,7 +690,7 @@ s32 func_80A3F8D4(EnTest3* this, PlayState* play, struct_80A41828* arg2, Schedul ((postActor = func_80A3F2BC(play, this, ACTOR_EN_PM, ACTORCAT_NPC, 100.0f, 20.0f)) != NULL)) { this->player.actor.home.rot.y = Actor_WorldYawTowardActor(&this->player.actor, postActor); } - play->startPlayerCutscene(play, &this->player, PLAYER_CSACTION_97); + play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_97); return true; } @@ -737,7 +737,7 @@ s32 func_80A3FA58(EnTest3* this, PlayState* play) { return false; } if (this->unk_D8A == 90) { - play->startPlayerCutscene(play, &this->player, PLAYER_CSACTION_21); + play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_21); } } else { this->unk_D8A++; @@ -857,7 +857,7 @@ s32 func_80A3FFD0(EnTest3* this, PlayState* play2) { } } else { SET_WEEKEVENTREG(WEEKEVENTREG_COUPLES_MASK_CUTSCENE_FINISHED); - play->startPlayerCutscene(play, &this->player, PLAYER_CSACTION_110); + play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_110); } return false; } @@ -983,7 +983,7 @@ void func_80A40678(EnTest3* this, PlayState* play) { if (scheduleOutput.result == 6) { this->player.actor.home.rot.y = 0x7FFF; this->player.stateFlags2 |= PLAYER_STATE2_40000; - play->startPlayerCutscene(play, &this->player, -1); + play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_NEG1); } } } else { @@ -1060,12 +1060,12 @@ void EnTest3_Update(Actor* thisx, PlayState* play2) { !((this->player.actor.category == ACTORCAT_PLAYER) && ((play->actorCtx.flags & ACTORCTX_FLAG_5) || (play->actorCtx.flags & ACTORCTX_FLAG_4)))) { if (this->player.csAction != PLAYER_CSACTION_5) { - play->startPlayerCutscene(play, &this->player, PLAYER_CSACTION_5); + play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_5); } play->actorCtx.flags &= ~ACTORCTX_FLAG_4; } else if (this->player.actor.category == ACTORCAT_PLAYER) { func_80A409D4(this, play); - } else if (play->startPlayerCutscene(play, &this->player, PLAYER_CSACTION_NONE)) { + } else if (play->tryPlayerCsAction(play, &this->player, PLAYER_CSACTION_NONE)) { if (this->unk_D88 >= 7) { Vec3f worldPos; @@ -1098,7 +1098,7 @@ s32 EnTest3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* EnTest3* this = THIS; if (limbIndex == KAFEI_LIMB_ROOT) { - D_80A41D6C = &this->player.bodyPartsPos[-1]; + sKafeiCurBodyPartPos = &this->player.bodyPartsPos[0] - 1; if (!(this->player.skelAnime.moveFlags & ANIM_FLAG_4) || (this->player.skelAnime.moveFlags & ANIM_FLAG_1)) { pos->x *= this->player.ageProperties->unk_08; pos->z *= this->player.ageProperties->unk_08; @@ -1118,7 +1118,7 @@ s32 EnTest3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* } } else { if (*dList != NULL) { - D_80A41D6C++; + sKafeiCurBodyPartPos++; } if (D_80A418C8) { *dList = NULL; @@ -1153,13 +1153,13 @@ void EnTest3_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList1, Gfx** dL EnTest3* this = THIS; if (*dList2 != NULL) { - Matrix_MultZero(D_80A41D6C); + Matrix_MultZero(sKafeiCurBodyPartPos); } if (limbIndex == KAFEI_LIMB_LEFT_HAND) { MtxF curMtxF; Actor* leftHandActor; - Math_Vec3f_Copy(&this->player.leftHandWorld.pos, D_80A41D6C); + Math_Vec3f_Copy(&this->player.leftHandWorld.pos, sKafeiCurBodyPartPos); if (*dList1 != NULL) { func_80128640(play, &this->player, *dList1); if (this->player.stateFlags3 & PLAYER_STATE3_20000000) { diff --git a/src/overlays/actors/ovl_En_Test6/z_en_test6.c b/src/overlays/actors/ovl_En_Test6/z_en_test6.c index 6f1ed5090..bfa096a38 100644 --- a/src/overlays/actors/ovl_En_Test6/z_en_test6.c +++ b/src/overlays/actors/ovl_En_Test6/z_en_test6.c @@ -451,7 +451,7 @@ void EnTest6_StopInvertedSoTCutscene(EnTest6* this, PlayState* play) { player->actor.freezeTimer = 0; play->unk_18844 = false; CutsceneManager_Stop(play->playerCsIds[PLAYER_CS_ID_SONG_WARP]); - func_800B7298(play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_END); EnTest6_DisableMotionBlur(); Distortion_RemoveRequest(DISTORTION_TYPE_SONG_OF_TIME); Actor_Kill(&this->actor); @@ -615,30 +615,30 @@ void EnTest6_InvertedSoTCutscene(EnTest6* this, PlayState* play) { // Update Player Cutscene Animation if (this->screenFillAlpha != 0) { - func_800B7298(play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_WAIT); } else { if (this->timer == 90) { // Look side-to-side but downwards, with chin down // gPlayerAnim_al_elf_tobidasi - func_800B7298(play, NULL, PLAYER_CSACTION_66); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_66); } if (this->timer == 70) { // close eyes and sway body in circles // gPlayerAnim_alink_yurayura - func_800B7298(play, NULL, PLAYER_CSACTION_82); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_82); } if (this->timer == 30) { // Look side-to-side but upwards, with chin up // gPlayerAnim_alink_kyoro - func_800B7298(play, NULL, PLAYER_CSACTION_81); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_81); } if (this->timer == 5) { // Give a big nod of approval // gPlayerAnim_al_yes - func_800B7298(play, NULL, PLAYER_CSACTION_74); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_74); } } @@ -705,7 +705,7 @@ void EnTest6_StopDoubleSoTCutscene(EnTest6* this, PlayState* play) { player->actor.freezeTimer = 0; play->unk_18844 = false; CutsceneManager_Stop(play->playerCsIds[PLAYER_CS_ID_SONG_WARP]); - func_800B7298(play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_END); EnTest6_DisableMotionBlur(); Distortion_RemoveRequest(DISTORTION_TYPE_SONG_OF_TIME); Actor_Kill(&this->actor); @@ -864,23 +864,23 @@ void EnTest6_DoubleSoTCutscene(EnTest6* this, PlayState* play) { break; case 98: - func_800B7298(play, NULL, PLAYER_CSACTION_64); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_64); break; case 68: - func_800B7298(play, NULL, PLAYER_CSACTION_65); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_65); break; case 52: - func_800B7298(play, NULL, PLAYER_CSACTION_88); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_88); break; case 43: - func_800B7298(play, NULL, PLAYER_CSACTION_114); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_114); break; case 38: - func_800B7298(play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_WAIT); break; case 14: diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index 48272b8d9..efcd9e08e 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -7,6 +7,7 @@ #include "prevent_bss_reordering.h" #include "z_en_thiefbird.h" #include "overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.h" +#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" #define FLAGS \ (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_UNFRIENDLY | ACTOR_FLAG_200 | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_80000000) @@ -224,7 +225,7 @@ s32 func_80C10B0C(EnThiefbird* this, PlayState* play) { s32 itemId1; s16 itemId2 = 0; - for (; slotId < 24; slotId++) { + for (; slotId < ITEM_NUM_SLOTS; slotId++) { if ((gSaveContext.save.saveInfo.inventory.items[slotId] >= ITEM_BOTTLE) && (gSaveContext.save.saveInfo.inventory.items[slotId] <= ITEM_POTION_BLUE)) { isItemFound = true; diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c index 81527654f..da37e9c17 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c @@ -301,7 +301,7 @@ void EnTimeTag_KickOut_Transition(EnTimeTag* this, PlayState* play) { */ void EnTimeTag_KickOut_WaitForTrigger(EnTimeTag* this, PlayState* play) { if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_KICKOUT_WAIT) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_KICKOUT_TIME_PASSED)) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); Message_StartTextbox(play, 0x1883 + TIMETAG_KICKOUT_GET_TEXT(&this->actor), NULL); this->actionFunc = EnTimeTag_KickOut_Transition; } @@ -334,7 +334,7 @@ void EnTimeTag_KickOut_WaitForTime(EnTimeTag* this, PlayState* play) { } } else if ((hour == TIMETAG_KICKOUT_HOUR(&this->actor)) && (minute == TIMETAG_KICKOUT_MINUTE(&this->actor)) && !Play_InCsMode(play)) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_WAIT); Message_StartTextbox(play, 0x1883 + TIMETAG_KICKOUT_GET_TEXT(&this->actor), NULL); this->actionFunc = EnTimeTag_KickOut_Transition; } diff --git a/src/overlays/actors/ovl_En_Toto/z_en_toto.c b/src/overlays/actors/ovl_En_Toto/z_en_toto.c index 672c79857..aae103cc1 100644 --- a/src/overlays/actors/ovl_En_Toto/z_en_toto.c +++ b/src/overlays/actors/ovl_En_Toto/z_en_toto.c @@ -361,7 +361,7 @@ s32 func_80BA3ED4(EnToto* this, PlayState* play) { s32 func_80BA3EE8(EnToto* this, PlayState* play) { if (this->text->unk1 == 2) { - func_800B7298(play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_WAIT); } return 0; } @@ -456,7 +456,7 @@ s32 func_80BA42BC(EnToto* this, PlayState* play) { Vec3s* end = &D_80BA510C[3]; func_80BA3FB0(this, play); - func_800B7298(play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_END); if (player->actor.world.pos.z > -310.0f) { if ((player->actor.world.pos.x > -150.0f) || (player->actor.world.pos.z > -172.0f)) { phi_s0 = 3; @@ -476,7 +476,7 @@ s32 func_80BA42BC(EnToto* this, PlayState* play) { s32 func_80BA43F4(EnToto* this, PlayState* play) { func_80BA3C88(this); if (func_80122760(play, &this->unk_2BC, 60.0f)) { - func_800B7298(play, NULL, PLAYER_CSACTION_19); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_19); return func_80BA4204(this, play); } return 0; @@ -484,7 +484,7 @@ s32 func_80BA43F4(EnToto* this, PlayState* play) { s32 func_80BA445C(EnToto* this, PlayState* play) { if (func_80BA4128(this, play)) { - func_800B7298(play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_END); return 1; } return 0; @@ -546,7 +546,7 @@ s32 func_80BA4530(EnToto* this, PlayState* play) { } s32 func_80BA46D8(EnToto* this, PlayState* play) { - func_800B7298(play, NULL, PLAYER_CSACTION_68); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_68); Message_DisplayOcarinaStaff(play, sOcarinaActionWindFishPrompts[CUR_FORM]); return 0; } @@ -603,7 +603,7 @@ s32 func_80BA47E0(EnToto* this, PlayState* play) { } s32 func_80BA49A4(EnToto* this, PlayState* play) { - func_800B7298(play, NULL, PLAYER_CSACTION_68); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_68); Audio_PlayFanfareWithPlayerIOCustomPort(NA_BGM_BALLAD_OF_THE_WIND_FISH, 4, this->unk2B3 ^ 0xF); this->unk2B1 = 4; return 0; @@ -623,7 +623,7 @@ s32 func_80BA4A00(EnToto* this, PlayState* play) { if (this->spotlights != NULL) { Actor_Kill(this->spotlights); } - func_800B7298(play, NULL, PLAYER_CSACTION_69); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_69); if (this->unk2B3 == 0xF) { if (CURRENT_DAY == 1) { SET_WEEKEVENTREG(WEEKEVENTREG_50_01); diff --git a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c index 6eaf13b70..cf43eeff6 100644 --- a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c +++ b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c @@ -457,7 +457,7 @@ void EnWallmas_SetupTakePlayer(EnWallmas* this, PlayState* play) { this->actor.speed = 0.0f; this->actor.velocity.y = 0.0f; this->yTarget = this->actor.playerHeightRel; - func_800B724C(play, &this->actor, PLAYER_CSACTION_18); + Player_SetCsAction(play, &this->actor, PLAYER_CSACTION_18); } void EnWallmas_TakePlayer(EnWallmas* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c b/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c index 21d9ff069..57153ea88 100644 --- a/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c +++ b/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c @@ -97,10 +97,10 @@ void EnWarpTag_WaitForPlayer(EnWarptag* this, PlayState* play) { if (!Player_InCsMode(play) && (this->dyna.actor.xzDistToPlayer <= 30.0f) && (this->dyna.actor.playerHeightRel <= 10.0f)) { if (WARPTAG_GET_INVISIBLE(&this->dyna.actor)) { - func_800B7298(play, NULL, PLAYER_CSACTION_81); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_81); this->actionFunc = EnWarpTag_GrottoReturn; } else { - func_800B7298(play, NULL, PLAYER_CSACTION_15); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_15); this->actionFunc = EnWarpTag_RespawnPlayer; } } @@ -129,7 +129,7 @@ void EnWarpTag_Unused809C09A0(EnWarptag* this, PlayState* play) { */ void EnWarpTag_Unused809C0A20(EnWarptag* this, PlayState* play) { if (play->msgCtx.ocarinaMode == OCARINA_MODE_PLAYED_STORMS) { - func_800B7298(play, NULL, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_WAIT); this->actionFunc = EnWarpTag_RespawnPlayer; CutsceneManager_Stop(CutsceneManager_GetCurrentCsId()); diff --git a/src/overlays/actors/ovl_En_Yb/z_en_yb.c b/src/overlays/actors/ovl_En_Yb/z_en_yb.c index 02f9dbb3d..950fd5ee3 100644 --- a/src/overlays/actors/ovl_En_Yb/z_en_yb.c +++ b/src/overlays/actors/ovl_En_Yb/z_en_yb.c @@ -87,9 +87,10 @@ void EnYb_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.01f); ActorShape_Init(&this->actor.shape, 0.0f, EnYb_ActorShadowFunc, 20.0f); - // @bug this alignment is because of player animations, but should be using ALIGN16 - SkelAnime_InitFlex(play, &this->skelAnime, &gYbSkel, &object_yb_Anim_000200, (uintptr_t)this->jointTable & ~0xF, - (uintptr_t)this->morphTable & ~0xF, YB_LIMB_MAX); + //! @bug this alignment is because of player animations, but should be using ALIGN16 + SkelAnime_InitFlex(play, &this->skelAnime, &gYbSkel, &object_yb_Anim_000200, + (void*)((uintptr_t)this->jointTable & ~0xF), (void*)((uintptr_t)this->morphTable & ~0xF), + YB_LIMB_MAX); Animation_PlayLoop(&this->skelAnime, &object_yb_Anim_000200); diff --git a/src/overlays/actors/ovl_En_Zod/z_en_zod.c b/src/overlays/actors/ovl_En_Zod/z_en_zod.c index be2d1bc5a..b4227edee 100644 --- a/src/overlays/actors/ovl_En_Zod/z_en_zod.c +++ b/src/overlays/actors/ovl_En_Zod/z_en_zod.c @@ -480,7 +480,7 @@ void func_80BAFDB4(EnZod* this, PlayState* play) { EnZod_UpdateAnimation(this); if (CutsceneManager_IsNext(this->actor.csId)) { CutsceneManager_Start(this->actor.csId, &this->actor); - func_800B7298(play, NULL, PLAYER_CSACTION_68); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_68); Message_StartTextbox(play, 0x103A, &this->actor); this->actionFunc = EnZod_SetupRehearse; } else { diff --git a/src/overlays/actors/ovl_En_Zog/z_en_zog.c b/src/overlays/actors/ovl_En_Zog/z_en_zog.c index a09670a99..a4945b2e0 100644 --- a/src/overlays/actors/ovl_En_Zog/z_en_zog.c +++ b/src/overlays/actors/ovl_En_Zog/z_en_zog.c @@ -69,42 +69,17 @@ static TexturePtr D_80B958AC[] = { object_zog_Tex_024750, object_zog_Tex_024F50, static TexturePtr D_80B958B8[] = { object_zog_Tex_025F50, object_zog_Tex_026750 }; -static AnimationHeader* D_80B958C0[] = { +static AnimationHeader* sAnimations[] = { &object_zog_Anim_00FC0C, &object_zog_Anim_0106B0, &object_zog_Anim_0166F4, &object_zog_Anim_017170, - &object_zog_Anim_014B10, &object_zog_Anim_018600, &object_zog_Anim_01A06C, + &object_zog_Anim_014B10, &object_zog_Anim_018600, &object_zog_Anim_01A06C, &object_zog_Anim_00CA94, + &object_zog_Anim_00F110, &object_zog_Anim_01579C, &object_zog_Anim_015B80, &object_zog_Anim_00ECBC, + &object_zog_Anim_008EB8, &object_zog_Anim_0099A4, &object_zog_Anim_00931C, &object_zog_Anim_009EC4, + &object_zog_Anim_00B01C, &object_zog_Anim_00BF38, &object_zog_Anim_01A990, &object_zog_Anim_01AD58, + &object_zog_Anim_01B72C, &object_zog_Anim_01BC88, &object_zog_Anim_001000, &object_zog_Anim_001970, + &object_zog_Anim_002344, &object_zog_Anim_002894, &object_zog_Anim_0030E0, &object_zog_Anim_0037F8, + &object_zog_Anim_0041D0, &object_zog_Anim_004BDC, &object_zog_Anim_0055B4, }; -static AnimationHeader* D_80B958DC[] = { &object_zog_Anim_00CA94, &object_zog_Anim_00F110 }; - -static AnimationHeader* D_80B958E4[] = { &object_zog_Anim_01579C, &object_zog_Anim_015B80, &object_zog_Anim_00ECBC }; - -static AnimationHeader* D_80B958F0[] = { &object_zog_Anim_008EB8, &object_zog_Anim_0099A4 }; - -static AnimationHeader* D_80B958F8[] = { &object_zog_Anim_00931C, &object_zog_Anim_009EC4, &object_zog_Anim_00B01C }; - -static AnimationHeader* D_80B95904[] = { - &object_zog_Anim_00BF38, &object_zog_Anim_01A990, &object_zog_Anim_01AD58, - &object_zog_Anim_01B72C, &object_zog_Anim_01BC88, -}; - -static AnimationHeader* D_80B95918 = &object_zog_Anim_001000; - -static AnimationHeader* D_80B9591C = &object_zog_Anim_001970; - -static AnimationHeader* D_80B95920 = &object_zog_Anim_002344; - -static AnimationHeader* D_80B95924 = &object_zog_Anim_002894; - -static AnimationHeader* D_80B95928 = &object_zog_Anim_0030E0; - -static AnimationHeader* D_80B9592C = &object_zog_Anim_0037F8; - -static AnimationHeader* D_80B95930 = &object_zog_Anim_0041D0; - -static AnimationHeader* D_80B95934 = &object_zog_Anim_004BDC; - -static AnimationHeader* D_80B95938 = &object_zog_Anim_0055B4; - static s16 D_80B9593C[] = { 0, 1, 2, 3 }; static s16 D_80B95944[] = { 4, 5 }; @@ -272,7 +247,7 @@ void EnZog_Init(Actor* thisx, PlayState* play) { this->unk_31C = 2; this->unk_31E = 0; - Animation_PlayLoop(&this->skelAnime, D_80B958DC[0]); + Animation_PlayLoop(&this->skelAnime, sAnimations[7]); this->actor.textId = 0x1009; if (CHECK_WEEKEVENTREG(WEEKEVENTREG_91_02)) { this->actor.textId = 0x103C; @@ -296,7 +271,7 @@ void EnZog_Destroy(Actor* thisx, PlayState* play) { } void func_80B939C0(EnZog* this, s16 arg1, u8 arg2) { - Animation_Change(&this->skelAnime, D_80B958C0[arg1], 1.0f, 0.0f, Animation_GetLastFrame(D_80B958C0[arg1]), arg2, + Animation_Change(&this->skelAnime, sAnimations[arg1], 1.0f, 0.0f, Animation_GetLastFrame(sAnimations[arg1]), arg2, -5.0f); this->unk_304 = arg1; } @@ -324,7 +299,7 @@ void func_80B93A48(EnZog* this, PlayState* play) { table = D_80B95974[this->unk_2FC]; this->unk_304 = table[this->unk_302]; - Animation_PlayOnce(&this->skelAnime, D_80B958C0[this->unk_304]); + Animation_PlayOnce(&this->skelAnime, sAnimations[this->unk_304]); SkelAnime_Update(&this->skelAnime); } } @@ -407,13 +382,13 @@ s32 func_80B93EA0(EnZog* this, PlayState* play) { switch (this->cueId) { case 2: case 3: - Animation_PlayLoop(&this->skelAnime, *D_80B958F0); + Animation_PlayLoop(&this->skelAnime, sAnimations[12]); this->unk_31C = 0; this->unk_31E = 1; break; case 4: - Animation_PlayLoop(&this->skelAnime, *D_80B958F8); + Animation_PlayLoop(&this->skelAnime, sAnimations[14]); this->unk_31C = 2; this->unk_31E = 1; break; @@ -421,38 +396,38 @@ s32 func_80B93EA0(EnZog* this, PlayState* play) { case 5: switch (this->unk_304) { case 16: - Animation_PlayOnce(&this->skelAnime, *D_80B95904); + Animation_PlayOnce(&this->skelAnime, sAnimations[17]); this->unk_304 = 17; this->unk_31C = 2; this->unk_31E = 0; break; case 17: - Animation_Change(&this->skelAnime, *D_80B958DC, 0.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f); + Animation_Change(&this->skelAnime, sAnimations[7], 0.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f); break; } break; case 6: - Animation_PlayLoop(&this->skelAnime, *D_80B958E4); + Animation_PlayLoop(&this->skelAnime, sAnimations[9]); this->unk_31C = 1; this->unk_31E = 1; break; case 12: - Animation_PlayLoop(&this->skelAnime, D_80B95930); + Animation_PlayLoop(&this->skelAnime, sAnimations[28]); break; case 13: - Animation_PlayLoop(&this->skelAnime, D_80B95938); + Animation_PlayLoop(&this->skelAnime, sAnimations[30]); break; case 14: - Animation_PlayLoop(&this->skelAnime, D_80B95928); + Animation_PlayLoop(&this->skelAnime, sAnimations[26]); break; case 15: - Animation_PlayLoop(&this->skelAnime, D_80B9591C); + Animation_PlayLoop(&this->skelAnime, sAnimations[23]); break; } SkelAnime_Update(&this->skelAnime); @@ -559,24 +534,24 @@ s32 func_80B93EA0(EnZog* this, PlayState* play) { break; case 11: - Animation_PlayLoop(&this->skelAnime, D_80B95920); + Animation_PlayLoop(&this->skelAnime, sAnimations[24]); break; case 12: - Animation_PlayOnce(&this->skelAnime, D_80B9592C); + Animation_PlayOnce(&this->skelAnime, sAnimations[27]); break; case 13: - Animation_PlayOnce(&this->skelAnime, D_80B95934); + Animation_PlayOnce(&this->skelAnime, sAnimations[29]); break; case 14: this->unk_30A |= 2; - Animation_PlayOnce(&this->skelAnime, D_80B95924); + Animation_PlayOnce(&this->skelAnime, sAnimations[25]); break; case 15: - Animation_PlayOnce(&this->skelAnime, D_80B95918); + Animation_PlayOnce(&this->skelAnime, sAnimations[22]); break; } } diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c index 60eacb8f9..347b6b91e 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c @@ -593,7 +593,7 @@ void func_809381C4(ObjBean* this, PlayState* play) { if (CutsceneManager_IsNext(this->dyna.actor.csId)) { CutsceneManager_StartWithPlayerCs(this->dyna.actor.csId, &this->dyna.actor); if (this->dyna.actor.csId >= 0) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_1); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_1); } this->unk_1E4 = 2; func_80938284(this); @@ -750,7 +750,7 @@ void func_80938780(ObjBean* this, PlayState* play) { if (CutsceneManager_IsNext(this->dyna.actor.csId)) { CutsceneManager_StartWithPlayerCs(this->dyna.actor.csId, &this->dyna.actor); if (this->dyna.actor.csId >= 0) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_1); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_1); } this->unk_1B4 = 36; func_80937130(this); diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c index fdbc54e5c..6544e67ea 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c @@ -495,7 +495,7 @@ void func_8098E0B8(ObjComb* this, PlayState* play) { if ((this->unk_1B4 == 10) && (this->unk_1B6 != 0) && (this->unk_1B5 == 2) && (this->actor.csId >= 0)) { if (CutsceneManager_GetCurrentCsId() == this->actor.csId) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_4); } } } @@ -529,7 +529,7 @@ void ObjComb_Update(Actor* thisx, PlayState* play) { if (CutsceneManager_IsNext(this->actor.csId)) { CutsceneManager_StartWithPlayerCs(this->actor.csId, &this->actor); if (this->actor.csId >= 0) { - func_800B7298(play, &this->actor, PLAYER_CSACTION_1); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); } if (((OBJCOMB_GET_8000(&this->actor) | OBJCOMB_GET_80(&this->actor)) == 1) && diff --git a/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c b/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c index 202316bcb..9f5e12c3e 100644 --- a/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c +++ b/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c @@ -1209,7 +1209,7 @@ void func_80A25FD4(ObjIceblock* this, PlayState* play) { func_80A23370(this, sp2C); func_80A260E8(this); sp30 = false; - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); this->unk_1B0 |= 1; } @@ -1255,7 +1255,7 @@ void func_80A26144(ObjIceblock* this, PlayState* play) { if ((this->unk_1B0 & 1) && (isBool || sp28 || (this->dyna.actor.xzDistToPlayer > 400.0f))) { this->unk_1B0 &= ~1; - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_END); } if (isBool) { @@ -1454,7 +1454,7 @@ void ObjIceblock_Update(Actor* thisx, PlayState* play) { this->unk_1B0 &= ~0x100; if (this->unk_1B0 & 1) { this->unk_1B0 &= ~1; - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_END); } func_80A266C4(this); } diff --git a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c index 9a1b309ca..992b9c5a9 100644 --- a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c +++ b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c @@ -130,7 +130,7 @@ void func_8099FD7C(Actor* thisx, PlayState* play) { if (CutsceneManager_IsNext(thisx->csId)) { CutsceneManager_StartWithPlayerCs(thisx->csId, thisx); if (thisx->csId >= 0) { - func_800B7298(play, thisx, PLAYER_CSACTION_4); + Player_SetCsActionWithHaltedActors(play, thisx, PLAYER_CSACTION_4); } func_8099FB64(thisx, play); thisx->update = Actor_Noop; diff --git a/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c b/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c index c57ed2220..d9a7b831f 100644 --- a/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c +++ b/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c @@ -535,7 +535,7 @@ void func_80A22334(ObjSkateblock* this, PlayState* play) { func_80A21C88(this, sp2C); func_80A2244C(this); sp30 = false; - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_WAIT); this->unk_1C1 |= 1; } @@ -591,7 +591,7 @@ void func_80A224A4(ObjSkateblock* this, PlayState* play) { if ((this->unk_1C1 & 1) && (sp24 || sp28 || (this->dyna.actor.xzDistToPlayer > 400.0f))) { this->unk_1C1 &= ~1; - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_END); } func_80A21F74(this, play); diff --git a/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c b/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c index da7028dfc..befb828e4 100644 --- a/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c +++ b/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c @@ -679,7 +679,7 @@ void func_80B30A4C(ObjSpidertent* this, PlayState* play) { if (CutsceneManager_IsNext(this->dyna.actor.csId)) { CutsceneManager_StartWithPlayerCs(this->dyna.actor.csId, &this->dyna.actor); if (this->dyna.actor.csId >= 0) { - func_800B7298(play, &this->dyna.actor, PLAYER_CSACTION_1); + Player_SetCsActionWithHaltedActors(play, &this->dyna.actor, PLAYER_CSACTION_1); } Flags_SetSwitch(play, OBJSPIDERTENT_GET_SWITCH_FLAG(&this->dyna.actor)); func_80B30AD4(this); diff --git a/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c b/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c index 72192320c..ba576b3b4 100644 --- a/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c +++ b/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c @@ -79,7 +79,7 @@ void func_808A7AAC(ObjWturn* this, PlayState* play) { CutsceneManager_StartWithPlayerCs(this->actor.csId, &this->actor); Play_EnableMotionBlur(140); this->subCamId = CutsceneManager_GetCurrentSubCamId(this->actor.csId); - func_800B7298(play, &this->actor, PLAYER_CSACTION_21); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_21); subCamAt.x = player->actor.focus.pos.x; subCamAt.z = player->actor.focus.pos.z; subCamAt.y = player->actor.focus.pos.y; @@ -103,7 +103,7 @@ void func_808A7C04(ObjWturn* this, PlayState* play) { this->actor.world.pos.y += this->actor.playerHeightRel; player->actor.shape.shadowAlpha = 0; - func_800B7298(play, &this->actor, PLAYER_CSACTION_84); + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_84); Player_PlaySfx(player, NA_SE_VO_NAVY_ENEMY); this->unk_14A = 0; Play_DisableMotionBlur(); diff --git a/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c b/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c index fa0bf7821..66d650564 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c +++ b/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c @@ -71,9 +71,7 @@ void OceffWipe_Draw(Actor* thisx, PlayState* play) { s32 i; Vec3f eye = GET_ACTIVE_CAM(play)->eye; Vtx* vtxPtr; - Vec3f quakeOffset; - - Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(play)); + Vec3f quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); OPEN_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c b/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c index 59f9386a5..f87f4b8ef 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c +++ b/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c @@ -65,9 +65,7 @@ void OceffWipe2_Draw(Actor* thisx, PlayState* play) { s32 pad[2]; Vec3f eye = GET_ACTIVE_CAM(play)->eye; Vtx* vtxPtr; - Vec3f quakeOffset; - - Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(play)); + Vec3f quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); vtxPtr = sEponaSongFrustumVtx; diff --git a/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c b/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c index 070fa9965..d1564d7e1 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c +++ b/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c @@ -66,9 +66,7 @@ void OceffWipe3_Draw(Actor* thisx, PlayState* play) { s32 pad[2]; Vec3f eye = GET_ACTIVE_CAM(play)->eye; Vtx* vtxPtr; - Vec3f quakeOffset; - - Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(play)); + Vec3f quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); vtxPtr = sSariaSongFrustumVtx; diff --git a/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c b/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c index cccb3e169..7f5f43fee 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c +++ b/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c @@ -65,9 +65,7 @@ void OceffWipe4_Draw(Actor* thisx, PlayState* play) { s32 pad[2]; Vec3f eye = GET_ACTIVE_CAM(play)->eye; Vtx* vtxPtr; - Vec3f quakeOffset; - - Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(play)); + Vec3f quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); if (this->counter < 16) { z = Math_SinS(this->counter * 0x400) * 1220.0f; diff --git a/src/overlays/actors/ovl_Oceff_Wipe5/z_oceff_wipe5.c b/src/overlays/actors/ovl_Oceff_Wipe5/z_oceff_wipe5.c index 3d98236b2..43542180a 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe5/z_oceff_wipe5.c +++ b/src/overlays/actors/ovl_Oceff_Wipe5/z_oceff_wipe5.c @@ -88,7 +88,7 @@ void OceffWipe5_Draw(Actor* thisx, PlayState* play) { colorIndex = 0; } - Camera_GetQuakeOffset(&quakeOffset, activeCam); + quakeOffset = Camera_GetQuakeOffset(activeCam); if (this->counter < 32) { z = Math_SinS(this->counter << 9) * phi_fv1; diff --git a/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c b/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c index 601c62d5d..0bf8d89d0 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c +++ b/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c @@ -59,14 +59,11 @@ void OceffWipe6_Draw(Actor* thisx, PlayState* play) { u8 alpha; s32 i; s32 counter; - Vec3f activeCamEye; + Vec3f activeCamEye = GET_ACTIVE_CAM(play)->eye; s32 pad; - Vec3f quakeOffset; + Vec3f quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); s32 pad2; - activeCamEye = GET_ACTIVE_CAM(play)->eye; - Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(play)); - if (this->counter < 32) { counter = this->counter; z = Math_SinS(counter * 0x200) * 1220.0f; diff --git a/src/overlays/actors/ovl_Oceff_Wipe7/z_oceff_wipe7.c b/src/overlays/actors/ovl_Oceff_Wipe7/z_oceff_wipe7.c index 76946aa83..81c32a5e5 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe7/z_oceff_wipe7.c +++ b/src/overlays/actors/ovl_Oceff_Wipe7/z_oceff_wipe7.c @@ -65,11 +65,9 @@ void OceffWipe7_Draw(Actor* thisx, PlayState* play) { s32 counter; Vec3f activeCamEye = GET_ACTIVE_CAM(play)->eye; s32 pad; - Vec3f quakeOffset; + Vec3f quakeOffset = Camera_GetQuakeOffset(GET_ACTIVE_CAM(play)); s32 pad2; - Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(play)); - if (this->counter < 32) { z = Math_SinS(this->counter * 0x200) * 1220.0f; } else { diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 525d8ab47..00204c6eb 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -52,7 +52,7 @@ void Player_Update(Actor* thisx, PlayState* play); void Player_Draw(Actor* thisx, PlayState* play); s32 Player_GrabPlayer(PlayState* play, Player* this); -s32 func_8085B28C(PlayState* play, Player* this, PlayerCsAction csAction); +s32 Player_TryCsAction(PlayState* play, Player* this, PlayerCsAction csAction); void func_8085B384(Player* this, PlayState* play); s32 Player_InflictDamage(PlayState* play, s32 damage); void Player_TalkWithPlayer(PlayState* play, Actor* actor); @@ -207,7 +207,7 @@ void Player_Action_93(Player* this, PlayState* play); void Player_Action_94(Player* this, PlayState* play); void Player_Action_95(Player* this, PlayState* play); void Player_Action_96(Player* this, PlayState* play); -void Player_Action_97(Player* this, PlayState* play); +void Player_Action_CsAction(Player* this, PlayState* play); s32 Player_UpperAction_0(Player* this, PlayState* play); s32 Player_UpperAction_1(Player* this, PlayState* play); @@ -4074,7 +4074,7 @@ s32 func_80830E30(Player* this, PlayState* play) { } PlayerAnimation_PlayOnce(play, &this->skelAnimeUpper, - (Player_IsHoldingHookshot(this)) + Player_IsHoldingHookshot(this) ? &gPlayerAnim_link_hook_shot_ready : ((this->transformation == PLAYER_FORM_DEKU) ? &gPlayerAnim_pn_tamahakidf : &gPlayerAnim_link_bow_bow_ready)); @@ -7283,11 +7283,17 @@ void Player_StopCutscene(Player* this) { } } -s32 func_808387A0(PlayState* play, Player* this) { +/** + * @brief If appropriate, setup action for performing a `csAction` + * + * @return true if a `csAction` is started, false if not + */ +s32 Player_StartCsAction(PlayState* play, Player* this) { if (this->unk_AA5 == PLAYER_UNKAA5_4) { Player_StopCutscene(this); this->actor.flags &= ~ACTOR_FLAG_TALK_REQUESTED; - Player_SetAction(play, this, Player_Action_97, 0); + Player_SetAction(play, this, Player_Action_CsAction, 0); + if (this->cv.haltActorsDuringCsAction) { this->stateFlags1 |= PLAYER_STATE1_20000000; } @@ -7471,7 +7477,7 @@ s32 Player_ActionChange_13(Player* this, PlayState* play) { func_80833AA0(this, play); return true; } - if (!func_808387A0(play, this)) { + if (!Player_StartCsAction(play, this)) { if (this->unk_AA5 == PLAYER_UNKAA5_5) { if ((this->itemAction >= PLAYER_IA_MASK_MIN) && (this->itemAction <= PLAYER_IA_MASK_MAX)) { PlayerMask maskId = GET_MASK_FROM_IA(this->itemAction); @@ -8412,7 +8418,7 @@ s32 func_8083B3B4(PlayState* play, Player* this, Input* input) { ((ABS_ALT(this->unk_AAA) < 0x2EE0) && (this->currentBoots < PLAYER_BOOTS_ZORA_UNDERWATER) && ((s32)SurfaceType_GetConveyorSpeed(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId) <= CONVEYOR_SPEED_SLOW))))) { - if (Player_Action_97 != this->actionFunc) { + if (Player_Action_CsAction != this->actionFunc) { Player_SetAction(play, this, Player_Action_59, 0); } @@ -10329,7 +10335,7 @@ s32 func_80840A30(PlayState* play, Player* this, f32* arg2, f32 arg3) { } s32 func_80840CD4(Player* this, PlayState* play) { - if (func_808387A0(play, this)) { + if (Player_StartCsAction(play, this)) { this->stateFlags2 |= PLAYER_STATE2_20000; } else if (!CHECK_BTN_ALL(sPlayerControlInput->cur.button, BTN_B)) { PlayerMeleeWeaponAnimation meleeWeaponAnim; @@ -10646,7 +10652,7 @@ void Player_Init(Actor* thisx, PlayState* play) { play->unk_18770 = func_8085B170; play->startPlayerFishing = Player_StartFishing; play->grabPlayer = Player_GrabPlayer; - play->startPlayerCutscene = func_8085B28C; + play->tryPlayerCsAction = Player_TryCsAction; play->func_18780 = func_8085B384; play->damagePlayer = Player_InflictDamage; play->talkWithPlayer = Player_TalkWithPlayer; @@ -10742,7 +10748,7 @@ void Player_Init(Actor* thisx, PlayState* play) { } if ((this->csAction == PLAYER_CSACTION_9) || (this->csAction == PLAYER_CSACTION_93)) { - Player_SetAction(play, this, Player_Action_97, 0); + Player_SetAction(play, this, Player_Action_CsAction, 0); this->stateFlags1 |= PLAYER_STATE1_20000000; } else { Player_SetAction(play, this, Player_Action_87, 0); @@ -10780,7 +10786,7 @@ void Player_Init(Actor* thisx, PlayState* play) { if (this->actor.shape.rot.x != 0) { this->actor.shape.rot.x = 0; this->csAction = PLAYER_CSACTION_68; - Player_SetAction(play, this, Player_Action_97, 0); + Player_SetAction(play, this, Player_Action_CsAction, 0); this->stateFlags1 |= PLAYER_STATE1_20000000; return; } @@ -12144,12 +12150,12 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) { if (!(this->stateFlags2 & PLAYER_STATE2_80) && (this->actor.id == ACTOR_PLAYER)) { if ((play->csCtx.playerCue != NULL) && (sPlayerCueToCsActionMap[play->csCtx.playerCue->id] != PLAYER_CSACTION_NONE)) { - func_800B7298(play, NULL, PLAYER_CSACTION_5); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_5); Player_StopHorizontalMovement(this); } else if (((u32)this->csAction == PLAYER_CSACTION_NONE) && !(this->stateFlags2 & (PLAYER_STATE2_400 | PLAYER_STATE2_8000000)) && (play->csCtx.state != CS_STATE_STOP)) { - func_800B7298(play, NULL, PLAYER_CSACTION_20); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_20); Player_StopHorizontalMovement(this); } } @@ -12160,14 +12166,14 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) { if ((this->csAction != PLAYER_CSACTION_END) || !(this->stateFlags1 & (PLAYER_STATE1_4 | PLAYER_STATE1_2000 | PLAYER_STATE1_4000 | PLAYER_STATE1_200000 | PLAYER_STATE1_4000000))) { - if (Player_Action_97 != this->actionFunc) { + if (Player_Action_CsAction != this->actionFunc) { this->unk_AA5 = PLAYER_UNKAA5_4; if (this->csAction == PLAYER_CSACTION_5) { - func_808387A0(play, this); + Player_StartCsAction(play, this); func_8082DAD4(this); } } - } else if (Player_Action_97 != this->actionFunc) { + } else if (Player_Action_CsAction != this->actionFunc) { Player_CsAction_End(play, this, NULL); } } else { @@ -13191,7 +13197,7 @@ s32 func_808482E0(PlayState* play, Player* this) { play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; this->stateFlags1 &= ~PLAYER_STATE1_20000000; - func_8085B28C(play, NULL, PLAYER_CSACTION_WAIT); + Player_TryCsAction(play, NULL, PLAYER_CSACTION_WAIT); } this->getItemId = GI_NONE; } @@ -15498,7 +15504,7 @@ void Player_Action_44(Player* this, PlayState* play) { func_80837BD0(play, this); this->av2.actionVar2 = sp44; - } else if (!func_80847994(play, this) && !func_80847880(play, this) && !func_808387A0(play, this) && + } else if (!func_80847994(play, this) && !func_80847880(play, this) && !Player_StartCsAction(play, this) && ((this->talkActor != this->interactRangeActor) || !Player_ActionChange_2(this, play))) { if (func_801242B4(this)) { func_808353DC(play, this); @@ -16716,9 +16722,9 @@ void func_80851F18(PlayState* play, Player* this) { temp_v0 = &this->unk_B10[this->unk_B86[i]]; AnimationContext_SetLoadFrame(play, temp->unk_4, *temp_v0, this->skelAnime.limbCount, - ALIGN16((uintptr_t)this->blendTableBuffer)); + (void*)ALIGN16((uintptr_t)this->blendTableBuffer)); AnimationContext_SetCopyTrue(play, this->skelAnime.limbCount, this->skelAnime.jointTable, - ALIGN16((uintptr_t)this->blendTableBuffer), D_8085BA20); + (void*)ALIGN16((uintptr_t)this->blendTableBuffer), D_8085BA20); } temp_v0 = this->unk_B10; @@ -16899,7 +16905,7 @@ void Player_Action_63(Player* this, PlayState* play) { if (actor != NULL) { this->stateFlags1 &= ~PLAYER_STATE1_20000000; this->csAction = PLAYER_CSACTION_NONE; - func_8085B28C(play, NULL, PLAYER_CSACTION_19); + Player_TryCsAction(play, NULL, PLAYER_CSACTION_19); this->stateFlags1 |= PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000; } else { func_80836A5C(this, play); @@ -16985,7 +16991,7 @@ void Player_Action_65(Player* this, PlayState* play) { Player_StopCutscene(this); func_80848250(play, this); this->stateFlags1 &= ~PLAYER_STATE1_20000000; - func_8085B28C(play, NULL, PLAYER_CSACTION_93); + Player_TryCsAction(play, NULL, PLAYER_CSACTION_93); } else { s32 var_a2 = ((this->talkActor != NULL) && (this->exchangeItemAction <= PLAYER_IA_MINUS1)) || (this->stateFlags3 & PLAYER_STATE3_20); @@ -17516,10 +17522,10 @@ void Player_Action_73(Player* this, PlayState* play) { void func_80859CE0(PlayState* play, Player* this, s32 arg2); void Player_Action_74(Player* this, PlayState* play) { - if ((DECR(this->av2.actionVar2) == 0) && func_808387A0(play, this)) { + if ((DECR(this->av2.actionVar2) == 0) && Player_StartCsAction(play, this)) { func_80859CE0(play, this, 0); - Player_SetAction(play, this, Player_Action_97, 0); - Player_Action_97(this, play); + Player_SetAction(play, this, Player_Action_CsAction, 0); + Player_Action_CsAction(this, play); } } @@ -19800,7 +19806,7 @@ void Player_CsAction_2(PlayState* play, Player* this, CsCmdActorCue* cue) { } if ((this->csAction == PLAYER_CSACTION_20) && (play->csCtx.state == CS_STATE_IDLE)) { - func_800B7298(play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_END); } else if (this->stateFlags1 & PLAYER_STATE1_8000000) { func_80859300(play, this, 0); this->actor.velocity.y = 0.0f; @@ -20359,7 +20365,7 @@ void Player_CsAction_48(PlayState* play, Player* this, CsCmdActorCue* cue) { if (sPlayerCueToCsActionMap[this->cueId] != PLAYER_CSACTION_16) { this->csAction = PLAYER_CSACTION_END; - func_800B7298(play, NULL, PLAYER_CSACTION_END); + Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_END); this->cueId = PLAYER_CUEID_NONE; Player_StopHorizontalMovement(this); return; @@ -20409,7 +20415,7 @@ void Player_CsAction_48(PlayState* play, Player* this, CsCmdActorCue* cue) { } } -void Player_Action_97(Player* this, PlayState* play) { +void Player_Action_CsAction(Player* this, PlayState* play) { if (this->csAction != this->prevCsAction) { D_80862B6C = this->skelAnime.moveFlags; func_8082E794(this); @@ -20454,7 +20460,7 @@ s32 Player_GrabPlayer(PlayState* play, Player* this) { return false; } -s32 func_8085B28C(PlayState* play, Player* this, PlayerCsAction csAction) { +s32 Player_TryCsAction(PlayState* play, Player* this, PlayerCsAction csAction) { Player* player = GET_PLAYER(play); if (this != NULL) { @@ -20462,7 +20468,9 @@ s32 func_8085B28C(PlayState* play, Player* this, PlayerCsAction csAction) { return Player_Action_36 == this->actionFunc; } + // Specific to Kafei, any negative csAction works if ((this->actor.id == ACTOR_EN_TEST3) && (csAction < 0)) { + // PLAYER_CSACTION_NEG1 func_8083B0E4(play, this, this->actor.home.rot.y); return false; } @@ -20474,7 +20482,7 @@ s32 func_8085B28C(PlayState* play, Player* this, PlayerCsAction csAction) { if ((player->actor.id == ACTOR_EN_TEST3) || !Player_InBlockingCsMode(play, player)) { func_8082DE50(play, player); - Player_SetAction(play, player, Player_Action_97, 0); + Player_SetAction(play, player, Player_Action_CsAction, 0); player->csAction = csAction; player->csActor = &this->actor; func_8082DAD4(player); @@ -20523,7 +20531,7 @@ void Player_TalkWithPlayer(PlayState* play, Actor* actor) { player->lockOnActor = actor; if (actor->textId == 0xFFFF) { - func_800B7298(play, actor, PLAYER_CSACTION_1); + Player_SetCsActionWithHaltedActors(play, actor, PLAYER_CSACTION_1); actor->flags |= ACTOR_FLAG_TALK_REQUESTED; func_8082DE14(play, player); } else { diff --git a/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c b/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c index 38ef2b709..90c142829 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c +++ b/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c @@ -34,7 +34,7 @@ u32 EffectSsBubble_Init(PlayState* play, u32 index, EffectSs* this, void* initPa { TexturePtr tex = (Rand_ZeroOne() < 0.5f) ? gEffBubble1Tex : gEffBubble2Tex; - this->gfx = OS_K0_TO_PHYSICAL(SEGMENTED_TO_K0(tex)); + this->gfx = (void*)OS_K0_TO_PHYSICAL(SEGMENTED_TO_K0(tex)); } this->pos.x = ((Rand_ZeroOne() - 0.5f) * initParams->xzPosRandScale) + initParams->pos.x; diff --git a/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c b/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c index 094f8bbf9..60743c687 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c +++ b/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c @@ -50,7 +50,7 @@ u32 EffectSsDtBubble_Init(PlayState* play, u32 index, EffectSs* this, void* init { TexturePtr tex = (Rand_ZeroOne() < 0.5f) ? gEffBubble1Tex : gEffBubble2Tex; - this->gfx = OS_K0_TO_PHYSICAL(SEGMENTED_TO_K0(tex)); + this->gfx = (void*)OS_K0_TO_PHYSICAL(SEGMENTED_TO_K0(tex)); } Math_Vec3f_Copy(&this->pos, &initParams->pos); diff --git a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c index 9c6a4c341..9434dbd41 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c +++ b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c @@ -34,8 +34,8 @@ u32 EffectSsExtra_Init(PlayState* play, u32 index, EffectSs* this, void* initPar s32 objectSlot; objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_YABUSAME_POINT); - if ((objectSlot > OBJECT_SLOT_NONE) && (Object_IsLoaded(&play->objectCtx, objectSlot))) { - void* segBackup = gSegments[6]; + if ((objectSlot > OBJECT_SLOT_NONE) && Object_IsLoaded(&play->objectCtx, objectSlot)) { + uintptr_t segBackup = gSegments[6]; gSegments[6] = OS_K0_TO_PHYSICAL(play->objectCtx.slots[objectSlot].segment); diff --git a/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c b/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c index 93d221e09..011e96104 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c +++ b/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c @@ -40,7 +40,7 @@ u32 EffectSsSibuki_Init(PlayState* play, u32 index, EffectSs* this, void* initPa { TexturePtr tex = (KREG(2) != 0) ? gEffBubble2Tex : gEffBubble1Tex; - this->gfx = OS_K0_TO_PHYSICAL(SEGMENTED_TO_K0(tex)); + this->gfx = (void*)OS_K0_TO_PHYSICAL(SEGMENTED_TO_K0(tex)); } this->life = ((s32)((Rand_ZeroOne() * (500.0f + KREG(64))) * 0.01f)) + KREG(65) + 10; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c b/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c index 9ec0a396f..fa1edaf6b 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c @@ -2452,9 +2452,9 @@ void FileSelect_InitContext(GameState* thisx) { this->nameBoxAlpha[2] = this->nameAlpha[0] = this->nameAlpha[1] = this->nameAlpha[2] = this->connectorAlpha[0] = this->connectorAlpha[1] = this->connectorAlpha[2] = this->fileInfoAlpha[0] = this->fileInfoAlpha[1] = this->fileInfoAlpha[2] = this->actionButtonAlpha[FS_BTN_ACTION_COPY] = - this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->actionButtonAlpha[2] = - this->actionButtonAlpha[3] = this->optionButtonAlpha = this->nameEntryBoxAlpha = - this->controlsAlpha = this->emptyFileTextAlpha = 0; + this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = this->optionButtonAlpha = + this->nameEntryBoxAlpha = this->controlsAlpha = this->emptyFileTextAlpha = 0; this->windowPosX = 6; this->actionTimer = 4; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c index e61512695..005fc7eb9 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c @@ -1027,6 +1027,8 @@ void FileSelect_DrawOptionsImpl(GameState* thisx) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); } + //! @bug the gOptionsMenuHeaders usage here will produce an OoB read for i == 5. It reads the first element of + //! `gOptionsMenuSettings` gDPLoadTextureBlock(POLY_OPA_DISP++, gOptionsMenuSettings[i].texture, G_IM_FMT_IA, G_IM_SIZ_8b, gOptionsMenuSettings[i].width, gOptionsMenuHeaders[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c index e658251e4..f8cb77624 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c @@ -422,9 +422,9 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { // Items // Loop over rows (i) - for (slot = 0, i = 0, rectTop = 38; i < 4; i++, rectTop += 14) { + for (slot = 0, i = 0, rectTop = 38; i < ITEM_GRID_ROWS; i++, rectTop += 14) { // Loop over columns (j) - for (j = 0, rectLeft = 44; j < 6; j++, slot++, rectLeft += 23) { + for (j = 0, rectLeft = 44; j < ITEM_GRID_COLS; j++, slot++, rectLeft += 23) { counterDigits[3] = 0; counterDigits[2] = 0; if ((slot == SLOT_BOW) || ((slot >= SLOT_BOMB) && (slot <= SLOT_DEKU_NUT)) || (slot == SLOT_POWDER_KEG) || @@ -456,12 +456,12 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { // Masks // Loop over rows (i) - for (slot = 0, i = 0, rectTop = 38; i < 4; i++, rectTop += 14) { + for (slot = 0, i = 0, rectTop = 38; i < MASK_GRID_ROWS; i++, rectTop += 14) { // Loop over columns (j) - for (j = 0, rectLeft = 204; j < 6; j++, slot++, rectLeft += 14) { + for (j = 0, rectLeft = 204; j < MASK_GRID_COLS; j++, slot++, rectLeft += 14) { counterDigits[2] = 0; - if (gSaveContext.save.saveInfo.inventory.items[SLOT_MASK_POSTMAN + slot] != ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[slot + ITEM_NUM_SLOTS] != ITEM_NONE) { counterDigits[2] = 1; } KaleidoScope_DrawDigit(play, counterDigits[2], rectLeft, rectTop); diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c index 70c239996..66710080e 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c @@ -8,6 +8,7 @@ #include "z64map.h" #include "z64view.h" #include "overlays/gamestates/ovl_opening/z_opening.h" + #include "archives/icon_item_static/icon_item_static_yar.h" #include "interface/icon_item_gameover_static/icon_item_gameover_static.h" #include "interface/icon_item_jpn_static/icon_item_jpn_static.h" @@ -2860,7 +2861,7 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)play->objectCtx.spaceStart); size0 = SEGMENT_ROM_SIZE(icon_item_static_syms); - CmpDma_LoadAllFiles((uintptr_t)SEGMENT_ROM_START(icon_item_static_yar), pauseCtx->iconItemSegment, size0); + CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_static_yar), pauseCtx->iconItemSegment, size0); gSegments[0x08] = OS_K0_TO_PHYSICAL(pauseCtx->iconItemSegment); @@ -2872,8 +2873,7 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0); size1 = SEGMENT_ROM_SIZE(icon_item_24_static_syms); - CmpDma_LoadAllFiles((uintptr_t)SEGMENT_ROM_START(icon_item_24_static_yar), pauseCtx->iconItem24Segment, - size1); + CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_24_static_yar), pauseCtx->iconItem24Segment, size1); pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItem24Segment + size1); if (MapExp_CurRoomHasMapI(play)) { @@ -2888,7 +2888,7 @@ void KaleidoScope_Update(PlayState* play) { sInDungeonScene = false; size = SEGMENT_ROM_SIZE(icon_item_field_static); - DmaMgr_SendRequest0(pauseCtx->iconItemAltSegment, _icon_item_field_staticSegmentRomStart, size); + DmaMgr_SendRequest0(pauseCtx->iconItemAltSegment, SEGMENT_ROM_START(icon_item_field_static), size); iconItemLangSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemAltSegment + size); } diff --git a/tools/disasm/files.txt b/tools/disasm/files.txt index 4d028f94a..a6f6d6afe 100644 --- a/tools/disasm/files.txt +++ b/tools/disasm/files.txt @@ -247,7 +247,7 @@ # .data section 0x800969C0 : "rspboot", 0x80096B20 : "idle", - 0x80096B40 : "viconfig", + 0x80096B40 : "carthandle", 0x80096B50 : "z_std_dma", 0x80096B60 : "irqmgr", 0x80096B80 : "fault", diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index a9bda38aa..2164cbc1e 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -744,8 +744,8 @@ 0x800B71DC:("Actor_MountHorse",), 0x800B7200:("func_800B7200",), 0x800B722C:("Actor_SpawnHorse",), - 0x800B724C:("func_800B724C",), - 0x800B7298:("func_800B7298",), + 0x800B724C:("Player_SetCsAction",), + 0x800B7298:("Player_SetCsActionWithHaltedActors",), 0x800B72E0:("func_800B72E0",), 0x800B72F8:("func_800B72F8",), 0x800B7320:("Player_IsFacingActor",), @@ -4465,7 +4465,7 @@ 0x8083827C:("func_8083827C",), 0x8083868C:("func_8083868C",), 0x80838760:("Player_StopCutscene",), - 0x808387A0:("func_808387A0",), + 0x808387A0:("Player_StartCsAction",), 0x80838830:("func_80838830",), 0x808388B8:("func_808388B8",), 0x808389BC:("func_808389BC",), @@ -4874,11 +4874,11 @@ 0x8085AC9C:("func_8085AC9C",), 0x8085AD5C:("func_8085AD5C",), 0x8085ADA0:("Player_CsAction_48",), - 0x8085B08C:("Player_Action_97",), + 0x8085B08C:("Player_Action_CsAction",), 0x8085B134:("Player_StartFishing",), 0x8085B170:("func_8085B170",), 0x8085B1F0:("Player_GrabPlayer",), - 0x8085B28C:("func_8085B28C",), + 0x8085B28C:("Player_TryCsAction",), 0x8085B384:("func_8085B384",), 0x8085B3E0:("Player_InflictDamage",), 0x8085B460:("Player_TalkWithPlayer",), @@ -8847,8 +8847,8 @@ 0x809AD8E0:("EnJso_Init",), 0x809ADB24:("EnJso_Destroy",), 0x809ADBC8:("EnJso_ChangeAnim",), - 0x809ADC7C:("EnJso_SetupHandleIntroCutscene",), - 0x809ADCB8:("EnJso_HandleIntroCutscene",), + 0x809ADC7C:("EnJso_SetupIntroCutscene",), + 0x809ADCB8:("EnJso_IntroCutscene",), 0x809AE754:("EnJso_SetupReappear",), 0x809AE87C:("EnJso_Reappear",), 0x809AE9B0:("EnJso_SetupCirclePlayer",), @@ -11054,48 +11054,48 @@ 0x80A77040:("EnPrz_Draw",), 0x80A773C0:("EnJso2_Init",), 0x80A77664:("EnJso2_Destroy",), - 0x80A776E0:("func_80A776E0",), + 0x80A776E0:("EnJso2_ChangeAnim",), 0x80A77790:("func_80A77790",), - 0x80A77880:("func_80A77880",), - 0x80A778D8:("func_80A778D8",), - 0x80A778F8:("func_80A778F8",), - 0x80A78588:("func_80A78588",), - 0x80A785E4:("func_80A785E4",), - 0x80A787FC:("func_80A787FC",), - 0x80A78868:("func_80A78868",), - 0x80A78A70:("func_80A78A70",), - 0x80A78ACC:("func_80A78ACC",), - 0x80A78B04:("func_80A78B04",), - 0x80A78B70:("func_80A78B70",), - 0x80A78C08:("func_80A78C08",), - 0x80A78C7C:("func_80A78C7C",), - 0x80A78E8C:("func_80A78E8C",), - 0x80A78F04:("func_80A78F04",), - 0x80A78F80:("func_80A78F80",), - 0x80A79038:("func_80A79038",), - 0x80A790E4:("func_80A790E4",), - 0x80A7919C:("func_80A7919C",), - 0x80A79300:("func_80A79300",), - 0x80A79364:("func_80A79364",), - 0x80A79450:("func_80A79450",), - 0x80A794C8:("func_80A794C8",), - 0x80A79524:("func_80A79524",), - 0x80A79600:("func_80A79600",), - 0x80A796BC:("func_80A796BC",), - 0x80A7980C:("func_80A7980C",), - 0x80A79864:("func_80A79864",), - 0x80A798C8:("func_80A798C8",), - 0x80A7998C:("func_80A7998C",), - 0x80A79A84:("func_80A79A84",), - 0x80A79B60:("func_80A79B60",), - 0x80A79BA0:("func_80A79BA0",), - 0x80A7A0D0:("func_80A7A0D0",), - 0x80A7A124:("func_80A7A124",), - 0x80A7A2EC:("func_80A7A2EC",), - 0x80A7A360:("func_80A7A360",), + 0x80A77880:("EnJso2_ShouldAdvanceMessage",), + 0x80A778D8:("EnJso2_SetupIntroCutscene",), + 0x80A778F8:("EnJso2_IntroCutscene",), + 0x80A78588:("EnJso2_SetupAppear",), + 0x80A785E4:("EnJso2_Appear",), + 0x80A787FC:("EnJso2_SetupCirclePlayer",), + 0x80A78868:("EnJso2_CirclePlayer",), + 0x80A78A70:("EnJso2_SetupGuard",), + 0x80A78ACC:("EnJso2_Guard",), + 0x80A78B04:("EnJso2_SetupSpinBeforeAttack",), + 0x80A78B70:("EnJso2_SpinBeforeAttack",), + 0x80A78C08:("EnJso2_SetupDashAttack",), + 0x80A78C7C:("EnJso2_DashAttack",), + 0x80A78E8C:("EnJso2_SetupTeleport",), + 0x80A78F04:("EnJso2_Teleport",), + 0x80A78F80:("EnJso2_SetupFallFromTeleport",), + 0x80A79038:("EnJso2_FallFromTeleport",), + 0x80A790E4:("EnJso2_SetupSlash",), + 0x80A7919C:("EnJso2_Slash",), + 0x80A79300:("EnJso2_SetupSpinAttack",), + 0x80A79364:("EnJso2_SpinAttack",), + 0x80A79450:("EnJso2_SetupWaitAfterSlash",), + 0x80A794C8:("EnJso2_WaitAfterSlash",), + 0x80A79524:("EnJso2_SetupStunned",), + 0x80A79600:("EnJso2_Stunned",), + 0x80A796BC:("EnJso2_SetupDamaged",), + 0x80A7980C:("EnJso2_Damaged",), + 0x80A79864:("EnJso2_SetupJumpBack",), + 0x80A798C8:("EnJso2_JumpBack",), + 0x80A7998C:("EnJso2_SetupDead",), + 0x80A79A84:("EnJso2_Dead",), + 0x80A79B60:("EnJso2_SetupDeathCutscene",), + 0x80A79BA0:("EnJso2_DeathCutscene",), + 0x80A7A0D0:("EnJso2_SetupBlowUp",), + 0x80A7A124:("EnJso2_BlowUp",), + 0x80A7A2EC:("EnJso2_FadeAway",), + 0x80A7A360:("EnJso2_UpdateDamage",), 0x80A7A61C:("EnJso2_Update",), - 0x80A7AA48:("func_80A7AA48",), - 0x80A7AA9C:("func_80A7AA9C",), + 0x80A7AA48:("EnJso2_OverrideLimbDraw",), + 0x80A7AA9C:("EnJso2_PostLimbDraw",), 0x80A7AFA8:("EnJso2_Draw",), 0x80A7BC70:("ObjEtcetera_Init",), 0x80A7BD80:("ObjEtcetera_Destroy",), @@ -14007,7 +14007,7 @@ 0x80B52AF0:("EnGk_PostLimbDraw",), 0x80B52D8C:("EnGk_TransformLimbDraw",), 0x80B52F74:("EnGk_Draw",), - 0x80B53840:("EnAn_InitializeObjectSlots",), + 0x80B53840:("EnAn_InitObjectSlots",), 0x80B539CC:("EnAn_FindActor",), 0x80B53A7C:("func_80B53A7C",), 0x80B53B3C:("EnAn_FindDoor",), @@ -14058,7 +14058,7 @@ 0x80B575BC:("EnAn_HandleSch_WaitingForKafei",), 0x80B57674:("EnAn_HandleSch_WithKafei",), 0x80B57718:("EnAn_HandleSchedule",), - 0x80B577F0:("EnAn_Initialize",), + 0x80B577F0:("EnAn_FinishInit",), 0x80B578F8:("EnAn_FollowSchedule",), 0x80B57A44:("EnAn_Talk",), 0x80B57B48:("EnAn_HandleCouplesMaskCutscene",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index d6cfd8e41..5314449ec 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -11233,7 +11233,7 @@ 0x80A41D60:("D_80A41D60","UNK_TYPE1","",0x1), 0x80A41D64:("D_80A41D64","UNK_TYPE1","",0x1), 0x80A41D68:("D_80A41D68","UNK_TYPE1","",0x1), - 0x80A41D6C:("D_80A41D6C","UNK_TYPE1","",0x1), + 0x80A41D6C:("sKafeiCurBodyPartPos","UNK_TYPE1","",0x1), 0x80A43320:("En_Test4_InitVars","ActorInit","",0x20), 0x80A43340:("sIsLoaded","s32","[3]",0x6), 0x80A43342:("sNightMessages1","s16","[3]",0x6), @@ -11905,32 +11905,22 @@ 0x80A7727C:("D_80A7727C","f32","",0x4), 0x80A77280:("D_80A77280","f32","",0x4), 0x80A77284:("D_80A77284","f32","",0x4), - 0x80A7B4F0:("D_80A7B4F0","UNK_TYPE1","",0x1), - 0x80A7B510:("D_80A7B510","UNK_TYPE4","",0x4), - 0x80A7B558:("D_80A7B558","UNK_TYPE1","",0x1), - 0x80A7B564:("D_80A7B564","UNK_TYPE1","",0x1), - 0x80A7B570:("D_80A7B570","UNK_TYPE1","",0x1), - 0x80A7B57C:("D_80A7B57C","UNK_TYPE1","",0x1), - 0x80A7B588:("D_80A7B588","UNK_TYPE1","",0x1), - 0x80A7B594:("D_80A7B594","UNK_TYPE1","",0x1), - 0x80A7B5A0:("D_80A7B5A0","UNK_TYPE1","",0x1), - 0x80A7B5AC:("D_80A7B5AC","UNK_TYPE1","",0x1), - 0x80A7B5B8:("D_80A7B5B8","UNK_TYPE1","",0x1), - 0x80A7B5C4:("D_80A7B5C4","UNK_TYPE1","",0x1), - 0x80A7B5D0:("D_80A7B5D0","UNK_TYPE1","",0x1), - 0x80A7B5DC:("D_80A7B5DC","UNK_TYPE1","",0x1), - 0x80A7B5E8:("En_Jso2_InitVars","UNK_TYPE1","",0x1), - 0x80A7B608:("D_80A7B608","UNK_TYPE1","",0x1), - 0x80A7B634:("D_80A7B634","UNK_TYPE1","",0x1), - 0x80A7B684:("D_80A7B684","UNK_TYPE1","",0x1), - 0x80A7B6DC:("D_80A7B6DC","UNK_TYPE1","",0x1), - 0x80A7B6F4:("D_80A7B6F4","UNK_TYPE2","",0x2), - 0x80A7B6FC:("D_80A7B6FC","UNK_TYPE4","",0x4), - 0x80A7B708:("D_80A7B708","UNK_TYPE1","",0x1), - 0x80A7B714:("D_80A7B714","UNK_TYPE1","",0x1), - 0x80A7B720:("D_80A7B720","UNK_TYPE1","",0x1), - 0x80A7B72C:("D_80A7B72C","UNK_TYPE1","",0x1), - 0x80A7B738:("D_80A7B738","UNK_TYPE2","",0x2), + 0x80A7B4F0:("sDamageTable","DamageTable","",0x20), + 0x80A7B510:("sTargetFlameScales","Vec3f","[6]",0x48), + 0x80A7B558:("sFlameOffsets","Vec3f","[6]",0x48), + 0x80A7B5A0:("sSlashFlameOffsets","Vec3f","[6]",0x48), + 0x80A7B5E8:("En_Jso2_InitVars","ActorInit","",0x20), + 0x80A7B608:("sCylinderInit","ColliderCylinderInit","",0x2C), + 0x80A7B634:("sQuadInit","ColliderQuadInit","",0x50), + 0x80A7B684:("sAnimations","AnimationHeader*","[22]",0x58), + 0x80A7B6DC:("sAnimationModes","u8","[22]",0x16), + 0x80A7B6F4:("sPlayerOverrideInputPosList","Vec3s","[1]",0x6), + 0x80A7B6FC:("bombOffset","Vec3f","",0xC), + 0x80A7B708:("sSwordTipOffset","Vec3f","",0xC), + 0x80A7B714:("sSwordBaseOffset","Vec3f","",0xC), + 0x80A7B720:("sSwordTipQuadOffset","Vec3f","",0xC), + 0x80A7B72C:("sSwordBaseQuadOffset","Vec3f","",0xC), + 0x80A7B738:("sAfterimageAlpha","s16","[20]",0x28), 0x80A7B760:("D_80A7B760","f32","",0x4), 0x80A7B764:("jtbl_80A7B764","UNK_PTR","",0x4), 0x80A7B794:("D_80A7B794","f32","",0x4), @@ -14999,7 +14989,7 @@ 0x80B95880:("D_80B95880","UNK_TYPE1","",0x1), 0x80B958AC:("D_80B958AC","UNK_TYPE4","",0x4), 0x80B958B8:("D_80B958B8","UNK_TYPE4","",0x4), - 0x80B958C0:("D_80B958C0","UNK_TYPE1","",0x1), + 0x80B958C0:("sAnimations","UNK_TYPE1","",0x1), 0x80B958DC:("D_80B958DC","UNK_TYPE4","",0x4), 0x80B958E4:("D_80B958E4","UNK_TYPE4","",0x4), 0x80B958F0:("D_80B958F0","UNK_TYPE4","",0x4), diff --git a/tools/namefixer.py b/tools/namefixer.py index 419a8424d..48046972d 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -114,6 +114,8 @@ wordReplace = { "func_8012405C": "Player_HasMirrorShieldEquipped", "func_80124088": "Player_IsHoldingMirrorShield", "func_8012697C": "Player_DrawGetItem", + "func_800B724C": "Player_SetCsAction", + "func_800B7298": "Player_SetCsActionWithHaltedActors", "Actor_SpawnWithParentAndCutscene": "Actor_SpawnAsChildAndCutscene", "Actor_SpawnWithParent": "Actor_SpawnAsChild", "Actor_IsLinkFacingActor": "Player_IsFacingActor", diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index a7e863f8c..32f87b1fd 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -258,8 +258,8 @@ asm/non_matchings/code/z_actor/Actor_SetCameraHorseSetting.s,Actor_SetCameraHors asm/non_matchings/code/z_actor/Actor_MountHorse.s,Actor_MountHorse,0x800B71DC,0x9 asm/non_matchings/code/z_actor/func_800B7200.s,func_800B7200,0x800B7200,0xB asm/non_matchings/code/z_actor/Actor_SpawnHorse.s,Actor_SpawnHorse,0x800B722C,0x8 -asm/non_matchings/code/z_actor/func_800B724C.s,func_800B724C,0x800B724C,0x13 -asm/non_matchings/code/z_actor/func_800B7298.s,func_800B7298,0x800B7298,0x12 +asm/non_matchings/code/z_actor/Player_SetCsAction.s,Player_SetCsAction,0x800B724C,0x13 +asm/non_matchings/code/z_actor/Player_SetCsActionWithHaltedActors.s,Player_SetCsActionWithHaltedActors,0x800B7298,0x12 asm/non_matchings/code/z_actor/func_800B72E0.s,func_800B72E0,0x800B72E0,0x6 asm/non_matchings/code/z_actor/func_800B72F8.s,func_800B72F8,0x800B72F8,0xA asm/non_matchings/code/z_actor/Player_IsFacingActor.s,Player_IsFacingActor,0x800B7320,0x16 diff --git a/undefined_syms.txt b/undefined_syms.txt index 0a80bc546..174c3b470 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -388,17 +388,6 @@ D_06015C28 = 0x06015C28; D_060156D8 = 0x060156D8; D_06016720 = 0x06016720; -// ovl_En_Jso - -D_060081F4 = 0x060081F4; -D_0600AA00 = 0x0600AA00; - -// ovl_En_Jso2 - -D_06002ED8 = 0x06002ED8; -D_06003168 = 0x06003168; -D_060081F4 = 0x060081F4; - // ovl_En_Kitan D_06000CE8 = 0x06000CE8;