Mercurial > hg > xmms-sid
comparison src/xs_backend.c @ 876:d03e5c73eb51
Add ROM image loading.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 09 Nov 2012 05:13:29 +0200 |
parents | 50111e99456a |
children | 4c6c5247de7d |
comparison
equal
deleted
inserted
replaced
875:0fdb001e456c | 876:d03e5c73eb51 |
---|---|
74 }; | 74 }; |
75 | 75 |
76 static const gint xs_nenginelist = sizeof(xs_enginelist) / sizeof(xs_enginelist[0]); | 76 static const gint xs_nenginelist = sizeof(xs_enginelist) / sizeof(xs_enginelist[0]); |
77 | 77 |
78 | 78 |
79 static const XSROMImageData xs_rom_images[XS_C64_ROM_IMAGES] = | |
80 { | |
81 { "Kernal", "kernal", 8192 }, | |
82 { "Basic", "basic", 8192 }, | |
83 { "Chargen", "chargen", 4096 }, | |
84 }; | |
85 | |
86 | |
79 gboolean xs_init_emu_backend(XSEngineState *state, gint *preferred) | 87 gboolean xs_init_emu_backend(XSEngineState *state, gint *preferred) |
80 { | 88 { |
81 gint engine; | 89 gint engine; |
82 gboolean initialized = FALSE; | 90 gboolean initialized = FALSE; |
83 | 91 |
94 } | 102 } |
95 | 103 |
96 XSDEBUG("init#1: %s, %i\n", initialized ? "OK" : "FAILED", *preferred); | 104 XSDEBUG("init#1: %s, %i\n", initialized ? "OK" : "FAILED", *preferred); |
97 return initialized; | 105 return initialized; |
98 } | 106 } |
107 | |
108 | |
109 gboolean xs_load_rom_images(guint8 **roms) | |
110 { | |
111 gint i; | |
112 | |
113 XSDEBUG("Loading C64 ROM images ...\n"); | |
114 | |
115 for (i = 0; i < XS_C64_ROM_IMAGES; i++) | |
116 { | |
117 const XSROMImageData *rom = &xs_rom_images[i]; | |
118 size_t size = 0; | |
119 | |
120 XSDEBUG("Trying ROM '%s' from '%s%s', %d bytes.\n", | |
121 rom->name, xs_cfg.romPath, rom->filename, rom->size); | |
122 | |
123 if (!xs_fload_buffer_path(xs_cfg.romPath, rom->filename, | |
124 &roms[i], &size, rom->size, TRUE)) | |
125 { | |
126 xs_error("Failed to load required %s ROM image '%s%s'.\n", | |
127 rom->name, xs_cfg.romPath, rom->filename); | |
128 return FALSE; | |
129 } | |
130 | |
131 if (size < rom->size) | |
132 { | |
133 xs_error("ROM image %s '%s%s' size does not match: %d != %d\n", | |
134 rom->name, xs_cfg.romPath, rom->filename, | |
135 size, rom->size); | |
136 return FALSE; | |
137 } | |
138 } | |
139 | |
140 return TRUE; | |
141 } |