ReC98/th04/hardware/input_w.cpp

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;
}
}
}
}