Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions config/us/rnc1.us.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ segments:
- [0x196d0, c, assembly/sdk/display/set_gs_crt]
- [0x196e0, c, assembly/sdk/system/exit]
- [0x196f0, c, assembly/sdk/syscalls/invoke_kernel_syscall_0008]
- [0x19700, c, assembly/sdk/syscalls/invoke_kernel_syscall_000c]
- [0x19700, c, assembly/sdk/system/interrupt2_iop]
- [0x19710, c, assembly/sdk/interrupts/add_intc_handler]
- [0x19720, c, assembly/sdk/interrupts/remove_intc_handler]
- [0x19730, c, assembly/sdk/interrupts/add_dmac_handler]
Expand All @@ -167,51 +167,51 @@ segments:
- [0x19780, c, assembly/sdk/interrupts/enable_dmac]
- [0x19790, c, assembly/sdk/interrupts/disable_dmac]
- [0x197a0, c, assembly/sdk/interrupts/set_alarm]
- [0x197b0, c, assembly/sdk/syscalls/invoke_kernel_syscall_ffe6]
- [0x197b0, c, assembly/sdk/interrupts/i_enable_intc]
- [0x197c0, c, assembly/sdk/syscalls/invoke_kernel_syscall_ff02]
- [0x197d0, c, assembly/sdk/threads/create_thread]
- [0x197e0, c, assembly/sdk/threads/delete_thread]
- [0x197f0, c, assembly/sdk/threads/start_thread]
- [0x19800, c, assembly/sdk/threads/terminate_thread]
- [0x19810, c, assembly/sdk/syscalls/invoke_kernel_syscall_ffda]
- [0x19810, c, assembly/sdk/threads/i_terminate_thread]
- [0x19820, c, assembly/sdk/threads/change_thread_priority]
- [0x19830, c, assembly/sdk/syscalls/invoke_kernel_syscall_ffd6]
- [0x19830, c, assembly/sdk/threads/i_change_thread_priority]
- [0x19840, c, assembly/sdk/threads/rotate_thread_ready_queue]
- [0x19850, c, assembly/sdk/syscalls/invoke_kernel_syscall_ffd2]
- [0x19850, c, assembly/sdk/threads/i_release_wait_thread]
- [0x19860, c, assembly/sdk/threads/get_thread_id]
- [0x19870, c, assembly/sdk/threads/refer_thread_status]
- [0x19880, c, assembly/sdk/threads/sleep_thread]
- [0x19890, c, assembly/sdk/threads/wakeup_thread]
- [0x198a0, c, assembly/sdk/threads/i_wakeup_thread]
- [0x198b0, c, assembly/sdk/syscalls/invoke_kernel_syscall_ffca]
- [0x198b0, c, assembly/sdk/threads/i_cancel_wakeup_thread]
- [0x198c0, c, assembly/sdk/threads/suspend_thread]
- [0x198d0, c, assembly/sdk/syscalls/invoke_kernel_syscall_ffc6]
- [0x198d0, c, assembly/sdk/threads/i_resume_thread]
- [0x198e0, c, assembly/sdk/system/end_of_heap]
- [0x198f0, c, assembly/sdk/threads/create_semaphore]
- [0x19900, c, assembly/sdk/threads/delete_semaphore]
- [0x19910, c, assembly/sdk/threads/signal_semaphore]
- [0x19920, c, assembly/sdk/threads/i_signal_semaphore]
- [0x19930, c, assembly/sdk/threads/wait_semaphore]
- [0x19940, c, assembly/sdk/threads/poll_semaphore]
- [0x19950, c, assembly/sdk/syscalls/invoke_kernel_syscall_ffba]
- [0x19950, c, assembly/sdk/threads/i_poll_semaphore]
- [0x19960, c, assembly/sdk/system/set_osd_config_param]
- [0x19970, c, assembly/sdk/system/get_osd_config_param]
- [0x19980, c, assembly/sdk/syscalls/invoke_kernel_syscall_004e]
- [0x19980, c, assembly/sdk/display/set_gs_h_param]
- [0x19990, c, assembly/sdk/syscalls/invoke_kernel_syscall_0052]
- [0x199a0, c, assembly/sdk/syscalls/invoke_kernel_syscall_0056]
- [0x199b0, c, assembly/sdk/syscalls/invoke_kernel_syscall_ffa6]
- [0x199c0, c, assembly/sdk/syscalls/invoke_kernel_syscall_005d]
- [0x199d0, c, assembly/sdk/syscalls/invoke_kernel_syscall_005f]
- [0x199c0, c, assembly/sdk/interrupts/disable_intc_handler]
- [0x199d0, c, assembly/sdk/interrupts/disable_dmac_handler]
- [0x199e0, c, assembly/sdk/memory/cache/enable_cache]
- [0x199f0, c, assembly/sdk/syscalls/invoke_kernel_syscall_0062]
- [0x199f0, c, assembly/sdk/memory/cache/disable_cache]
- [0x19a00, c, assembly/sdk/memory/cache/flush_cache]
- [0x19a10, c, assembly/sdk/syscalls/invoke_kernel_syscall_ff99]
- [0x19a10, c, assembly/sdk/system/i_get_cop0]
- [0x19a20, c, assembly/sdk/dma/sce_sif_stop_dma]
- [0x19a30, c, assembly/sdk/syscalls/invoke_kernel_syscall_006c]
- [0x19a30, c, assembly/sdk/system/set_cpu_timer_handler]
- [0x19a40, c, assembly/sdk/system/get_osd_config_param2]
- [0x19a50, c, assembly/sdk/display/gs_get_imr]
- [0x19a60, c, assembly/sdk/display/gs_put_imr]
- [0x19a70, c, assembly/sdk/syscalls/invoke_kernel_syscall_0072]
- [0x19a70, c, assembly/sdk/interrupts/set_pgif_handler]
- [0x19a80, c, assembly/sdk/interrupts/set_vsync_flag]
- [0x19a90, c, assembly/sdk/dma/sce_sif_dma_stat]
- [0x19aa0, c, assembly/sdk/dma/sce_sif_set_dma]
Expand All @@ -220,7 +220,7 @@ segments:
- [0x19ad0, c, assembly/sdk/dma/i_sce_sif_set_dchain]
- [0x19ae0, c, assembly/sdk/rpc/sce_sif_set_reg]
- [0x19af0, c, assembly/sdk/rpc/sce_sif_get_reg]
- [0x19b00, c, assembly/sdk/syscalls/invoke_kernel_syscall_007b]
- [0x19b00, c, assembly/sdk/system/exec_osd]
- [0x19b10, c, assembly/sdk/debug/deci2_call]
- [0x19b20, c, assembly/sdk/system/get_memory_size]
- [0x19b30, c, assembly/sdk/interrupts/init_tlb]
Expand Down Expand Up @@ -388,7 +388,7 @@ segments:
- [0x1e640, c, sdk/kernel/supplement_crt0]
- [0x1e688, c, sdk/system/kernel_copy_rdata]
- [0x1e6c0, c, sdk/system/find_kernel_address]
- [0x1e700, c, assembly/sdk/syscalls/invoke_kernel_syscall_0083_rfu]
- [0x1e700, c, assembly/sdk/system/find_address]
- [0x1e710, textbin, text_gap_0011d790]
- [0x1e718, c, sdk/kernel/InitSystemCallTableAddress]
- [0x1e814, textbin, text_gap_0011d798_post_sdk_worker]
Expand Down Expand Up @@ -482,7 +482,7 @@ segments:
- [0x22988, c, sdk/graph/sce_gs_get_gparam]
- [0x22994, textbin, text_gap_00121a14]
- [0x22998, c, sdk/storage/cdvd/checkModelVersion]
- [0x22a38, c, assembly/sdk/syscalls/invoke_kernel_syscall_0080]
- [0x22a38, c, assembly/sdk/display/get_gs_dx_dy_offset]
- [0x22a48, c, sdk/graph/sce_gs_set_def_disp_env]
- [0x22dbc, textbin, text_gap_00121ac8_post_sdk_worker]
- [0x22dc0, c, sdk/graph/sce_gs_put_disp_env]
Expand Down
36 changes: 18 additions & 18 deletions config/us/symbol_addrs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -60,26 +60,26 @@ CheckStateRange = 0x00112380;
ConvertMultibyteCharacter = 0x00115098;
InvokeKernelSyscall0000 = 0x118740;
InvokeKernelSyscall0008 = 0x118770;
InvokeKernelSyscall000C = 0x118780;
InvokeKernelSyscallFFE6 = 0x118830;
Interrupt2Iop = 0x118780;
_iEnableIntc = 0x118830;
InvokeKernelSyscallFF02 = 0x118840;
InvokeKernelSyscallFFDA = 0x118890;
InvokeKernelSyscallFFD6 = 0x1188b0;
InvokeKernelSyscallFFD2 = 0x1188d0;
InvokeKernelSyscallFFCA = 0x118930;
InvokeKernelSyscallFFC6 = 0x118950;
InvokeKernelSyscallFFBA = 0x1189d0;
InvokeKernelSyscall004E = 0x118a00;
iTerminateThread = 0x118890;
iChangeThreadPriority = 0x1188b0;
iReleaseWaitThread = 0x1188d0;
iCancelWakeupThread = 0x118930;
iResumeThread = 0x118950;
iPollSema = 0x1189d0;
SetGsHParam = 0x118a00;
InvokeKernelSyscall0052 = 0x118a10;
InvokeKernelSyscall0056 = 0x118a20;
InvokeKernelSyscallFFA6 = 0x118a30;
InvokeKernelSyscall005D = 0x118a40;
InvokeKernelSyscall005F = 0x118a50;
InvokeKernelSyscall0062 = 0x118a70;
InvokeKernelSyscallFF99 = 0x118a90;
InvokeKernelSyscall006C = 0x118ab0;
InvokeKernelSyscall0072 = 0x118af0;
InvokeKernelSyscall007B = 0x118b80;
DisableIntcHandler = 0x118a40;
DisableDmacHandler = 0x118a50;
DisableCache = 0x118a70;
iGetCop0 = 0x118a90;
SetCPUTimerHandler = 0x118ab0;
SetPgifHandler = 0x118af0;
ExecOSD = 0x118b80;
SetGsCrt = 0x00118750;
_Exit = 0x00118760;
AddIntcHandler = 0x00118790;
Expand Down Expand Up @@ -143,10 +143,10 @@ GetCoreDataTable = 0x00121A08;
RaiseKernelTrap = 0x001F97B0;
ClearStageStateFlag = 0x0023B5E0;
InvokeKernelSyscall005A_Rfu = 0x0011D060;
InvokeKernelSyscall0083_Rfu = 0x0011D780;
FindAddress = 0x0011D780;
InvokeKernelSyscall005A_RfuWorker = 0x0011D8F8;
InvokeKernelSyscall005A_RfuTail = 0x0011DAE0;
InvokeKernelSyscall0080 = 0x00121AB8;
_GetGsDxDyOffset = 0x00121AB8;
InitializeStateRecord = 0x0012BBE8;
CallGlobalStateResource = 0x00116C70;
InitializeRpcCommand = 0x0011ACC0;
Expand Down
36 changes: 18 additions & 18 deletions config/us/unit_categories.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,31 +37,31 @@
"assembly/sdk/interrupts/init_tlb",
"assembly/sdk/syscalls/invoke_kernel_syscall_0000",
"assembly/sdk/syscalls/invoke_kernel_syscall_0008",
"assembly/sdk/syscalls/invoke_kernel_syscall_000c",
"assembly/sdk/syscalls/invoke_kernel_syscall_004e",
"assembly/sdk/system/interrupt2_iop",
"assembly/sdk/display/set_gs_h_param",
"assembly/sdk/syscalls/invoke_kernel_syscall_0052",
"assembly/sdk/syscalls/invoke_kernel_syscall_0056",
"assembly/sdk/syscalls/invoke_kernel_syscall_005a_rfu",
"assembly/sdk/syscalls/invoke_kernel_syscall_005a_rfu_tail",
"assembly/sdk/syscalls/invoke_kernel_syscall_005a_rfu_worker",
"assembly/sdk/syscalls/invoke_kernel_syscall_005d",
"assembly/sdk/syscalls/invoke_kernel_syscall_005f",
"assembly/sdk/syscalls/invoke_kernel_syscall_0062",
"assembly/sdk/syscalls/invoke_kernel_syscall_006c",
"assembly/sdk/syscalls/invoke_kernel_syscall_0072",
"assembly/sdk/syscalls/invoke_kernel_syscall_007b",
"assembly/sdk/syscalls/invoke_kernel_syscall_0080",
"assembly/sdk/syscalls/invoke_kernel_syscall_0083_rfu",
"assembly/sdk/interrupts/disable_intc_handler",
"assembly/sdk/interrupts/disable_dmac_handler",
"assembly/sdk/memory/cache/disable_cache",
"assembly/sdk/system/set_cpu_timer_handler",
"assembly/sdk/interrupts/set_pgif_handler",
"assembly/sdk/system/exec_osd",
"assembly/sdk/display/get_gs_dx_dy_offset",
"assembly/sdk/system/find_address",
"assembly/sdk/syscalls/invoke_kernel_syscall_ff02",
"assembly/sdk/syscalls/invoke_kernel_syscall_ff99",
"assembly/sdk/system/i_get_cop0",
"assembly/sdk/syscalls/invoke_kernel_syscall_ffa6",
"assembly/sdk/syscalls/invoke_kernel_syscall_ffba",
"assembly/sdk/syscalls/invoke_kernel_syscall_ffc6",
"assembly/sdk/syscalls/invoke_kernel_syscall_ffca",
"assembly/sdk/syscalls/invoke_kernel_syscall_ffd2",
"assembly/sdk/syscalls/invoke_kernel_syscall_ffd6",
"assembly/sdk/syscalls/invoke_kernel_syscall_ffda",
"assembly/sdk/syscalls/invoke_kernel_syscall_ffe6",
"assembly/sdk/threads/i_poll_semaphore",
"assembly/sdk/threads/i_resume_thread",
"assembly/sdk/threads/i_cancel_wakeup_thread",
"assembly/sdk/threads/i_release_wait_thread",
"assembly/sdk/threads/i_change_thread_priority",
"assembly/sdk/threads/i_terminate_thread",
"assembly/sdk/interrupts/i_enable_intc",
"assembly/sdk/threads/poll_semaphore",
"assembly/sdk/threads/refer_thread_status",
"assembly/sdk/interrupts/remove_dmac_handler",
Expand Down
4 changes: 2 additions & 2 deletions include/rnc/camera/camera_globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ struct CameraOrbit {
f32 saved_rotation[4]; /* 0x60: quaternion, the same for the blend rotation */
}; /* size 0x70 */

/* The camera transition at D_001871B0 (PreviewCamera 0x270). kind 0 runs
/* The camera transition at D_001871B0 (GameCamera 0x270). kind 0 runs
blend (step_camera_blend); any other kind runs orbit
(advance_alternate_camera_transition). */
struct CameraTransition {
s16 mode; /* 0x00: PreviewCamera.transition_mode */
s16 mode; /* 0x00: GameCamera.transition_mode */
u8 kind; /* 0x02 */
u8 requested_kind; /* 0x03: becomes kind when a transition starts */
u8 pad_04[0xC];
Expand Down
15 changes: 15 additions & 0 deletions include/rnc/camera/camera_shake.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef LOMBYTE_RNC_CAMERA_CAMERA_SHAKE_H
#define LOMBYTE_RNC_CAMERA_CAMERA_SHAKE_H

#include "types.h"

/* One camera shake channel. apply_camera_shake counts frames down and moves
the camera along a view row by amplitude, fading out over frames_max. */
struct CameraShake {
f32 amplitude; /* 0x0 */
f32 offset; /* 0x4: this frame's move */
s32 frames; /* 0x8: frames left */
s32 frames_max; /* 0xC: the longest count since the shake started */
};

#endif /* LOMBYTE_RNC_CAMERA_CAMERA_SHAKE_H */
6 changes: 4 additions & 2 deletions include/rnc/globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#define LOMBYTE_RNC_GLOBALS_H

#include "types.h"
#include "rnc/world/level_id.h"
#include "rnc/ui/menus/save_data/save_card_state.h"

/*
* Named game globals, one declaration each. The C name is ours; the label
Expand Down Expand Up @@ -39,8 +41,8 @@ extern f32 frame_time_cube __asm__("D_0015ED74");
/* Bolts the player holds (the HUD prints it, vendors subtract prices). */
extern s32 current_bolt_count __asm__("D_0015ED98");

/* Pause/freeze state of the current game mode and its flags. */
extern s32 mode_freeze_state __asm__("D_0015EEB0");
/* Memory card state (enum CardState) and the flags of the dialog that shows it. */
extern s32 save_card_state __asm__("D_0015EEB0");
extern s32 mode_freeze_flags __asm__("D_0015EEB4");

/* GS address of the depth buffer (ZBUF_1 takes it >> 13). */
Expand Down
23 changes: 23 additions & 0 deletions include/rnc/hero/hero_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,29 @@ enum HeroStateId {
HERO_STATE_DYING_ZERO_HEALTH = 0x82
};

/* Values of HeroState.control_mode, named from the states hero_set_state pairs with each one.
* 0x9, 0xA, 0xB, 0x10, 0x13, 0x15, 0x16 and 0x18 stay numbers: what their states share is not clear. */
enum HeroControlMode {
HERO_MODE_IDLE = 0x0,
HERO_MODE_RUN = 0x1,
HERO_MODE_FALL = 0x2,
HERO_MODE_LEDGE = 0x3,
HERO_MODE_JUMP = 0x4,
HERO_MODE_LAND = 0x5,
HERO_MODE_ATTACK = 0x6,
HERO_MODE_HURT = 0x7,
HERO_MODE_ITEM_RELEASE_WAIT = 0x8,
HERO_MODE_CROUCH = 0xC,
HERO_MODE_GRAPPLE = 0xD,
HERO_MODE_GRAPPLE_SWING = 0xE,
HERO_MODE_GRIND = 0xF,
HERO_MODE_SWIM = 0x11,
HERO_MODE_WATER_SURFACE = 0x12,
HERO_MODE_DYING = 0x14,
HERO_MODE_RESPAWN_WAIT = 0x19,
HERO_MODE_FOLLOW_PATH = 0x1A
};

enum HeroAnimationEntryMode {
HERO_ANIMATION_ENTRY_OVERRIDE_GUARDS = 0x2
};
Expand Down
57 changes: 29 additions & 28 deletions include/rnc/overlay/shared/camera/level_camera.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,39 +5,40 @@
#include "rnc/math/vector.h"

struct Moby;
struct UpdateCam;

/* The level's game camera. Turrets and cannons check targets against its
/* The level's game camera, the level programs' copy of GameCamera (same layout). Turrets and cannons check targets against its
position, pitch and yaw. A shot sets the two amount/frames pairs (0.03 for
a few frames), a hard landing sets the first one (0.2 for 40 frames). */
typedef struct LevelCamera {
f32 unk0[12]; /* 0x000: a 3x4 basis; shots copy it as their launch rotation */
u8 pad30[0x110];
Vec4 pos; /* 0x140 */
f32 unk150;
f32 pitch; /* 0x154 */
f32 yaw; /* 0x158 */
u8 pad15C[0x4];
f32 shake_amount; /* 0x160 */
u8 pad164[0x4];
s32 shake_frames; /* 0x168 */
u8 pad16C[0x4];
f32 shake2_amount; /* 0x170 */
u8 pad174[0x4];
s32 shake2_frames; /* 0x178 */
u8 pad17C[0x4];
struct Moby *unk180; /* 0x180: the camera moby (its pvars hold the follow camera state) */
char *unk184; /* 0x184 */
u8 pad188[0x8];
u8 unk190[0x30];
f32 unk1C0[4]; /* 0x1C0 */
u8 unk1D0[0x84];
s32 unk254; /* 0x254 */
u8 pad258[0x4];
f32 unk0[12]; /* 0x000: a 3x4 basis; shots copy it as their launch rotation */
u8 pad30[0x110];
Vec4 pos; /* 0x140 */
f32 unk150;
f32 pitch; /* 0x154 */
f32 yaw; /* 0x158 */
u8 pad15C[0x4];
f32 shake_amount; /* 0x160: the same two channels as GameCamera.shake */
f32 shake_offset; /* 0x164 */
s32 shake_frames; /* 0x168 */
s32 shake_frames_max; /* 0x16C */
f32 shake2_amount; /* 0x170 */
f32 shake2_offset; /* 0x174 */
s32 shake2_frames; /* 0x178 */
s32 shake2_frames_max; /* 0x17C */
struct UpdateCam *current_camera; /* 0x180: the record the view follows */
struct UpdateCam *previous_camera; /* 0x184 */
u8 pad188[0x8];
u8 unk190[0x30];
f32 unk1C0[4]; /* 0x1C0 */
u8 unk1D0[0x84];
s32 unk254; /* 0x254 */
u8 pad258[0x4];
struct Moby *
focus_moby; /* 0x25C: a moby that takes the camera's attention (blarg helicopter); 0: none */
s32 focus_time; /* 0x260: reset to 0 when focus_moby is set */
u8 pad264[0xc];
s16 unk270; /* 0x270 */
s16 transition_mode; /* 0x270: GameCamera.transition_mode */
u8 pad272[0x1];
u8 unk273; /* 0x273 */
u8 pad274[0x14];
Expand All @@ -47,11 +48,11 @@ typedef struct LevelCamera {
u8 pad298[0x5c];
s32 unk2F4;
u8 pad2F8[0x58];
f32 unk350[12]; /* 0x350: basis the hero's input direction is turned by */
f32 rows[12]; /* 0x350: forward, right and up; the hero's input direction is turned by them */
u8 pad380[0x10];
void (*unk390)(void); /* 0x390: called each frame by the follow camera when set */
s32 unk394;
s32 unk398;
s32 underwater; /* 0x394 */
s32 frame_count; /* 0x398 */
u8 pad39C[0x4];
} LevelCamera;

Expand Down
Loading
Loading