Browse code

Use the File device load_rom function

Devine Lu Linvega authored on 01/01/2023 22:18:27
Showing 1 changed files
... ...
@@ -82,6 +82,38 @@ console_deo(Uint8 *d, Uint8 port)
82 82
 	}
83 83
 }
84 84
 
85
+static Uint8
86
+emu_dei(Uxn *u, Uint8 addr)
87
+{
88
+	Uint8 p = addr & 0x0f, d = addr & 0xf0;
89
+	switch(d) {
90
+	case 0x20: return screen_dei(&u->dev[d], p);
91
+	case 0xa0: return file_dei(0, &u->dev[d], p);
92
+	case 0xb0: return file_dei(1, &u->dev[d], p);
93
+	case 0xc0: return datetime_dei(&u->dev[d], p);
94
+	}
95
+	return u->dev[addr];
96
+	return 0;
97
+}
98
+
99
+static void
100
+emu_deo(Uxn *u, Uint8 addr, Uint8 v)
101
+{
102
+	Uint8 p = addr & 0x0f, d = addr & 0xf0;
103
+	u->dev[addr] = v;
104
+	switch(d) {
105
+	case 0x00:
106
+		system_deo(u, &u->dev[d], p);
107
+		if(p > 0x7 && p < 0xe)
108
+			screen_palette(&uxn_screen, &u->dev[0x8]);
109
+		break;
110
+	case 0x10: console_deo(&u->dev[d], p); break;
111
+	case 0x20: screen_deo(u->ram, &u->dev[d], p); break;
112
+	case 0xa0: file_deo(0, u->ram, &u->dev[d], p); break;
113
+	case 0xb0: file_deo(1, u->ram, &u->dev[d], p); break;
114
+	}
115
+}
116
+
85 117
 #pragma mark - Generics
86 118
 
87 119
 static void
... ...
@@ -127,7 +159,7 @@ set_window_size(SDL_Window *window, int w, int h)
127 159
 	SDL_SetWindowSize(window, w, h);
128 160
 }
129 161
 
130
-int
162
+static int
131 163
 set_size(void)
132 164
 {
133 165
 	gRect.x = PAD;
... ...
@@ -195,45 +227,6 @@ init(void)
195 227
 
196 228
 #pragma mark - Devices
197 229
 
198
-static Uint8
199
-emu_dei(Uxn *u, Uint8 addr)
200
-{
201
-	Uint8 p = addr & 0x0f, d = addr & 0xf0;
202
-	switch(d) {
203
-	case 0x20: return screen_dei(&u->dev[d], p);
204
-	case 0xa0: return file_dei(0, &u->dev[d], p);
205
-	case 0xb0: return file_dei(1, &u->dev[d], p);
206
-	case 0xc0: return datetime_dei(&u->dev[d], p);
207
-	}
208
-	return u->dev[addr];
209
-	return 0;
210
-}
211
-
212
-static void
213
-emu_deo(Uxn *u, Uint8 addr, Uint8 v)
214
-{
215
-	Uint8 p = addr & 0x0f, d = addr & 0xf0;
216
-	u->dev[addr] = v;
217
-	switch(d) {
218
-	case 0x00:
219
-		system_deo(u, &u->dev[d], p);
220
-		if(p > 0x7 && p < 0xe)
221
-			screen_palette(&uxn_screen, &u->dev[0x8]);
222
-		break;
223
-	case 0x10: console_deo(&u->dev[d], p); break;
224
-	case 0x20: screen_deo(u->ram, &u->dev[d], p); break;
225
-	case 0xa0: file_deo(0, u->ram, &u->dev[d], p); break;
226
-	case 0xb0: file_deo(1, u->ram, &u->dev[d], p); break;
227
-	}
228
-}
229
-
230
-void
231
-system_deo_special(Device *d, Uint8 port)
232
-{
233
-	if(port > 0x7 && port < 0xe)
234
-		screen_palette(&uxn_screen, &d->dat[0x8]);
235
-}
236
-
237 230
 static Uint8
238 231
 audio_dei(Device *d, Uint8 port)
239 232
 {
... ...
@@ -261,32 +254,18 @@ audio_deo(Device *d, Uint8 port)
261 254
 
262 255
 /* Boot */
263 256
 
264
-static int
265
-load(Uxn *u, char *rom)
266
-{
267
-	SDL_RWops *f;
268
-	int r;
269
-	if(!(f = SDL_RWFromFile(rom, "rb"))) return 0;
270
-	r = f->read(f, u->ram + PAGE_PROGRAM, 1, 0x10000 - PAGE_PROGRAM);
271
-	f->close(f);
272
-	if(r < 1) return 0;
273
-	fprintf(stderr, "Loaded %s\n", rom);
274
-	fflush(stderr);
275
-	SDL_SetWindowTitle(gWindow, rom);
276
-	return 1;
277
-}
278
-
279 257
 static int
280 258
 start(Uxn *u, char *rom)
281 259
 {
282 260
 	free(u->ram);
283 261
 	if(!uxn_boot(u, (Uint8 *)calloc(0x10300, sizeof(Uint8)), emu_dei, emu_deo))
284 262
 		return error("Boot", "Failed to start uxn.");
285
-	if(!load(u, rom))
263
+	if(!load_rom(u, rom))
286 264
 		return error("Boot", "Failed to load rom.");
287 265
 	exec_deadline = SDL_GetPerformanceCounter() + deadline_interval;
288 266
 	if(!uxn_eval(u, PAGE_PROGRAM))
289
-		return error("Boot", "Failed to start rom.");
267
+		return error("Boot", "Failed to eval rom.");
268
+	SDL_SetWindowTitle(gWindow, rom);
290 269
 	return 1;
291 270
 }
292 271