diff --git a/engines/chewy/main.cpp b/engines/chewy/main.cpp index e2b0ce21d61..3519224f90e 100644 --- a/engines/chewy/main.cpp +++ b/engines/chewy/main.cpp @@ -112,9 +112,8 @@ void alloc_buffers() { } void free_buffers() { - int16 i; det->del_dptr(); - for (i = 0; i < MAX_PERSON; i++) + for (int16 i = 0; i < MAX_PERSON; i++) free((char *)PersonTaf[i]); free((char *)spz_tinfo); free(font6x8); @@ -323,9 +322,8 @@ void menu_exit() { } int16 main_loop(int16 mode) { - int16 ende; int16 ret; - ende = false; + int16 ende = false; maus_action(); if (flags.MainInput) { diff --git a/engines/chewy/rooms/room46.cpp b/engines/chewy/rooms/room46.cpp index a38cdd858a6..7b59fc7a69d 100644 --- a/engines/chewy/rooms/room46.cpp +++ b/engines/chewy/rooms/room46.cpp @@ -132,11 +132,14 @@ void Room46::bodo() { flic_cut(FCUT_065, CFO_MODE); out->setze_zeiger(nullptr); out->cls(); + test_intro(16); + _G(spieler).PersonHide[P_CHEWY] = false; - det->hide_static_spr(0); det->hide_static_spr(3); load_chewy_taf(CHEWY_ROCKER); + _G(spieler).R28ChewyPump = false; + set_person_pos(213, 118, P_CHEWY, P_RIGHT); start_aad_wait(243, -1); invent_2_slot(UHR_INV); @@ -149,13 +152,22 @@ void Room46::kloppe() { for (int16 i = 0; i < 4; i++) { mem->file->select_pool_item(Ci.Handle, FCUT_065); - flc->play(Ci.Handle, Ci.VirtScreen, Ci.TempArea); + flc->custom_play(&Ci); + out->setze_zeiger(nullptr); out->cls(); start_aad(244 + i, -1); int16 delay = _G(spieler).DelaySpeed * 50; atds->print_aad(0, 0); + if (flags.InitSound && _G(spieler).SpeechSwitch) { + while (ailsnd->isSpeechActive()) { + ailsnd->serveDbSamples(); + SHOULD_QUIT_RETURN; + } + continue; + } + while (in->get_switch_code() == 0 && delay) { out->skip_frame(1); --delay; diff --git a/engines/chewy/rooms/room47.cpp b/engines/chewy/rooms/room47.cpp index e4c1f8b2392..e3e88b4983c 100644 --- a/engines/chewy/rooms/room47.cpp +++ b/engines/chewy/rooms/room47.cpp @@ -84,18 +84,16 @@ int16 Room47::use_knopf(int16 txt_nr) { } void Room47::set_detail() { - int16 i; - - for (i = 0; i < 10; i++) + for (int16 i = 0; i < 10; i++) det->hide_static_spr(i); - for (i = 0; i < 3; i++) { + for (int16 i = 0; i < 3; i++) { det->show_static_spr(_G(spieler).R47Schloss[i]); - det->set_static_pos(_G(spieler).R47Schloss[i], 124 + i * 30, 96 - i * 1, false, true); + det->set_static_pos(_G(spieler).R47Schloss[i], 124 + i * 30, 96 - i, false, true); det->plot_static_details(0, 0, _G(spieler).R47Schloss[i], _G(spieler).R47Schloss[i]); } - for (i = 0; i < 10; i++) + for (int16 i = 0; i < 10; i++) det->hide_static_spr(i); } diff --git a/engines/chewy/rooms/room49.cpp b/engines/chewy/rooms/room49.cpp index 696c4730078..7e09327e641 100644 --- a/engines/chewy/rooms/room49.cpp +++ b/engines/chewy/rooms/room49.cpp @@ -106,8 +106,8 @@ void Room49::calc_boy_ani() { det->del_static_ani(1); } - det->set_static_ani(_G(spieler).R49BoyAni, -1); - det->start_detail(_G(spieler).R49BoyAni, 1, ANI_VOR); + det->set_static_ani(_G(spieler).R49BoyAni ? 1 : 0, -1); + det->start_detail(_G(spieler).R49BoyAni ? 1 : 0, 1, ANI_VOR); uhr->reset_timer(_G(timer_nr)[0], 0); } @@ -119,12 +119,13 @@ void Room49::calc_boy() { stop_person(P_CHEWY); stop_person(P_HOWARD); person_end_phase[P_CHEWY] = P_LEFT; - det->stop_detail(_G(spieler).R49BoyAni); - det->del_static_ani(_G(spieler).R49BoyAni); + det->stop_detail(_G(spieler).R49BoyAni ? 1 : 0); + det->del_static_ani(_G(spieler).R49BoyAni ? 1 : 0); det->set_static_ani(2, -1); SetUpScreenFunc = nullptr; start_aad_wait(262, -1); + SetUpScreenFunc = nullptr; auto_move(3, P_CHEWY); go_auto_xy(374, 79, P_HOWARD, ANI_WAIT); set_person_spr(P_LEFT, P_HOWARD); @@ -139,7 +140,7 @@ void Room49::calc_boy() { start_detail_wait(4, 1, ANI_GO); SetUpScreenFunc = setup_func; - det->set_static_ani(_G(spieler).R49BoyAni, -1); + det->set_static_ani(_G(spieler).R49BoyAni ? 1 : 0, -1); room->set_timer_status(255, TIMER_START); show_cur(); } @@ -182,7 +183,7 @@ void Room49::use_boy_cigar() { auto_scroll(164, 0); flic_cut(67, CFO_MODE); test_intro(17); - + room->set_timer_status(255, TIMER_STOP); uhr->reset_timer(_G(timer_nr)[0], 0); det->del_static_ani(_G(spieler).R49BoyAni ? 1 : 0); @@ -205,7 +206,7 @@ void Room49::use_boy_cigar() { void Room49::talk_boy() { if (!_G(spieler).R49BoyWeg) { auto_move(3, P_CHEWY); - talk_boy(266 + _G(spieler).R49WegFrei); + talk_boy(266 + (_G(spieler).R49WegFrei ? 1 : 0)); } } @@ -213,16 +214,16 @@ void Room49::talk_boy(int16 aad_nr) { if (!_G(spieler).R49BoyWeg) { room->set_timer_status(255, TIMER_STOP); uhr->reset_timer(_G(timer_nr)[0], 0); - det->stop_detail(_G(spieler).R49BoyAni); + det->stop_detail(_G(spieler).R49BoyAni ? 1 : 0); - det->set_static_ani(_G(spieler).R49BoyAni, -1); + det->set_static_ani(_G(spieler).R49BoyAni ? 1 : 0, -1); det->set_static_ani(2, -1); SetUpScreenFunc = nullptr; stop_person(P_HOWARD); start_aad_wait(aad_nr, -1); SetUpScreenFunc = setup_func; det->del_static_ani(2); - det->set_static_ani(_G(spieler).R49BoyAni, -1); + det->set_static_ani(_G(spieler).R49BoyAni ? 1 : 0, -1); room->set_timer_status(255, TIMER_START); } }