scummvm/sky/debug.cpp
2003-04-26 09:43:48 +00:00

420 lines
7.1 KiB
C++

/* ScummVM - Scumm Interpreter
* Copyright (C) 2003 The ScummVM project
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Header$
*
*/
#include "stdafx.h"
#include "sky/debug.h"
static const char *section_0_compacts[] = {
"UNDEFINED",
"joey",
"joey_park",
"foster",
"std_menu_logic",
"text_mouse",
"gallcard_menu",
"rs_mega_alive",
"citycard_menu",
"shades_menu",
"putty_menu",
"lightbulb_menu",
"low_get_seq",
"mini_shrug_seq",
"sml_up_mid_get_seq",
"new_grid",
"lamb",
"floor",
"coordinate_test",
"save_restore_mouse",
"whole_screen",
"l_talk_s2",
"r_talk_s2",
"text_1",
"text_2",
"text_3",
"text_4",
"text_5",
"text_6",
"text_7",
"text_8",
"text_9",
"text_10",
"text_11",
"wd40_menu",
"skey_menu",
"secateurs_menu",
"rope_menu",
"plaster_menu",
"new_cable_menu",
"shrug_seq",
"rad_shrug_seq",
"brick_menu",
"tongs_menu",
"talk1",
"talk2",
"menu_bar",
"left_arrow",
"right_arrow",
"dog_food_menu",
"UNDEFINED",
"blank1",
"blank2",
"blank3",
"blank4",
"blank5",
"blank6",
"blank7",
"blank8",
"blank9",
"blank10",
"blank11",
"UNDEFINED",
"crow_bar_menu",
"sarnie_menu",
"spanner_menu",
"joeyb_menu",
"low_floor",
"UNDEFINED",
"stairs",
"upstairs",
"anita_card_menu",
"rs_lamb_to_three",
"rs_lamb_start_2",
"anchor_menu",
"magazine_menu",
"tape_menu",
"glass_menu",
"rs_lamb_start_3",
"ticket_menu",
"s29_fast_list",
"s6_fast_list",
"fast_list_sc3",
"s9_fast_list",
"s10_fast_list",
"bar",
"s11_fast_list",
"fast_list_0",
"s0_fast_list",
"s7_fast_list",
"door",
"s28_fast_list",
"swing_list",
"UNDEFINED",
"UNDEFINED",
"outside_ledge",
"UNDEFINED",
"r1_door",
"UNDEFINED",
"UNDEFINED",
"UNDEFINED",
"UNDEFINED",
"fast_list_sc90",
"UNDEFINED",
"UNDEFINED",
"small_door",
"sc85_fast_list",
"sc85_chip_list",
"sc85_logic_list",
"sc85_mouse_list",
"sc85_palette",
"right_exit0",
"UNDEFINED",
"UNDEFINED",
"UNDEFINED",
"s2_floor",
"UNDEFINED",
"s101_chip_list",
"s101_pal",
"s101_mouse",
"s101_logic",
"full_screen",
"cancel_button",
"button_0",
"button_1",
"button_2",
"button_3",
"button_4",
"button_5",
"button_6",
"button_7",
"button_8",
"button_9",
"rs_left_arrow",
"rs_right_arrow",
"rs_blank",
"monitor",
"anita",
"UNDEFINED",
"UNDEFINED",
"UNDEFINED",
"baby_logic_list",
"rs_l_arr_linc",
"rs_r_arr_linc",
"rs_blanks_linc",
"s5_fast_list",
"but_e",
"but_0",
"but_1",
"but_2",
"but_3",
"but_4",
"but_5",
"but_6",
"but_7",
"but_8",
"but_9",
"UNDEFINED",
"s102_chip_list",
"s102_pal",
"s102_logic",
"s102_mouse",
"restart_butt",
"restart_seq",
"restore_butt",
"restore_seq",
"seq1_pal",
"seq2_pal",
"seq3_pal",
"fast_intro",
"chip_intro",
"fast_intro_2",
"fast_intro_3",
"retina_scan",
"retina_scan_cdt",
"exit_butt",
"exit_seq",
"forklift_cpt",
"forklift1_cdt",
"forklift2_cdt",
};
static const char *logic_table_names[] = {
"return",
"SkyLogic::script",
"SkyLogic::auto_route",
"SkyLogic::ar_anim",
"SkyLogic::ar_turn",
"SkyLogic::alt",
"SkyLogic::anim",
"SkyLogic::turn",
"SkyLogic::cursor",
"SkyLogic::talk",
"SkyLogic::listen",
"SkyLogic::stopped",
"SkyLogic::choose",
"SkyLogic::frames",
"SkyLogic::pause",
"SkyLogic::wait_sync",
"SkyLogic::simple_anim",
};
static const char opcode_par[] = {
1,
0,
1,
0,
0,
1,
1,
0,
0,
1,
0,
2,
0,
0,
1,
1,
1,
0,
1,
0,
0,
};
static const char *opcodes[] = {
"push_variable",
"less_than",
"push_number",
"not_equal",
"if_and",
"skip_zero",
"pop_var",
"minus",
"plus",
"skip_always",
"if_or",
"call_mcode",
"more_than",
"script_exit",
"switch",
"push_offset",
"pop_offset",
"is_equal",
"skip_nz",
"script_exit",
"restart_script",
};
static const char *mcodes[] = {
"fn_cache_chip",
"fn_cache_fast",
"fn_draw_screen",
"fn_ar",
"fn_ar_animate",
"fn_idle",
"fn_interact",
"fn_start_sub",
"fn_they_start_sub",
"fn_assign_base",
"fn_disk_mouse",
"fn_normal_mouse",
"fn_blank_mouse",
"fn_cross_mouse",
"fn_cursor_right",
"fn_cursor_left",
"fn_cursor_down",
"fn_open_hand",
"fn_close_hand",
"fn_get_to",
"fn_set_to_stand",
"fn_turn_to",
"fn_arrived",
"fn_leaving",
"fn_set_alternate",
"fn_alt_set_alternate",
"fn_kill_id",
"fn_no_human",
"fn_add_human",
"fn_add_buttons",
"fn_no_buttons",
"fn_set_stop",
"fn_clear_stop",
"fn_pointer_text",
"fn_quit",
"fn_speak_me",
"fn_speak_me_dir",
"fn_speak_wait",
"fn_speak_wait_dir",
"fn_chooser",
"fn_highlight",
"fn_text_kill",
"fn_stop_mode",
"fn_we_wait",
"fn_send_sync",
"fn_send_fast_sync",
"fn_send_request",
"fn_clear_request",
"fn_check_request",
"fn_start_menu",
"fn_unhighlight",
"fn_face_id",
"fn_foreground",
"fn_background",
"fn_new_background",
"fn_sort",
"fn_no_sprite_engine",
"fn_no_sprites_a6",
"fn_reset_id",
"fn_toggle_grid",
"fn_pause",
"fn_run_anim_mod",
"fn_simple_mod",
"fn_run_frames",
"fn_await_sync",
"fn_inc_mega_set",
"fn_dec_mega_set",
"fn_set_mega_set",
"fn_move_items",
"fn_new_list",
"fn_ask_this",
"fn_random",
"fn_person_here",
"fn_toggle_mouse",
"fn_mouse_on",
"fn_mouse_off",
"fn_fetch_x",
"fn_fetch_y",
"fn_test_list",
"fn_fetch_place",
"fn_custom_joey",
"fn_set_palette",
"fn_text_module",
"fn_change_name",
"fn_mini_load",
"fn_flush_buffers",
"fn_flush_chip",
"fn_save_coods",
"fn_plot_grid",
"fn_remove_grid",
"fn_eyeball",
"fn_cursor_up",
"fn_leave_section",
"fn_enter_section",
"fn_restore_game",
"fn_restart_game",
"fn_new_swing_seq",
"fn_wait_swing_end",
"fn_skip_intro_code",
"fn_blank_screen",
"fn_print_credit",
"fn_look_at",
"fn_linc_text_module",
"fn_text_kill2",
"fn_set_font",
"fn_start_fx",
"fn_stop_fx",
"fn_start_music",
"fn_stop_music",
"fn_fade_down",
"fn_fade_up",
"fn_quit_to_dos",
"fn_pause_fx",
"fn_un_pause_fx",
"fn_printf",
};
void SkyDebug::fetchCompact(uint32 a) {
uint32 sectionNum = (a & 0xf000) >> 12;
uint32 compactNum = (a & 0x0fff);
if (sectionNum == 0)
printf("Loading Compact %s from section %d\n", section_0_compacts[compactNum], sectionNum);
else
printf("Loading Compact %d from section %d\n", compactNum, sectionNum);
}
void SkyDebug::logic(uint32 logic) {
printf("LOGIC: %s\n", logic_table_names[logic]);
}
void SkyDebug::script(uint32 command, uint16 *scriptData) {
int i;
printf("SCRIPT: %s", opcodes[command]);
for (i = 0; i < opcode_par[command]; i++)
printf(" %d", READ_LE_UINT16(scriptData + i));
printf("\n");
}
void SkyDebug::mcode(uint32 mcode, uint32 a, uint32 b, uint32 c) {
printf("MCODE: %s(%d, %d, %d)\n", mcodes[mcode], a, b, c);
};