gameboy wormboy manboy gameworm gameman wormgame mangame manworm

Dependencies:   mbed SDFileSystem2

platform.cpp

Committer:
dicarloj
Date:
2019-01-13
Revision:
17:c9afe1a7b423

File content as of revision 17:c9afe1a7b423:

// Linux specific code (excluding graphics, those are in graphics_display.cpp)
#include "platform.h"

#include <mbed.h>

// global keyboard
KeyState keyboard;

void* badalloc_check(u32 size, const char* alloc_name) {
    void* ptr = malloc(size);
    if(ptr) {
        printf("[badalloc] success %s\n", alloc_name);
    } else {
        printf("~!~!~!1!!!!!-----> [badalloc] fail %s\n", alloc_name);
    }
    return ptr;
}

// open a file
FileLoadData loadFile(const char* name) {
  FILE* fp = fopen(name, "rb");
  FileLoadData loadData;

  if(!fp) {
    printf("loadFile(%s) failed!\r\n", name);
    loadData.data = nullptr;
    loadData.size = 0;
    return loadData;
  }
  printf("loadfile fp is good\r\n");
  
  fseek(fp, 0, SEEK_END);
  u32 fileSize = (u32)ftell(fp);
  printf("loadFile 0x%x bytes\r\n", fileSize);
  fseek(fp, 0, SEEK_SET);
  u8* fileData = (u8*)badalloc_check(fileSize, name);
  if(fileData) {
    printf("allocation for loadFile succes\r\n");
  } else {
    printf("allocation for loadfile fail\r\n");
  }
  fread(fileData, 1, fileSize, fp);
  fclose(fp);

  printf("loadfile(%s) has loaded %d bytes (%.3f MB)\r\n", name, fileSize, (float)fileSize / (1 << 20));

  loadData.size = fileSize;
  loadData.data = fileData;
  return loadData;
}

void saveFile(const char* name, FileLoadData info) {
//  FILE* fp = fopen(name, "wb");
//  printf("save 0x%x bytes 0x%llx\n", info.size, info.data);
//  fwrite(info.data, info.size, 1, fp);
//  fclose(fp);
}

// update keyboard.  Also checks to see if it's time to quit.
void updateKeyboard(KeyState* keys) {
//  SDL_Event e;
//  SDL_PollEvent(&e);
//  if(e.type == SDL_QUIT) {
//    exit(0);
//  }
//  const u8* keyStats = SDL_GetKeyboardState(nullptr);
//  keys->a = keyStats[SDL_SCANCODE_A];
//  keys->b = keyStats[SDL_SCANCODE_B];
//  keys->u = keyStats[SDL_SCANCODE_UP];
//  keys->d = keyStats[SDL_SCANCODE_DOWN];
//  keys->l = keyStats[SDL_SCANCODE_LEFT];
//  keys->r = keyStats[SDL_SCANCODE_RIGHT];
//  keys->save = keyStats[SDL_SCANCODE_S];
//  keys->load = keyStats[SDL_SCANCODE_D];
//  keys->start = keyStats[SDL_SCANCODE_P];
//  keys->select = keyStats[SDL_SCANCODE_L];
//  keys->turbo = keyStats[SDL_SCANCODE_SPACE];
}