aboutsummaryrefslogtreecommitdiffstats
path: root/src/debug.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-08-30 18:14:25 +0200
committerBad Diode <bd@badd10de.dev>2023-08-30 18:14:25 +0200
commita1d4e282bc2398e43a085688dd483160c7144f3e (patch)
treeb4d8a58f385be9bf68ae3a7e057226e3405f522e /src/debug.c
parente8fdb17d27a33988fb79c792d69ff15c16a0e59c (diff)
downloaduxngba-a1d4e282bc2398e43a085688dd483160c7144f3e.tar.gz
uxngba-a1d4e282bc2398e43a085688dd483160c7144f3e.zip
Fix dei behaviour by properly mapping u16 when needed
Diffstat (limited to 'src/debug.c')
-rw-r--r--src/debug.c193
1 files changed, 193 insertions, 0 deletions
diff --git a/src/debug.c b/src/debug.c
new file mode 100644
index 0000000..fd695cb
--- /dev/null
+++ b/src/debug.c
@@ -0,0 +1,193 @@
1typedef enum DebugFlags {
2 SHOW_ROM = (1 << 0),
3 SHOW_WST = (1 << 1),
4 SHOW_RST = (1 << 2),
5 SHOW_ZP = (1 << 3),
6 SHOW_DEV1 = (1 << 4),
7 SHOW_DEV2 = (1 << 6),
8} DebugFlags;
9
10void
11print_debug_info(u8 flags) {
12 if (flags & SHOW_ROM) {
13 txt_printf("\nROM");
14 for (size_t i = 0; i < 128; i++) {
15 if (i % 8 == 0) {
16 txt_printf("\n");
17 }
18 txt_printf("%02x ", uxn_ram[i + PAGE_PROGRAM]);
19 }
20 txt_printf("\n");
21 }
22 if (flags & SHOW_DEV1) {
23 txt_printf("\nSYSTEM");
24 for (size_t i = 0; i < (0 + 16); i++) {
25 if (i % 8 == 0) {
26 txt_printf("\n");
27 }
28 txt_printf(" ");
29 txt_printf("%02x", device_data[i]);
30 }
31 txt_printf("\nCONSOLE");
32 for (size_t i = 0x10; i < (0x10 + 16); i++) {
33 if (i % 8 == 0) {
34 txt_printf("\n");
35 }
36 txt_printf(" ");
37 txt_printf("%02x", device_data[i]);
38 }
39 txt_printf("\nSCREEN");
40 for (size_t i = 0x20; i < (0x20 + 16); i++) {
41 if (i % 8 == 0) {
42 txt_printf("\n");
43 }
44 txt_printf(" ");
45 txt_printf("%02x", device_data[i]);
46 }
47 txt_printf("\nCONTROLLER");
48 for (size_t i = 0x80; i < (0x80 + 16); i++) {
49 if (i % 8 == 0) {
50 txt_printf("\n");
51 }
52 txt_printf(" ");
53 txt_printf("%02x", device_data[i]);
54 }
55 txt_printf("\nMOUSE");
56 for (size_t i = 0x90; i < (0x90 + 16); i++) {
57 if (i % 8 == 0) {
58 txt_printf("\n");
59 }
60 txt_printf(" ");
61 txt_printf("%02x", device_data[i]);
62 }
63 txt_printf("\nDATETIME");
64 for (size_t i = 0xc0; i < (0xc0 + 16); i++) {
65 if (i % 8 == 0) {
66 txt_printf("\n");
67 }
68 txt_printf(" ");
69 txt_printf("%02x", device_data[i]);
70 }
71 }
72 if (flags & SHOW_DEV2) {
73 txt_printf("\nAUDIO 1");
74 for (size_t i = 0x30; i < (0x30 + 16); i++) {
75 if (i % 8 == 0) {
76 txt_printf("\n");
77 }
78 txt_printf(" ");
79 txt_printf("%02x", device_data[i]);
80 }
81 txt_printf("\nAUDIO 2");
82 for (size_t i = 0x40; i < (0x40 + 16); i++) {
83 if (i % 8 == 0) {
84 txt_printf("\n");
85 }
86 txt_printf(" ");
87 txt_printf("%02x", device_data[i]);
88 }
89 txt_printf("\nAUDIO 3");
90 for (size_t i = 0x50; i < (0x50 + 16); i++) {
91 if (i % 8 == 0) {
92 txt_printf("\n");
93 }
94 txt_printf(" ");
95 txt_printf("%02x", device_data[i]);
96 }
97 txt_printf("\nAUDIO 4");
98 for (size_t i = 0x60; i < (0x60 + 16); i++) {
99 if (i % 8 == 0) {
100 txt_printf("\n");
101 }
102 txt_printf(" ");
103 txt_printf("%02x", device_data[i]);
104 }
105 txt_printf("\nFILE 1");
106 for (size_t i = 0xa0; i < (0xa0 + 16); i++) {
107 if (i % 8 == 0) {
108 txt_printf("\n");
109 }
110 txt_printf(" ");
111 txt_printf("%02x", device_data[i]);
112 }
113 txt_printf("\nFILE 2");
114 for (size_t i = 0xb0; i < (0xb0 + 16); i++) {
115 if (i % 8 == 0) {
116 txt_printf("\n");
117 }
118 txt_printf(" ");
119 txt_printf("%02x", device_data[i]);
120 }
121 }
122 if (flags & SHOW_WST) {
123 txt_printf("\nWST (");
124 txt_printf("SIZE: %d)", wst_ptr - (uintptr_t)wst);
125 for (size_t i = 0; i < 128; i++) {
126 if (i % 8 == 0) {
127 txt_printf("\n");
128 }
129 if (i >= (wst_ptr - (uintptr_t)wst)) {
130 txt_printf("%02x ", 0);
131 } else {
132 txt_printf("%02x ", wst[i]);
133 }
134 }
135 }
136 if (flags & SHOW_RST) {
137 txt_printf("RST (");
138 txt_printf("SIZE: %d)", rst_ptr - (uintptr_t)rst);
139 for (size_t i = 0; i < 128; i++) {
140 if (i % 8 == 0) {
141 txt_printf("\n");
142 }
143 if (i >= (rst_ptr - (uintptr_t)rst)) {
144 txt_printf("%02x ", 0);
145 } else {
146 txt_printf("%02x ", rst[i]);
147 }
148 }
149 }
150 if (flags & SHOW_ZP) {
151 txt_printf("RAM (ZP)\n");
152 for (size_t i = 0; i < 128; i++) {
153 if (i % 8 == 0) {
154 txt_printf("\n");
155 }
156 txt_printf("%02x ", uxn_ram[i]);
157 }
158 }
159 txt_printf("\nMOUSE");
160 for (size_t i = 0x90; i < (0x90 + 16); i++) {
161 if (i % 8 == 0) {
162 txt_printf("\n");
163 }
164 txt_printf(" ");
165 txt_printf("%02x", device_data[i]);
166 }
167 txt_printf("\nRAM (ZP)");
168 for (size_t i = 0; i < 32; i++) {
169 if (i % 8 == 0) {
170 txt_printf("\n");
171 }
172 if (i % 2 == 0) {
173 txt_printf(" ");
174 }
175 txt_printf("%02x", uxn_ram[i]);
176 }
177 txt_printf("\nWST (");
178 txt_printf("SIZE: %d)", wst_ptr - (uintptr_t)wst);
179 for (size_t i = 0; i < 64; i++) {
180 if (i % 8 == 0) {
181 txt_printf("\n");
182 }
183 if (i % 2 == 0) {
184 txt_printf(" ");
185 }
186 if (i >= (wst_ptr - (uintptr_t)wst)) {
187 txt_printf("%02x", 0);
188 } else {
189 txt_printf("%02x", wst[i]);
190 }
191 }
192}
193