Search
lxdream.org :: lxdream/src/bootstrap.h
lxdream 0.9.1
released Jun 29
Download Now
filename src/bootstrap.h
changeset 1100:50e702af9373
prev1099:566cdeb157ec
next1109:700c5ab26a63
author nkeynes
date Mon Feb 15 17:27:14 2010 +1000 (10 years ago)
permissions -rw-r--r--
last change Hook up the fake bios boot
Use fakebios if invoked with -b, or if there's no boot rom loaded
file annotate diff log raw
nkeynes@26
     1
/**
nkeynes@561
     2
 * $Id$
nkeynes@26
     3
 *
nkeynes@26
     4
 * CD Bootstrap header parsing. Mostly for informational purposes.
nkeynes@26
     5
 *
nkeynes@26
     6
 * Copyright (c) 2005 Nathan Keynes.
nkeynes@26
     7
 *
nkeynes@26
     8
 * This program is free software; you can redistribute it and/or modify
nkeynes@26
     9
 * it under the terms of the GNU General Public License as published by
nkeynes@26
    10
 * the Free Software Foundation; either version 2 of the License, or
nkeynes@26
    11
 * (at your option) any later version.
nkeynes@26
    12
 *
nkeynes@26
    13
 * This program is distributed in the hope that it will be useful,
nkeynes@26
    14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
nkeynes@26
    15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
nkeynes@26
    16
 * GNU General Public License for more details.
nkeynes@26
    17
 */
nkeynes@26
    18
nkeynes@1
    19
/*
nkeynes@1
    20
 * IP.BIN related code. Ref: http://mc.pp.se/dc/ip0000.bin.html
nkeynes@1
    21
 */
nkeynes@736
    22
#ifndef lxdream_bootstrap_H
nkeynes@736
    23
#define lxdream_bootstrap_H 1
nkeynes@736
    24
nkeynes@736
    25
#include "lxdream.h"
nkeynes@1
    26
nkeynes@1
    27
#ifdef __cplusplus
nkeynes@1
    28
extern "C" {
nkeynes@1
    29
#endif
nkeynes@1
    30
nkeynes@1095
    31
#define BOOTSTRAP_LOAD_ADDR 0x8C008000
nkeynes@1100
    32
#define BOOTSTRAP_ENTRY_ADDR 0x8c008300
nkeynes@1095
    33
#define BOOTSTRAP_SIZE 32768
nkeynes@1095
    34
#define BOOTSTRAP_MAGIC "SEGA SEGAKATANA SEGA ENTERPRISES"
nkeynes@1099
    35
#define BOOTSTRAP_MAGIC_SIZE 32
nkeynes@1095
    36
nkeynes@1095
    37
#define BINARY_LOAD_ADDR 0x8C010000
nkeynes@1095
    38
nkeynes@1095
    39
/**
nkeynes@1095
    40
 * Bootstrap header structure
nkeynes@1095
    41
 */
nkeynes@1095
    42
typedef struct dc_bootstrap_head {
nkeynes@1095
    43
    char magic[32];
nkeynes@1095
    44
    char crc[4];
nkeynes@1095
    45
    char padding;         /* normally ascii space */
nkeynes@1095
    46
    char gdrom_id[6];
nkeynes@1095
    47
    char disc_no[5];
nkeynes@1095
    48
    char regions[8];
nkeynes@1095
    49
    char peripherals[8];
nkeynes@1095
    50
    char product_id[10];
nkeynes@1095
    51
    char product_ver[6];
nkeynes@1095
    52
    char product_date[16];
nkeynes@1095
    53
    char boot_file[16];
nkeynes@1095
    54
    char vendor_id[16];
nkeynes@1095
    55
    char product_name[128];
nkeynes@1095
    56
} *dc_bootstrap_head_t;
nkeynes@1095
    57
nkeynes@26
    58
/**
nkeynes@26
    59
 * Dump the bootstrap info to the output log for infomational/debugging
nkeynes@26
    60
 * purposes.
nkeynes@26
    61
 */
nkeynes@502
    62
void bootstrap_dump(void *data, gboolean detail);
nkeynes@1
    63
nkeynes@1099
    64
void bootprogram_scramble( unsigned char *dest, unsigned char *src, size_t length );
nkeynes@1099
    65
void bootprogram_unscramble( unsigned char *dest, unsigned char *src, size_t length );
nkeynes@1
    66
#ifdef __cplusplus
nkeynes@1
    67
}
nkeynes@1
    68
#endif
nkeynes@736
    69
nkeynes@736
    70
#endif /* !lxdream_bootstrap_H */
.