mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-01 06:58:34 +00:00
cfaee32474
svn-id: r7124
420 lines
7.1 KiB
C++
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);
|
|
};
|
|
|