GithubHelp home page GithubHelp logo

sega-dreamcast / httpd-ack Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 1.0 18 KB

The Dreamcast GD-ROM dumper, requires Broadband Adapter (BBA)

Home Page: https://www.gotwalls.com/

License: BSD 3-Clause "New" or "Revised" License

Makefile 7.74% C 92.26%

httpd-ack's Introduction

httpd-ack - www.gotwalls.com - [email protected]

Usage
=====
dc-tool -t <dreamcast ip> -n -x httpd-ack.elf

or

use boot cdi image

BBA IP address
-----------
Once httpd-ack.elf has been started on the dreamcast it will re-ip 
itself to whatever "isp" setting are found in the dreamcast flash.  If 
none are found it will not start the httpd.  google for 'bba passport' 
for setting up "isp" settings if you dont have them.

Changing track dump options
------------
If you hover of the link for a track it will look something like

http://IP/track03.iso?ipbintoc0_session02_p8192_cdxa1024_sector_size2352_gap0_dma1_sector_read16_sub0_abort1_retry5.iso

Each of these can be adjusted to change how the track is dumped

track%d       = dump track %d (or end sector if >= 100) 
session%d     = dump session %d (or start sector if >= 100)
ipbintoc%s    = 1 use cdrom TOC thats in IP.BIN for session 2
                0 use cdrom's TOC
p%d           = unknown param when initializing the cdrom. 8192 and 4096 
                seem to be valid numbers.  8192 for data, 4096 for audio?
cdxa%d        = something to do with cdxa.  0, 1024, 2048 seem to be 
                valid numbers.  1024 for data, 0 for audio?
sector_size%d = what sector size to initial the cdrom with for reading.    
                2048 or 2352 are valid.  2352 doesnt always seem to 
                stick and somehow depends on p and cdxa values.
gap%d         = the end sector for tracks is unknown (except for the 
                last track in a session).  so the end sector is 
                calculated by ((start sector of next track - 1) - gap%d).
dma%d         = 1 use dma when transfering from cdrom, 0 use pio.
sector_read%d = number of sectors to read in each cdrom_read_sectors() 
                call, max 128
sub%d         = 0 dont dump sub channel
                1 use syscall method to dump sub channel
                2 use cdrom_read_sectors method to dump sub channel
                dma will be forced to 0
                sector_read will be forced to 1
abort%d       = 1 abort on read error
                0 continue on read error
retry%d       = if cdrom_read_sectors() call returns an error, the 
                number of times to retry before giving up

Example:

Changing the original url to be

http://IP/track03.iso?ipbintoc0_session02_p4096_cdxa0_sector_size2352_gap150_dma0_sector_read1_sub0_abort0_retry0.iso

will cause it to dump the same track with 2352 sector size, using PIO 
cdrom reading, reading 1 sector at a time, stopping 150 sectors before 
the start of the next track, no retrys on read error, and continue if an 
error.

ip.bin TOC
----------------
Its possible to make httpd-ack use the TOC from the ip.bin at sector 
45000 for session 2.  The ability to do this is to assist in making it 
possible to dump GD-R media using a swap disc method.

http://IP/?ipbintoc
or
http://IP/index.html?ipbintoc

The following entry will be logged to the video output to indicate it 
is using the ip.bin for the TOC.

get_toc(): using ip.bin for TOC

memory poisoning
----------------
The data buffer passed to cdrom_read_sectors() is poisoned with 'Q'.  If 
the function doesnt properly fill the entire buffer size, a bunch of 
QQQQQ's will show up in your downloaded track.

This can happen if you request 2352 size sectors and the function is 
only filling 2048 worth of data for each sector

dumping specific sector range
--------------
track%d and sector%d have a dual meaning which will allow dumping a 
specific range of sectors.  If both are >= 100, the value of session%d 
will act as the start sector, and track%d the end sector.

dump bios/flash
--------------
http://IP/dc_bios.bin - dreamcast bios, memory 0x0 to 0x1fffff
http://IP/dc_flash.bin - dreamcast flash, memory 0x200000 - 0x21ffff
http://IP/syscall.bin - dreamcast syscalls, memory 0x8C000000 - 0x8C007FFF

nullDC gdi file
---------------
http://IP/disc.gdi - sends gdi file for the current disc for use with 
nullDC emulator.

dump memory region
---------------
http://IP/memory_start%d_end%d.bin - dump memory from start%d to end%d.

httpd-ack source
---------------
The sounce code for httpd-ack is built into httpd-ack.elf file.  It can 
be downloaded by going to http://IP/source.zip

httpd related code in httpd-ack is based off of the example dreamcast 
httpd code in kos by Dan Potter.  All other code in httpd-ack.c can be 
considered under the same bsd license as kos.

Patches
---------
kos-cdrom-ack.diff
  + add ability to initialize cdrom with different params
  + add arg to cdrom_read_sectors() to specify PIO or DMA xfer
  + make realpath() just a strcpy(), was getting some weird memory 
    corruptions and crashes caused by it in fs_open.
  + sub channel syscall

lwip-bugfix-ack.diff
  + fix memory corruption in pcb->snd_queuelen by multiple threads modifying it 
    at the same time (dirty/ugly fix)
  + disable debug, memp_sanity() was killing performace.
  + fix possible queuelen overflow in tcp_enqueue()
  + work around for killing tcp socket before all data was sent, was 
    also causing lwip stack to crash

-ack

httpd-ack's People

Contributors

sizious avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.