yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
command_handlers.cc
Go to the documentation of this file.
2
3#include <memory>
4
40#ifdef YAZE_WITH_GRPC
42#endif
56
57namespace yaze {
58namespace cli {
59namespace handlers {
60
61std::vector<std::unique_ptr<resources::CommandHandler>>
63 std::vector<std::unique_ptr<resources::CommandHandler>> handlers;
64
65 // Graphics commands
66 handlers.push_back(std::make_unique<HexReadCommandHandler>());
67 handlers.push_back(std::make_unique<HexWriteCommandHandler>());
68 handlers.push_back(std::make_unique<HexSearchCommandHandler>());
69
70 // Palette commands
71 handlers.push_back(std::make_unique<PaletteGetColorsCommandHandler>());
72 handlers.push_back(std::make_unique<PaletteSetColorCommandHandler>());
73 handlers.push_back(std::make_unique<PaletteAnalyzeCommandHandler>());
74
75 // Sprite commands
76 handlers.push_back(std::make_unique<SpriteListCommandHandler>());
77 handlers.push_back(std::make_unique<SpritePropertiesCommandHandler>());
78 handlers.push_back(std::make_unique<SpritePaletteCommandHandler>());
79
80 // Music commands
81 handlers.push_back(std::make_unique<MusicListCommandHandler>());
82 handlers.push_back(std::make_unique<MusicInfoCommandHandler>());
83 handlers.push_back(std::make_unique<MusicTracksCommandHandler>());
84
85 // Oracle menu tooling
86 handlers.push_back(std::make_unique<OracleMenuIndexCommandHandler>());
87 handlers.push_back(std::make_unique<OracleMenuSetOffsetCommandHandler>());
88 handlers.push_back(std::make_unique<OracleMenuValidateCommandHandler>());
89 handlers.push_back(std::make_unique<DungeonOraclePreflightCommandHandler>());
90 handlers.push_back(std::make_unique<OracleSmokeCheckCommandHandler>());
91
92 // Dialogue commands
93 handlers.push_back(std::make_unique<DialogueListCommandHandler>());
94 handlers.push_back(std::make_unique<DialogueReadCommandHandler>());
95 handlers.push_back(std::make_unique<DialogueSearchCommandHandler>());
96
97 // Message commands
98 handlers.push_back(std::make_unique<MessageListCommandHandler>());
99 handlers.push_back(std::make_unique<MessageReadCommandHandler>());
100 handlers.push_back(std::make_unique<MessageSearchCommandHandler>());
101 handlers.push_back(std::make_unique<MessageEncodeCommandHandler>());
102 handlers.push_back(std::make_unique<MessageDecodeCommandHandler>());
103 handlers.push_back(std::make_unique<MessageImportOrgCommandHandler>());
104 handlers.push_back(std::make_unique<MessageExportOrgCommandHandler>());
105 handlers.push_back(std::make_unique<MessageExportBundleCommandHandler>());
106 handlers.push_back(std::make_unique<MessageImportBundleCommandHandler>());
107 handlers.push_back(std::make_unique<MessageWriteCommandHandler>());
108 handlers.push_back(std::make_unique<MessageExportBinCommandHandler>());
109 handlers.push_back(std::make_unique<MessageExportAsmCommandHandler>());
110 handlers.push_back(std::make_unique<MessageSourceSyncCommandHandler>());
111
112 // Project bundle management
113 handlers.push_back(std::make_unique<ProjectBundleVerifyCommandHandler>());
114 handlers.push_back(std::make_unique<ProjectBundlePackCommandHandler>());
115 handlers.push_back(std::make_unique<ProjectBundleUnpackCommandHandler>());
116
117 // ROM commands
118 handlers.push_back(std::make_unique<RomReadCommandHandler>());
119 handlers.push_back(std::make_unique<RomWriteCommandHandler>());
120 handlers.push_back(std::make_unique<RomInfoCommandHandler>());
121 handlers.push_back(std::make_unique<RomValidateCommandHandler>());
122 handlers.push_back(std::make_unique<RomDiffCommandHandler>());
123 handlers.push_back(std::make_unique<RomGenerateGoldenCommandHandler>());
124 handlers.push_back(std::make_unique<RomResolveAddressCommandHandler>());
125 handlers.push_back(std::make_unique<RomFindSymbolCommandHandler>());
126
127 // Resource inspection tools
128 handlers.push_back(std::make_unique<ResourceListCommandHandler>());
129 handlers.push_back(std::make_unique<ResourceSearchCommandHandler>());
130
131 // Dungeon inspection
132 handlers.push_back(std::make_unique<DungeonListSpritesCommandHandler>());
133 handlers.push_back(std::make_unique<DungeonDescribeRoomCommandHandler>());
134 handlers.push_back(std::make_unique<DungeonListChestsCommandHandler>());
135 handlers.push_back(std::make_unique<DungeonGetEntranceCommandHandler>());
136 handlers.push_back(std::make_unique<DungeonExportRoomCommandHandler>());
137 handlers.push_back(std::make_unique<DungeonListObjectsCommandHandler>());
138 handlers.push_back(
139 std::make_unique<DungeonListCustomCollisionCommandHandler>());
140 handlers.push_back(
141 std::make_unique<DungeonExportCustomCollisionJsonCommandHandler>());
142 handlers.push_back(
143 std::make_unique<DungeonImportCustomCollisionJsonCommandHandler>());
144 handlers.push_back(
145 std::make_unique<DungeonExportWaterFillJsonCommandHandler>());
146 handlers.push_back(
147 std::make_unique<DungeonImportWaterFillJsonCommandHandler>());
148 handlers.push_back(std::make_unique<DungeonGetRoomTilesCommandHandler>());
149 handlers.push_back(std::make_unique<DungeonTileTypesCommandHandler>());
150 handlers.push_back(std::make_unique<DungeonSetRoomPropertyCommandHandler>());
151 handlers.push_back(std::make_unique<DungeonRoomHeaderCommandHandler>());
152 handlers.push_back(std::make_unique<DungeonGraphCommandHandler>());
153 handlers.push_back(std::make_unique<DungeonRoomGraphCommandHandler>());
154 handlers.push_back(std::make_unique<DungeonRoomCensusCommandHandler>());
155 handlers.push_back(std::make_unique<AtlasRenderCommandHandler>());
156 handlers.push_back(std::make_unique<DungeonGroupCommandHandler>());
157 handlers.push_back(std::make_unique<DungeonMapCommandHandler>());
158 handlers.push_back(std::make_unique<DungeonMinecartAuditCommandHandler>());
159 handlers.push_back(std::make_unique<DungeonMinecartMapCommandHandler>());
160 handlers.push_back(std::make_unique<DungeonRenderCommandHandler>());
161 handlers.push_back(std::make_unique<DungeonStreamPlanCommandHandler>());
162 handlers.push_back(
163 std::make_unique<DungeonGenerateTrackCollisionCommandHandler>());
164 handlers.push_back(std::make_unique<EntranceInfoCommandHandler>());
165 handlers.push_back(std::make_unique<DungeonDiscoverCommandHandler>());
166
167 // Dungeon editing (write commands)
168 handlers.push_back(std::make_unique<DungeonPlaceSpriteCommandHandler>());
169 handlers.push_back(std::make_unique<DungeonRemoveSpriteCommandHandler>());
170 handlers.push_back(std::make_unique<DungeonPlaceObjectCommandHandler>());
171 handlers.push_back(std::make_unique<DungeonRemoveObjectCommandHandler>());
172 handlers.push_back(std::make_unique<DungeonGetPaletteCommandHandler>());
173 handlers.push_back(std::make_unique<DungeonSetPaletteColorCommandHandler>());
174 handlers.push_back(std::make_unique<DungeonSetDoorTypeCommandHandler>());
175 handlers.push_back(std::make_unique<DungeonListPotItemsCommandHandler>());
176 handlers.push_back(std::make_unique<DungeonSetPotItemCommandHandler>());
177 handlers.push_back(std::make_unique<DungeonSetCollisionTileCommandHandler>());
178
179 handlers.push_back(std::make_unique<OverworldTerrainCatalogCommandHandler>());
180
181 // Overworld inspection
182 handlers.push_back(std::make_unique<OverworldGetTileCommandHandler>());
183 handlers.push_back(
184 std::make_unique<OverworldInspectSpecialEntrancesCommandHandler>());
185 handlers.push_back(std::make_unique<OverworldSetTileCommandHandler>());
186 handlers.push_back(std::make_unique<OverworldFindTileCommandHandler>());
187 handlers.push_back(std::make_unique<OverworldDescribeMapCommandHandler>());
188 handlers.push_back(std::make_unique<OverworldListWarpsCommandHandler>());
189 handlers.push_back(std::make_unique<OverworldListSpritesCommandHandler>());
190 handlers.push_back(std::make_unique<OverworldListItemsCommandHandler>());
191 handlers.push_back(std::make_unique<OverworldGetEntranceCommandHandler>());
192 handlers.push_back(std::make_unique<OverworldTileStatsCommandHandler>());
193 handlers.push_back(std::make_unique<OverworldExportGraphCommandHandler>());
194 handlers.push_back(std::make_unique<OverworldRenderCommandHandler>());
195
196 // Overworld editing (dry-run by default; --write commits)
197 handlers.push_back(std::make_unique<OverworldAddSpriteCommandHandler>());
198 handlers.push_back(std::make_unique<OverworldMoveSpriteCommandHandler>());
199 handlers.push_back(std::make_unique<OverworldRemoveSpriteCommandHandler>());
200
201 // GUI automation tools
202 handlers.push_back(std::make_unique<GuiPlaceTileCommandHandler>());
203 handlers.push_back(std::make_unique<GuiClickCommandHandler>());
204 handlers.push_back(std::make_unique<GuiTypeCommandHandler>());
205 handlers.push_back(std::make_unique<GuiWaitCommandHandler>());
206 handlers.push_back(std::make_unique<GuiAssertCommandHandler>());
207 handlers.push_back(std::make_unique<GuiDiscoverToolCommandHandler>());
208 handlers.push_back(std::make_unique<GuiScreenshotCommandHandler>());
209
210 // Emulator & debugger commands
211#ifdef YAZE_WITH_GRPC
212 handlers.push_back(std::make_unique<EmulatorStepCommandHandler>());
213 handlers.push_back(std::make_unique<EmulatorRunCommandHandler>());
214 handlers.push_back(std::make_unique<EmulatorPauseCommandHandler>());
215 handlers.push_back(std::make_unique<EmulatorResetCommandHandler>());
216 handlers.push_back(std::make_unique<EmulatorGetStateCommandHandler>());
217 handlers.push_back(std::make_unique<EmulatorSetBreakpointCommandHandler>());
218 handlers.push_back(std::make_unique<EmulatorClearBreakpointCommandHandler>());
219 handlers.push_back(std::make_unique<EmulatorListBreakpointsCommandHandler>());
220 handlers.push_back(std::make_unique<EmulatorReadMemoryCommandHandler>());
221 handlers.push_back(std::make_unique<EmulatorWriteMemoryCommandHandler>());
222 handlers.push_back(std::make_unique<EmulatorGetRegistersCommandHandler>());
223 handlers.push_back(std::make_unique<EmulatorGetMetricsCommandHandler>());
224#endif
225
226 // Mesen2 command handlers (socket-based)
227 for (auto& handler : CreateMesenCommandHandlers()) {
228 handlers.push_back(std::move(handler));
229 }
230
231 // Test helper tools
232 handlers.push_back(std::make_unique<ToolsListCommandHandler>());
233 handlers.push_back(std::make_unique<ToolsHarnessStateCommandHandler>());
234 handlers.push_back(std::make_unique<ToolsExtractValuesCommandHandler>());
235 handlers.push_back(std::make_unique<ToolsExtractGoldenCommandHandler>());
236 handlers.push_back(std::make_unique<ToolsPatchV3CommandHandler>());
237
238 // Hex Inspector
239 handlers.push_back(std::make_unique<HexDumpCommandHandler>());
240 handlers.push_back(std::make_unique<HexCompareCommandHandler>());
241 handlers.push_back(std::make_unique<HexAnnotateCommandHandler>());
242
243 // Test CLI commands
244 handlers.push_back(std::make_unique<TestListCommandHandler>());
245 handlers.push_back(std::make_unique<TestRunCommandHandler>());
246 handlers.push_back(std::make_unique<TestStatusCommandHandler>());
247
248 // Validation and repair tools (doctor suite)
249 handlers.push_back(std::make_unique<OverworldValidateCommandHandler>());
250 handlers.push_back(std::make_unique<OverworldDoctorCommandHandler>());
251 handlers.push_back(std::make_unique<OverworldAllocationCommandHandler>());
252 handlers.push_back(std::make_unique<DungeonDoctorCommandHandler>());
253 handlers.push_back(std::make_unique<DungeonObjectValidateCommandHandler>());
254 handlers.push_back(std::make_unique<RomDoctorCommandHandler>());
255 handlers.push_back(std::make_unique<MessageDoctorCommandHandler>());
256 handlers.push_back(std::make_unique<SpriteDoctorCommandHandler>());
257 handlers.push_back(std::make_unique<GraphicsDoctorCommandHandler>());
258 handlers.push_back(std::make_unique<GfxSheetInventoryCommandHandler>());
259 handlers.push_back(std::make_unique<GraphicsContextCommandHandler>());
260 handlers.push_back(std::make_unique<GfxExportCommandHandler>());
261 handlers.push_back(std::make_unique<GfxImportCommandHandler>());
262 handlers.push_back(std::make_unique<GfxRoomExportCommandHandler>());
263 handlers.push_back(std::make_unique<GfxRoomImportCommandHandler>());
264 handlers.push_back(std::make_unique<GfxTilemapRenderCommandHandler>());
265 handlers.push_back(std::make_unique<RomCompareCommandHandler>());
266
267 return handlers;
268}
269
270} // namespace handlers
271} // namespace cli
272} // namespace yaze
std::vector< std::unique_ptr< resources::CommandHandler > > CreateMesenCommandHandlers()
Factory function to create Mesen2 command handlers.
std::vector< std::unique_ptr< resources::CommandHandler > > CreateCliCommandHandlers()
Factory function to create all CLI-level command handlers.
CLI command handlers for test helper tools.