view trace.c @ 42:59b070dd0553

add demo file.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Wed, 12 Jan 2011 00:18:16 +0900
parents cbe5bb9068c3
children 56ef94618a0e
line wrap: on
line source

#include <stdio.h>
#include "trace.h"
#include "object.h"
#include "sgoex.h"

#define PAD_BUFSIZ 32
#define RESET_BUTTON 768

FILE *pad_fp;
int runmode;
static char pad_buf[PAD_BUFSIZ];

void
pad_trace(unsigned int pad)
{
    fprintf(pad_fp, "%d\n", pad);
}


void
pad_file_open(char *f)
{
    pad_fp = fopen(f, "r+");
    if (!pad_fp) {
// 本当はerrnoをチェックするのがいいんだろうなぁ
	pad_fp = fopen(f, "w+");
	if (!pad_fp) {
	  printf("can't open output file.\n");
	  runmode = 0;
	}
	//        goto dbg_abort(4);
    }
}


void
capture_pad()
{
  fprintf(pad_fp, "%hd ", pad[0].up);
  fprintf(pad_fp, "%hd ", pad[0].down);
  fprintf(pad_fp, "%hd ", pad[0].right);
  fprintf(pad_fp, "%hd ", pad[0].left);
  fprintf(pad_fp, "%hd ", pad[0].k0);
  fprintf(pad_fp, "%hd ", pad[0].k1);
  fprintf(pad_fp, "%hd ", pad[0].k3);
  fprintf(pad_fp, "%hd ", pad[0].k4);
  fprintf(pad_fp, "%hd ", pad[0].r1);
  fprintf(pad_fp, "%hd ", pad[0].r2);
  fprintf(pad_fp, "%hd ", pad[0].l1);
  fprintf(pad_fp, "%hd ", pad[0].st);
  fprintf(pad_fp, "%hd ", pad[0].se);
  
  fprintf(pad_fp, "\n");
}


int
pad_file_read()
{
  if (fgets(pad_buf, PAD_BUFSIZ, pad_fp)) {
    sscanf(pad_buf, "%hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd ",
	   &pad[0].up, &pad[0].down, &pad[0].right, &pad[0].left,
	   &pad[0].k0, &pad[0].k1, &pad[0].k3, &pad[0].k4,
	   &pad[0].r1, &pad[0].r2, &pad[0].l1, &pad[0].st, &pad[0].se);
    return 1;
  }
  return 0;
}


void
pad_file_close()
{
  if ((runmode ==1)||(runmode == 2)) {
    fclose(pad_fp);
  }
}

#ifdef USE_MYRAND
static FILE *myrand_fp;
extern int runmode;

int myrand_open_file(char *filename)
{
    myrand_fp = fopen(filename, "r+");
    if (!myrand_fp) {
	myrand_fp = fopen(filename, "w+");
	if (myrand_fp) {
	    return 0;
	} else {
	    return 1;
	}
    }
    return 0;
}

static char buf[16];

int myrand()
{
    int r = 0;
    if (runmode) {
	if (runmode == 1) {
	    r = rand();
	    fprintf(myrand_fp, "%d\n", r);
	} else if (runmode == 2) {
//            dbg_printf("check0\n");
	    if (fgets(buf, 16, myrand_fp)) {
		sscanf(buf, "%d", &r);
	    } else {
		fseek(myrand_fp, 0, SEEK_SET);
	    }
	}
    } else {
	r = rand();
    }
    return r;
}
#endif				// USE_MYRAND