forked from sega-dreamcast/httpd-ack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
135 lines (108 loc) · 5.01 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
httpd-ack - www.gotwalls.com - ackmed@gotwalls.com
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