mirror of https://github.com/nmlgc/ReC98.git
47 lines
970 B
C++
47 lines
970 B
C++
#pragma option -zCSHARED
|
|
|
|
extern "C" {
|
|
#include "platform.h"
|
|
#include "th02/hardware/frmdelay.h"
|
|
#include "th04/hardware/input.h"
|
|
|
|
// TODO: Remove these macros once those functions are part of the actual
|
|
// SHARED segment (not SHARED_), after graph_putsa_fx() has been turned into
|
|
// its own translation unit.
|
|
#define input_reset_sense() _asm { \
|
|
nop; push cs; call near ptr input_reset_sense; \
|
|
}
|
|
#define input_sense() _asm { nop; push cs; call near ptr input_sense; }
|
|
|
|
void pascal input_wait_for_change(int frames_to_wait)
|
|
{
|
|
int frames_waited = 0;
|
|
|
|
// Wait for release
|
|
do {
|
|
input_reset_sense();
|
|
frame_delay(1);
|
|
input_sense();
|
|
} while(key_det != INPUT_NONE);
|
|
|
|
if(!frames_to_wait) {
|
|
frames_to_wait = 9999;
|
|
}
|
|
|
|
// Wait for press
|
|
while(frames_waited < frames_to_wait) {
|
|
input_reset_sense();
|
|
frame_delay(1);
|
|
input_sense();
|
|
if(key_det != INPUT_NONE) {
|
|
break;
|
|
}
|
|
frames_waited++;
|
|
if(frames_to_wait == 9999) {
|
|
frames_waited = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|