... | ... |
@@ -170,7 +170,7 @@ file_init(UxnFile *c, char *filename, size_t max_len, int override_sandbox) |
170 | 170 |
} |
171 | 171 |
|
172 | 172 |
static Uint16 |
173 |
-file_read(UxnFile *c, void *dest, Uint16 len) |
|
173 |
+file_read(UxnFile *c, void *dest, int len) |
|
174 | 174 |
{ |
175 | 175 |
if(c->outside_sandbox) return 0; |
176 | 176 |
if(c->state != FILE_READ && c->state != DIR_READ) { |
... | ... |
@@ -288,7 +288,7 @@ load_rom(Uxn *u, char *filename) |
288 | 288 |
{ |
289 | 289 |
int ret; |
290 | 290 |
file_init(uxn_file, filename, strlen(filename) + 1, 1); |
291 |
- ret = file_read(uxn_file, &u->ram[PAGE_PROGRAM], 0x10000 - PAGE_PROGRAM); |
|
291 |
+ ret = file_read(uxn_file, &u->ram[PAGE_PROGRAM], 0x100000 - PAGE_PROGRAM); |
|
292 | 292 |
reset(uxn_file); |
293 | 293 |
return ret; |
294 | 294 |
} |
... | ... |
@@ -68,25 +68,17 @@ mmu_init(Mmu *m, Uint16 pages) |
68 | 68 |
return m->pages; |
69 | 69 |
} |
70 | 70 |
|
71 |
-void |
|
72 |
-mmu_copy(Uint8 *ram, Uint16 length, Uint16 src_page, Uint16 src_addr, Uint16 dst_page, Uint16 dst_addr) |
|
73 |
-{ |
|
74 |
- Uint16 i; |
|
75 |
- for(i = 0; i < length; i++) { |
|
76 |
- ram[dst_page * 0x10000 + dst_addr + i] = ram[src_page * 0x10000 + src_addr + i]; |
|
77 |
- } |
|
78 |
-} |
|
79 |
- |
|
80 | 71 |
void |
81 | 72 |
mmu_eval(Uint8 *ram, Uint16 addr) |
82 | 73 |
{ |
83 |
- Uint16 a = addr; |
|
74 |
+ Uint16 a = addr, i = 0; |
|
84 | 75 |
Uint8 o = ram[a++]; |
85 | 76 |
if(o == 1) { |
86 | 77 |
Uint16 length = (ram[a++] << 8) + ram[a++]; |
87 | 78 |
Uint16 src_page = ((ram[a++] << 8) + ram[a++]) % 16, src_addr = (ram[a++] << 8) + ram[a++]; |
88 | 79 |
Uint16 dst_page = ((ram[a++] << 8) + ram[a++]) % 16, dst_addr = (ram[a++] << 8) + ram[a]; |
89 |
- mmu_copy(ram, length, src_page, src_addr, dst_page, dst_addr); |
|
80 |
+ for(i = 0; i < length; i++) |
|
81 |
+ ram[dst_page * 0x10000 + dst_addr + i] = ram[src_page * 0x10000 + src_addr + i]; |
|
90 | 82 |
} |
91 | 83 |
} |
92 | 84 |
|