Browse code

(uxncli) Load ROM using the File device functions.

Andrew Alderwick authored on 28/03/2022 17:51:29
Showing 3 changed files
... ...
@@ -215,3 +215,15 @@ file_dei(Device *d, Uint8 port)
215 215
 	}
216 216
 	return d->dat[port];
217 217
 }
218
+
219
+/* Boot */
220
+
221
+int
222
+load_rom(Uxn *u, char *filename)
223
+{
224
+	int ret;
225
+	file_init(uxn_file, filename, strlen(filename) + 1);
226
+	ret = file_read(uxn_file, &u->ram[PAGE_PROGRAM], 0x10000 - PAGE_PROGRAM);
227
+	reset(uxn_file);
228
+	return ret;
229
+}
... ...
@@ -15,3 +15,4 @@ WITH REGARD TO THIS SOFTWARE.
15 15
 
16 16
 void file_deo(Device *d, Uint8 port);
17 17
 Uint8 file_dei(Device *d, Uint8 port);
18
+int load_rom(Uxn *u, char *filename);
... ...
@@ -74,19 +74,6 @@ run(Uxn *u)
74 74
 	}
75 75
 }
76 76
 
77
-static int
78
-load(Uxn *u, char *filepath)
79
-{
80
-	FILE *f;
81
-	int r;
82
-	if(!(f = fopen(filepath, "rb"))) return 0;
83
-	r = fread(u->ram + PAGE_PROGRAM, 1, 0x10000 - PAGE_PROGRAM, f);
84
-	fclose(f);
85
-	if(r < 1) return 0;
86
-	fprintf(stderr, "Loaded %s\n", filepath);
87
-	return 1;
88
-}
89
-
90 77
 int
91 78
 uxn_interrupt(void)
92 79
 {
... ...
@@ -126,8 +113,9 @@ main(int argc, char **argv)
126 113
 		return error("Usage", "uxncli game.rom args");
127 114
 	if(!start(&u))
128 115
 		return error("Start", "Failed");
129
-	if(!load(&u, argv[1]))
116
+	if(!load_rom(&u, argv[1]))
130 117
 		return error("Load", "Failed");
118
+	fprintf(stderr, "Loaded %s\n", argv[1]);
131 119
 	if(!uxn_eval(&u, PAGE_PROGRAM))
132 120
 		return error("Init", "Failed");
133 121
 	for(i = 2; i < argc; i++) {