git.y1.nz

SameBoy

Accurate GB/GBC emulator
download: https://git.y1.nz/archives/sameboy.tar.gz
README | Files | Log | Refs | LICENSE

Core/workboy.h

      1 #pragma once
      2 
      3 #include <stdint.h>
      4 #include <stdbool.h>
      5 #include <time.h>
      6 #include "defs.h"
      7 
      8 
      9 typedef struct {
     10     uint8_t byte_to_send;
     11     bool bit_to_send;
     12     uint8_t byte_being_received;
     13     uint8_t bits_received;
     14     uint8_t mode;
     15     uint8_t key;
     16     bool shift_down;
     17     bool user_shift_down;
     18     uint8_t buffer[0x15];
     19     uint8_t buffer_index; // In nibbles during read, in bytes during write
     20 } GB_workboy_t;
     21 
     22 typedef void (*GB_workboy_set_time_callback_t)(GB_gameboy_t *gb, time_t time);
     23 typedef time_t (*GB_workboy_get_time_callback_t)(GB_gameboy_t *gb);
     24 
     25 enum {
     26     GB_WORKBOY_NONE = 0xFF,
     27     GB_WORKBOY_REQUIRE_SHIFT = 0x40,
     28     GB_WORKBOY_FORBID_SHIFT = 0x80,
     29     
     30     GB_WORKBOY_CLOCK = 1,
     31     GB_WORKBOY_TEMPERATURE = 2,
     32     GB_WORKBOY_MONEY = 3,
     33     GB_WORKBOY_CALCULATOR = 4,
     34     GB_WORKBOY_DATE = 5,
     35     GB_WORKBOY_CONVERSION = 6,
     36     GB_WORKBOY_RECORD = 7,
     37     GB_WORKBOY_WORLD = 8,
     38     GB_WORKBOY_PHONE = 9,
     39     GB_WORKBOY_ESCAPE = 10,
     40     GB_WORKBOY_BACKSPACE = 11,
     41     GB_WORKBOY_UNKNOWN = 12,
     42     GB_WORKBOY_LEFT = 13,
     43     GB_WORKBOY_Q = 17,
     44     GB_WORKBOY_1 = 17 | GB_WORKBOY_REQUIRE_SHIFT,
     45     GB_WORKBOY_W = 18,
     46     GB_WORKBOY_2 = 18 | GB_WORKBOY_REQUIRE_SHIFT,
     47     GB_WORKBOY_E = 19,
     48     GB_WORKBOY_3 = 19 | GB_WORKBOY_REQUIRE_SHIFT,
     49     GB_WORKBOY_R = 20,
     50     GB_WORKBOY_T = 21,
     51     GB_WORKBOY_Y = 22 ,
     52     GB_WORKBOY_U = 23 ,
     53     GB_WORKBOY_I = 24,
     54     GB_WORKBOY_EXCLAMATION_MARK = 24 | GB_WORKBOY_REQUIRE_SHIFT,
     55     GB_WORKBOY_O = 25,
     56     GB_WORKBOY_TILDE = 25 | GB_WORKBOY_REQUIRE_SHIFT,
     57     GB_WORKBOY_P = 26,
     58     GB_WORKBOY_ASTERISK = 26 | GB_WORKBOY_REQUIRE_SHIFT,
     59     GB_WORKBOY_DOLLAR = 27 | GB_WORKBOY_FORBID_SHIFT,
     60     GB_WORKBOY_HASH = 27 | GB_WORKBOY_REQUIRE_SHIFT,
     61     GB_WORKBOY_A = 28,
     62     GB_WORKBOY_4 = 28 | GB_WORKBOY_REQUIRE_SHIFT,
     63     GB_WORKBOY_S = 29,
     64     GB_WORKBOY_5 = 29 | GB_WORKBOY_REQUIRE_SHIFT,
     65     GB_WORKBOY_D = 30,
     66     GB_WORKBOY_6 = 30 | GB_WORKBOY_REQUIRE_SHIFT,
     67     GB_WORKBOY_F = 31,
     68     GB_WORKBOY_PLUS = 31 | GB_WORKBOY_REQUIRE_SHIFT,
     69     GB_WORKBOY_G = 32,
     70     GB_WORKBOY_MINUS = 32 | GB_WORKBOY_REQUIRE_SHIFT,
     71     GB_WORKBOY_H = 33,
     72     GB_WORKBOY_J = 34,
     73     GB_WORKBOY_K = 35,
     74     GB_WORKBOY_LEFT_PARENTHESIS = 35 | GB_WORKBOY_REQUIRE_SHIFT,
     75     GB_WORKBOY_L = 36,
     76     GB_WORKBOY_RIGHT_PARENTHESIS = 36 | GB_WORKBOY_REQUIRE_SHIFT,
     77     GB_WORKBOY_SEMICOLON = 37 | GB_WORKBOY_FORBID_SHIFT,
     78     GB_WORKBOY_COLON = 37,
     79     GB_WORKBOY_ENTER = 38,
     80     GB_WORKBOY_SHIFT_DOWN = 39,
     81     GB_WORKBOY_Z = 40,
     82     GB_WORKBOY_7 = 40 | GB_WORKBOY_REQUIRE_SHIFT,
     83     GB_WORKBOY_X = 41,
     84     GB_WORKBOY_8 = 41 | GB_WORKBOY_REQUIRE_SHIFT,
     85     GB_WORKBOY_C = 42,
     86     GB_WORKBOY_9 = 42 | GB_WORKBOY_REQUIRE_SHIFT,
     87     GB_WORKBOY_V = 43,
     88     GB_WORKBOY_DECIMAL_POINT = 43 | GB_WORKBOY_REQUIRE_SHIFT,
     89     GB_WORKBOY_B = 44,
     90     GB_WORKBOY_PERCENT = 44 | GB_WORKBOY_REQUIRE_SHIFT,
     91     GB_WORKBOY_N = 45,
     92     GB_WORKBOY_EQUAL = 45 | GB_WORKBOY_REQUIRE_SHIFT,
     93     GB_WORKBOY_M = 46,
     94     GB_WORKBOY_COMMA = 47 | GB_WORKBOY_FORBID_SHIFT,
     95     GB_WORKBOY_LT = 47 | GB_WORKBOY_REQUIRE_SHIFT,
     96     GB_WORKBOY_DOT = 48 | GB_WORKBOY_FORBID_SHIFT,
     97     GB_WORKBOY_GT  = 48 | GB_WORKBOY_REQUIRE_SHIFT,
     98     GB_WORKBOY_SLASH = 49 | GB_WORKBOY_FORBID_SHIFT,
     99     GB_WORKBOY_QUESTION_MARK = 49 | GB_WORKBOY_REQUIRE_SHIFT,
    100     GB_WORKBOY_SHIFT_UP = 50,
    101     GB_WORKBOY_0 = 51 | GB_WORKBOY_REQUIRE_SHIFT,
    102     GB_WORKBOY_UMLAUT = 51,
    103     GB_WORKBOY_SPACE = 52,
    104     GB_WORKBOY_QUOTE = 53 | GB_WORKBOY_FORBID_SHIFT,
    105     GB_WORKBOY_AT = 53 | GB_WORKBOY_REQUIRE_SHIFT,
    106     GB_WORKBOY_UP = 54,
    107     GB_WORKBOY_DOWN = 55,
    108     GB_WORKBOY_RIGHT = 56,
    109 };
    110 
    111 
    112 void GB_connect_workboy(GB_gameboy_t *gb,
    113                         GB_workboy_set_time_callback_t set_time_callback,
    114                         GB_workboy_get_time_callback_t get_time_callback);
    115 bool GB_workboy_is_enabled(GB_gameboy_t *gb);
    116 void GB_workboy_set_key(GB_gameboy_t *gb, uint8_t key);

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.