# Game functions with hand-written replacements in src/ (recomp_emit emits <name>__orig + a dispatcher for each;
# the replacement is registered at start-up with ppc::set_override and may call the original).
# Format: 0xADDR name # replacement, purpose
0x027695A0 uIDStartMenu::stepState? # src/game/boot_prompts.cpp: start-menu per-frame state step (+0x2A0); boot notices/save prompts confirmed
0x020E28A0 sAppSaveData::yesNoAnswer? # src/game/boot_prompts.cpp: answers Yes during the boot save setup
0x02A7830C uBloomFilter::vf11 # src/game/filters.cpp: bloom draw, skipped when bloom=0 (also used by uAppBloomFilter)
0x02A8504C uDOFFilter::vf11 # src/game/filters.cpp: depth-of-field draw, skipped when depth_of_field=0
0x02A79F90 uBokehFilter::vf11 # src/game/filters.cpp: bokeh depth-of-field draw, skipped when depth_of_field=0
0x02019C0C aGame::noticeControllerPro? # src/game/boot_prompts.cpp: "will begin set to the Pro Controller" accepted
0x02019AD4 aGame::noticeControllerPadA? # src/game/boot_prompts.cpp: GamePad controller notice accepted
0x02019B70 aGame::noticeControllerPadB? # src/game/boot_prompts.cpp: GamePad controller notice accepted
0x02019CA8 aGame::noticeClose? # src/game/boot_prompts.cpp: system notice closed
0x02019D30 aGame::noticeNoController? # src/game/boot_prompts.cpp: "set controller could not be detected" closed
0x02019E38 aGame::noticeLanguage? # src/game/boot_prompts.cpp: "In-game language has been changed" closed
0x0201A020 aGame::noticeMessage? # src/game/boot_prompts.cpp: one-line system notice closed
0x02BBFD3C sLtRender::frameLimit? # src/game/frame_limit.cpp: waits for the flip queue and a minimum frame time (renderer flag 1: cutscenes); skipped with our own frame pacing
0x0259FB84 uEnemy::setMaxHp? # src/game/monster_hp.cpp: max HP = base x quest stat row (x0.55 for flagged quests); logged, scaling by hunters to follow
0x02141DE0 sID::getText? # src/game/text_trace.cpp: sID::vf37 (group, index) -> game text; overridden only with MH3U_TRACE_TEXT (logs callers)
0x021F0E7C sLobby::boxMenuStep? # src/game/item_sets.cpp: item box menu step; a 7th option Item Sets (Register / Load Item Set)
0x026A6B80 uIDLobbyMaki::drawBoxMenuOptions? # src/game/item_sets.cpp: with Item Sets, row slots 3 and 7 trade places (Item Sets under Combine/Manage Items)
0x02687D38 uIDLobbyMaki::drawBoxMenu? # src/game/item_sets.cpp: Item Sets' sub-list pop-up placed at row 3
0x02AE1E40 cGUIInstAnimation::updateTransforms? # src/game/item_sets.cpp: box menu with Item Sets - the separator and the scroll's lower part one row down (object PosY before the transforms are redone)
0x020ECA2C sCockpit::obtainItem? # src/game/carving.cpp: hold to gather - after an item is obtained the held button keeps repeating
0x028BC31C gatherReward? # src/game/carving.cpp: one gathering / mining / net reward (item, gathering skills, tool breakage); Instant Gathering repeats it until the spot is used up
0x020E0CFC sAppPad::vf6 # src/game/menu_mouse.cpp: pad per-frame update; afterwards the menu state decides whether the mouse is a pointer
0x0221A430 sLobby::menuDirections? # src/game/menu_mouse.cpp: lobby menus key-repeat directions (1 up 2 down 4 left 8 right); wrapped: a call means a lobby menu is open
0x0275BD84 uIDOption::stepPage? # src/game/menu_mouse.cpp: one Options page step (r4 = page 8/18-24); wrapped to know the page and its object for hover
0x020435B4 menuTwoChoice? # src/game/menu_mouse.cpp: the game's Yes / No step (&cursor 0 Yes 1 No, buttons 0x10 decide 0x20 cancel); hover sets the cursor, a click decides
0x0261C0FC messageBoxChoice? # src/game/menu_mouse.cpp: the message box draws its Yes / No pair (cursor sMenu+0x204); wrapped for hover / click
0x0275412C uIDMakeCharacter::step? # src/game/menu_mouse.cpp: Character Creation step (r3 = uIDMakeCharacter, cursor +0x884); wrapped to know the object for hover
0x0268E7DC uIDLobbyCardList::step? # src/game/menu_mouse.cpp: Guild Card List step (r3 = the list, row +0x3D4, page +0x3D8, state +0x3D2); wrapped to know the object for hover
0x0221C614 sLobby::optionListStep? # src/game/menu_mouse.cpp: a facility's option scroll (r4 = list: +4 cursor, +0xE count, +8 greyed bits; buttons 0x10 decide); hover sets the cursor, a click decides
0x020431F8 menuCursorStep? # src/game/menu_mouse.cpp: cursor step helper (cursor, count, direction bits); wrapped only with MH3U_MENU_LEARN to log its callers
0x020432BC menuCursorStepWrap? # src/game/menu_mouse.cpp: cursor step helper (wrapping); wrapped only with MH3U_MENU_LEARN to log its callers
0x020432C8 menuCursorStep2? # src/game/menu_mouse.cpp: cursor step helper; wrapped only with MH3U_MENU_LEARN to log its callers
0x0227FFC0 cameraEase? # src/game/camera_speed.cpp: (s16)(target - current) >> shift, the camera's per-frame angle ease; scaled by the frame time
0x02286DE8 cameraAutoTurn? # src/game/camera_speed.cpp: step that swings the camera behind the hunter; scaled by the frame time
0x02286F18 cameraTurnInput? # src/game/camera_speed.cpp: camera left / right input -> target yaw (block +0x94) per frame; scaled by the frame time
0x02286890 cameraPitchInput? # src/game/camera_speed.cpp: camera up / down -> target pitch (block +0x90; per frame under water); scaled by the frame time
0x02287D70 uGameCamera::shake? # src/game/modern_camera.cpp: camera shake (block +0x140 / +0x160 offsets), handed the eye / look-at targets (+0x70 / +0x80); Camera Distance pushes the eye target back first
0x02288824 uGameCamera::eventCamera? # src/game/modern_camera.cpp: the field camera's monster-event step (roars); the Modern Camera mod writes its eye / look-at at its entry
0x0227E138 cameraPadCopy? # src/game/play_log.cpp: copies pad buttons / right stick into the camera block once a frame (hunter at block +0x690); wrapped only with MH3U_PLAY_LOG
0x025F2810 uIDCockpitAbovehead::vf63 # src/game/play_log.cpp: places the above-head display, picks its animation; wrapped only with MH3U_PLAY_LOG
0x028ABC3C playerWindpress? # src/game/windpress.cpp: windpress reaction (phase pad +7); its per-frame push in phase 1 scaled by the frame time
0x02217F10 sLobby::shopListStep? # src/game/menu_mouse.cpp: Market buy list (r3 = sLobby: row +0x5558, count +0x5564, page +0x555A, state +0x5551); hover sets the row
0x021F1140 sLobby::boxGridStep? # src/game/menu_mouse.cpp: item box grid (r4 = box: column +0xC, row +0xE, 10 x 10, page +2); hover sets the cell
0x021E3978 sLobby::questListStep? # src/game/menu_mouse.cpp: Quest Counter list (r4 = list: row +0x16, count +0x18, page +0x2C, state +1); hover sets the row
0x028B0F70 playerEscapeGauge? # src/game/grab_escape.cpp: grab escape gauge (pad +0x6B4); each wiggle counts 1.0 instead of the frame time
0x02C0E43C sUnit::vf11 # src/game/play_log.cpp: updates the units of one move line; wrapped only with MH3U_PLAY_LOG to log units joining / leaving and state changes
0x021F1B00 sLobby::storeListStep? # src/game/menu_mouse.cpp: item box Store Items pouch list (r4 = list: row +0x14 of 8, page +0x16, state +1); hover sets the row
0x021CE834 sLobby::smithyListStep? # src/game/menu_mouse.cpp: Smithy / Armory equipment list (r3 = sLobby: row +0x5944, count +0x5950, page +0x594A, state +0x5829); hover sets the row and refreshes the comparison
0x021E55A8 sLobby::questLevelStep? # src/game/menu_mouse.cpp: Quest Counter level plaques (r4 = list: row +0x38, count +0x3A); hover sets the row
0x021EF1A8 sLobby::furnishingListStep? # src/game/menu_mouse.cpp: house furnishing list (r3 = sLobby: row u8 +0x6EB9, count +0x6EC4, state +0x6EB8; r4 buttons); hover sets the row, a click decides
0x021D8C8C sLobby::canteenIngredientStep? # src/game/menu_mouse.cpp: Canteen ingredient list (r4 = list: row +0x1E, count +0x28, page +0x2A); hover sets the row
0x02863258 questSupplyBoxStep? # src/game/menu_mouse.cpp: quest Supply Box (r4 = state, open while +0xBAE; cursor byte +0x6BF of FUN_02166A14(sQuest), 8 x 5); hover sets the cell
0x026ACF64 uIDLobbyOnline::choiceStep? # src/game/menu_mouse.cpp: three-choice step (cursor +0x408, copy +0x404, locks +0x42C); logged with MH3U_MENU_PROBE to map the Ferry
0x022101F4 sLobby::farmNameStep? # src/game/menu_mouse.cpp: Farm Name List, lobby mode 22 (r3 = sLobby: row +0x7FC2 of +0x7FCA, state +0x7FC0); hover sets the row
0x021D431C sLobby::farmStatsStep? # src/game/menu_mouse.cpp: Farm Stats facility (r4 = view: +0x38 of sUserData+0x5E78); hover sets it and redraws (FUN_021D3E1C)
0x02043308 menuYesNoStacked? # src/game/menu_mouse.cpp: the lobby's stacked Yes / No (r3 = &cursor u32 0 Yes 1 No, r4 buttons 0x10 decide); hover / click
0x021D4420 sLobby::farmCultivateStep? # src/game/menu_mouse.cpp: Farm Cultivate (r4 = view: state +1, settings row +0x3A: Source, Enrich, Cycles); hover sets the row
0x021D2724 sLobby::stockForecastStep? # src/game/menu_mouse.cpp: Stockpile Moga Forecast (r4 = view: day tab +0xC of +0xE); hover sets the tab
0x021D24BC sLobby::stockResourcesStep? # src/game/menu_mouse.cpp: Stockpile Resource Items (r4 = list: row +0x8 of +0x10, page +0xC of +0xE); hover sets the row, page arrows press left / right
0x021EFA70 sLobby::cropBoxStep? # src/game/menu_mouse.cpp: Farm Crop Box / Stockpile (r3 = sLobby: state +0x693C; menu u8 +0x693E; grid column u8 +0x693D of +0x6974, row +0x694E of +0x6976, cell +0x694C)
0x026AD984 uIDLobbyOnline::destinationStep? # src/game/menu_mouse.cpp: Ferry Destination list, state 9 (cursor +0x408 / +0x404, drawn +0x40C, locks +0x400, entries +0x2E4); hover sets and redraws
0x021C3DCC sLobby::furnishingPickerStep? # src/game/menu_mouse.cpp: house furnishing position picker (r4 = pick: state +2, cursor +0xCA of +0xC4, spots +0xB3[]); hover by measured spot positions, MH3U_MENU_PICKER_CAL to measure
0x021C4304 sLobby::furnishingRemoveStep? # src/game/menu_mouse.cpp: house furnishing Remove (r4 = pick: state +2; state 1 the occupied-spot picker like Place, removable bit 2 of +0xBB[]); hover as the Place picker
0x020E8DD4 questResultStep? # src/game/menu_mouse.cpp: quest results (r4 = res: state +0 / +1, hunter +0x20 of +0x21, view +0x2F, detail cursors +0x29 / +0x2A / +0x2C / +0x2D / +0x44); pointer kept on, learn screenshots per view
0x02180870 sResult::rewardStep? # src/game/menu_mouse.cpp: solo quest results / rewards (r4 = res: state +0x2FF4, sub +2, cursor +0x3066 of +0x3067, grid +0x3073 / +0x3075, Yes / No +0x3084); pointer kept on, learn screenshots per state
0x02763A88 uIDStartMenu::gameOptionsStep? # src/game/game_options.cpp: Game Options list with Cha-Cha's right column (cursor, A, help)
0x02AE1A50 cGUIInstAnimation::draw? # src/game/gui_util.cpp: vf11, draws the instance's object tree (FUN_02AF4BA8); Game Options plates drawn again as the right column
0x0275B3DC uIDOption::gameSettingsStep? # src/game/settings_page.cpp: Game Settings page step; Cha-Cha's settings pages (Graphics Settings) on its layout
0x020135F4 aDLContents::vf7 # src/game/dlc_menu.cpp: DLC area step; the DLC Menu as Official / Quests / Mods, the Mods list
0x02710998 uIDDLContents::detailPanel? # src/game/dlc_menu.cpp: on the Mods list only the summary page (03/03), its page indicator hidden
0x02743EBC uIDDLContents::labelStep? # src/game/dlc_menu.cpp: DLC Menu texts set again when +0x298 differs from DAT_1030C0E0; forced after Official / top relabels
0x026615A8 uIDCommonPauch::listStep? # src/game/field_gfx.cpp: the field menu list (tabs, rows); the GFX tab after the last tab
0x02664F74 uIDCommonPauch::optionsStep? # src/game/field_gfx.cpp: the field menu's Options screen; Display / Graphics Settings shown in it
0x022273B8 sLobby::argosyTradeStep? # src/game/menu_mouse.cpp: Argosy trade (r4 = trade: state +1; panel cursor +0x38 of 2/3; list row +0x3A of +0x3C, last row OK); hover / click
0x02228210 sLobby::argosyDestinationsStep? # src/game/menu_mouse.cpp: Argosy Destinations (r4 = voyage: state +1; row +0x3A of +0x3C, row kinds +9+row); hover / click
0x021EC78C sLobby::fisheryFleetStep? # src/game/menu_mouse.cpp: Fishery (r4 = fleet: state +1; Quest Settings cursor +4; Regions row +0x10 of +0x12, page +0x14); hover / click
0x02AFF91C cGUIObjMessage::setTextLen? # src/game/quest_markers.cpp: (message, text, length) - logged with its caller while a quest list is open (MH3U_QUEST_PROBE)
0x0294B8DC sMain::framePacing? # src/game/effect_speed.cpp: after it, the console frames (1/30 s) this frame covers -> particle steps due
0x02B0DC4C cParticleGenerator::vf17 # src/game/effect_speed.cpp: emitter / particle step (counts whole frames), run per 1/30 s, not per frame
0x02B8D5A4 cParticleNode::vf17 # src/game/effect_speed.cpp: node step (frame timers), run per 1/30 s
0x02B8E7FC cParticleNodeInfinite::vf17 # src/game/effect_speed.cpp: node step, run per 1/30 s
0x02B05284 cEffectUnitGenerator::vf17 # src/game/effect_speed.cpp: effect-unit emitter step, run per 1/30 s
