fornever / overtone Goto Github PK
View Code? Open in Web Editor NEWA modern FOSS remake of The Tone Rebellion.
License: MIT License
A modern FOSS remake of The Tone Rebellion.
License: MIT License
Additional data: Ascendancy Font Editor v1.1+, which contains the format documentation. daumiller/ascendancy seems to have font support, too.
We'll need to play music during gameplay. The original music files are stored in *.WAV
files, but there're also *.MP3
in the bonus content pack. I suggest we should try to support both of these, if possible.
I used this icon and upscaled to 512x512 using GIMP
Then I ran the following
mkdir -p ~/Downloads/Float.iconset
cp ~/Downloads/Float.png ~/Downloads/Float.iconset/icon_512.png
sips -Z 256 ~Downloads/icon_512.png --out ~/Downloads/Float.iconset/icon_256.png
sips -Z 128 ~Downloads/icon_512.png --out ~/Downloads/Float.iconset/icon_128.png
sips -Z 96 ~Downloads/icon_512.png --out ~/Downloads/Float.iconset/icon_96.png
sips -Z 64 ~Downloads/icon_512.png --out ~/Downloads/Float.iconset/icon_64.png
sips -Z 48 ~Downloads/icon_512.png --out ~/Downloads/Float.iconset/icon_48.png
sips -Z 32 ~Downloads/icon_512.png --out ~/Downloads/Float.iconset/icon_32.png
sips -Z 16 ~Downloads/icon_512.png --out ~/Downloads/Float.iconset/icon_16.png
cd ~/Downloads
iconutil -c icns Float.iconset -o Float.icns
In #18, I've introduced a dependency on System.Drawing
, since it's the most simple drawing library for the current needs.
Turns out it's not very easy to use it on macOS: it requires libgdiplus.
I think we'll get rid of it eventually anyway (since more appropriate rendering techniques are required for a game project), but I'm filing this issue to not forget about it.
Alright, it's time to implement the main menu.
Features:
titscrn_0
)titscrn_1
)credits.txt
) appearing on the screen:
We have to setup a way for the code to manipulate what is being rendered as some part of the UI will be dynamic (not speaking about the game rendering at all here, though it might use the same logic if done in a manner that allows it)
Example of dynamics UI :
In Scene0 (main menu), The title screen and the sparkles as well as the text moving up if you're staying on the menu for long enough.
In Scene1 (new game), we can should be displaying text, difficulty and map size elements that are as of yet not rendered at all.
There're already some .shp
/.pal
readers available:
Thanks for the project!
Did you consider rewriting the project in the only acceptable nowadays programming language - Rust? It will improve the game in all aspects! There are a lot of successful examples of the benefits of RIIRing the project.
If you need help with this, you could always for support here.
GL&HF!
I'm running the game on w10 just fine, no need to startup a VM.
We can also use open-source tools like Magpie to scale-up the game to more "modern" resolution. + Add the ability to alt-tab without crashing.
I've used FSR upscaling with fairly good results :
Currently, Overtone expects the user to pass the path to the disk data root directory as a command-line argument.
We should accept either this or a path to the ISO file. So, Overtone should be able to automatically extract the required data from the ISO.
Take a closer look at the screenshots from #26: both images are a bit blurred. In particular, see the title screen border:
It should be solid 1 pixel border, but for some reason, it isn't on 4k screen. In both the remake and the original, no less!
Turns out the game cursors are stored in the original FLOAT.EXE
file. We should learn to extract them from the file and use them.
During the game startup, we may spend some time loading the resources asynchronously.
There should be some sort of a loader screen during that time.
See TODO[#35]
when implementing this feature.
The .CUR
format is pretty hard to decipher, so let's take a look at extracting our .cur
-related code into a library, for both extracting it from resources and rendering.
After documenting the font format, share it with the following interested parties:
There're the following files on the game CD, which get used in runtime:
- LEVIATAN.WAV
- LIFEGIVE.WAV
- LOSEND.WAV
- MYSTICS.WAV
- PROTECT.WAV
- SEEKERS.WAV
- START.WAV
- WINNER.WAV
We should determine the purpose of every single one.
We should enumerate the contents of the COB archives the game has, and determine which resources do we readily have and which we lack from these archives.
In the windows.txt
configuration file, most PANE
items include four values, like PANE 1 2 3 4
(which are actually x₀, y₀, x₁, y₁). But for some items, such as BC_TrnStkC
, there are two unknown additional numbers there (-4 0
in that case).
WE should figure out if these values mean anything.
See TODO[#31]
in the code for this issue.
We should determine names for the main game music files (ACT1.WAV
–ACT4.WAV
, AMBIENT1.WAV
–AMBIENT4.WAV
) according to the bonus content archive from the Internet Archive (which contains eight MP3 music files).
Also, we should determine when they're playing in the game (at random, sequentially or what).
See TODO[#30]
in the code.
I want the texture management to cache the already parsed shapes and maybe textures, in case someone asks for them twice.
We definitely shouldn't read the same shape multiple times for every frame requested.
While I understand C# for all the tooling, I don't quite understand it for the gameplay. It feels like the point and click aspects of the game could be handled via a web-ui, which would also make this title cross-os compatible, and give a wide range of supporting, common API's
Not expecting you to change direciton, more curious to see if it was ever considered?
Overtone should be able to run the intro video from the game (namely, THING2/INTRO.AVI
).
As the video uses an old codec and I don't want to mess with any video codecs (yet), I suggest we use an approach similar to the original: just use the external video player to show the video.
So, we'll need a program that extracts the video file from the ISO provided, and runs it via the OS facilities (something like xdg-open
/open
on *nix, and a similar facility on Windows).
I'll look into this a bit
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.