summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/dccons.cpp
diff options
context:
space:
mode:
author MetalliC <0vetal0@gmail.com>2017-09-15 03:48:11 +0300
committer MetalliC <0vetal0@gmail.com>2017-09-15 03:48:11 +0300
commitf589b96abbe1b75d63f15b773124e1940a88ae8f (patch)
treee99f262e5944c0d9b613549f4eb822ae71c35249 /src/mame/drivers/dccons.cpp
parent97feb7f3304e4a3b7a375d6e796b9d81f63c8ada (diff)
dccons.cpp: documented Dreamcast flash ROM structure
Diffstat (limited to 'src/mame/drivers/dccons.cpp')
-rw-r--r--src/mame/drivers/dccons.cpp38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp
index 8f23ed76fd4..4f21c9f4495 100644
--- a/src/mame/drivers/dccons.cpp
+++ b/src/mame/drivers/dccons.cpp
@@ -654,8 +654,42 @@ MACHINE_CONFIG_END
ROM_LOAD_BIOS(3, "dc101d_ch.bin", 0x000000, 0x200000, CRC(a2564fad) SHA1(edc5d3d70a93c935703d26119b37731fd317d2bf) )
// ^^^ dc101d_eu.bin ^^^ is selfmade chinese translation, doesn't work on real hardware, does it must be here at all ?
-// note: Dreamcast Flash ROMs actually 256KB MBM29F002TC (VA0) or MBM29LV002TC (VA1) devices, only 2nd 128KB half is used, A17 pin tied to VCC
-// sector SA5 (1A000 - 1BFFF) is read-only, contain factory information (region, broadcast, serial number, etc)
+/* note: Dreamcast Flash ROMs actually 256KB MBM29F002TC (VA0) or MBM29LV002TC (VA1) devices, only 2nd 128KB half is used, A17 pin tied to VCC
+ sector SA5 (1A000 - 1BFFF) is read-only, contain information written during manufacture or repair, fully generated by software tool (except predefined list of creators)
+struct factory_sector
+{
+ struct factory_record {
+ // everything 'char' below is decimal numbers in ASCII, unless noted else
+ char machine_code1; // '0' - Dreamcast, 0xFF - dev.box
+ char machine_code2; // '0' - Dreamcast, 0xFF - dev.box
+ char country_code; // 0 - Japan, 1 - America, 2 - Europe
+ char language; // 0 - Japanese, 1 - English, etc
+ char broadcast_format; // 0 - NTSC, 1 - PAL, 2 - PAL-M, 3 - PAL-N
+ char machine_name[32]; // ASCII text 'Dreamcast', trail is 0x20 filled
+ char tool_number[4]; // software tool #
+ char tool_version[2]; // software tool version
+ char tool_type[2]; // software tool type: 0 - MP(mass production?), 1 - Repair
+ char year[4];
+ char month[2];
+ char day[2];
+ char hour[2];
+ char min[2];
+ char serial_number[8];
+ char factory_code[4];
+ char total_number[16];
+ uint8_t sum; // byte sum of above
+ uint8_t machine_id[8]; // 64bit UID
+ uint8_t machine_type; // FF - Dreamcast
+ uint8_t hardware_version; // FF - VA0, FE - VA1, FD - VA2, NOTE: present in 1st factory record only, in 2nd always FF
+ } factory_records[2]; // 2 copies
+ uint8_t unused_0[0x36]; // FF filled
+ uint8_t unk_version; // not clear if hardware or bios version, A0 - VA0, 9F - VA1, 9E - VA2
+ uint8_t unused_1[9]; // FF filled
+ char staff_roll[0xca0]; // list of creators
+ uint8_t unused_2[0x420]; // FF filled
+ uint8_t random[0xdc0]; // output of RNG {static u32 seed; seed=(seed*0x83d+0x2439)&0x7fff; return (u16)(seed+0xc000);}, where initial seed value is serial_number[7] & 0xf
+};
+*/
ROM_START(dc)
DREAMCAST_COMMON_BIOS