From bf4999913ef25c680b04deb42a52900b0321b927 Mon Sep 17 00:00:00 2001 From: 0xABADCAFE Date: Sun, 14 Jul 2024 14:08:14 +0100 Subject: [PATCH] Enable/Disable in game messaging. --- ab3d2_source/c/message.c | 12 ++++++++++-- ab3d2_source/c/message.h | 6 ++++++ ab3d2_source/c/screen.c | 10 ++++++---- ab3d2_source/controlloop.s | 5 ++++- ab3d2_source/menu/menunb.s | 4 ++-- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/ab3d2_source/c/message.c b/ab3d2_source/c/message.c index b72fbc2..5b43b59 100644 --- a/ab3d2_source/c/message.c +++ b/ab3d2_source/c/message.c @@ -9,6 +9,8 @@ #define MSG_LENGTH_MASK 0x3FFF #define MSG_TAG_SHIFT 14 +extern UBYTE Prefs_ShowMessages_b; + extern UBYTE Vid_FullScreen_b; extern UWORD Vid_LetterBoxMarginHeight_w; extern void* Lvl_DataPtr_l; @@ -151,6 +153,10 @@ void Msg_Init(void) */ void Msg_PushLine(REG(a0, const char* textPtr), REG(d0, UWORD lengthAndTag)) { + if (!Prefs_ShowMessages_b) { + return; + } + UWORD textLength = lengthAndTag & MSG_LENGTH_MASK; UWORD maxFit = Vid_FullScreen_b ? msg_Buffer.guranteedTextFitLimitFullScreen : @@ -189,8 +195,10 @@ void Msg_PushLine(REG(a0, const char* textPtr), REG(d0, UWORD lengthAndTag)) void Msg_PushLineDedupLast(REG(a0, const char* textPtr), REG(d0, UWORD lengthAndTag)) { if ( - textPtr != msg_Buffer.lastMessagePtr || - Sys_CheckTimeGE(&Sys_FrameTimeECV_q[0], &msg_Buffer.nextDuplicateTickECV) + Prefs_ShowMessages_b && ( + textPtr != msg_Buffer.lastMessagePtr || + Sys_CheckTimeGE(&Sys_FrameTimeECV_q[0], &msg_Buffer.nextDuplicateTickECV) + ) ) { msg_Buffer.nextDuplicateTickECV = Sys_FrameTimeECV_q[0]; Sys_AddTime(&msg_Buffer.nextDuplicateTickECV, msg_Buffer.deduplicationPeriod); diff --git a/ab3d2_source/c/message.h b/ab3d2_source/c/message.h index 55fa4a6..a407592 100644 --- a/ab3d2_source/c/message.h +++ b/ab3d2_source/c/message.h @@ -86,4 +86,10 @@ extern BOOL Msg_SmallScreenNeedsRedraw(void); extern void Msg_Tick(void); +static __inline BOOL Msg_Enabled(void) { + extern UBYTE Prefs_ShowMessages_b; + return Prefs_ShowMessages_b; +} + + #endif // MESSAGE_H diff --git a/ab3d2_source/c/screen.c b/ab3d2_source/c/screen.c index 71152f8..78020b1 100644 --- a/ab3d2_source/c/screen.c +++ b/ab3d2_source/c/screen.c @@ -463,7 +463,7 @@ static void CopyFrameBuffer(UBYTE *dst, const UBYTE *src, WORD dstBytesPerRow, W void Vid_Present() { - if (Vid_FullScreen_b) { + if (Vid_FullScreen_b && Msg_Enabled()) { /** Render any buffered up messages before we submit the screen */ Msg_RenderFullscreen(); } @@ -506,7 +506,7 @@ void Vid_Present() CopyFrameBuffer(dst, src, bmBytesPerRow, SMALL_WIDTH, height); - if (Msg_SmallScreenNeedsRedraw()) { + if (Msg_Enabled() && Msg_SmallScreenNeedsRedraw()) { Msg_RenderSmallScreenRTG(bmPixelData, bmBytesPerRow); } } @@ -522,7 +522,7 @@ void Vid_Present() #endif } else { CallAsm(&Vid_ConvertC2P); - if (!Vid_FullScreen_b && Msg_SmallScreenNeedsRedraw()) { + if (!Vid_FullScreen_b && Msg_Enabled() && Msg_SmallScreenNeedsRedraw()) { PLANEPTR planes[3] = { Draw_FastRamPlanePtr, &Vid_Screen1Ptr_l[PLANE_OFFSET(DRAW_TEXT_PLANE_NUM) + DRAW_TEXT_SMALL_PLANE_OFFSET ], @@ -539,5 +539,7 @@ void Vid_Present() } Draw_UpdateBorder_Planar(); } - Msg_Tick(); + if (Msg_Enabled()) { + Msg_Tick(); + } } diff --git a/ab3d2_source/controlloop.s b/ab3d2_source/controlloop.s index 1b54213..08faa99 100644 --- a/ab3d2_source/controlloop.s +++ b/ab3d2_source/controlloop.s @@ -291,6 +291,8 @@ Prefs_Unused_b: dc.b 0 Prefs_CustomOptionsBuffer_vb: Prefs_OriginalMouse_b: dc.b 0 Prefs_AlwaysRun_b: dc.b 0 + DECLC Prefs_ShowMessages_b + dc.b 255 align 4 _Prefs_PersistedEnd:: @@ -562,7 +564,7 @@ customOptions: ; copy current setting over to menu move.l #Prefs_CustomOptionsBuffer_vb,a0 move.l #optionLines+17,a1 - moveq #1,d1 + moveq #2,d1 .copyOpts: move.b (a0)+,d0 @@ -601,6 +603,7 @@ customOptions: .co3: cmp.w #2,d0 bne.s .co4 + not.b Prefs_ShowMessages_b bra .w8 .co4: cmp.w #3,d0 diff --git a/ab3d2_source/menu/menunb.s b/ab3d2_source/menu/menunb.s index bf73e02..a537925 100644 --- a/ab3d2_source/menu/menunb.s +++ b/ab3d2_source/menu/menunb.s @@ -1768,7 +1768,7 @@ mnu_MYCUSTOMOPTSTEXT: optionLines: ;12345678901234567890 dc.b ' ORIGINAL MOUSE ',1;OFF ',1 dc.b ' ALWAYS RUN ',1;OFF ',1 - dc.b ' OPTION 3 ',1;OFF ',1 + dc.b ' SHOW MESSAGES ',1;OFF ',1 dc.b ' OPTION 4 ',1;OFF ',1 dc.b ' OPTION 5 ',1 dc.b ' OPTION 6 ',1 @@ -1800,7 +1800,7 @@ KEY_LINES: dc.b ' FORCE S/S ',132+$67,' ',1 dc.b ' S/S LEFT ',132+$39,' ',1 dc.b ' S/S RIGHT ',132+$3a,' ',1 - dc.b ' DUCK ',132+$22,' ',1 + dc.b ' CROUCH ',132+$22,' ',1 dc.b ' MORE ',0 EVEN