This version contains the source code for Heboris C.E. (Cross-platform Expansion). It requires a C compiler supporting C99 and the CMake utility, and the libraries for SDL 3.0 and SDL 3.0 image.
The keyboard controls can be reset to defaults at any time by holding the Escape key for at least one second; a screen with instructions will then be displayed.
Player 1:
- Up: Arrow up
- Down: Arrow down
- Left: Arrow left
- Right: Arrow right
- A: Z
- B: X
- C: C
- D: V
- Give up: Q
- Pause: W
Player 2:
- Up: Numpad/Keypad 8
- Down: Numpad/Keypad 5
- Left: Numpad/Keypad 4
- Right: Numpad/Keypad 6
- A: Numpad/Keypad 1
- B: Numpad/Keypad 2
- C: Numpad/Keypad 3
- D: Numpad/Keypad 0
- Give up: Page up
- Pause: Page down
A CMake configuration option, APP_PACKAGE_TYPE, can be set to control how the
build accesses game resources and save data files:
Current Directory(default): Resources and save files are read/written in the current directory. Handy for quickly building and playing right at command line.Portable: Resources and save files are read/written in the executable directory.Installable: Resources are read from the executable directory and save files read/written in a sensible OS user account directory.Portable Mac App(macOS only): Resources and save files are read/written in the app directory.Installable Mac App(macOS only): Resources are read from inside the app and save files read/written in a sensible OS user account directory.
A CMake configuration boolean option, APP_RESOURCE_DAT, enables or disables
generating a "resource DAT" file named HeborisCE.dat, basically a
custom-format, uncompressed archive file storing all the game's resource files.
The option requires Python 3 to generate the resource DAT. When using the CMake
option for resource DATs, the build will also be configured to only load
resources from the DAT. This option is generally not needed, and is disabled by
default, though was found to be benefitial for massively reducing install time
for PlayStation Vita VPKs. If you're curious about the DAT format, it's
documented in the CMakeLists.txt file, above the GenerateResourceDAT()
function.
If using Git to get the source code, rather than downloading a zip of it from GitHub:
sudo apt-get install gitBuilding dependencies:
sudo apt-get install gcc cmake libsdl3-dev libsdl3-image-devIf using Git to get the source code, rather than downloading a zip of it from GitHub:
pacman -Syu gitBuilding dependencies:
pacman -Syu mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-SDL3 mingw-w64-x86_64-SDL3_imagegit clone https://github.com/nightmareci/HeborisCE
cd HeborisCE
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/Release/HeborisCEFor Windows, a handy packaging script is provided that automatically produces packages for supported targets (x86, x64, ARM64). The script only does vendored builds, so you need to have the Git submodules downloaded to use it.
For now, only packaging of portable builds is supported. Installable build support might be added in the future, where they're provided as installers.
REM First, install x86, x64, and/or ARM64 support in the Visual Studio
REM installer, and the CMake support. Then, open a developer PowerShell for the
REM following commands
REM Clone the repository with the Git submodules
git clone https://github.com/nightmareci/HeborisCE --recurse-submodules
REM Have your working directory in the cloned repository
cd HeborisCE
REM Run the packaging script, passing in the source directory, build directory,
REM and type of build desired
./pkg/windows/pkg.bat . build-pkg x64For macOS, a handy packaging script is provided that automatically produces Universal Binary packages for supported targets (x86-64 and ARM64). The script only does vendored builds, so you need to have the Git submodules downloaded to use it. It also requires Xcode and the Xcode command line utilities.
The "Installable Mac App" version will work unnotarized, though users will have to approve it, and will get the "Apple could not verify..." message.
git clone https://github.com/nightmareci/HeborisCE --recurse-submodules
cd HeborisCE
./pkg/macos/pkg.sh 'Installable Mac App' . build-pkgYou can also create a "Portable Mac App" version; distribution of this version
basically requires you notarize the build, so the app can get access to the
folder it's in. But building it for use on the same system it was built on works
fine, and is a convenient way to have it easy to customize the theme. The
"Portable Mac App" version requires the built app be in the folder with the
other files (res folder, etc.).
./pkg/macos/pkg.sh 'Portable Mac App' . build-pkgThe packaging script can optionally take a codesigning identity, so you can sign the app for future notarization. By default, it uses adhoc signing if no identity is provided.
./pkg/macos/pkg.sh 'Portable Mac App' . build-pkg 'Apple Developer Codesigning ID'AppImage:
git clone https://github.com/nightmareci/HeborisCE --recurse-submodules
cd HeborisCE
./pkg/linux/pkg-appimage.sh . build-appimageFlatpak:
git clone https://github.com/nightmareci/HeborisCE
cd HeborisCE
./pkg/linux/pkg-flatpak.sh . build-flatpakYou must install libgpiod in order to build support for GPIO.
Raspberry Pi OS installation:
sudo apt install libgpiod-devSet APP_ENABLE_LINUX_GPIO_INPUT when running CMake, then build:
cmake -B build -DCMAKE_BUILD_TYPE=Release -DAPP_ENABLE_LINUX_GPIO_INPUT=1
cmake --build build
./build/HeborisCENo efforts will be made to support Linux systems without support for
libgpiod; recent Linux kernel versions support it, just upgrade to something
that supports it. It's a hard requirement, because it's the most appropriate
way for a game written in C to access GPIO for input, as it doesn't require
root access. Plus, libgpiod, being a built-in Linux kernel feature, is
supported on all systems with GPIO, not just Raspberry Pi.
TODO: Implement full configuration of GPIO pin settings, only shown in-game if enabled in a build. For now, this is the pin layout, intended only for Raspberry Pi, based on the layout set in Texmaster, with the addition of the "give up" input:
- Pin 1 or Pin 17: 3.3V; connect a GPIO pin to one of the connections on a button, 3.3V to the other connection.
- GPIO5 / Pin 29: Up
- GPIO13 / Pin 33: Down
- GPIO6 / Pin 31: Left
- GPIO12 / Pin 32: Right
- GPIO19 / Pin 35: A
- GPIO16 / Pin 36: B
- GPIO26 / Pin 37: C
- GPIO20 / Pin 38: D
- GPIO21 / Pin 40: Give Up
- GPIO4 / Pin 7: Pause
Regardless of the package type used for building, you can add a command line argument for the path where resources are read from and data files are written, making the game behave similarly to old Heboris versions, but explicitly setting where all files are. This feature can be used to get debugging working in IDEs, by setting that command line argument to where the source root is.
An alternative to using the explicit resource/data directory command line
argument is to use the Current Directory package type when building (the
default if APP_PACKAGE_TYPE isn't provided to the CMake configuration step)
and configuring your IDE to run the game with its working directory set to the
source root. This option isn't available in all IDEs, however.
- Port to use SDL 3.0 so it works on many SDL 3.0-supported platforms.
- Change to a CMake build system.
- Convert all source code from C++ to C.
- Convert everything to UTF-8.
- Move the script sources from merely being included in gamestart.c, out to being individually compiled. Massively improves compile time on multi-core, bad-single-threaded-performance systems.
- Implement full support for configuration of all game inputs, for both keyboard and joystick input.
- Implement advanced joystick input, allowing any mapping of joystick inputs to game inputs.
- Convert to exclusively use fully cross-platform APIs, like SDL_render for hardware-accelerated graphics.
- Implement comprehensive display mode settings. Vsync is included in this. Also includes scaling to fill the display, with a correct 4:3 aspect ratio viewport.
- Revise how save data is managed, guaranteeing the format is identical across all platforms.
- Fix the "low detail" 320x240 graphics setting.
- Implement guaranteed-long-term-correct frame timing; part of that system is efficiently timed screen updates, only when appropriate.
- Implement automated packaging of builds. At least support Windows, macOS, and desktop Linux.
This software is copyrighted to Kenji Hoshimoto, but the distribution terms are currently unknown. So, to be polite, only distribute it noncommercially, and keep the source code available, because that's basically how it's been distributed for its whole history.
Original changelog and description of heboris is included in the files
changelog.txt and heboris.txt.
----------------------------------------------------
1. 8 Selectable Rules
----------------------------------------------------
You can select 8 different rotation rules.
HEBORIS : TGM1 and TGM2 style. Same as original heboris rotation.
TI-ARS : TGM3 style. T and I piece have special ground kick(It works only once!).
TI-WORLD : SRS, you can move 10 times, or rotate 8 times.
ACE-SRS : SRS, you can move 128 times, or rotate 128 times
Fast drop is slower than TI-WORLD.
ACE-ARS : TGM-ACE style rotation rule. Really strange!
Fast drop is slower than TI-ARS.
ACE-ARS2 : Same as ACE-ARS, except soft drop and hard drop.
Fast drop is slower than TI-ARS.
DS-WORLD : SRS, you can rotate or move infinity!
Fast drop is slower than TI-WORLD.
SRS-X : Original rotation rule based on SRS. But you can use Zangi-moves!
You can move 24 times, or rotate 12 times.
And C-botton is "180 degree rotarion" with original wall kicks.
D.R.S : If you have ever played DTET,let's use this!
Added T and I ground kick(only once!) to it.
----------------------------------------------------
2. Special modes
----------------------------------------------------
You can play these extra modes.
BIG MODE
Start BEGINNER,MASTER,20G,DEVIL, or ACE mode
with holding C botton.
Blocks are always 2 times bigger.
SCORE TRIAL in BEGINNER mode
Select BEGINNER mode and press Hold botton once.
Default of BEGINNER mode is fireworks trial.
But this is score trial.
There are no Lv-stop before Lv100 and Lv200, and
support Item block will appear.
Goal is Lv300. If you reached Lv300 so quickly,
you'll get time bonus.
Back to Back will be better than combos...
ITEM MODE
Select MASTER , 20G, or DEVIL mode and press Hold botton once (twice in DEVIL mode).
Item blocks apeear,but attack items affects yourself.
HEBO+
Select MASTER or 20G mode and press Hold botton twice.
Sometimes pattern garbage appears.
TOMOYO E-Heart (ACE-Target)
Select TOMOYO mode and press right arrow key once(twice).
Other stages from other game(TGM-ACE).
Always, place of platinum blocks are randomized.
TOMOYO F-Point
Select TOMOYO mode and press left arrow key once.
18 mimutes score challenge. (100 stages)
ANOTHER
Select ACE mode and press right arrow key once.
It's faster than ACE mode.
HELL
Select ACE mode and press right arrow key twice.
The speed is.....WTF!
OLD STYLE
Select ACE mode and press right arrow key three times.
Two kinds of old classic ###rises (Decided by "ARS or SRS")
DEVIL- (MINUS)
If DEVIL-DOOM is too fast for you, let's try.
Select DEVIL mode and press Right arrow once.
DEATH+
Select DEVIL mode and press Hold botton once.
Only one next display and no Hold!
(NOTE:You can use DEVIL- and DEATH+ together.
And If you use HEBORIS rotation, you can train T.A DEATH.)
ROT.RELAY
Select SIMPLE mode (40LINES or ULTRA2min) and press Hold botton once.
Play 40LINES or ULTRA2min with ALL rotation rules.
Top-out does not become gameover,but penalty will be added.
----------------------------------------------------
3. Add-ons
----------------------------------------------------
See the res folder and the corresponding .txt files in the subdirectories
for information regarding changing aspects of the game. You can alter the
graphics, bgm, sound effects, and backgrounds from there.
---------------------------------------------------
5. License
---------------------------------------------------
(c) 1998-2002 Kenji Hoshimoto
