Debug: Show callback ID names in sprite dump

pull/428/head
Jonathan G Rennison 2 years ago
parent 7af568f0f0
commit dbc55274e2

@ -413,4 +413,6 @@ enum AirportTileCallbackMask {
static const uint CALLBACK_FAILED = 0xFFFF; ///< Result of a failed callback.
static const uint CALLBACK_HOUSEPRODCARGO_END = 0x20FF; ///< Sentinel indicating that the loop for CBID_HOUSE_PRODUCE_CARGO has ended
const char *GetNewGRFCallbackName(CallbackID cbid);
#endif /* NEWGRF_CALLBACKS_H */

@ -1496,3 +1496,90 @@ void ShowSpriteAlignerWindow()
{
AllocateWindowDescFront<SpriteAlignerWindow>(&_sprite_aligner_desc, 0);
}
const char *GetNewGRFCallbackName(CallbackID cbid)
{
#define CBID(c) case c: return #c;
switch (cbid) {
CBID(CBID_RANDOM_TRIGGER)
CBID(CBID_VEHICLE_VISUAL_EFFECT)
CBID(CBID_VEHICLE_LENGTH)
CBID(CBID_VEHICLE_LOAD_AMOUNT)
CBID(CBID_STATION_AVAILABILITY)
CBID(CBID_STATION_SPRITE_LAYOUT)
CBID(CBID_VEHICLE_REFIT_CAPACITY)
CBID(CBID_VEHICLE_ARTIC_ENGINE)
CBID(CBID_HOUSE_ALLOW_CONSTRUCTION)
CBID(CBID_GENERIC_AI_PURCHASE_SELECTION)
CBID(CBID_VEHICLE_CARGO_SUFFIX)
CBID(CBID_HOUSE_ANIMATION_NEXT_FRAME)
CBID(CBID_HOUSE_ANIMATION_START_STOP)
CBID(CBID_HOUSE_CONSTRUCTION_STATE_CHANGE)
CBID(CBID_TRAIN_ALLOW_WAGON_ATTACH)
CBID(CBID_HOUSE_COLOUR)
CBID(CBID_HOUSE_CARGO_ACCEPTANCE)
CBID(CBID_HOUSE_ANIMATION_SPEED)
CBID(CBID_HOUSE_DESTRUCTION)
CBID(CBID_INDUSTRY_PROBABILITY)
CBID(CBID_VEHICLE_ADDITIONAL_TEXT)
CBID(CBID_STATION_TILE_LAYOUT)
CBID(CBID_INDTILE_ANIM_START_STOP)
CBID(CBID_INDTILE_ANIM_NEXT_FRAME)
CBID(CBID_INDTILE_ANIMATION_SPEED)
CBID(CBID_INDUSTRY_LOCATION)
CBID(CBID_INDUSTRY_PRODUCTION_CHANGE)
CBID(CBID_HOUSE_ACCEPT_CARGO)
CBID(CBID_INDTILE_CARGO_ACCEPTANCE)
CBID(CBID_INDTILE_ACCEPT_CARGO)
CBID(CBID_VEHICLE_COLOUR_MAPPING)
CBID(CBID_HOUSE_PRODUCE_CARGO)
CBID(CBID_INDTILE_SHAPE_CHECK)
CBID(CBID_INDTILE_DRAW_FOUNDATIONS)
CBID(CBID_VEHICLE_START_STOP_CHECK)
CBID(CBID_VEHICLE_32DAY_CALLBACK)
CBID(CBID_VEHICLE_SOUND_EFFECT)
CBID(CBID_VEHICLE_AUTOREPLACE_SELECTION)
CBID(CBID_INDUSTRY_MONTHLYPROD_CHANGE)
CBID(CBID_VEHICLE_MODIFY_PROPERTY)
CBID(CBID_INDUSTRY_CARGO_SUFFIX)
CBID(CBID_INDUSTRY_FUND_MORE_TEXT)
CBID(CBID_CARGO_PROFIT_CALC)
CBID(CBID_INDUSTRY_WINDOW_MORE_TEXT)
CBID(CBID_INDUSTRY_SPECIAL_EFFECT)
CBID(CBID_INDTILE_AUTOSLOPE)
CBID(CBID_INDUSTRY_REFUSE_CARGO)
CBID(CBID_STATION_ANIM_START_STOP)
CBID(CBID_STATION_ANIM_NEXT_FRAME)
CBID(CBID_STATION_ANIMATION_SPEED)
CBID(CBID_HOUSE_DENY_DESTRUCTION)
CBID(CBID_SOUNDS_AMBIENT_EFFECT)
CBID(CBID_CARGO_STATION_RATING_CALC)
CBID(CBID_NEW_SIGNALS_SPRITE_DRAW)
CBID(CBID_CANALS_SPRITE_OFFSET)
CBID(CBID_HOUSE_WATCHED_CARGO_ACCEPTED)
CBID(CBID_STATION_LAND_SLOPE_CHECK)
CBID(CBID_INDUSTRY_DECIDE_COLOUR)
CBID(CBID_INDUSTRY_INPUT_CARGO_TYPES)
CBID(CBID_INDUSTRY_OUTPUT_CARGO_TYPES)
CBID(CBID_HOUSE_CUSTOM_NAME)
CBID(CBID_HOUSE_DRAW_FOUNDATIONS)
CBID(CBID_HOUSE_AUTOSLOPE)
CBID(CBID_AIRPTILE_DRAW_FOUNDATIONS)
CBID(CBID_AIRPTILE_ANIM_START_STOP)
CBID(CBID_AIRPTILE_ANIM_NEXT_FRAME)
CBID(CBID_AIRPTILE_ANIMATION_SPEED)
CBID(CBID_AIRPORT_ADDITIONAL_TEXT)
CBID(CBID_AIRPORT_LAYOUT_NAME)
CBID(CBID_OBJECT_LAND_SLOPE_CHECK)
CBID(CBID_OBJECT_ANIMATION_NEXT_FRAME)
CBID(CBID_OBJECT_ANIMATION_START_STOP)
CBID(CBID_OBJECT_ANIMATION_SPEED)
CBID(CBID_OBJECT_COLOUR)
CBID(CBID_OBJECT_FUND_MORE_TEXT)
CBID(CBID_OBJECT_AUTOSLOPE)
CBID(CBID_VEHICLE_REFIT_COST)
CBID(CBID_INDUSTRY_PROD_CHANGE_BUILD)
CBID(CBID_VEHICLE_SPAWN_VISUAL_EFFECT)
default: return nullptr;
}
}

@ -889,6 +889,15 @@ void SpriteGroupDumper::DumpSpriteGroup(const SpriteGroup *sg, int padding, uint
}
}
bool is_callback_group = false;
if (adjusts->size() == 1 && !dsg->calculated_result) {
const DeterministicSpriteGroupAdjust &adjust = (*adjusts)[0];
if (adjust.variable == 0xC && (adjust.operation == DSGA_OP_ADD || adjust.operation == DSGA_OP_RST)
&& adjust.shift_num == 0 && (adjust.and_mask & 0xFF) == 0xFF && adjust.type == DSGA_TYPE_NONE) {
is_callback_group = true;
}
}
if (padding == 0 && !dsg->calculated_result && default_group != nullptr) {
this->top_default_group = default_group;
}
@ -932,7 +941,14 @@ void SpriteGroupDumper::DumpSpriteGroup(const SpriteGroup *sg, int padding, uint
print();
} else {
for (const auto &range : (*ranges)) {
seprintf(this->buffer, lastof(this->buffer), "%*srange: %X -> %X", padding, "", range.low, range.high);
char *p = this->buffer;
p += seprintf(p, lastof(this->buffer), "%*srange: %X -> %X", padding, "", range.low, range.high);
if (range.low == range.high && is_callback_group) {
const char *cb_name = GetNewGRFCallbackName((CallbackID)range.low);
if (cb_name != nullptr) {
p += seprintf(p, lastof(this->buffer), " (%s)", cb_name);
}
}
print();
this->DumpSpriteGroup(range.group, padding + 2, 0);
}

Loading…
Cancel
Save