Bump to 0.4.7, rename to 573in1 and update docs

This commit is contained in:
spicyjpeg 2024-06-27 09:52:57 +02:00
parent c4ff4eb62e
commit 84985785c8
No known key found for this signature in database
GPG Key ID: 5CC87404C01DF393
10 changed files with 83 additions and 73 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
ROOT_DIR="$(pwd)"
PROJECT_DIR="$ROOT_DIR/cart-tool"
PROJECT_DIR="$ROOT_DIR/573in1"
OPENBIOS_DIR="$ROOT_DIR/nugget/openbios"
TOOLCHAIN_DIR="$ROOT_DIR/gcc-mipsel-none-elf"
@ -14,7 +14,7 @@ cmake --build "$PROJECT_DIR/build" \
RELEASE_NAME="$(
ls "$PROJECT_DIR/build" |
grep -E -o '^cart-tool-[0-9]+\.[0-9]+\.[0-9]+' |
grep -E -o '^573in1-[0-9]+\.[0-9]+\.[0-9]+' |
head -n 1
)"

View File

@ -21,7 +21,7 @@ jobs:
- name: Fetch repo contents
uses: actions/checkout@v4
with:
path: cart-tool
path: 573in1
- name: Fetch OpenBIOS repo contents
uses: actions/checkout@v4
@ -34,27 +34,27 @@ jobs:
run: |
sudo apt-get update -y
sudo apt-get install -y --no-install-recommends ninja-build mame-tools
sudo pip3 install -r cart-tool/tools/requirements.txt
sudo pip3 install -r 573in1/tools/requirements.txt
- name: Build GCC toolchain
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: |
cart-tool/.github/scripts/buildToolchain.sh gcc-mipsel-none-elf mipsel-none-elf
573in1/.github/scripts/buildToolchain.sh gcc-mipsel-none-elf mipsel-none-elf
- name: Build project
run: |
cart-tool/.github/scripts/buildRelease.sh
573in1/.github/scripts/buildRelease.sh
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build
if-no-files-found: error
path: cart-tool-*.zip
path: 573in1-*.zip
- name: Publish release
if: ${{ github.ref_type == 'tag' }}
uses: softprops/action-gh-release@v1
with:
fail_on_unmatched_files: true
files: cart-tool-*.zip
files: 573in1-*.zip

View File

@ -4,10 +4,10 @@ cmake_minimum_required(VERSION 3.25)
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/cmake/toolchain.cmake")
project(
cart-tool
573in1
LANGUAGES C CXX ASM
VERSION 0.4.6
DESCRIPTION "Konami System 573 security cartridge tool"
VERSION 0.4.7
DESCRIPTION "Konami System 573 maintenance tool"
)
set(

View File

@ -1,41 +1,65 @@
# Konami System 573 security cartridge tool
<p align="center">
<img src="doc/assets/logo.png" alt="573in1 logo" />
</p>
## Building
573in1 is a full-featured homebrew maintenance and troubleshooting tool, game
installer and BIOS ROM replacement for arcade games based on Konami's System 573
PCB, such as earlier versions of Dance Dance Revolution and other Bemani rhythm
games from the same era. It currently allows for:
The following dependencies are required in order to build the project:
- dumping, erasing and writing images to the onboard flash memory, PCMCIA flash
cards and RTC RAM;
- dumping security cartridge EEPROMs and editing the serial number stored in
them in order to reinstall a game on a different system;
- repurposing cartridges for use with any game that uses the same cartridge
type;
- browsing the CD-ROM, or any attached IDE hard drive or CF card, and launching
System 573 and PS1 executables.
- CMake 3.25 or later;
- Python 3.10 or later;
- [Ninja](https://ninja-build.org/);
- a recent version of the GCC toolchain that targets the `mipsel-none-elf`
architecture;
- optionally, `xorriso` and `chdman` (in order to build the CD-ROM image).
## Download and usage
The toolchain can be installed on Windows, Linux or macOS by following the
instructions [here](https://github.com/grumpycoders/pcsx-redux/blob/main/src/mips/psyqo/GETTING_STARTED.md#the-toolchain)
and should be added to `PATH`. The other dependencies can be installed through a
package manager.
The latest version of 573in1 can be found on the releases page, accessible
through the GitHub sidebar. The tool is available in three different formats:
The Python script used to convert images at build time requires additional
dependencies which can be installed by running:
- as a CD-ROM image, usable on any 573 equipped with a CD-ROM drive (including
ones fitted with BIOS mod boards);
- as a BIOS ROM image, allowing the system to boot directly into the 573in1 main
menu (even with no IDE drives connected) and optionally launch a game or
custom executable automatically;
- as a standalone 573 executable for advanced users.
```
py -m pip install -r tools/requirements.txt (Windows)
sudo pip install -r tools/requirements.txt (Linux/macOS)
```
See the [documentation](doc/index.md) for more information and usage
instructions. Reading the documentation before proceeding is highly recommended.
Once all prerequisites are installed, the tool can be built in debug mode (with
command-line argument parsing disabled and serial port logging enabled by
default) by running:
## Contributing
```
cmake --preset debug
cmake --build ./build
```
Pull requests are welcome. If you wish to add functionality (e.g. game-specific
menus to manipulate user data, extract assets and so on) feel free to do so,
however please stick to the following guidelines:
Replace `debug` with `release` to build in release mode or `min-size-release` to
optimize the executable for size. If `xorriso` is installed and listed in the
`PATH` environment variable, a bootable CD-ROM image will be generated alongside
the executable. A copy of the image in CHD format will additionally be generated
if MAME's `chdman` tool is also present.
- Do not include any code lifted as-is or minimally modified from a game
disassembly. Rewritten and properly explained/commented code is fine.
- Do not include any Konami game files or excerpts thereof. If necessary, only
include metadata about the files such as hashes, offsets, sizes and so on.
- Store any such metadata as a file in the resource archive (see
`resources.json`) rather than hardcoding it. If possible, provide a copy of
the scripts used to gather the data from the original files in the `tools`
directory.
- Adding a section to the documentation covering usage of the newly added
functionality is not required, but would be highly appreciated.
## License
The tool is licensed under the [GNU GPLv3](LICENSE). You may freely distribute
modified versions as long as you also provide the full source code, attribution
and a link back to this repository.
## See also
- Naoki Saito's 573 resources:
- [Konami's System 573 - Everything you wanted to know about it!](https://youtube.com/watch?v=Cm6ycmTbwIU)
- [System 573 repo](https://github.com/NaokiS28/KSystem-573)
- [System 573 specifications](https://psx-spx.consoledev.net/konamisystem573)
- [ps1-bare-metal](https://github.com/spicyjpeg/ps1-bare-metal)
- [PSX.Dev Discord server](https://discord.gg/QByKPpH)

View File

@ -1,4 +1,4 @@
- Konami System 573 tool -
- 573in1: Konami System 573 maintenance tool -
Version ${PROJECT_VERSION}
(C) 2022-2024 spicyjpeg
@ -25,6 +25,7 @@ Testing:
Special thanks:
987123879113
Gabrimax
Hyphen/4434
Martin Korth (nocash)
Nicolas Noble
Everyone on the Rhythm Game Cabs and PSX.Dev Discord servers
@ -182,7 +183,5 @@ Software.
Several security cartridges were killed during the development of this tool. May
they rest in peace.
A System 573, a flash chip and several security cartridges were killed during
the development of this tool. May they all rest in peace.

View File

@ -1,6 +1,6 @@
Konami System 573 tool
======================
573in1: Konami System 573 maintenance tool
==========================================
Version ${PROJECT_VERSION}
(C) 2022-2024 spicyjpeg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
doc/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -11,7 +11,7 @@
#define VERSION_STRING VERSION "-debug"
#endif
#define EXTERNAL_DATA_DIR "hdd:/cartdata"
#define EXTERNAL_DATA_DIR "hdd:/573in1"
enum Character : char {
CH_UP_ARROW = '\x80',

View File

@ -431,56 +431,43 @@ static constexpr inline util::Hash operator""_h(
/* Logging macros */
#ifdef ENABLE_APP_LOGGING
#define LOG_APP(fmt, ...) \
#define LOG(type, fmt, ...) \
util::logger.log( \
"app,%s(%d): " fmt, __func__, __LINE__ __VA_OPT__(,) __VA_ARGS__ \
type ",%s(%d): " fmt, __func__, __LINE__ __VA_OPT__(,) __VA_ARGS__ \
)
#ifdef ENABLE_APP_LOGGING
#define LOG_APP(fmt, ...) LOG("app", fmt __VA_OPT__(,) __VA_ARGS__)
#else
#define LOG_APP(fmt, ...)
#endif
#ifdef ENABLE_CART_IO_LOGGING
#define LOG_CART_IO(fmt, ...) \
util::logger.log( \
"cart,%s(%d): " fmt, __func__, __LINE__ __VA_OPT__(,) __VA_ARGS__ \
)
#define LOG_CART_IO(fmt, ...) LOG("cart", fmt __VA_OPT__(,) __VA_ARGS__)
#else
#define LOG_CART_IO(fmt, ...)
#endif
#ifdef ENABLE_CART_DATA_LOGGING
#define LOG_CART_DATA(fmt, ...) \
util::logger.log( \
"data,%s(%d): " fmt, __func__, __LINE__ __VA_OPT__(,) __VA_ARGS__ \
)
#define LOG_CART_DATA(fmt, ...) LOG("data", fmt __VA_OPT__(,) __VA_ARGS__)
#else
#define LOG_CART_DATA(fmt, ...)
#endif
#ifdef ENABLE_ROM_LOGGING
#define LOG_ROM(fmt, ...) \
util::logger.log( \
"rom,%s(%d): " fmt, __func__, __LINE__ __VA_OPT__(,) __VA_ARGS__ \
)
#define LOG_ROM(fmt, ...) LOG("rom", fmt __VA_OPT__(,) __VA_ARGS__)
#else
#define LOG_ROM(fmt, ...)
#endif
#ifdef ENABLE_IDE_LOGGING
#define LOG_IDE(fmt, ...) \
util::logger.log( \
"ide,%s(%d): " fmt, __func__, __LINE__ __VA_OPT__(,) __VA_ARGS__ \
)
#define LOG_IDE(fmt, ...) LOG("ide", fmt __VA_OPT__(,) __VA_ARGS__)
#else
#define LOG_IDE(fmt, ...)
#endif
#ifdef ENABLE_FS_LOGGING
#define LOG_FS(fmt, ...) \
util::logger.log( \
"fs,%s(%d): " fmt, __func__, __LINE__ __VA_OPT__(,) __VA_ARGS__ \
)
#define LOG_FS(fmt, ...) LOG("fs", fmt __VA_OPT__(,) __VA_ARGS__)
#else
#define LOG_FS(fmt, ...)
#endif