Subversion Repositories freemyipod

Rev

Rev 375 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 375 Rev 385
Line 229... Line 229...
229
 
229
 
230
    void* bmpbuffer = malloc(0x25900);
230
    void* bmpbuffer = malloc(0x25900);
231
    memset(lcdbuffer, 0xff, 0x25800);
231
    memset(lcdbuffer, 0xff, 0x25800);
232
    ucl_decompress(bitmapdata[BMPIDX_SIDEPANE], bitmapsize[BMPIDX_SIDEPANE], bmpbuffer, &dummy);
232
    ucl_decompress(bitmapdata[BMPIDX_SIDEPANE], bitmapsize[BMPIDX_SIDEPANE], bmpbuffer, &dummy);
233
    renderbmp(&lcdbuffer[195], bmpbuffer, 320);
233
    renderbmp(&lcdbuffer[195], bmpbuffer, 320);
234
    int updating = mkdir("/iLoader");
234
    bool updating = mkdir("/iLoader") == -4;
235
    if (!updating)
235
    if (!updating)
236
    {
236
    {
237
        ucl_decompress(bitmapdata[BMPIDX_WARNING], bitmapsize[BMPIDX_WARNING], bmpbuffer, &dummy);
237
        ucl_decompress(bitmapdata[BMPIDX_WARNING], bitmapsize[BMPIDX_WARNING], bmpbuffer, &dummy);
238
        renderbmp(lcdbuffer, bmpbuffer, 320);
238
        renderbmp(lcdbuffer, bmpbuffer, 320);
239
        displaylcd(0, 319, 0, 239, lcdbuffer, 0);
239
        displaylcd(0, 319, 0, 239, lcdbuffer, 0);
Line 247... Line 247...
247
    backlight_set_fade(32);
247
    backlight_set_fade(32);
248
    backlight_set_brightness(177);
248
    backlight_set_brightness(177);
249
    backlight_on(true);
249
    backlight_on(true);
250
 
250
 
251
 
251
 
252
    oldnor = memalign(0x100000, 0x10);
-
 
253
    norbuf = memalign(0x100000, 0x10);
252
    norbuf = memalign(0x100000, 0x10);
254
    bootflash_readraw(oldnor, 0, 0x100000);
253
    oldnor = memalign(0x100000, 0x10);
255
    memset(norbuf, 0xff, 0x100000);
254
    memset(norbuf, 0xff, 0x100000);
-
 
255
    bootflash_readraw(oldnor, 0, 0x100000);
256
    if (oldnorword[0x400] == 0x53436667) appleflash = false;
256
    if (oldnorword[0x400] == 0x53436667) appleflash = false;
257
    else
257
    else
258
    {
258
    {
259
        if (oldnorword[0] == 0x53436667) appleflash = true;
259
        if (oldnorword[0] == 0x53436667) appleflash = true;
260
        else panic(PANIC_KILLTHREAD, "Boot flash contents are damaged! "
260
        else panic(PANIC_KILLTHREAD, "Boot flash contents are damaged! "
261
                                     "(No SYSCFG found)\n\nPlease ask for help.\n");
261
                                     "(No SYSCFG found)\n\nPlease ask for help.\n");
262
    }
262
    }
263
    if (appleflash) memcpy(&norbuf[0x1000], &oldnor[0], 0x1000);
-
 
264
    else memcpy(&norbuf[0x1000], &oldnor[0x1000], 0x1000);
263
    memcpy(&norbuf[0x1000], &oldnor[appleflash ? 0 : 0x1000], 0x1000);
265
    uint32_t sp = 0;
264
    uint32_t sp = 0;
266
    uint32_t beginptr = 0x2000;
265
    uint32_t beginptr = 0x2000;
267
    uint32_t endptr = 0x100000;
266
    uint32_t endptr = 0x100000;
268
    uint32_t dirptr = 0;
267
    uint32_t dirptr = 0;
269
    while (script[sp])
268
    while (script[sp])
Line 344... Line 343...
344
        {
343
        {
345
            wakeup_wait(&eventwakeup, TIMEOUT_BLOCK);
344
            wakeup_wait(&eventwakeup, TIMEOUT_BLOCK);
346
            if (button == 2) break;
345
            if (button == 2) break;
347
            else if (button == 4)
346
            else if (button == 4)
348
            {
347
            {
349
                shutdown(true);
348
                shutdown(false);
350
                reset();
349
                reset();
351
            }
350
            }
352
            button = 0;
351
            button = 0;
353
        }
352
        }
354
        memset(lcdbuffer, 0xff, 0x25800);
353
        memset(lcdbuffer, 0xff, 0x25800);
Line 395... Line 394...
395
                if (script[sp + 2] == 0xfffffffe && appleflash)
394
                if (script[sp + 2] == 0xfffffffe && appleflash)
396
                {
395
                {
397
                    data = oldnor;
396
                    data = oldnor;
398
                    script[sp + 3] = 0x100000;
397
                    script[sp + 3] = 0x100000;
399
                }
398
                }
400
                else script[sp + 3] = 0;
399
                else if (script[sp + 2] == 0xfffffffe) script[sp + 3] = 0;
401
                if (!script[sp + 3])
400
                if (!script[sp + 3])
402
                {
401
                {
403
                    sp += 4;
402
                    sp += 4;
404
                    break;
403
                    break;
405
                }
404
                }
Line 425... Line 424...
425
                panic(PANIC_KILLTHREAD, "Bad installation script!");
424
                panic(PANIC_KILLTHREAD, "Bad installation script!");
426
        }
425
        }
427
        status += script[sp++];
426
        status += script[sp++];
428
        progressbar_setpos(&progressbar, status, false);
427
        progressbar_setpos(&progressbar, status, false);
429
    }
428
    }
430
 
-
 
431
    ucl_decompress(bitmapdata[BMPIDX_FLASHING], bitmapsize[BMPIDX_FLASHING], bmpbuffer, &dummy);
429
    ucl_decompress(bitmapdata[BMPIDX_FLASHING], bitmapsize[BMPIDX_FLASHING], bmpbuffer, &dummy);
432
    renderbmp(&lcdbuffer[320 * 108], bmpbuffer, 320);
430
    renderbmp(&lcdbuffer[320 * 108], bmpbuffer, 320);
433
    displaylcd(0, 319, 0, 239, lcdbuffer, 0);
431
    displaylcd(0, 319, 0, 239, lcdbuffer, 0);
434
    progressbar_init(&progressbar, 5, 189, 162, 178, 0, 0xdefb, 0x1d, 0, 256);
432
    progressbar_init(&progressbar, 5, 189, 162, 178, 0, 0xdefb, 0x1d, 0, 256);
435
    for (i = 0; i < 256; i++)
433
    for (i = 0; i < 256; i++)
436
    {
434
    {
437
        bootflash_writeraw(&norbuf[i << 12], i << 12, 1 << 12);
435
        bootflash_writeraw(&norbuf[i << 12], i << 12, 1 << 12);
438
        progressbar_setpos(&progressbar, i, false);
436
        progressbar_setpos(&progressbar, i, false);
439
    }
437
    }
440
 
438
 
441
    shutdown(true);
439
    shutdown(false);
442
    reset();
440
    reset();
443
}
441
}