-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathinterface.h
142 lines (123 loc) · 3.07 KB
/
interface.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
YAPE - Yet Another Plus/4 Emulator
The program emulates the Commodore 264 family of 8 bit microcomputers
This program is free software, you are welcome to distribute it,
and/or modify it under certain conditions. For more information,
read 'Copying'.
(c) 2000, 2001, 2005 Attila Grósz
*/
#ifndef _INTERFACE_H
#define _INTERFACE_H
#include "archdep.h"
enum UI_MenuTypes {
MENU_LIST,
MENU_CALLBACK
};
enum UI_MenuClass {
UI_MENUITEM_MENULINK = 0,
UI_MENUITEM_SEPARATOR,
UI_MENUITEM_CALLBACKS,
UI_PRG_ITEM,
UI_TAP_ITEM,
UI_D64_ITEM,
UI_CRT_ITEM,
UI_ZIP_ITEM,
UI_DIR_ITEM,
UI_DRIVE_ITEM,
UI_T64_ITEM,
UI_FRE_ITEM,
UI_FILE_LOAD_PRG,
UI_FILE_LOAD_FRE,
UI_FILE_SAVE_FRE,
UI_CRT_ATTACH,
UI_CRT_DETACH,
UI_TAPE_ATTACH_TAP,
UI_TAPE_CREATE_TAP,
UI_TAPE_DETACH_TAP,
UI_TAPE_PLAY,
UI_TAPE_RECORD,
UI_TAPE_STOP,
UI_TAPE_REWIND,
UI_DRIVE_ATTACH_IMAGE,
UI_DRIVE_DETACH_IMAGE,
UI_DRIVE_SET_DIR,
//UI_TAPE_CONTROLS,
UI_EMULATOR_OPTIONS,
UI_SNAPSHOT_LOAD,
UI_SNAPSHOT_QUICKSAVE,
UI_EMULATOR_MONITOR,
UI_EMULATOR_RESUME,
UI_EMULATOR_RESET,
UI_EMULATOR_EXIT,
UI_FILE_LOAD_C0LO,
UI_FILE_LOAD_C0HI,
UI_FILE_LOAD_C1LO,
UI_FILE_LOAD_C1HI,
UI_FILE_LOAD_C2LO,
UI_FILE_LOAD_C2HI,
UI_FILE_LOAD_C3LO,
UI_FILE_LOAD_C3HI
};
struct menu_t;
struct element_t {
char name[MAX_PATH];
menu_t *child;
UI_MenuClass menufunction;
UI_MenuTypes type;
};
struct menu_t {
char title[MAX_PATH];
char subtitle[MAX_PATH];
struct element_t element[512];
menu_t *parent;
int nr_of_elements;
int curr_sel;
int uppermost;
int curr_line;
};
class MEM;
class UI {
private:
unsigned char *display; // pointer to the emulator screen
unsigned char *charset; // pointer to the character ROM
char bgcol; // background color
char fgcol; // foreground color
void screen_update(void);
void clear(char color, char shade); // clears the screen with given C= 264 color and shade
void texttoscreen(int x,int y, char *scrtxt, size_t len);
void chrtoscreen(int x,int y, char scrchr);
void set_color(unsigned char foreground, unsigned char background);
void hide_sel_bar(menu_t *menu);
void show_sel_bar(menu_t *menu);
void show_title(menu_t * menu);
void show_menu(menu_t *menu);
void show_file_list(menu_t * menu, UI_MenuClass type);
void show_settings_list(menu_t * menu, rvar_t *rvItems);
void populateBankSelectionMenu();
bool handle_menu_command(struct element_t *element);
menu_t *curr_menu;
TED *ted8360;
void menuMove(int direction);
void menuMoveLeft();
int menuEnter(bool forceAutoRun);
void openD64Item(const char *name);
bool autoStartNext;
char storedPath[MAX_PATH];
public:
UI(class TED *ted);
~UI();
char pet2asc(char c);
static unsigned char asc2pet(char c);
static unsigned char* stringToPETSCII(unsigned char* asciiStr, unsigned int count, bool useCaps = false);
char *petstr2ascstr(char *string);
int enterMenu();
void drawMenu();
int wait_events();
void setNewMachine(TED *newTed) {
ted8360 = newTed;
display = ted8360->screen;
};
};
extern void interfaceLoop(void *arg);
extern void snapshotSave();
#endif // _INTERFACE_H