From 47e7f5542e79bca157131dae1c2291c0d25b446a Mon Sep 17 00:00:00 2001 From: kichikuou Date: Fri, 10 Feb 2023 14:40:11 +0900 Subject: [PATCH] Remove sl_retFar2 In System39.exe `%0` drops stack frames for label calls (Rance4 v2 relies on this behavior), so it's the same as `UD 1`. --- src/cmdu.c | 2 +- src/scenario.c | 26 -------------------------- src/scenario.h | 1 - 3 files changed, 1 insertion(+), 28 deletions(-) diff --git a/src/cmdu.c b/src/cmdu.c index c02f3db..60f99c3 100644 --- a/src/cmdu.c +++ b/src/cmdu.c @@ -55,7 +55,7 @@ void commandUD() { case 0: sl_reinit(); break; case 1: - sl_retFar2(); break; + sl_retFar(); break; default: WARNING("UnKnown UD command %d", mode); } diff --git a/src/scenario.c b/src/scenario.c index 609cea5..2201146 100644 --- a/src/scenario.c +++ b/src/scenario.c @@ -269,32 +269,6 @@ void sl_retFar(void) { int *tmp = sl_pop(); int page, index; - while (*tmp != STACK_FARJMP) { - if (*tmp == STACK_NEARJMP) { - WARNING("Stack buffer is illegal"); - } else if (*tmp == STACK_TXXSTATE) { - popState(tmp); - } else if (*tmp == STACK_VARIABLE) { - popVars(tmp); - } else { - SYSERROR("Stack buffer is illegal"); - } - free(tmp); - tmp = sl_pop(); - } - page = *(tmp + 2); - index = *(tmp + 3); - free(tmp); - sl_jmpFar2(page, index); - - pageCallCnt--; -} - -/* UD 1 */ -void sl_retFar2(void) { - int *tmp = sl_pop(); - int page, index; - while (*tmp != STACK_FARJMP) { if (*tmp == STACK_NEARJMP) { labelCallCnt--; diff --git a/src/scenario.h b/src/scenario.h index f537853..d22a7fd 100644 --- a/src/scenario.h +++ b/src/scenario.h @@ -68,7 +68,6 @@ void sl_retNear(void); void sl_callFar(int page); void sl_callFar2(int page, int address); void sl_retFar(void); -void sl_retFar2(void); void sl_clearStack(bool restore); void sl_dropLabelCalls(int cnt); void sl_dropPageCalls(int cnt);