From fa57ac6b24e641d19b5bcc24c75f3c9a0215bd3c Mon Sep 17 00:00:00 2001 From: SiZiOUS Date: Fri, 11 Apr 2025 17:36:36 +0200 Subject: [PATCH 1/4] Fixed compilation issues on Windows introduced in latest PR. See: https://github.com/sizious/dcload-ip/pull/27 --- host-src/tool/dc-tool.c | 19 +++++++++++++++---- host-src/tool/syscalls.c | 4 ++++ target-src/dcload/cdfs_syscalls.c | 4 ++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/host-src/tool/dc-tool.c b/host-src/tool/dc-tool.c index 3396b1c..a071fd6 100644 --- a/host-src/tool/dc-tool.c +++ b/host-src/tool/dc-tool.c @@ -201,6 +201,7 @@ extern char *optarg; #endif int gdb_socket_started = 0; +char *path = 0; #ifdef __MINGW32__ #define bzero(b,len) (memset((b), '\0', (len)), (void) 0) /* Winsock SOCKET is defined as an unsigned int, so -1 won't work here */ @@ -216,7 +217,6 @@ int gdb_server_socket = -1; int socket_fd = 0; // For GDB int global_socket = 0; // Stores whichever global socket gets used unsigned int nochroot = 0; -char *path = 0; #endif void cleanup(char **fnames) @@ -1284,8 +1284,17 @@ int open_gdb_socket(int port) } const int enable_reuse_addr = 1; + +#ifdef _WIN32 + /* For Windows this cast is necessary on modern GCC... */ + int checkopt = setsockopt(gdb_server_socket, SOL_SOCKET, SO_REUSEADDR, + (char *) &enable_reuse_addr, sizeof(enable_reuse_addr)); +#else + /* ... but maybe it's necessary for other OS as well? */ int checkopt = setsockopt(gdb_server_socket, SOL_SOCKET, SO_REUSEADDR, &enable_reuse_addr, sizeof(enable_reuse_addr)); +#endif + #ifdef __MINGW32__ if( checkopt == SOCKET_ERROR ) { #else @@ -1318,7 +1327,7 @@ int open_gdb_socket(int port) } #ifdef __MINGW32__ -#define AVAILABLE_OPTIONS "x:u:d:a:s:t:m:i:nlqhrg" +#define AVAILABLE_OPTIONS "x:u:d:a:s:t:i:nlqhrg" #else #define AVAILABLE_OPTIONS "x:u:d:a:s:t:m:c:i:nlqhrg" #endif @@ -1382,6 +1391,7 @@ int main(int argc, char *argv[]) cleanlist[0] = filename; strcpy(filename, optarg); break; +#ifndef __MINGW32__ case 'm': if (path) { fprintf(stderr, "-m and -c options are mutually exclusive, choose one\n"); @@ -1396,7 +1406,6 @@ int main(int argc, char *argv[]) set_mappath(path); cleanlist[1] = path; break; -#ifndef __MINGW32__ case 'c': if (path) { fprintf(stderr, "-m and -c options are mutually exclusive, choose one\n"); @@ -1490,13 +1499,15 @@ int main(int argc, char *argv[]) if (console & (command=='x')) printf("Console enabled\n"); - if (path) { +#ifndef __MINGW32__ + if (path) { if (nochroot) { printf("Mapping /pc/ to <%s>\n", path); } else { printf("Chrooting to <%s>\n", path); } } +#endif if (cdfs_redir & (command=='x')) printf("Cdfs redirection enabled\n"); diff --git a/host-src/tool/syscalls.c b/host-src/tool/syscalls.c index b0cae90..628921d 100644 --- a/host-src/tool/syscalls.c +++ b/host-src/tool/syscalls.c @@ -58,6 +58,10 @@ #define DIRENT_OFFSET 1337 #define MAX_PATH_LEN 4096 +#ifdef _WIN32 +#define realpath(N,R) _fullpath((R),(N),PATH_MAX) +#endif + static DIR *opendirs[MAX_OPEN_DIRS]; static char *mappath = NULL; static int mappatlen = -1; diff --git a/target-src/dcload/cdfs_syscalls.c b/target-src/dcload/cdfs_syscalls.c index ecc77f1..1e22998 100644 --- a/target-src/dcload/cdfs_syscalls.c +++ b/target-src/dcload/cdfs_syscalls.c @@ -84,6 +84,8 @@ void gdGdcExecServer(void) int gdGdcGetCmdStat(int f, int *status) { + (void) f; // unused + if (gdStatus == 0) status[0] = 0; return gdStatus; @@ -96,6 +98,8 @@ void gdGdcGetDrvStat(int *param) int gdGdcChangeDataType(int *param) { + (void) param; // unused + return 0; } From c187473113d672d371c2d25a41712a6ec1751f9a Mon Sep 17 00:00:00 2001 From: SiZiOUS Date: Fri, 11 Apr 2025 18:19:57 +0200 Subject: [PATCH 2/4] Updating README.md. --- README.md | 91 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 42b0f53..7516286 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ -# dcload-ip 2.0.1 +# dcload-ip 2.0.2 -A Dreamcast ethernet loader originally by [Andrew Kieschnick](http://napalm-x.thegypsy.com/andrewk/dc/). -Updated and overhauled by Moopthehedgehog +A Dreamcast ethernet loader originally by [Andrew Kieschnick](http://napalm-x.thegypsy.com/andrewk/dc/). This program is part of [KallistiOS](http://gamedev.allusion.net/softprj/kos/). + +This **special version** has been updated/overhauled by **Moopthehedgehog** and is maintained by [Mickaël Cardoso](https://sizious.com/) and other contributors. This fork is a most avanced/experimental version over the regular [dcload-ip](https://github.com/kallistios/dcload-ip). ## Features @@ -10,28 +11,24 @@ Updated and overhauled by Moopthehedgehog * PC I/O (read, write, etc to PC - compatible with original dcload) * Exception handler * Extremely fast -* Now works on 100mbit -* Supports both the **Broadband Adapter** (HIT-0400) and **LAN Adapter** (HIT-0300) - in a single binary -- DHCP support (use an IP address of 0.0.0.0 in `Makefile.cfg` to enable it) -- NTSC 480i, PAL 576i, and VGA display output modes supported -- Dumping exceptions over the network if the dcload console is enabled +* Works on 100mbit +* Supports both the **Broadband Adapter** (HIT-0400) and **LAN Adapter** (HIT-0300) in a single binary +* DHCP support (use an IP address of 0.0.0.0 in `Makefile.cfg` to enable it) +* NTSC 480i, PAL 576i, and VGA display output modes supported +* Dumping exceptions over the network if the dcload console is enabled ## Building -1. Edit `Makefile.cfg` for your system and network, and then run `make`. +You will need a modern toolchain, if you don't have one, you can build/obtain it using the `dc-chain` utility included in KallistiOS. -NOTE: GCC 4.7.x users using the KOS 2.1.0 build environment must ensure -``USING_KOS_GCC`` is enabled in `Makefile.cfg`. Disabling that flag uses compile -options meant for a portable copy of GCC 9.2/Binutils 2.33.1 compiled with an -``sh4-elf-`` prefix, which won't work with the KOS 2.1.0 compiler. +Edit `Makefile.cfg` for your system and network and then run `make`. ## Installation -1. PC - run `make install` (installs dc-tool) +1. PC - run `make install` (installs `dc-tool-ip`, by default in `/opt/toolchains/dc/bin`) 2. DC - a. `cd make-cd`, edit `Makefile`, insert blank cd-r, run `make`. If + a. `cd make-cd`, edit `Makefile`, insert blank CD-R, run `make`. If `1st_read.bin` hasn't been built yet, this `Makefile` will build it or b. take `target-src/1st_read/1st_read.bin` and stuff it on a cd yourself @@ -45,11 +42,13 @@ options meant for a portable copy of GCC 9.2/Binutils 2.33.1 compiled with an * The correct display is something like: - `dcload-ip 2.0.1` <- name/version - `Broadband Adapter (HIT-0400)` <- adapter driver in use - `00:d0:f1:02:ab:dd` <- dc hardware address - `192.168.1.92` <- dc ip address - `idle...` <- status +``` + dcload-ip 2.0.2 <- name/version + Broadband Adapter (HIT-0400) <- adapter driver in use + 00:d0:de:ad:be:ef <- dc hardware address + 192.168.1.92 <- dc ip address + idle... <- status +``` The background of the screen will be blue (Broadband Adapter) or green (LAN Adapter). @@ -76,15 +75,14 @@ options meant for a portable copy of GCC 9.2/Binutils 2.33.1 compiled with an ## KOS GDB-over-dcload -To run a GNU debugger session over the dcload connection: +To run a GNU Debugger (GDB) session over the dcload connection: -1. Build/obtain an sh-elf targetted GNU debugger -2. Put a `gdb_init()` call somewhere in the startup area of your - KOS-based program -3. Build your program with the `-g` GCC switch to include debugging info +1. Build/obtain a sh-elf targetted GNU debugger; you can make one using the `dc-chain` utility included in KallistiOS +2. Put a `gdb_init()` call somewhere in the startup area of your KOS-based program (usually, the `main()` function is a good candidate as it's the entry point for your program) +3. Build your program with the `-g` GCC switch to include debugging info (e.g., `kos-cc -g myprog.c`) 4. Launch your program using `dc-tool -g -x ` -5. Launch sh-elf-gdb and connect to the dc-tool using `target remote :2159` -6. Squash bugs +5. Launch `sh-elf-gdb` and connect to the dc-tool using `target remote :2159` (always this port) +6. Squash bugs! ## Maple Passthrough @@ -117,7 +115,7 @@ Newly added is the ability to control Dreamcast/SH7091 performance counters over the network. These were a previously hidden aspect of the Dreamcast's CPU, and this program uses one of them to keep track of DHCP lease time across loaded programs. There are two of them, and they are both 48-bit. See perfctr.h/.c for -details (they are from https://github.com/Moopthehedgehog/DreamHAL). +details (they are from [DreamHAL](https://github.com/sega-dreamcast/dreamhal)). Similarly to the Maple packets, the format of a performance counter control packet is as follows: @@ -130,6 +128,7 @@ typedef struct __attribute__ ((packed)) { unsigned char data[]; } command_t; ``` + For anyone making a program to take advantage of this functionality, the packet payload data essentially just needs to conform to this struct, and "id" should be "PMCR" (without null-termination). @@ -176,14 +175,14 @@ etc. Notes: - Remember to disable before leaving dcload-ip to execute a program if dcload's counter is needed by that program. -- See perfctr.h for how to calculate time using the CPU/bus ratio method, in +- See `perfctr.h` for how to calculate time using the CPU/bus ratio method, in addition to the available counter modes (and for loads of other information) -- PMCR_Init() and PMCR_Enable() will do nothing if the perf counter is already running! +- `PMCR_Init()` and `PMCR_Enable()` will do nothing if the perf counter is already running! ## Exception Dumping Another new feature is the ability to send a full register dump to a host PC -running dc-tool-ip with the console enabled (i.e. not invoked with the `-n` +running `dc-tool-ip` with the console enabled (i.e. not invoked with the `-n` command line option). In the event of an exception, dcload will print a full register dump on the @@ -271,9 +270,9 @@ struct _exception_struct_t { On Windows, you may use the `netsh` command which is more reliable (e.g. `netsh interface ip add neighbors "Ethernet" 192.168.10.1 AA-BB-CC-DD-EE-FF)`. In that case, don't forget to specify an IP address in the Ethernet card of your computer. - Please set the Dreamcast's IP in `Makefile.cfg` to be in the range 169.254.xxx.xxx - when using this method, as 0.0.0.0 is used by the DHCP protocol for network - discovery purposes (actually the entire 0.x.x.x range is). + Please set the Dreamcast's IP in `Makefile.cfg` to be in the range `169.254.xxx.xxx` + when using this method, as `0.0.0.0` is used by the DHCP protocol for network + discovery purposes (actually the entire `0.x.x.x` range is). * Tested systems: Debian GNU/Linux 2.2-3.0, Cygwin, MinGW, [DreamSDK](https://www.dreamsdk.org), Windows Subsystem for Linux v2 (Debian) * Many, many bugs have been squashed and much of the code overhauled @@ -282,17 +281,21 @@ section for that ## Credits -* [SiZiOUS](https://www.github.com/SiZiOUS) for maintaining this program -* rtl8139 code based on code by Dan Potter +* RTL8139 code based on code by Megan Potter * LAN Adapter driver code, originally derived from early KOS, majorly overhauled by Moopthehedgehog * DHCP support, exception dumping, perf counters, performance improvements by Moopthehedgehog -* DHCP retry functionality by darcagn +* DHCP retry functionality by Eric Fradella (darcagn) * There are some various files from `newlib-1.8.2` here -* `video.s`, `maple.c`, and `maple.h` were written by Marcus Comstedt -* initial win32 porting and implementation of -t by Florian 'Proff' Schulze -* win32 bugfix by The Gypsy -* fixes for cygwin by Florian 'Proff' Schulze -* rx config bug pointed out by Slant -* horridly buggy nature of 1.0.1 + 1.0.2 pointed out by Dan Potter +* Some critical files (`video.s`, `maple.c` and `maple.h`) were written by Marcus Comstedt +* Initial win32 porting and implementation of `-t` by Florian 'Proff' Schulze +* Win32 bugfix by The Gypsy +* Fixes for Cygwin by Florian 'Proff' Schulze +* Lot of various fixes by Mickaël Cardoso (SiZiOUS) +* RX config bug pointed out by Slant +* Horridly buggy nature of 1.0.1 + 1.0.2 pointed out by Megan Potter * Fixes for `libbfd` segfaults by Atani * Inspiration for `MAPL` packet by Tim Hentenaar +* Contributions by Harley Laue, Sam Steele, Christian Groessler, Protofall, Thomas Sowell, + Luke Benstead, [Matt Phillips](https://github.com/BigEvilCorporation), Andy Barajas, + snickerbockers, maddiebaka, Paul Cercueil, Daniel Fairchild +* Major contributions by KallistiOS team: Lawrence Sebald, Donald Haase, Falco Girgis From 7c23ca1666db2431f6393316e7590b7a0da5456f Mon Sep 17 00:00:00 2001 From: SiZiOUS Date: Fri, 11 Apr 2025 18:23:06 +0200 Subject: [PATCH 3/4] Bumping version to 2.0.2 as the `-m` option has been added. Note: This option has been disabled under MinGW as it needs more testing. See: https://github.com/sizious/dcload-ip/pull/25 --- Makefile.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.cfg b/Makefile.cfg index 4b6f39d..37f6140 100644 --- a/Makefile.cfg +++ b/Makefile.cfg @@ -99,7 +99,7 @@ endif # You generally shouldn't change this unless you are making forked # versions (or test versions) # Version numbers must be of the form x.x.x -VERSION = 2.0.1 +VERSION = 2.0.2 # Define this if you want a standalone, statically linked, no dependency binary #STANDALONE_BINARY = 1 From cbd158f71989895c993cc8f4e0d91cb23e4804a6 Mon Sep 17 00:00:00 2001 From: SiZiOUS Date: Fri, 11 Apr 2025 19:05:56 +0200 Subject: [PATCH 4/4] Build `IP.BIN` on the fly using `makeip`. --- make-cd/IP.BIN | Bin 32768 -> 0 bytes make-cd/Makefile | 10 +++++++--- make-cd/ip.txt | 8 ++++++++ make-cd/iplogo.png | Bin 0 -> 4751 bytes 4 files changed, 15 insertions(+), 3 deletions(-) delete mode 100644 make-cd/IP.BIN create mode 100644 make-cd/ip.txt create mode 100644 make-cd/iplogo.png diff --git a/make-cd/IP.BIN b/make-cd/IP.BIN deleted file mode 100644 index 1490d01993aa2880fbb737ac19f6cc4c816a50d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 diff --git a/make-cd/Makefile b/make-cd/Makefile index 2988a4f..c29333f 100644 --- a/make-cd/Makefile +++ b/make-cd/Makefile @@ -1,10 +1,11 @@ CDRECORD = wodim dev=0,0,0 speed=8 -DD = dd -CP = cp +DD = dd +CP = cp MKISOFS = genisoimage -CAT = cat +CAT = cat TOUCH = touch 1ST_READ = ../target-src/1st_read/1st_read.bin +MAKEIP = /opt/toolchains/dc/kos/utils/makeip/makeip all: $(1ST_READ) audio.raw burn-audio data.raw burn-data @@ -21,6 +22,9 @@ burn-audio: audio.raw 1st_read.bin: $(1ST_READ) $(CP) $(1ST_READ) 1st_read.bin +IP.BIN: ip.txt iplogo.png + $(MAKEIP) -l iplogo.png ip.txt IP.BIN + data.raw: tmp.iso IP.BIN ( cat IP.BIN ; dd if=tmp.iso bs=2048 skip=16 ) > data.raw diff --git a/make-cd/ip.txt b/make-cd/ip.txt new file mode 100644 index 0000000..fbcc7a6 --- /dev/null +++ b/make-cd/ip.txt @@ -0,0 +1,8 @@ +Device Info : CD-ROM1/1 +Area Symbols : JUE +Peripherals : E000F10 +Product No : T0000 +Version : V2.020 +Boot Filename : 1ST_READ.BIN +SW Maker Name : andrewk +Game Title : dcload-ip diff --git a/make-cd/iplogo.png b/make-cd/iplogo.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac49bb853159c3253f7e9d61e65fb27187d1bd0 GIT binary patch literal 4751 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 O0LQ)ky=sn}P5U2Aocaj> literal 0 HcmV?d00001