2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-05 23:22:15 +02:00
|
|
|
#include <gint/display.h>
|
|
|
|
#include <gint/keyboard.h>
|
2023-07-08 20:07:34 +02:00
|
|
|
#include <gint/timer.h>
|
|
|
|
#include <gint/cpu.h>
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-08 20:07:34 +02:00
|
|
|
#include "config.h"
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-08 20:07:34 +02:00
|
|
|
#if USB_FEATURE
|
2023-07-07 14:20:13 +02:00
|
|
|
#include <gint/usb-ff-bulk.h>
|
|
|
|
#include <gint/usb.h>
|
2023-07-06 22:02:37 +02:00
|
|
|
#endif //USB_FEATURE
|
|
|
|
|
2023-07-05 23:22:15 +02:00
|
|
|
|
2023-07-07 18:22:39 +02:00
|
|
|
#if !defined(FXCG50) && defined(COLOR2BIT)
|
|
|
|
#define GRAYMODEOK
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef GRAYMODEOK
|
2023-07-07 14:20:13 +02:00
|
|
|
#include <gint/gray.h>
|
2023-07-07 18:22:39 +02:00
|
|
|
#endif //GRAYMODEOK
|
2023-07-06 22:02:37 +02:00
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
2023-07-08 15:55:06 +02:00
|
|
|
#include "game.h"
|
2023-07-07 14:20:13 +02:00
|
|
|
#include "mapdata.h"
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-08 15:55:06 +02:00
|
|
|
/* Game data (defined in "game.h")*/
|
|
|
|
Game game = {
|
|
|
|
&map_level0,
|
2023-07-08 20:07:34 +02:00
|
|
|
{10, 5, 0, 0, 100},
|
|
|
|
false, false, false, 0
|
2023-07-08 15:55:06 +02:00
|
|
|
};
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-06 22:49:29 +02:00
|
|
|
/* screen capture management code */
|
|
|
|
|
2023-07-06 22:02:37 +02:00
|
|
|
#if USB_FEATURE==1
|
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
void USB_feature( void )
|
|
|
|
{
|
2023-07-08 20:07:34 +02:00
|
|
|
if (game.screenshot && usb_is_open()) {
|
2023-07-07 18:22:39 +02:00
|
|
|
|
2023-07-08 20:07:34 +02:00
|
|
|
#ifdef GRAYMODEOK // This is a trick, if GRAYMODEOK is defined then we make the code accessible
|
2023-07-07 18:22:39 +02:00
|
|
|
|
|
|
|
if (dgray_enabled())
|
|
|
|
usb_fxlink_screenshot_gray(false);
|
|
|
|
else
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2023-07-08 20:07:34 +02:00
|
|
|
usb_fxlink_screenshot(false); // else we just let the usual screeshot function
|
|
|
|
game.screenshot = false;
|
2023-07-07 14:20:13 +02:00
|
|
|
}
|
|
|
|
|
2023-07-07 18:22:39 +02:00
|
|
|
|
2023-07-08 20:07:34 +02:00
|
|
|
if (game.record && usb_is_open()) {
|
2023-07-07 18:22:39 +02:00
|
|
|
|
|
|
|
#ifdef GRAYMODEOK
|
|
|
|
|
|
|
|
if (dgray_enabled())
|
|
|
|
usb_fxlink_videocapture_gray(false);
|
|
|
|
else
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
usb_fxlink_videocapture(false);
|
|
|
|
}
|
|
|
|
}
|
2023-07-05 23:22:15 +02:00
|
|
|
|
2023-07-06 22:02:37 +02:00
|
|
|
#endif
|
2023-07-05 23:22:15 +02:00
|
|
|
|
2023-07-08 20:07:34 +02:00
|
|
|
/* Timer callback */
|
|
|
|
|
|
|
|
int update_time(void) {
|
|
|
|
game.frame_duration++;
|
|
|
|
return TIMER_CONTINUE;
|
|
|
|
}
|
|
|
|
|
2023-07-07 14:50:30 +02:00
|
|
|
int main(void) {
|
2023-07-08 20:07:34 +02:00
|
|
|
int timer;
|
|
|
|
timer = timer_configure(TIMER_TMU, 1000, GINT_CALL(update_time));
|
|
|
|
if(timer < 0){
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
timer_start(timer);
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
#if USB_FEATURE==1
|
|
|
|
usb_interface_t const *interfaces[] = {&usb_ff_bulk, NULL};
|
|
|
|
usb_open(interfaces, GINT_CALL_NULL);
|
|
|
|
#endif
|
|
|
|
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
/* start grayscale engine */
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-07 18:22:39 +02:00
|
|
|
#ifdef GRAYMODEOK
|
2023-07-08 20:07:34 +02:00
|
|
|
dgray(DGRAY_ON);
|
2023-07-07 14:20:13 +02:00
|
|
|
#endif
|
2023-07-06 22:49:29 +02:00
|
|
|
|
2023-07-05 23:22:15 +02:00
|
|
|
|
2023-07-08 20:07:34 +02:00
|
|
|
do{
|
2023-07-07 14:20:13 +02:00
|
|
|
/* clear screen */
|
|
|
|
dclear(C_WHITE);
|
2023-07-06 22:49:29 +02:00
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
/* render the map */
|
2023-07-08 15:55:06 +02:00
|
|
|
draw(&game);
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
/* start the logic of the game */
|
2023-07-08 15:55:06 +02:00
|
|
|
game_logic(&game);
|
2023-07-06 22:49:29 +02:00
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
/* Screen blit */
|
|
|
|
dupdate();
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
/* Screen capture feature if enabled */
|
|
|
|
#if USB_FEATURE==1
|
|
|
|
USB_feature();
|
|
|
|
#endif
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
/* Management of the inputs */
|
2023-07-08 20:07:34 +02:00
|
|
|
get_inputs(&game);
|
|
|
|
/* Run the game at max. 50fps */
|
|
|
|
while(game.frame_duration < 20) sleep();
|
|
|
|
/* Reset frame_duration for the next frame */
|
|
|
|
game.frame_duration = 0;
|
|
|
|
}while(!game.exittoOS); // want to exit ?
|
2023-07-05 23:22:15 +02:00
|
|
|
|
2023-07-06 21:16:07 +02:00
|
|
|
|
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
/* shutdown grayengine*/
|
2023-07-07 18:22:39 +02:00
|
|
|
#ifdef GRAYMODEOK
|
2023-07-08 20:07:34 +02:00
|
|
|
dgray(DGRAY_OFF);
|
2023-07-07 14:20:13 +02:00
|
|
|
#endif
|
2023-07-06 21:16:07 +02:00
|
|
|
|
2023-07-06 22:49:29 +02:00
|
|
|
|
2023-07-07 14:20:13 +02:00
|
|
|
/* close USB */
|
|
|
|
#if USB_FEATURE==1
|
|
|
|
usb_close();
|
|
|
|
#endif
|
2023-07-06 22:02:37 +02:00
|
|
|
|
2023-07-08 20:07:34 +02:00
|
|
|
timer_stop(timer);
|
2023-07-07 14:20:13 +02:00
|
|
|
return 1;
|
2023-07-05 23:22:15 +02:00
|
|
|
}
|
2023-07-08 16:57:04 +02:00
|
|
|
|