Commit 9b7a4dfb authored by Roger Sanders's avatar Roger Sanders

Migrated existing site content, with Google Drive hosting for large/unversioned files.

parent 171eeee6
Pipeline #24453501 passed with stage
in 54 seconds
---
layout: default
---
<style type="text/css" media="screen">
.container {
margin: 10px auto;
max-width: 600px;
text-align: center;
}
h1 {
margin: 30px 0;
font-size: 4em;
line-height: 1;
letter-spacing: -1px;
}
</style>
<div class="container">
<h1>404</h1>
<p><strong>Page not found :(</strong></p>
<p>The requested page could not be found.</p>
</div>
---
layout: default
title: "Copying System 24 Disks"
---
# Overview
If you're the proud owner of a Sega System 24 arcade system with a floppy drive, you may have had cause in the past to back up the disk. The system itself has a disk copy feature, but by all accounts it's a bit hard to do on the real system, requiring you to push bits of your system out of the way, and have five hands and be in three places at once. Doing this on a removed board outside the system is much easier, but it still just gives you another disk at the end, not a digital backup on a PC.
What if you don't even have a working disk to start with? If you're unlucky enough to have a System 24 board that has a damaged disk, or is missing the disk entirely, you'll certainly have wondered how to create a new disk without an original floppy to use.
This is the situation I was in, where I acquired a System 24 pcb which had the FD1094 for Crackdown, and included the FDD mounted together on a board, but for some reason the disk itself was missing. MAME had disk backups, so I thought it must be fairly simple to just take those disk images and write them to a new floppy, right? Unfortunately, it's not as easy as you'd think. The Sega System 24 uses standard 3 1/2" disks, but they're formatted to hold around 1.8MB, with an unusual non-uniform sector size. PC drives can theoretically read this format but it requires talking directly to the floppy controller, and few PC programs do that, with fewer still having the necessary options and flexibility to work with these disks.
After scouring the web for any instructions on how to re-create System 24 disks from a PC and drawing a blank, I set out to find a solution. It took two days of tinkering with dozens of different programs between DOS and Windows, and in the end I had to write a conversion tool myself to pull it off, but it is possible to do this in a simple way on a reasonably modern PC. On this page, I'll show you how to copy System 24 disks, back them up to PC, create equivalent MAME disk images, and take the MAME disk images and create real floppy disks from them. All you need is a Windows-based PC with a "real" (IE, motherboard provided, not USB) floppy disk port, with a standard 1.44MB FDD installed. Note that you do not need special floppy disks, as any standard 1.44MB floppy should be able to be formatted to hold up to 2MB of data. I used Verbatim DataLife MF 2HD disks in my attempts.
# Backing up a disk to PC (.dsk file)
1. Download and install the [fdrawcmd.sys](http://simonowen.com/fdrawcmd) floppy filter driver ([direct](http://simonowen.com/fdrawcmd/FdInstall.exe), {% include download title="mirror" target="FdInstall.exe" %}). This gives low-level access to the floppy controller.
2. Download and extract [SAMdisk 3.8.10](http://simonowen.com/samdisk) ([direct](http://simonowen.com/samdisk/SAMdisk3810.zip), {% include download title="mirror" target="SAMdisk3810.zip" %}). Newer versions may work better, but this was the version tested.
3. Run the following command:
```shell
samdisk.exe a: "[filename].dsk" -c80
```
That's it! This will do all the work required in order to back up a System 24 floppy.
If you want to "overdump" the disk (IE, read any additional sectors that might be present), remove the `-c80` from the command line. This would be a good idea for original disks, but for copied disks it might return factory filled sectors up to the end of the disk.
Note that this image format is NOT directly compatible with MAME. It contains additional metadata to describe the sector format and other properties of the physical media. This is a good thing if you want a useful disk image for archival purposes. This format is more complete than the raw data dumps in MAME. If you want to convert these .dsk files into the raw .img sector dump format used in MAME though, read on. Instructions are given below.
# Creating a disk from PC backup (.dsk file)
1. Download and install the [fdrawcmd.sys](http://simonowen.com/fdrawcmd) floppy filter driver ([direct](http://simonowen.com/fdrawcmd/FdInstall.exe), {% include download title="mirror" target="FdInstall.exe" %}). This gives low-level access to the floppy controller.
2. Download and extract [SAMdisk 3.8.10](http://simonowen.com/samdisk) ([direct](http://simonowen.com/samdisk/SAMdisk3810.zip), {% include download title="mirror" target="SAMdisk3810.zip" %}). Newer versions may work better, but this was the version tested.
3. Run the following command:
```shell
samdisk.exe "[filename].dsk" a:
```
That's it! This will create a system 24 floppy disk from an image that was created by SAMdisk.
# Converting a .dsk file to a MAME compatible .img file
1. Download and extract the [HxC Floppy Emulator software](http://hxc2001.com/download/floppy_drive_emulator) ([direct](http://hxc2001.com/download/floppy_drive_emulator/HxCFloppyEmulator_soft.zip), {% include download title="mirror" target="HxCFloppyEmulator_soft.zip" %}).
2. Run "HxCFloppyEmulator.exe"
3. Select "Floppy image->Load" from the menu, and select your .dsk file.
4. Select "Floppy image->Export disk/Save As" from the menu, change the "Save as type" to ".img", enter a filename, and press "Save".
You now have an .img file equivalent to what you would have obtained through "Anadisk", which is what was originally used to create the MAME images. If you want instructions for using Anadisk, read on, as they'll be given later.
# Creating a disk from MAME rom (.img file)
1. Download and install the [fdrawcmd.sys](http://simonowen.com/fdrawcmd) floppy filter driver ([direct](http://simonowen.com/fdrawcmd/FdInstall.exe), {% include download title="mirror" target="FdInstall.exe" %}). This gives low-level access to the floppy controller.
2. Download and extract [SAMdisk 3.8.10](http://simonowen.com/samdisk) ([direct](http://simonowen.com/samdisk/SAMdisk3810.zip), {% include download title="mirror" target="SAMdisk3810.zip" %}). Newer versions may work better, but this was the version tested.
3. Download and extract my InterleaveSystem24 tool ([binary](InterleaveSystem24.zip), [source](InterleaveSystem24Src.zip)).
4. Obtain the MAME rom with the disk you want to create. In my case, it was "crkdownu.zip".
5. Extract the disk image from the MAME rom. In my case, it was "ds3-5000-04d.img".
6. Open a Windows command prompt
7. Convert the MAME disk image to an ".s24" image using the following command:
```shell
InterleaveSystem24.exe "[infile].img" "[outfile].s24" 2D00
```
IE, in my case, I used the following:
```shell
InterleaveSystem24.exe "ds3-5000-04d.img" "ds3-5000-04d.s24" 2D00
```
This is to work around a current issue in SAMdisk 3.8.10. SAMdisk uses the .s24 file extension to specifically detect Sega System 24 disk images, and understands what sector layout to use for these disks. Unfortunately, the way this is currently implemented assumes ".s24" images are laid out with all sectors from head 0 first, then all sectors from head 1, which doesn't match the expectations of MAME or the actual system. This simple program converts the image format for you. Note that the third parameter specifies the track size in bytes. This is 0x2D00 for all known games, except Hotrod and Scramble Spirits for Japan, which use 0x2F00. You need to set this number correctly for the game you're converting. Track sizes for each game can be found in the [MAME source](https://github.com/mamedev/mame/blob/master/src/mame/drivers/segas24.cpp).
8. Write the image to the disk using the following command (note the source file must have a .s24 extension):
```shell
samdisk.exe "[infile].s24" a:
```
IE, I used the following:
```shell
samdisk.exe "ds3-5000-04d.s24" a:
```
That's it! You now have a working floppy for the Sega System 24.
# Creating a MAME-compatible disk image using Anadisk
The System 24 disk images in MAME were originally created in a DOS program called Anadisk. Naturally this is where I went first to see if I could write the images back, but surprisingly, you can't write disk images using Anadisk. You can format a disk, and you can specify the unusual sector layout the Sega System 24 uses to store the game data, but there's no option to load data into the formatted sectors. You'd have to type it out byte by byte in the sector editor. Although Sydex, the creators of Anadisk, made a variety of other disk utilities, none of them appear to be able to work with the non-uniform sector sizes used in System 24 disks. The Windows-based utilities above offer a better alternative to working with System 24 disks in every way, however for completeness, here are the steps to create a raw sector image of a System 24 disk in Anadisk:
1. Download Anadisk 2.07 ([direct](anadisk-207.zip)). Do NOT use 2.06. I discovered this version has a bug which resulted in sectors filled with 0xFF being read back incorrectly.
2. Load Anadisk onto a DOS-based PC with a 1.44MB FDD installed
3. Run anadisk.exe
4. Select "Dump" from the main menu
5. Configure to dump both sides, no sector ID information, enter a filename, and press enter.
6. Enter the start cylinder as "0", and press enter.
7. Enter the end cylinder as "79", and press enter. Alternatively, you can enter a larger number (IE, 255) to "overdump" the disk and extract all readable sectors.
That's it! The file will be written out to disk.
---
layout: default
title: "Sega System 24"
---
---
layout: toc
title: "Table of Contents"
---
......@@ -13,22 +13,17 @@
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: Your awesome title
email: your-email@example.com
description: >- # this means to ignore newlines until "baseurl:"
title: Exodus Technical Documentation
description: >- # this means to ignore newlines
Write an awesome description for your new site here. You can edit this
line in _config.yml. It will appear in your document head meta (for
Google search results) and in your feed.xml site description.
baseurl: "/Nemesis" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
twitter_username: jekyllrb
github_username: jekyll
# Build settings
markdown: kramdown
theme: minima
plugins:
- jekyll-feed
#theme: minima
#plugins:
# - jekyll-feed
# Exclude from processing.
# The following items will not be processed, by default. Create a custom list
......
contentsData:
- title: Home
url: index.html
- title: Arcade Info
childlist:
- title: Sega System 1/2
- title: Sega System 16A/16B
- title: Sega System 18
- title: Sega System 24
url: Arcade/SegaSystem24/index.html
childlist:
- title: Copying Disks
url: Arcade/SegaSystem24/CopyingDisks.html
- title: Sega System 32/Multi 32
- title: Sega X Board
- title: Sega Y Board
- title: Sega H1
- title: Sega System E
- title: Sega System C
- title: Sega Mega-Tech
- title: Sega Mega Play
- title: Sega Titan Video (STV)
- title: Sega Hang-On/Space Harrier
- title: Sega OutRun
- title: Sega Model 1
- title: Sega Model 2/2A
- title: Sega Model 2B
- title: Sega Model 2C
- title: Sega Model 3
- title: Sega Naomi
- title: Sega Naomi 2
- title: Console Info
childlist:
- title: Sega Master System
- title: Sega Game Gear
- title: Sega Mega Drive (Genesis)
- title: Sega Mega CD/LD
- title: Sega 32x
- title: Sega Saturn
- title: Sega Dreamcast
- title: IC Info
childlist:
- title: CPU
childlist:
- title: Z80 [Zilog]
- title: 68000 [Motorola]
- title: SH2/SH7604 [Hitachi]
- title: SH4/SH7750 [Hitachi]
- title: V60/uPD70616 [NEC]
- title: V70/uPD70632 [NEC]
- title: Audio
childlist:
- title: SN76489 [Texas Instruments]
- title: YM2151 [Yamaha]
- title: YM2203 [Yamaha]
- title: YM2608 [Yamaha]
- title: YM2612/YM3438 [Yamaha]
- title: Graphics
childlist:
- title: 315-5313 [Sega]
- title: Bus Control
- title: Other
externalFileList:
- path: /ContentsHeaderImage.gif
id: 12vEUuk7lxRh-0zzv1GIG6W-4_zzsMyP-
- path: /Arcade/SegaSystem24/anadisk-207.zip
id: 1m6OLG3XsWmcyEVBHEBW2dTWNMHF7qTts
- path: /Arcade/SegaSystem24/HxCFloppyEmulator_soft.zip
id: 1z0Xb8_YUU8O8ApWRSxUAEp_pT8LTnFuo
- path: /Arcade/SegaSystem24/FdInstall.exe
id: 1b9LbQ4dYpoWlmRlWVhYiqfngwmu0hKm0
- path: /Arcade/SegaSystem24/SAMdisk3810.zip
id: 1ANzXD4lu3QtlDqUi8OkRyuInwjHdcvmG
{% assign downloadPathFirstChar = include.target | slice: 0 %}{% if downloadPathFirstChar == '/' %}{% assign downloadPath = include.target %}{% else %}{% assign pageBaseUrl = page.url | split: '/' | pop | join: '/' %}{% assign downloadPath = pageBaseUrl | append: '/' | append: include.target %}{% endif %}{% assign downloadEntry = site.data.externalDownloadLinks.externalFileList | where: "path", downloadPath | first %}{% assign linkText = include.title | default: include.target | split: '/' | last %}{% if downloadEntry %}[{{ linkText }}](https://drive.google.com/uc?export=download&id={{ downloadEntry.id }}){% else %}<span class="missingDownload">{{ linkText }}</span>{% endif %}
\ No newline at end of file
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="{{ "styles/default.css" | relative_url }}" rel="stylesheet" type="text/css">
<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
<meta name="description" content="{{ site.description }}">
</head>
<li class="tocEntry">
{% if include.entry.childlist[0] %}
{% if include.entry.url %}
<a class="tocGroupHeaderWithLink" href="{{ include.entry.url }}" target="_top">{{ include.entry.title }}</a>
{% else %}
<span class="tocGroupHeaderNoLink">{{ include.entry.title }}</span>
{% endif %}
<ul class="tocGroupChildList">
{% for childEntry in include.entry.childlist %}
{% include tocEntry.html entry=childEntry %}
{% endfor %}
</ul>
{% else %}
{% if include.entry.url %}
<a class="tocEntryWithLink" href="{{ include.entry.url }}" target="_top">{{ include.entry.title }}</a>
{% else %}
<span class="tocEntryNoLink">{{ include.entry.title }}</span>
{% endif %}
{% endif %}
</li>
<!DOCTYPE html>
<html lang="en">
{% include head.html %}
<body class="docBody">
<div class="tocFrame">
<iframe src="{{ "TableOfContents.html" | relative_url }}" class="tocTable"></iframe>
</div>
<div class="docFrame">
<div class="mainContent">{{content}}</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
{% include head.html %}
<body>
<div class="mainSection">
<img alt="ContentsHeaderImage" src="ContentsHeaderImage.gif">
<ul class="tocRoot">
{% for childEntry in site.data.contentsPageList.contentsData %}
{% include tocEntry.html entry=childEntry %}
{% endfor %}
</ul>
</div>
</body>
</html>
---
layout: post
title: "Welcome to Jekyll!"
date: 2018-06-22 12:40:15 +0930
categories: jekyll update
---
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
Jekyll also offers powerful support for code snippets:
{% highlight ruby %}
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
{% endhighlight %}
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
[jekyll-docs]: https://jekyllrb.com/docs/home
[jekyll-gh]: https://github.com/jekyll/jekyll
[jekyll-talk]: https://talk.jekyllrb.com/
---
layout: page
title: About
permalink: /about/
---
This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/)
You can find the source code for Minima at GitHub:
[jekyll][jekyll-organization] /
[minima](https://github.com/jekyll/minima)
You can find the source code for Jekyll at GitHub:
[jekyll][jekyll-organization] /
[jekyll](https://github.com/jekyll/jekyll)
[jekyll-organization]: https://github.com/jekyll
---
# Feel free to add content and custom Front Matter to this file.
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
layout: home
layout: default
title: "Exodus Technical Documentation"
---
Interesting stuff coming here (soon?)
body {
margin: 0;
padding: 0;
font-family: Verdana;
font-size: 80%;
}
h1 {
font-family: Verdana;
font-size: 130%;
margin-top: 18px;
margin-bottom: 8px;
}
h2 {
font-family: Verdana;
font-size: 110%;
}
img {
max-width: 100%;
}
pre {
font-size: 100%;
}
.tocRoot {
list-style-type: none;
margin: 0;
padding: 0;
}
.tocGroupChildList {
list-style-type: none;
margin: 0;
padding-left: 0.4cm;
}
.tocEntry, .tocGroupListEntry {
white-space:nowrap;
}
.tocFrame {
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
.tocTable {
background-color: rgb(235,235,235);
position: fixed;
top: 0;
height: 100%;
width: 7cm;
border: 0;
border-right: 1px solid gray;
}
.docBody {
position: absolute;
padding-left: 7cm;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.docFrame {
position: relative;
top: 0;
left: 0;
border: 0;
height: 100%;
width: 100%;
min-width: 500px;
}
.mainContent {
margin-left: 1%;
margin-right: 1%;
margin-bottom: 1%;
}
.mainSection {
padding-bottom: 20px;
margin-top: 10px;
margin-left: 15px;
}
.section {
margin-left: 0;
padding: 0px 15px 0px 15px;
}
.subSection {
margin-left: 0;
padding: 0px 15px 0px 15px;
}
.sourceCode {
color: rgb(0, 0, 100);
font-size: 125%;
}
.typeRef {
font-weight: bold;
}
.iconColumn {
padding: 2px;
width: 30px;
text-align: center;
}
.typeColumn {
padding: 2px;
width: 5cm;
/*width: 1px;*/
white-space:nowrap
}
.nameColumn {
padding: 2px;
width: 5cm;
/*width: 1px;*/
white-space:nowrap
}
.descriptionColumn {
padding: 2px;
}
.functionMembers {
width: 100%;
font-size: 100%;
margin-top: 5px;
margin-bottom: 5px;
}
.functionMembersRow {
vertical-align: top;
}
.functionMembersData {
padding-right: 5px;
padding-left: 5px;
border-bottom-color: rgb(213, 213, 211);
border-left-color: rgb(213, 213, 211);
border-bottom-width: 1px;
border-left-width: 1px;
border-bottom-style: solid;
border-left-style: none;
background-color: rgb(247, 247, 255);
}
.functionMembersHeader {
text-align: left;
color: rgb(0, 0, 102);
padding-right: 5px;
padding-left: 5px;
border-bottom-color: rgb(200, 205, 222);
border-bottom-width: 1px;
border-bottom-style: solid;
border-left-color: rgb(213, 213, 211);
border-left-width: 1px;
border-left-style: none;
background-color: rgb(239, 239, 247);
}
.dataMembers {
width: 100%;
font-size: 100%;
margin-top: 5px;
margin-bottom: 5px;
}
.dataMembersRow {
vertical-align: top;
}
.dataMembersData {
padding-right: 5px;
padding-left: 5px;
border-bottom-color: rgb(213, 213, 211);
border-left-color: rgb(213, 213, 211);
border-bottom-width: 1px;
border-left-width: 1px;
border-bottom-style: solid;
border-left-style: none;
background-color: rgb(247, 247, 255);
}
.dataMembersHeader {
text-align: left;
color: rgb(0, 0, 102);
padding-right: 5px;
padding-left: 5px;
border-bottom-color: rgb(200, 205, 222);
border-bottom-width: 1px;
border-bottom-style: solid;
border-left-color: rgb(213, 213, 211);
border-left-width: 1px;
border-left-style: none;
background-color: rgb(239, 239, 247);
}
.enumMembers {
width: 100%;
font-size: 100%;
margin-top: 5px;
margin-bottom: 5px;
}
.enumMembersRow {
vertical-align: top;
}
.enumMembersData {
padding-right: 5px;
padding-left: 5px;
border-bottom-color: rgb(213, 213, 211);
border-left-color: rgb(213, 213, 211);
border-bottom-width: 1px;
border-left-width: 1px;
border-bottom-style: solid;
border-left-style: none;
background-color: rgb(247, 247, 255);
}
.enumMembersHeader {
text-align: left;
color: rgb(0, 0, 102);
padding-right: 5px;
padding-left: 5px;
border-bottom-color: rgb(200, 205, 222);
border-bottom-width: 1px;
border-bottom-style: solid;
border-left-color: rgb(213, 213, 211);
border-left-width: 1px;
border-left-style: none;
background-color: rgb(239, 239, 247);
}
.typeMembers {
width: 100%;
font-size: 100%;
margin-top: 5px;
margin-bottom: 5px;
}
.typeMembersRow {
vertical-align: top;
}
.typeMembersData {
padding-right: 5px;
padding-left: 5px;
border-bottom-color: rgb(213, 213, 211);
border-left-color: rgb(213, 213, 211);
border-bottom-width: 1px;
border-left-width: 1px;
border-bottom-style: solid;
border-left-style: none;
background-color: rgb(247, 247, 255);
}
.typeMembersHeader {
text-align: left;
color: rgb(0, 0, 102);
padding-right: 5px;
padding-left: 5px;
border-bottom-color: rgb(200, 205, 222);
border-bottom-width: 1px;
border-bottom-style: solid;
border-left-color: rgb(213, 213, 211);
border-left-width: 1px;
border-left-style: none;
background-color: rgb(239, 239, 247);
}
.nolink {
font-weight: bold;
}
.tocGroupHeaderNoLink {
font-weight: bold;
}
.tocGroupHeaderWithLink {
font-weight: bold;
}
.missinglink {
font-weight: bold;
color: Red;
}
.missingDownload {
font-weight: bold;
color: Red;
}
.argumentName {
font-style:italic;
font-size: 110%;
}
.argumentListEntryType, .returnValueListEntryType {
padding-bottom: 2px;
}
.argumentListEntryDescription, .returnValueListEntryDescription {
padding-bottom: 5px;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment