mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-03 06:24:30 +00:00
Document HREG debugging system (#1351)
* progress * progress * change * named most * name prerender things * fix and format * play prefix * address most comments (still a few more things to do) * fix error * reword input test comments * some more * rework env draw flags * add hilite * merge and format * init to proper values * rename env draw flag names * 7 to 6 * more small changes
This commit is contained in:
parent
274743738b
commit
eb0a82c513
12 changed files with 370 additions and 188 deletions
146
include/regs.h
146
include/regs.h
|
@ -199,4 +199,150 @@
|
|||
#define R_EN_GOROIWA_SPEED mREG(12)
|
||||
#define R_NAVI_MSG_REGION_ALPHA nREG(87)
|
||||
|
||||
|
||||
#define R_HREG_MODE HREG(80) // see `HRegMode` for mode options
|
||||
|
||||
typedef enum {
|
||||
/* 6 */ HREG_MODE_PRINT_HILITE_INFO = 6, // print hilite information
|
||||
/* 7 */ HREG_MODE_UCODE_DISAS, // various controls for the ucode disas system
|
||||
/* 8 */ HREG_MODE_PRINT_MEMORY, // print memory at a specified address
|
||||
/* 9 */ HREG_MODE_UNUSED_9,
|
||||
/* 10 */ HREG_MODE_PLAY, // various debug controls for the Play state
|
||||
/* 11 */ HREG_MODE_PERSPECTIVE, // set various properties of the view perspective
|
||||
/* 12 */ HREG_MODE_INPUT_TEST, // displays inputs from the specified controller
|
||||
/* 13 */ HREG_MODE_SCHED, // toggle various vi special features
|
||||
/* 14 */ HREG_MODE_UNUSED_14,
|
||||
/* 15 */ HREG_MODE_PRERENDER,
|
||||
/* 16 */ HREG_MODE_SETUP_FRAME, // set the base screen color (and by extension, shrink window color too)
|
||||
/* 17 */ HREG_MODE_SCENE_CONFIG, // toggle drawing the scene config
|
||||
/* 18 */ HREG_MODE_PRINT_OBJECT_TABLE,
|
||||
/* 19 */ HREG_MODE_LETTERBOX, // toggle logging and view values for the letterbox system
|
||||
/* 20 */ HREG_MODE_HEAP_FREE_BLOCK_TEST, // enable or disable heap free block test
|
||||
/* 21 */ HREG_MODE_VI
|
||||
} HRegMode;
|
||||
|
||||
// HREG_MODE_PRINT_HILITE_INFO
|
||||
// This mode has no controls with other regs. Simply set HREG mode to `HREG_MODE_PRINT_HILITE_INFO`
|
||||
// to print out the eye, object, and light direction vectors for hilite on every frame.
|
||||
|
||||
// HREG_MODE_UCODE_DISAS
|
||||
#define R_UCODE_DISAS_TOGGLE HREG(81) // < 0 enables and prints some hardware reg info for 1 frame, > 0 enables constant disas
|
||||
#define R_UCODE_DISAS_LOG_MODE HREG(82) // 1 and 2 print counts, 3 enables fault client, 4 disables open/close disps
|
||||
#define R_UCODE_DISAS_LOG_LEVEL HREG(83) // enables various logging within the dissasembler itself
|
||||
#define R_UCODE_DISAS_TOTAL_COUNT HREG(84) // read-only
|
||||
#define R_UCODE_DISAS_VTX_COUNT HREG(85) // read-only
|
||||
#define R_UCODE_DISAS_SPVTX_COUNT HREG(86) // read-only
|
||||
#define R_UCODE_DISAS_TRI1_COUNT HREG(87) // read-only
|
||||
#define R_UCODE_DISAS_TRI2_COUNT HREG(88) // read-only
|
||||
#define R_UCODE_DISAS_QUAD_COUNT HREG(89) // read-only
|
||||
#define R_UCODE_DISAS_LINE_COUNT HREG(90) // read-only
|
||||
#define R_UCODE_DISAS_SYNC_ERROR_COUNT HREG(91) // read-only
|
||||
#define R_UCODE_DISAS_LOAD_COUNT HREG(92) // read-only
|
||||
#define R_UCODE_DISAS_DL_COUNT HREG(93) // read-only
|
||||
|
||||
// HREG_MODE_PRINT_MEMORY
|
||||
#define R_PRINT_MEMORY_INIT HREG(94) // set to `HREG_MODE_PRINT_MEMORY` when init is complete
|
||||
#define R_PRINT_MEMORY_TRIGGER HREG(81) // set to a negative number to print memory
|
||||
#define R_PRINT_MEMORY_ADDR HREG(82) // middle 16 bits of the address to print from (80XXXX00)
|
||||
#define R_PRINT_MEMORY_SIZE HREG(83) // value * 0x10 = length of the log
|
||||
|
||||
// HREG_MODE_PLAY
|
||||
#define R_PLAY_INIT HREG(94) // set to `HREG_MODE_PLAY` when init is complete
|
||||
#define R_PLAY_RUN_UPDATE HREG(81)
|
||||
#define R_PLAY_RUN_DRAW HREG(82)
|
||||
#define R_PLAY_DRAW_SKYBOX HREG(83)
|
||||
#define R_PLAY_DRAW_ROOM_FLAGS HREG(84) // also enables drawing the scene config and room bg cover
|
||||
#define R_PLAY_DRAW_ACTORS HREG(85)
|
||||
#define R_PLAY_DRAW_LENS_FLARES HREG(86)
|
||||
#define R_PLAY_DRAW_SCREEN_FILLS HREG(87)
|
||||
#define R_PLAY_DRAW_SANDSTORM HREG(88)
|
||||
#define R_PLAY_DRAW_OVERLAY_ELEMENTS HREG(89)
|
||||
#define R_PLAY_DRAW_ENV_FLAGS HREG(90) // see flags below
|
||||
#define R_PLAY_DRAW_COVER_ELEMENTS HREG(92) // draw transition instance and vismono
|
||||
#define R_PLAY_DRAW_DEBUG_OBJECTS HREG(93)
|
||||
|
||||
#define PLAY_ENV_DRAW_SKYBOX_FILTERS (1 << 0)
|
||||
#define PLAY_ENV_DRAW_SUN_AND_MOON (1 << 1)
|
||||
#define PLAY_ENV_DRAW_LIGHTNING (1 << 2)
|
||||
#define PLAY_ENV_DRAW_LIGHTS (1 << 3)
|
||||
|
||||
#define R_PLAY_ENABLE_UCODE_DISAS HREG(93) // set to 2 to switch to ucode disas mode and trigger it
|
||||
#define R_PLAY_UCODE_DISAS_LOG_LEVEL HREG(92) // log level to use when switching to ucode disas
|
||||
|
||||
// HREG_MODE_PERSPECTIVE
|
||||
#define R_PERSPECTIVE_INIT HREG(94) // set to `HREG_MODE_PERSPECTIVE` when init is complete
|
||||
#define R_PERSPECTIVE_FOVY HREG(83) // value to use for `fovy`
|
||||
#define R_PERSPECTIVE_ASPECT HREG(84) // value to use for `aspect`, divided by 10000
|
||||
#define R_PERSPECTIVE_NEAR HREG(85) // value to use for `near`
|
||||
#define R_PERSPECTIVE_FAR HREG(86) // value to use for `far`
|
||||
#define R_PERSPECTIVE_SCALE HREG(87) // value to use for `scale`, divided by 100
|
||||
|
||||
// HREG_MODE_INPUT_TEST
|
||||
#define R_INPUT_TEST_CONTROLLER_PORT HREG(81) // controller to copy values from
|
||||
#define R_INPUT_TEST_COMPARE_VALUE HREG(82) // input value compared against for various tests
|
||||
#define R_INPUT_TEST_BUTTON_CUR HREG(83) // buttons held on the test controller
|
||||
#define R_INPUT_TEST_BUTTON_PRESS HREG(84) // buttons pressed on the test controller
|
||||
#define R_INPUT_TEST_REL_STICK_X HREG(85) // current stick value on the x axis (ignoring the deadzone)
|
||||
#define R_INPUT_TEST_REL_STICK_Y HREG(86) // current stick value on the y axis (ignoring the deadzone)
|
||||
#define R_INPUT_TEST_REL_STICK_X_2 HREG(87) // same as R_INPUT_TEST_REL_STICK_X
|
||||
#define R_INPUT_TEST_REL_STICK_Y_2 HREG(88) // same as R_INPUT_TEST_REL_STICK_Y
|
||||
#define R_INPUT_TEST_CUR_STICK_X HREG(89) // current stick value on the x axis
|
||||
#define R_INPUT_TEST_CUR_STICK_Y HREG(90) // current stick value on the y axis
|
||||
#define R_INPUT_TEST_COMPARE_BUTTON_CUR HREG(93) // set to 1 if cur.button exactly matches R_INPUT_TEST_COMPARE_VALUE
|
||||
#define R_INPUT_TEST_COMPARE_COMBO_CUR HREG(94) // set to 1 if cur.button contains R_INPUT_TEST_COMPARE_VALUE
|
||||
#define R_INPUT_TEST_COMPARE_COMBO_PRESS HREG(95) // set to 1 if press.button contains R_INPUT_TEST_COMPARE_VALUE
|
||||
|
||||
// HREG_MODE_SCHED
|
||||
#define R_SCHED_INIT HREG(95) // set to `HREG_MODE_SCHED` when init is complete
|
||||
#define R_SCHED_TOGGLE_SPECIAL_FEATURES HREG(81) // set to 2 to allow special features to be applied
|
||||
#define R_SCHED_GAMMA_ON HREG(82) // set OS_VI_GAMMA_ON
|
||||
#define R_SCHED_DITHER_FILTER_ON HREG(83) // set OS_VI_DITHER_FILTER_ON
|
||||
#define R_SCHED_GAMMA_DITHER_ON HREG(84) // set OS_VI_GAMMA_DITHER_ON
|
||||
#define R_SCHED_DIVOT_ON HREG(85) // set OS_VI_DIVOT_ON
|
||||
|
||||
// HREG_MODE_PRERENDER
|
||||
#define R_PRERENDER_DIVOT_CONTROL HREG(81)
|
||||
|
||||
#define PRERENDER_DIVOT_ALTERNATE_COLOR 1
|
||||
#define PRERENDER_DIVOT_PRINT_COLOR 3
|
||||
#define PRERENDER_DIVOT_PARTIAL_CVG_RED 5
|
||||
|
||||
// HREG_MODE_SETUP_FRAME
|
||||
#define R_SETUP_FRAME_INIT HREG(95) // set to `HREG_MODE_SETUP_FRAME` when init is complete
|
||||
#define R_SETUP_FRAME_GET HREG(81) // get the current values and store them in appropriate regs
|
||||
#define R_SETUP_FRAME_SET HREG(82) // use the value from regs as the current value
|
||||
#define R_SETUP_FRAME_LETTERBOX_SIZE HREG(83)
|
||||
#define R_SETUP_FRAME_BASE_COLOR_R HREG(84)
|
||||
#define R_SETUP_FRAME_BASE_COLOR_G HREG(85)
|
||||
#define R_SETUP_FRAME_BASE_COLOR_B HREG(86)
|
||||
|
||||
#define SETUP_FRAME_LETTERBOX_SIZE_FLAG (1 << 0) // used with R_SETUP_FRAME_GET and R_SETUP_FRAME_SET
|
||||
#define SETUP_FRAME_BASE_COLOR_FLAG (1 << 1) // used with R_SETUP_FRAME_GET and R_SETUP_FRAME_SET
|
||||
|
||||
// HREG_MODE_SCENE_CONFIG
|
||||
#define R_SCENE_CONFIG_INIT HREG(95) // set to `HREG_MODE_SCENE_CONFIG` when init is complete
|
||||
#define R_SCENE_CONFIG_DRAW_DEFAULT_DLIST HREG(81) // set to 1 to draw the default display list
|
||||
#define R_SCENE_CONFIG_DRAW_SCENE_CONFIG HREG(82) // set to 1 to draw the scene config
|
||||
|
||||
// HREG_MODE_PRINT_OBJECT_TABLE
|
||||
#define R_PRINT_OBJECT_TABLE_TRIGGER HREG(81) // set to a negative number to print out the whole object table
|
||||
|
||||
// HREG_MODE_LETTERBOX
|
||||
#define R_LETTERBOX_INIT HREG(94) // set to `HREG_MODE_LETTERBOX` when init is complete
|
||||
#define R_LETTERBOX_ENABLE_LOGS HREG(81) // set to 1 to enable logging
|
||||
#define R_LETTERBOX_STATE HREG(83) // read-only
|
||||
#define R_LETTERBOX_SIZE HREG(84) // read-only
|
||||
#define R_LETTERBOX_TARGET_SIZE HREG(85) // read-only
|
||||
#define R_LETTERBOX_STEP HREG(86) // read-only
|
||||
|
||||
// HREG_MODE_HEAP_FREE_BLOCK_TEST
|
||||
#define R_HEAP_FREE_BLOCK_TEST_TOGGLE HREG(82) // 0 = disabled, 1 = enabled
|
||||
|
||||
// HREG_MODE_VI
|
||||
#define R_VI_INIT HREG(95) // set to `HREG_MODE_VI` when init is complete
|
||||
#define R_VI_NEXT_Y_SCALE_MODE HREG(81) // set to 0 to scale yScale with additional scan lines, else use 1.0
|
||||
#define R_VI_NEXT_ADDI_SCAN_LINES HREG(82)
|
||||
#define R_VI_CUR_ADDI_SCAN_LINES HREG(83)
|
||||
#define R_VI_CUR_Y_SCALE_MODE HREG(84)
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue