mirror of https://github.com/nmlgc/ReC98.git
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
![]() |
/// TRAM text overlaid on top of the playfield
|
||
|
/// -------------------------------------------
|
||
|
|
||
|
extern nearfunc_t_near overlay_text; // Rendered first
|
||
|
extern nearfunc_t_near overlay_popup; // Rendered second
|
||
|
|
||
|
// Popup messages for common gameplay events, shown at the top of the playfield
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
enum popup_id_t {
|
||
|
POPUP_ID_HISCORE_ENTRY = 0,
|
||
|
POPUP_ID_EXTEND = 1,
|
||
|
POPUP_ID_BONUS = 2,
|
||
|
POPUP_ID_FULL_POWERUP = 3,
|
||
|
#if (GAME == 5)
|
||
|
POPUP_ID_DREAMBONUS_MAX = 4,
|
||
|
#endif
|
||
|
|
||
|
_popup_id_t_FORCE_UINT8 = 0xFF
|
||
|
};
|
||
|
|
||
|
extern popup_id_t overlay_popup_id_new;
|
||
|
extern unsigned long overlay_popup_bonus;
|
||
|
|
||
|
#define overlay_popup_show(popup_new) \
|
||
|
/* Yup, the only known way of assigning a `near` function to a `near` */ \
|
||
|
/* function pointer from a group outside the one where the `near` */ \
|
||
|
/* function was declared in involves lying to the compiler about the */ \
|
||
|
/* true distance of the function. That's also why we can't correctly */ \
|
||
|
/* declare this function at global scope. */ \
|
||
|
void pascal far overlay_popup_update_and_render(void); \
|
||
|
\
|
||
|
overlay_popup_id_new = popup_new; \
|
||
|
overlay_popup = reinterpret_cast<nearfunc_t_near>( \
|
||
|
overlay_popup_update_and_render \
|
||
|
);
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
// Stage and BGM titles
|
||
|
// --------------------
|
||
|
|
||
|
extern unsigned char bgm_title_id; // only used in TH04
|
||
|
|
||
|
void near overlay_titles_invalidate(void);
|
||
|
void pascal near overlay_titles_update_and_render(void);
|
||
|
void pascal near overlay_boss_bgm_update_and_render(void);
|
||
|
// --------------------
|