OXYGENHUB
◆ rrdc-perf enhanced-x16-emulator / src / glue.h
3.1 KiB · Objective-C · last changed chore(): initial commit 25 days ago source blame history raw
9120e874 Andy McCall 1
// Commander X16 Emulator
2
// Copyright (c) 2019 Michael Steil
3
// All rights reserved. License: 2-clause BSD
4
5
#ifndef _GLUE_H_
6
#define _GLUE_H_
7
8
#include <stdint.h>
9
#include <stdbool.h>
10
#include <SDL.h>
11
12
#include "cpu/registers.h"
13
14
#ifdef __cplusplus
15
extern "C" {
16
#endif
17
18
//#define TRACE
19
//#define PERFSTAT
20
21
#define NUM_MAX_BANKS 256
22
#define NUM_MAX_RAM_BANKS 256
23
#define NUM_ROM_BANKS 32
24
#define NUM_CART_BANKS (256 - 32)
25
26
#define RAM_SIZE (num_banks * BANK_SIZE)    /* $0000-$9EFF, $9F00-$FFFF "wasted", then optionally $010000+ */
27
#define BRAM_SIZE (num_ram_banks * 8192)    /* banks at $A000-$BFFF */
28
#define ROM_SIZE (NUM_ROM_BANKS * 16384)    /* banks at $C000-$FFFF */
29
#define CART_SIZE (NUM_CART_BANKS * 16384)  /* expansion banks at $C000-$FFFF */
30
31
#define WINDOW_TITLE "Commander X16"
32
33
#ifdef __APPLE__
34
#define MOUSE_GRAB_MSG " (\xE2\x87\xA7\xE2\x8C\x98M to end mouse/keyboard capture)"
35
#else
36
#define MOUSE_GRAB_MSG " (Ctrl+M to end mouse/keyboard capture)"
37
#endif
38
39
typedef enum {
40
	ECHO_MODE_NONE,
41
	ECHO_MODE_RAW,
42
	ECHO_MODE_COOKED,
43
	ECHO_MODE_ISO,
44
} echo_mode_t;
45
46
// GIF recorder commands
47
typedef enum {
48
	RECORD_GIF_PAUSE,
49
	RECORD_GIF_SNAP,
50
	RECORD_GIF_RESUME
51
} gif_recorder_command_t;
52
53
// GIF recorder states
54
typedef enum {
55
	RECORD_GIF_DISABLED,
56
	RECORD_GIF_PAUSED,
57
	RECORD_GIF_SINGLE,
58
	RECORD_GIF_ACTIVE
59
} gif_recorder_state_t;
60
61
extern struct regs regs;
62
extern uint16_t opcode_addr;
63
extern uint8_t *RAM;
64
extern uint8_t *BRAM;
65
extern uint8_t ROM[];
66
extern uint8_t *CART;
67
68
extern uint16_t num_banks;
69
extern uint16_t num_ram_banks;
70
71
extern int  instruction_counter;  // instructions retired (main.c)
72
extern bool debugger_enabled;
73
extern bool imgui_debugger_enabled;
74
// True only when a local interactive debugger was requested (-debug/-bp/-wp).
75
// Distinct from debugger_enabled, which -debugport also sets.
76
extern bool debug_window_enabled;
77
extern bool log_video;
78
extern bool log_keyboard;
79
extern bool log_speed;
80
extern echo_mode_t echo_mode;
81
extern bool save_on_exit;
82
extern bool disable_emu_cmd_keys;
83
extern gif_recorder_state_t record_gif;
84
extern char *gif_path;
85
extern uint8_t *fsroot_path;
86
extern uint8_t *startin_path;
87
extern uint8_t keymap;
88
extern bool warp_mode;
89
extern bool grab_mouse;
90
extern bool testbench;
91
extern bool has_via2;
92
extern uint32_t host_sample_rate;
93
extern bool enable_midline;
94
95
extern bool has_midi_card;
96
extern uint16_t midi_card_addr;
97
98
extern void machine_dump(const char* reason);
99
extern void machine_reset();
100
extern void machine_nmi();
101
extern void machine_paste(char *text, bool handle_free);
102
extern void machine_set_warp(bool on);
103
void machine_toggle_warp();
104
extern void init_audio();
105
extern void main_shutdown();
106
107
extern void emulator_step_during_move(void);
108
109
extern bool video_is_tilemap_address(int addr);
110
extern bool video_is_tiledata_address(int addr);
111
extern bool video_is_special_address(int addr);
112
113
extern int ieee_unit;
114
extern bool using_hostfs;
115
extern uint8_t activity_led;
116
extern bool nvram_dirty;
117
extern uint8_t nvram[0x40];
118
119
extern uint8_t MHZ;
120
121
extern bool mouse_grabbed;
122
extern bool no_keyboard_capture;
123
extern bool kernal_mouse_enabled;
124
extern char window_title[];
125
extern bool pwr_long_press;
126
extern bool is_gen2;
127
#ifdef __cplusplus
128
}
129
#endif
130
131
#endif